JP2011170847A - ソフトウェアのインテグリティを実行中に確かめる方法及び装置、並びにこのようなソフトウェアを生成する装置 - Google Patents
ソフトウェアのインテグリティを実行中に確かめる方法及び装置、並びにこのようなソフトウェアを生成する装置 Download PDFInfo
- Publication number
- JP2011170847A JP2011170847A JP2011020280A JP2011020280A JP2011170847A JP 2011170847 A JP2011170847 A JP 2011170847A JP 2011020280 A JP2011020280 A JP 2011020280A JP 2011020280 A JP2011020280 A JP 2011020280A JP 2011170847 A JP2011170847 A JP 2011170847A
- Authority
- JP
- Japan
- Prior art keywords
- checksum
- state
- integrity
- binary
- software code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 19
- 238000012795 verification Methods 0.000 claims abstract description 19
- 230000006870 function Effects 0.000 claims description 62
- 238000004590 computer program Methods 0.000 claims description 6
- 230000007704 transition Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000000670 limiting effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
【解決手段】ソフトウェアコードのインテグリティを確かめるために、コードの様々な状態について、チェックサム(例えば、ハッシュ値)がコードの少なくとも一部について生成される。実行中に、コードの状態は変化し(320)、モジュールは変更され(330)、そのコードの状態に係るチェックサムを用いてインテグリティ・チェックが行われる(340)。チェックサムはルックアップテーブルに記憶されても、あるいは、インテグリティ照合関数に埋め込まれてもよい。モジュールの状態を示す状態変数は、テーブルに含まれるチェックサムを参照するために使用されてよい。モジュールのとり得る状態は暗号化された状態及び暗号化されていない状態である。
【選択図】図3
Description
・S0:F1及びF2は暗号化−(S1S2)
・S1:F1は暗号化、F2は復号化−(S1S2)
・S2:F1は復号化、F2は暗号化−(S1S2)
・S3:F1及びF2は復号化−(S1S2)
最初に、プログラムは、メイン関数510を実行する。このとき、状態SはS0=S1S2である。メイン関数は関数F1及びF2を呼び出すことができる。関数F1が呼び出される場合、暗号化されているF1は復号化される(520)。その後に、F1の実行530が始まる。このとき、状態SはS2=S1S2である。同様に、関数F2が呼び出される場合、暗号化されているF2は復号化され(550)、S2は反転する。その後に、F2の実行(560)が始まる。このとき、状態SはS1=S1S2である。
1.保護される関数が入力される場合、状態は一意である。すなわち、単一の実行経路が関数に通ずる。この場合、チェックサム値は一意であり、呼び出しポイントコードは、(望ましくは、難読な方法で)チェックサム値を埋め込むコードを有してよい。例えば、
if(checksum_value equals checksum_ref) then (do_something)
2.保護される関数が入力される場合、少数(5未満)のとり得る状態が存在する。この場合も、呼び出しポイントコードにチェックサム値を埋め込むことが可能である。例えば、
if(S equals S1 and checksum_value equals checksum_S1) or
if(S equals S2 and checksum_value equals checksum_S2)
then (do_something)
3.とり得る状態が多数存在する場合には、チェックサムテーブルが望ましい解決法である。例えば、
if(checksum_value equals LookupInChecksumTable(S)) then (do_something)
明細書において、モジュールは、2つのとり得る状態(例えば、暗号化及び復号化)を有するとして記載されてきた。当業者に明らかなように、モジュールは複数の(特に、2よりも多い)状態を有することが可能である。
110 プロセッサ
120 RAMメモリ
130 ユーザインターフェース(UI)
140 第2のインターフェース(I/O)
150 デジタルデータ担体150
410 バイナリ
415 コンピュータプログラムプロダクト
420 保護エンジン420
430 保護されたバイナリ430
432 チェックサム呼び出しポイント
434 チェックサムテーブル
F1、F2 関数
M1〜M3,M’1〜M’3 モジュール
S0〜S3 状態
V1〜V3 チェックサム
Claims (14)
- 自己書換ソフトウェアコードのインテグリティをその実行中に確かめる方法であって、
前記ソフトウェアコードは複数のモジュールを有し、各モジュールは、前記ソフトウェアコードの実行中に少なくとも2つのとり得る状態にあることが可能であり、該とり得る状態は暗号化された状態及び暗号化されていない状態であり、
当該方法は、前記ソフトウェアコードを実行するプロセッサによって実行され、前記プロセッサに、
前記複数のモジュールのうちの1つを第1の状態から第2の状態に変えることによって前記ソフトウェアコードを変更するステップと、
前記変更されたソフトウェアコードについてチェックサムと前記変更されたソフトウェアコードを比較することによって前記ソフトウェアコードのインテグリティを確かめるステップと
を実行させる方法。 - 前記チェックサムはハッシュ値である、請求項1に記載の方法。
- 前記チェックサムは、前記モジュールのインテグリティを確かめる関数に埋め込まれている、請求項1に記載の方法。
- 前記チェックサムは、ルックアップテーブルに含まれる、請求項1に記載の方法。
- 前記変更されたソフトウェアコードのインテグリティを確かめる関数は、前記ルックアップテーブルに含まれる前記チェックサムにアクセスするために、前記複数のモジュールの夫々の状態を示す状態変数を用いる、請求項4に記載の方法。
- 自己書換ソフトウェアコードのインテグリティをその実行中に確かめる装置であって、
前記ソフトウェアコードは複数のモジュールを有し、各モジュールは、前記ソフトウェアコードの実行中に少なくとも2つのとり得る状態にあることが可能であり、該とり得る状態は暗号化された状態及び暗号化されていない状態であり、
前記ソフトウェアコードを実行し、それによって、
前記複数のモジュールのうちの1つを第1の状態から第2の状態に変えることによって前記ソフトウェアコードを変更し、
前記変更されたソフトウェアコードについてチェックサムと前記変更されたソフトウェアコードを比較することによって前記ソフトウェアコードのインテグリティを確かめる
よう構成されるプロセッサを有する、装置。 - 前記チェックサムはハッシュ値である、請求項6に記載の装置。
- 前記チェックサムは、前記モジュールのインテグリティを確かめる関数に埋め込まれている、請求項6に記載の装置。
- 前記チェックサムは、ルックアップテーブルに含まれる、請求項6に記載の装置
- 前記変更されたソフトウェアコードのインテグリティを確かめる関数は、前記ルックアップテーブルに含まれる前記チェックサムにアクセスするために、前記複数のモジュールの夫々の状態を示す状態変数を用いる、請求項9に記載の装置。
- インテグリティが保護された自己書換バイナリを生成する装置であって、
前記バイナリは複数のモジュールを有し、各モジュールは、前記バイナリの実行中に少なくとも2つのとり得る状態にあることができ、該とり得る状態は暗号化された状態及び暗号化されていない状態であり、
プロセッサを有し、該プロセッサは、
バイナリを受け取り、
前記バイナリのチェックサムを、そのとり得る状態の夫々において生成し、
少なくとも1つのチェックサム照合関数及び前記生成されたチェックサムを前記バイナリに挿入することによって、前記インテグリティが保護されたバイナリを生成する
よう構成され、
各チェックサム関数は、前記バイナリの状態を該バイナリの状態についてのチェックサムと比較することによって、前記インテグリティが保護されたバイナリの各状態のインテグリティを確かめるよう構成される、装置。 - 前記プロセッサは、更に、入れ子式に複数のチェックサム照合関数を挿入し、それにより、実行中に、各チェックサム照合関数のインテグリティが少なくとも1つの他のチェックサム照合関数によって確かめられるようにする、よう構成される、請求項11に記載の装置。
- 自己書換型のインテグリティが保護されたバイナリを記憶しており、プロセッサによって実行される場合に、請求項1乃至5のうちのいずれか一項に記載の方法のステップを実行するコンピュータプログラム。
- プロセッサによって実行される場合に、
複数のモジュールを有するバイナリの各状態についてチェックサムを生成し、各モジュールは前記バイナリの実行中に少なくとも2つのとり得る状態にあることができ、該とり得る状態は暗号化された状態及び暗号化されていない状態であり、
少なくとも1つのチェックサム照合関数及び前記生成されたチェックサムを前記バイナリに挿入することによって、インテグリティが保護されたバイナリを生成し、各チェックサム関数は、前記バイナリの状態を該バイナリの状態についてのチェックサムと比較することによって、前記インテグリティが保護されたバイナリの各状態のインテグリティを確かめるよう構成される
命令を記憶しているコンピュータプログラム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP10305164.5 | 2010-02-18 | ||
EP10305164A EP2362314A1 (en) | 2010-02-18 | 2010-02-18 | Method and apparatus for verifying the integrity of software code during execution and apparatus for generating such software code |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2011170847A true JP2011170847A (ja) | 2011-09-01 |
JP2011170847A5 JP2011170847A5 (ja) | 2014-03-06 |
JP5734685B2 JP5734685B2 (ja) | 2015-06-17 |
Family
ID=42320561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011020280A Expired - Fee Related JP5734685B2 (ja) | 2010-02-18 | 2011-02-02 | インテグリティを実行中に確かめるソフトウェアを生成するプログラム、方法及び記憶媒体 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20110202996A1 (ja) |
EP (1) | EP2362314A1 (ja) |
JP (1) | JP5734685B2 (ja) |
CN (1) | CN102163268B (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017538217A (ja) * | 2014-11-28 | 2017-12-21 | トムソン ライセンシングThomson Licensing | アプリケーション整合性の検証を提供する方法及びデバイス |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2378452B1 (en) | 2010-04-16 | 2012-12-19 | Thomson Licensing | Method, device and computer program support for verification of checksums for self-modified computer code |
US9141800B2 (en) * | 2011-12-20 | 2015-09-22 | Advanced Micro Devices, Inc. | Method and apparatus for detecting intrusions in a computer system |
US20150294114A1 (en) * | 2012-09-28 | 2015-10-15 | Hewlett-Packard Development Company, L.P. | Application randomization |
US20150278010A1 (en) * | 2012-11-23 | 2015-10-01 | Freescale Semiconductor, Inc. | Digital device |
KR101482700B1 (ko) * | 2013-09-27 | 2015-01-14 | (주)잉카엔트웍스 | 해시를 이용한 프로그램의 무결성 검증 방법 |
EP3026557A1 (en) * | 2014-11-28 | 2016-06-01 | Thomson Licensing | Method and device for providing verifying application integrity |
EP3026560A1 (en) * | 2014-11-28 | 2016-06-01 | Thomson Licensing | Method and device for providing verifying application integrity |
EP3026558A1 (en) * | 2014-11-28 | 2016-06-01 | Thomson Licensing | Method and device for providing verifying application integrity |
ES2746127T3 (es) * | 2016-09-30 | 2020-03-04 | Nagravision Sa | Integridad de descifrado de código bajo demanda |
US11281769B2 (en) * | 2016-12-15 | 2022-03-22 | Irdeto B.V. | Software integrity verification |
FR3083343B1 (fr) * | 2018-06-29 | 2023-05-26 | Ingenico Group | Procede de determination d'une validite d'un code applicatif, dispositif et produit programme d'ordinateur correspondants. |
US11288360B2 (en) * | 2020-03-04 | 2022-03-29 | Kyndryl, Inc. | Preventing untrusted script execution |
WO2023028734A1 (en) * | 2021-08-30 | 2023-03-09 | Qualcomm Incorporated | Functional safety software image integrity verifier |
CN116415281B (zh) * | 2023-04-18 | 2023-10-20 | 青海省第三地质勘查院 | 基于改进末位校验和双重散列函数的权限控制方法及系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001175466A (ja) * | 1999-12-21 | 2001-06-29 | Fuji Xerox Co Ltd | 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体 |
JP2002507307A (ja) * | 1998-04-27 | 2002-03-05 | モトローラ・インコーポレイテッド | プログラムをプロセッサに読み込むための装置および方法 |
JP2002297542A (ja) * | 2001-04-02 | 2002-10-11 | Nippon Telegr & Teleph Corp <Ntt> | コンテンツ時限開示方法、システム、セキュリティデバイス |
US20050210287A1 (en) * | 2004-03-19 | 2005-09-22 | Nokia Corporation | Secure mode controlled memory |
KR100772881B1 (ko) * | 2006-05-25 | 2007-11-05 | 삼성전자주식회사 | 자기 수정 코드의 무결성 검증 장치 및 방법 |
JP2008532113A (ja) * | 2005-02-11 | 2008-08-14 | シンプレックス メジャー センドリアン ベルハッド | ソフトウェア保護方法 |
WO2009125220A1 (en) * | 2008-04-07 | 2009-10-15 | Metaforic Limited | An anti-tamper system employing automated analysis |
WO2009150475A1 (en) * | 2008-06-12 | 2009-12-17 | Metaforic Limited | A method of protecting computer program code |
JP2012526310A (ja) * | 2009-05-06 | 2012-10-25 | イルデト カナダ コーポレーション | ホワイトボックス暗号化技術を用いるインターロックされたバイナリ保護 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US7287166B1 (en) * | 1999-09-03 | 2007-10-23 | Purdue Research Foundation | Guards for application in software tamperproofing |
US6789199B1 (en) * | 2000-02-08 | 2004-09-07 | International Business Machines Corporation | Tamper resistance with pseudo-random binary sequence program interlocks |
US7269744B1 (en) * | 2000-09-29 | 2007-09-11 | Intel Corporation | System and method for safeguarding data between a device driver and a device |
US20020138748A1 (en) | 2001-03-21 | 2002-09-26 | Hung Andy C. | Code checksums for relocatable code |
US6880149B2 (en) | 2002-04-01 | 2005-04-12 | Pace Anti-Piracy | Method for runtime code integrity validation using code block checksums |
US7424706B2 (en) * | 2003-07-16 | 2008-09-09 | Microsoft Corporation | Automatic detection and patching of vulnerable files |
US7841010B2 (en) | 2007-01-08 | 2010-11-23 | Apple Inc. | Software or other information integrity verification using variable block length and selection |
-
2010
- 2010-02-18 EP EP10305164A patent/EP2362314A1/en not_active Withdrawn
-
2011
- 2011-02-02 JP JP2011020280A patent/JP5734685B2/ja not_active Expired - Fee Related
- 2011-02-15 US US12/931,982 patent/US20110202996A1/en not_active Abandoned
- 2011-02-17 CN CN201110042102.6A patent/CN102163268B/zh not_active Expired - Fee Related
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002507307A (ja) * | 1998-04-27 | 2002-03-05 | モトローラ・インコーポレイテッド | プログラムをプロセッサに読み込むための装置および方法 |
JP2001175466A (ja) * | 1999-12-21 | 2001-06-29 | Fuji Xerox Co Ltd | 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体 |
JP2002297542A (ja) * | 2001-04-02 | 2002-10-11 | Nippon Telegr & Teleph Corp <Ntt> | コンテンツ時限開示方法、システム、セキュリティデバイス |
US20050210287A1 (en) * | 2004-03-19 | 2005-09-22 | Nokia Corporation | Secure mode controlled memory |
JP2008532113A (ja) * | 2005-02-11 | 2008-08-14 | シンプレックス メジャー センドリアン ベルハッド | ソフトウェア保護方法 |
KR100772881B1 (ko) * | 2006-05-25 | 2007-11-05 | 삼성전자주식회사 | 자기 수정 코드의 무결성 검증 장치 및 방법 |
WO2009125220A1 (en) * | 2008-04-07 | 2009-10-15 | Metaforic Limited | An anti-tamper system employing automated analysis |
JP2011516953A (ja) * | 2008-04-07 | 2011-05-26 | メタフォリック リミテッド | 自動解析を採用する改竄防止システム |
WO2009150475A1 (en) * | 2008-06-12 | 2009-12-17 | Metaforic Limited | A method of protecting computer program code |
JP2011525650A (ja) * | 2008-06-12 | 2011-09-22 | メタフォリック リミテッド | コンピュータプログラムコードを保護する方法 |
JP2012526310A (ja) * | 2009-05-06 | 2012-10-25 | イルデト カナダ コーポレーション | ホワイトボックス暗号化技術を用いるインターロックされたバイナリ保護 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017538217A (ja) * | 2014-11-28 | 2017-12-21 | トムソン ライセンシングThomson Licensing | アプリケーション整合性の検証を提供する方法及びデバイス |
Also Published As
Publication number | Publication date |
---|---|
CN102163268B (zh) | 2016-03-16 |
CN102163268A (zh) | 2011-08-24 |
EP2362314A1 (en) | 2011-08-31 |
JP5734685B2 (ja) | 2015-06-17 |
US20110202996A1 (en) | 2011-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5734685B2 (ja) | インテグリティを実行中に確かめるソフトウェアを生成するプログラム、方法及び記憶媒体 | |
US7546587B2 (en) | Run-time call stack verification | |
EP2634960B1 (en) | Method and apparatus for incremental code signing | |
KR101798672B1 (ko) | 코드 불변식을 이용한 스테가노그래픽 메시징 시스템 | |
CN109313677B (zh) | 用于动态可执行验证的方法和装置 | |
US20170116410A1 (en) | Software protection | |
JP5785762B2 (ja) | 自己修正計算機コードのチェックサム検証のための方法、装置およびコンピュータ・プログラム担体 | |
TWI567580B (zh) | 用於防止惡意軟體執行的方法與系統 | |
US20110208975A1 (en) | Electronic device and method of software or firmware updating of an electronic device | |
US20140337639A1 (en) | Steganographic embedding of executable code | |
JP2009543244A (ja) | 暗号関数を難読化する方法およびシステム | |
US20050198507A1 (en) | Import address table verification | |
US20160055331A1 (en) | Detecting exploits against software applications | |
KR101968382B1 (ko) | Tpm 기반의 사용자 장치 및 이를 이용한 부팅 방법 | |
Kim et al. | Anti-reversible dynamic tamper detection scheme using distributed image steganography for IoT applications | |
CN114139117A (zh) | 应用程序加固方法、装置、电子设备及存储介质 | |
TWI682296B (zh) | 映像檔打包方法及映像檔打包系統 | |
US11977760B1 (en) | Secure data and instruction loading | |
CN112685697B (zh) | 一种防止安卓应用被破解篡改的方法及终端 | |
CN112131612A (zh) | 一种cf卡数据防篡改方法、装置、设备及介质 | |
CN111338664A (zh) | 映像文件打包方法及映像文件打包系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140116 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140116 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20141016 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20141028 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150126 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150227 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150317 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150415 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5734685 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |