JP2011170847A - Method and apparatus for verifying integrity of software during execution and apparatus for generating such software - Google Patents
Method and apparatus for verifying integrity of software during execution and apparatus for generating such software 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
Description
本発明は、概して、ソフトウェア、特に、ソフトウェアのインテグリティを確保すること、に関する。 The present invention relates generally to software, and particularly to ensuring software integrity.
本項目は、以下で記載及び/又は請求される本発明の様々な態様に関連する技術の様々な側面を読む者に紹介することを目的とする。この議論は、本発明の様々な態様のより良い理解を助けるよう読む者に背景情報を提供するのに役立つと信じられている。従って、当然、これらの記述は、先行技術の容認としてではなく、この観点から読まれるべきである。 This section is intended to introduce the reader to various aspects of the technology related to various aspects of the present invention described and / or claimed below. This discussion is believed to help provide readers with background information to help a better understanding of the various aspects of the present invention. Thus, of course, these descriptions should be read in this light and not as an admission of the prior art.
プログラムが意図されたように実行されることを確かにすることを目的にコンピュータプログラムのインテグリティを保護することは、ソフトウェアのプロバイダにとって、比較的一般的である。しかし、通常、ハッカーは、様々な方法で、実行すべきプログラムに不正侵入しようとする。一例として、ハッカーは、ときどき、必要なアクセス権原を有さずにプログラムを使用することができるように、プログラムのアクセス制御機能を回避すべくコードを書き換えることを望む。 It is relatively common for software providers to protect the integrity of a computer program in order to ensure that the program executes as intended. However, hackers usually try to break into programs to be executed in various ways. As an example, hackers sometimes want to rewrite code to avoid the program's access control functions so that the program can be used without having the necessary access rights.
プログラムのインテグリティを保証する先行技術に係る方法は、コードの少なくとも幾つかの部分に対してシグニチャ(「チェックサム」ともいう。)を計算することである。例えば、シグニチャは、コードの部分に対して計算されて、秘密キーにより署名されたハッシュ値であってよい。当業者には当然のことながら、多くの他の可能性が存在する。プログラム実行中に、コードのシグニチャは少なくとも一度計算される。セキュリティ・レベルを高めるために、シグニチャを計算する関数が入れ子にされ、それにより、各関数のインテグリティは少なくとも1つの他の関数によって確かめられる。このようにして、ただ1つの関数が損なわれないままである場合、それは、少なくとも1つの他の関数を改ざんすることを検出する。更なる詳細及び説明は、例えば、米国特許出願公報第2003/188231号明細書(特許文献1)及び欧州特許第1942431号明細書(特許文献2)で見つけられ、また、米国特許出願公開第2002/138748号明細書(特許文献3)は、どのように再配置可能コードについてインテグリティを決定すべきかを教示している。同様の解決法は、D.Aucsmith、Tamper Resistant Software:An Implementation Proceedings of the International Workshop on Information Hiding(非特許文献1)で見つけられる。この文献において、暗号化されたインテグリティ関数は復号化されて、特別の暗号化されていないモジュールのインテグリティを確かめるために使用される。 A prior art method of ensuring program integrity is to calculate a signature (also referred to as a “checksum”) for at least some parts of the code. For example, the signature may be a hash value calculated for a portion of code and signed with a private key. There are many other possibilities, as will be appreciated by those skilled in the art. During program execution, the code signature is calculated at least once. To increase the level of security, functions that calculate signatures are nested so that the integrity of each function is verified by at least one other function. In this way, if only one function remains intact, it detects tampering with at least one other function. Further details and explanation can be found, for example, in US Patent Application Publication No. 2003/188231 (Patent Document 1) and European Patent No. 1942431 (Patent Document 2). No. 138748 teaches how integrity should be determined for relocatable code. A similar solution is described in D.A. Auxmith, Tamper Resist Software: An Implementation Processes of the International Workshop on Information Hiding (Non-Patent Document 1). In this document, the encrypted integrity function is decrypted and used to verify the integrity of a special unencrypted module.
予想通りに、このような保護に対処する方法は、ハッカーではなく学究的な興味よって見出されてきた(例えば、Glen Wurster等、“A Generic Attack on Checksumming Based on Software Tamper Resistance”、SP’05:Proceeding of the 2005 IEEE Symposium on Security and Privace、127〜138頁、米国ワシントンDC、2005年、IEEE Computer Society(非特許文献2))。かかる方法はコードの2つのコピーを用いる。1つのコピーは変更されておらず、もうひとつのコピーは変更されている。変更されているコードのコピーは実行され、チェックサムが必要とされるときには、これは変更されていないコードのコピーを用いて計算される。このようにして、当該方法は、コードの変更を可能にし、同時に、正しいチェックサム、すなわち、変更されていないコードに対応するチェックサム、を提供することが可能である。なお、攻撃はあらゆる種類のプロセッサにおいて行われ得ないことが認知されるべきである。 As expected, ways to address such protection have been found by scholarly interest rather than hackers (see, eg, Glen Wurster et al., “A Generic Attack on Checking Based on Software Tamper Resistance”, SP'05. : Proceeding of the 2005 IEEE Symposium on Security and Privacy, pages 127-138, Washington, DC, 2005, IEEE Computer Society (Non-patent Document 2)). Such a method uses two copies of the code. One copy has not changed and the other copy has changed. A copy of the code that has been changed is executed, and when a checksum is needed, this is calculated using a copy of the code that has not changed. In this way, the method can change the code and at the same time provide a correct checksum, i.e. a checksum corresponding to the code that has not been changed. It should be recognized that attacks cannot be performed on any kind of processor.
非特許文献2で提案されている対策は、コードを含むページについてアクセス権原を変更することである。コードを読み出す権利がそのコード自体についても解除される場合、これは、変更されていないコードを提供するよう接続される割り込みを(コードが自身を読み出そうとする場合に)引き起こす。 A countermeasure proposed in Non-Patent Document 2 is to change the access right source for a page including a code. If the right to read the code is also released for the code itself, this causes an interrupt (if the code tries to read itself) that is connected to provide the code that has not changed.
他の問題は、先行技術に係るチェックサムは自己書換コード(self-modifying code)に適合しないことである。これは、特定のチェックサムが、コードの1バージョンについてのみ、すなわち、変更の前又は後にのみ、有効であるためである。 Another problem is that the checksum according to the prior art does not fit into a self-modifying code. This is because a particular checksum is only valid for one version of the code, i.e. before or after the change.
従って、ソフトウェア、特に、自己書換型であるコード、のインテグリティを保証するための改善された解決法が必要である。本発明は、かかる解決法を提供する。 Therefore, there is a need for an improved solution for ensuring the integrity of software, particularly code that is self-writing. The present invention provides such a solution.
第1の態様で、本発明は、自己書換ソフトウェアコードのインテグリティをその実行中に確かめる方法を対象とする。ソフトウェアコードは複数のモジュールを有し、各モジュールは、ソフトウェアコードの実行中に、少なくとも2つのとり得る状態、すなわち、暗号化された状態及び暗号化されていない状態、にあることができる。ソフトウェアコードを実行するプロセッサは、複数のモジュールのうちの1つを第1の状態から第2の状態に変えることによってソフトウェアコードを変更し、その変更されたソフトウェアコードについてチェックサムと変更されたソフトウェアコードを比較することによってソフトウェアコードのインテグリティ確かめる。 In a first aspect, the present invention is directed to a method for verifying the integrity of self-rewriting software code during its execution. The software code has a plurality of modules, and each module can be in at least two possible states during execution of the software code: an encrypted state and an unencrypted state. The processor executing the software code changes the software code by changing one of the plurality of modules from the first state to the second state, the checksum and the changed software for the changed software code Verify the integrity of the software code by comparing the code.
第1の望ましい実施形態で、チェックサムはハッシュ値である。 In the first preferred embodiment, the checksum is a hash value.
第2の望ましい実施形態で、チェックサムは、モジュールのインテグリティを確かめる関数に埋め込まれている。 In a second preferred embodiment, the checksum is embedded in a function that verifies the integrity of the module.
第3の望ましい実施形態で、チェックサムはルックアップテーブルに含まれる。有利に、変更されたソフトウェアコードのインテグリティを確かめる関数は、ルックアップテーブルに含まれるチェックサムにアクセスするために、複数のモジュールの夫々の状態を示す状態変数を使用する。 In a third preferred embodiment, the checksum is included in the lookup table. Advantageously, the function that verifies the integrity of the modified software code uses a state variable that indicates the state of each of the plurality of modules to access the checksum contained in the lookup table.
第2の態様で、本発明は、自己書換ソフトウェアコードのインテグリティをその実行中に確かめる装置を対象とする。ソフトウェアコードは複数のモジュールを有し、各モジュールは、ソフトウェアコードの実行中に、少なくとも2つのとり得る状態、すなわち、暗号化された状態及び暗号化されていない状態、にあることができる。当該装置は、ソフトウェアコードを実行し、それによって、複数のモジュールのうちの1つを第1の状態から第2の状態に変えることによってソフトウェアコードを変更し、その変更されたソフトウェアコードについてチェックサムと変更されたソフトウェアコードを比較することによってソフトウェアコードのインテグリティ確かめるよう構成されたプロセッサを有する。 In a second aspect, the present invention is directed to an apparatus for verifying the integrity of self-modifying software code during its execution. The software code has a plurality of modules, and each module can be in at least two possible states during execution of the software code: an encrypted state and an unencrypted state. The apparatus executes the software code, thereby changing the software code by changing one of the plurality of modules from the first state to the second state, and checksumming the changed software code. And a processor configured to verify the integrity of the software code by comparing the modified software code.
第1の望ましい実施形態で、チェックサムはハッシュ値である。 In the first preferred embodiment, the checksum is a hash value.
第2の望ましい実施形態で、チェックサムは、モジュールのインテグリティを確かめる関数に埋め込まれている。 In a second preferred embodiment, the checksum is embedded in a function that verifies the integrity of the module.
第3の望ましい実施形態で、チェックサムはルックアップテーブルに含まれる。有利に、変更されたソフトウェアコードのインテグリティを確かめる関数は、ルックアップテーブルに含まれるチェックサムにアクセスするために、複数のモジュールの夫々の状態を示す状態変数を使用する。 In a third preferred embodiment, the checksum is included in the lookup table. Advantageously, the function that verifies the integrity of the modified software code uses a state variable that indicates the state of each of the plurality of modules to access the checksum contained in the lookup table.
第3の態様で、本発明は、インテグリティが保護された自己書換バイナリを生成する装置を対象とする。バイナリは複数のモジュールを有し、各モジュールは、ソフトウェアコードの実行中に、少なくとも2つのとり得る状態、すなわち、暗号化された状態及び暗号化されていない状態、にあることができる。当該装置はプロセッサを有し、プロセッサは、バイナリを受け取り、バイナリのチェックサムを、そのとり得る状態の夫々において生成し、少なくとも1つのチェックサム照合関数及び前記生成されたチェックサムをバイナリに挿入することによって、インテグリティが保護されたバイナリを生成するよう構成される。各チェックサム関数は、バイナリの状態を該バイナリの状態についてのチェックサムと比較することによって、インテグリティが保護されたバイナリの各状態のインテグリティを確かめるよう構成される。 In a third aspect, the present invention is directed to an apparatus for generating an integrity-protected self-rewriting binary. A binary has multiple modules, and each module can be in at least two possible states during execution of the software code: an encrypted state and an unencrypted state. The apparatus includes a processor that receives the binary, generates a binary checksum in each of its possible states, and inserts at least one checksum verification function and the generated checksum into the binary. By doing so, the integrity is configured to generate a protected binary. Each checksum function is configured to verify the integrity of each state of the protected binary by comparing the binary state with the checksum for the binary state.
第1の望ましい実施形態で、プロセッサは、更に、入れ子式に複数のチェックサム照合関数を挿入し、それにより、実行中に、各チェックサム照合関数のインテグリティが少なくとも1つの他のチェックサム照合関数によって確かめられるようにする、よう構成される。 In a first preferred embodiment, the processor further inserts a plurality of checksum verification functions in a nested manner so that during execution, the integrity of each checksum verification function is at least one other checksum verification function. Configured to be ascertained by.
第4の態様で、本発明は、自己書換型のインテグリティが保護されたバイナリを記憶しており、プロセッサによって実行される場合に、本発明の第1の態様に係る方法のステップを実行するコンピュータプログラムを対象とする。 In a fourth aspect, the present invention stores a self-rewritable integrity-protected binary and executes the method steps according to the first aspect of the present invention when executed by a processor. Target the program.
第5の態様で、本発明は、プロセッサによって実行される場合に、複数のモジュールを有するバイナリの各状態についてチェックサムを生成し、各モジュールは前記バイナリの実行中に少なくとも2つのとり得る状態にあることができ、該とり得る状態は暗号化された状態及び暗号化されていない状態であり、少なくとも1つのチェックサム照合関数及び前記生成されたチェックサムを前記バイナリに挿入することによって、インテグリティが保護されたバイナリを生成し、各チェックサム関数は、前記バイナリの状態を該バイナリの状態についてのチェックサムと比較することによって、前記インテグリティが保護されたバイナリの各状態のインテグリティを確かめるよう構成される、命令を記憶しているコンピュータプログラムを対象とする。 In a fifth aspect, the present invention, when executed by a processor, generates a checksum for each binary state having a plurality of modules, each module being in at least two possible states during execution of the binary. The possible states are an encrypted state and an unencrypted state, and by inserting at least one checksum verification function and the generated checksum into the binary, integrity is improved. Generate a protected binary and each checksum function is configured to verify the integrity of each state of the protected binary by comparing the state of the binary with a checksum for the state of the binary. For computer programs that store instructions That.
本発明の実施形態によれば、ソフトウェア、特に、自己書換型であるコード、のインテグリティを保証するための改善された解決法が提供される。 Embodiments of the present invention provide an improved solution for ensuring the integrity of software, particularly code that is self-writing.
本発明の望ましい特徴について、添付の図面を参照して、限定されない例を用いて記載する。 Preferred features of the invention will now be described by way of non-limiting example with reference to the accompanying drawings.
図1は、本発明が実施されるコンピュータデバイス(コンピュータ)100の例を表す。コンピュータ100は、例えば、標準のパーソナルコンピュータ(PC)といった、計算を実行することができる如何なる種類のコンピュータ又はデバイスであってもよい。コンピュータ100は、少なくとも1つのプロセッサ110と、RAMメモリ120と、ユーザと対話するためのユーザインターフェース(UI)130と、デジタルデータ担体150からソフトウェアプログラムを読み出すための第2のインターフェース(I/O)140とを有する。当業者には明らかなように、図示されているコンピュータは、明りょうさのために簡単化されており、実際のコンピュータは、更に、ネットワーク接続や持続記憶デバイス等の機能を有する。
FIG. 1 represents an example of a computing device (computer) 100 in which the present invention is implemented. The
本発明の主たる発明概念は、各状態が保護されているプログラムコードの状態に対応するところの、プログラムの実行中の有限状態機械(finite state machine)の使用である。1つの状態から他の状態に移るとき、コードの少なくとも1つのモジュールは動的に変更される。有限状態機械はそれ自体当該技術でよく知られているので、それについて詳細には記載しない。モジュールの限定されない例は、コードのサブセクション、コードのチャンク(chunks)、及び関数である。改ざんから保護するために、各状態についてチェックサムを計算することが可能であり、これにより、コードを改ざんすることを防ぐことができる。 The main inventive concept of the present invention is the use of a finite state machine during execution of the program, where each state corresponds to a state of the protected program code. When transitioning from one state to another, at least one module of code is dynamically changed. Finite state machines are themselves well known in the art and will not be described in detail. Non-limiting examples of modules are code subsections, code chunks, and functions. In order to protect against tampering, a checksum can be calculated for each state, which prevents the code from being tampered with.
図2は、本発明の望ましい実施形態を表す状態図である。説明の明りょうさのために、例となる状態図は3つの状態(S1、S2及びS3)しか含まず、各状態はチェックサムに関連付けられており、コードは3つのモジュール(M1、M2及びM3)しか有さない。当業者には明らかなように、本発明は、より多くの(又はより少ない)状態及びモジュールにも等しく適用され、それに対応する異なった状態遷移が可能である。 FIG. 2 is a state diagram illustrating a preferred embodiment of the present invention. For clarity of explanation, the example state diagram includes only three states (S1, S2, and S3), each state is associated with a checksum, and the code is divided into three modules (M1, M2, and Only have M3). As will be apparent to those skilled in the art, the present invention applies equally to more (or fewer) states and modules, and corresponding different state transitions are possible.
例において、初期状態はS1である。この状態において、コードの全てのモジュールは、それらの初期状態にあり、状態は第1チェックサム、すなわち、チェックサムV1、に関連付けられている。この第1チェックサムにより、少なくとも1つのモジュールのインテグリティ照合が可能となる。 In the example, the initial state is S1. In this state, all modules of the code are in their initial state, and the state is associated with the first checksum, i.e. checksum V1. This first checksum enables integrity verification of at least one module.
実行により状態S1から状態S2へのシフトが起こる場合、第1のモジュールM1は変更され、変更されたモジュールM’1が生成される。望ましくは、この時点で(チェックサムV2を用いて)チェックサムが確認されるが、その確認は、夫々の状態遷移に適用することができる、後の段階で行われてもよい。 If execution causes a shift from state S1 to state S2, the first module M1 is changed and a changed module M'1 is generated. Preferably, the checksum is verified at this point (using checksum V2), but the verification may be performed at a later stage that can be applied to each state transition.
同様に、実行により状態S2から状態S3へのシフトが起こる場合、第2のモジュールM2が変更され、変更されたモジュールM’2が生成される。変更されたモジュールM’1は、その変更されていない形態M1に戻り、それにより、コードは3つのモジュールM1、M’2及びM3を有する。前に説明されたように、望ましくは、この時点で(チェックサムV3を用いて)チェックサムが確認される。 Similarly, if the execution causes a shift from state S2 to state S3, the second module M2 is changed and a changed module M'2 is generated. The modified module M'1 returns to its unmodified form M1, so that the code has three modules M1, M'2 and M3. As previously described, the checksum is preferably verified at this point (using checksum V3).
状態S3から状態S2へ、更に状態S2から状態S1へ移ると、変更は逆方向に行われる。例えば、状態S2から状態S1に進む場合、変更されたモジュールM’1は、その変更されていない形態M1に戻る。また、かかる場合に、望ましくは、遷移後に(関連するチェックサムを用いて)チェックサムが確認される。 When the state S3 is changed to the state S2, and further from the state S2 to the state S1, the change is performed in the reverse direction. For example, when proceeding from state S2 to state S1, the changed module M′1 returns to its unmodified form M1. Also in such a case, the checksum is preferably verified after the transition (using the associated checksum).
図3は、本発明の望ましい実施形態に従うインテグリティ照合のための方法を表す。方法は、通常のプログラム実行から始まることができる(ステップ310)。或る時点で、状態を変化させることが決定される(ステップ320)。少なくとも1つのモジュールが変更され(ステップ330)、インテグリティがチェックされる(ステップ340)。この後、通常のプログラム実行がステップ310で戻る。
FIG. 3 represents a method for integrity verification according to a preferred embodiment of the present invention. The method can begin with normal program execution (step 310). At some point, it is determined to change the state (step 320). At least one module is changed (step 330) and integrity is checked (step 340). Thereafter, normal program execution returns at
モジュールは、例えば、モジュールの解読によって(その場合には、復号化キーが必要である。)、又はモジュールの一部のバイトを変更することによって(例えば、置換によって)、変更されてよい。前者の場合、コードは、その最初の状態に戻るよう暗号化される(対称的な暗号アルゴリズムでは、復号化キーと同じ暗号キーを必要とする。)。後者の場合、バイトは、例えば、バックワード置換(backwards permutation)によって、最初の構成に戻される。 The module may be changed, for example, by decrypting the module (in which case a decryption key is required) or by changing some bytes of the module (eg, by substitution). In the former case, the code is encrypted to return to its original state (a symmetric encryption algorithm requires the same encryption key as the decryption key). In the latter case, the bytes are returned to the original configuration, eg, by backwards permutation.
図4は、バイナリ410の保護を表す。保護エンジン420は、とり得る状態及びそれらの夫々のチェックサム値を列挙するよう機能する。これらのチェックサム値は、識別を可能にする何らかのリファレンスとともに、保護されたバイナリ430に挿入される。保護エンジン420は、例えばパーソナルPC等の如何なる種類の適切なコンピュータデバイスであってもよい。それは、望ましくは、プロセッサ及びメモリ等(図示せず。)を有する。コンピュータプログラムプロダクト415は、例えばCD−ROM又はUSBメモリ等であって、プロセッサによって実行される場合に本願で記載されるようにバイナリを保護する命令を記憶する。
FIG. 4 represents binary 410 protection. The protection engine 420 functions to enumerate the possible states and their respective checksum values. These checksum values are inserted into the protected
バイナリ410を保護するために、保護エンジン420は、バイナリ410を解析して、とり得る状態を計算する。この目的のために、有利に、保護エンジン420は、コールグラフ解析及び状態解析を使用する。状態が生成されると、保護エンジン420は、その状態に係るチェックサムを計算する。 To protect the binary 410, the protection engine 420 parses the binary 410 and calculates possible states. For this purpose, the protection engine 420 advantageously uses call graph analysis and state analysis. When a state is generated, the protection engine 420 calculates a checksum for that state.
次いで、保護エンジン420は、少なくとも1つのチェックサム呼び出し(invocation)ポイント432と、チェックサムが確認される各状態ごとに1つである、チェックサムの(単一値を有することができる)テーブル434とを有する保護されたバイナリ430を生成する。望ましくは、チェックサムは、容易なアクセスを可能にするある種の識別子(例えば、状態1、状態2・・・といった表示、又は“暗号化されたモジュール1、復号化されたモジュール2、暗号化されたモジュール3”のラインに沿った表示)と関連付けられる。望ましくは、チェックサムテーブル434は、保護されたバイナリの少なくとも一部についてハッシュ値の形をとるが、他のチェックサムも想定されてよい(例えば、バイナリの一定範囲における特定の文字の数)。チェックサムは、例えば暗号化によって、保護されるが、先に記載されたように、チェックサム照合関数を入れ子にすることが好ましく、それにより、各関数のインテグリティは少なくとも1つの他の関数によって確認される。
The protection engine 420 then checks at least one
状態のチェックサムが決定論的に前の状態のチェックサムから決定される場合に、チェックサムテーブル434を用いずに行うことも可能である点に留意すべきである。チェックサムは、また、保護されたバイナリにおいて難読化され、又は別なファイルに記憶されてもよい。 Note that it is possible to do without the checksum table 434 if the state checksum is determined deterministically from the previous state checksum. The checksum may also be obfuscated in the protected binary or stored in a separate file.
次いで、以下の限定されない例を考える。記載及びその理解を容易にするよう、例は、単一コード領域(「チェックサム範囲」と呼ばれる。)が、望ましくはプログラム実行中に複数の照合ポイントで起こるチェックサム照合によって保護される場合に限定される。当業者には明らかなように、本発明は、複数のチェックサム範囲の場合に容易に拡張可能である。例は、更に、モジュールが、2つの異なった状態、すなわち、暗号化された状態及び復号化された状態、にあることができる関数に対応する特定の場合に限定される。 Then consider the following non-limiting example. For ease of description and understanding thereof, an example is given when a single code region (referred to as a “checksum range”) is preferably protected by checksum verification that occurs at multiple verification points during program execution. Limited. As will be apparent to those skilled in the art, the present invention can be easily extended to multiple checksum ranges. The example is further limited to the specific case where the module corresponds to a function that can be in two different states: an encrypted state and a decrypted state.
このようにして、コードには特有の状態遷移が存在し、各状態は、望ましくは、保護されたバイナリにおける少なくとも1つの照合ポイントで確認される。 In this way, there is a unique state transition in the code, and each state is preferably verified at at least one matching point in the protected binary.
例において、各関数が2つのとり得る状態(暗号化された状態及び復号化された状態)のうちの1つにある場合、状態変数S(望ましくは、ビットストリーム)において状態ビットSiとして状態を表すことが可能である。状態変数Sは、アプリケーションの関数コールグラフに依存して、とり得ない値を表すことができる。そのようなものとして、状態変数Sのとり得る値のサブセットのみがアプリケーションについて有効であってよい。状態変数Sの各値は、保護エンジンによって計算されるチェックサム値に対応し、これらのチェックサム値は、保護されたバイナリに(有利にハッシュ値として)埋め込まれる。次いで、ハッシュ・チェックサムは、識別子として状態変数Sを用いて調べられてよい。 In the example, if each function is in one of two possible states (encrypted state and decrypted state), the state is set as state bit Si in state variable S (preferably a bitstream). Can be represented. The state variable S can represent an impossible value depending on the function call graph of the application. As such, only a subset of possible values of the state variable S may be valid for the application. Each value of the state variable S corresponds to a checksum value calculated by the protection engine, and these checksum values are embedded in the protected binary (preferably as a hash value). The hash checksum may then be examined using the state variable S as an identifier.
関数が暗号化又は復号化されるときはいつでも、すなわち、状態が変化する場合には、状態変数Sは、適切な状態ビットSiを反転(flip)させることによって、更新される。 Whenever a function is encrypted or decrypted, ie when the state changes, the state variable S is updated by flipping the appropriate state bit Si.
図5は、状態ビットS1、S2に夫々関連付けられた2つの関数F1、F2を伴う、例となる状態遷移図を表す。各関数は、暗号化され(S1、S2によって表され)且つ復号化されてよく、4つの異なる状態を生ずる。
・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である。
FIG. 5 represents an example state transition diagram with two functions F1, F2 associated with state bits S1, S2, respectively. Each function may be encrypted (represented by S1, S2) and decrypted, resulting in four different states.
S0: F1 and F2 are encrypted-(S1S2)
S1: F1 is encrypted, F2 is decrypted-(S1 S2 )
S2: F1 is decryption, F2 is encryption-( S1 S2)
S3: F1 and F2 are decrypted-( S1S2 )
Initially, the program executes the
関数F1(530)には2つの可能性が存在する。F1の実行が終わり、F1はF2を呼び出す。最初の場合では、F1は暗号化され(540)、S1は反転され、実行はメイン関数510に戻る。そして、状態はS0=S1S2に戻る。
There are two possibilities for the function F1 (530). The execution of F1 ends and F1 calls F2. In the first case, F1 is encrypted (540), S1 is inverted, and execution returns to the
第2の場合では、F2は復号化され(550)、状態ビットS2は反転され、F2の実行560が始まる。しかし、メイン関数510が直接F2を呼び出す場合と対照的に、F1も復号化されている。このことは、状態がS3=S1S2であることを意味する。従って、F2の実行中、状態はS1又はS3のいずれかである。
In the second case, F2 is decoded (550), status bit S2 is inverted, and execution of
このようにして、F2の実行が終わると、F2は暗号化され(570)、状態ビットS2は反転され、実行は関数の呼び出しに戻る。呼び出す関数がメイン関数である場合、メイン関数510は実行を引き継ぐ。このとき、状態はS0=S1S2である。他方で、呼び出す関数がF1であった場合、F1の実行530が再開する。このとき、状態はS2=S1S2である。
Thus, when execution of F2 ends, F2 is encrypted (570), status bit S2 is inverted, and execution returns to the function call. If the function to call is the main function, the
図5で、チェックサム呼び出しポイントは、理解を簡単にするために、省略されているが、当然、夫々の関数(メイン関数、F1、F2)は、望ましくは、状態に関連付けられたチェックサムを確認する(場合により、暗号化/復号化関数の部分としての)少なくとも1つのチェックサム呼び出しポイントを有する。 In FIG. 5, the checksum call point is omitted for ease of understanding, but of course each function (main function, F1, F2) preferably has a checksum associated with the state. It has at least one checksum call point to verify (possibly as part of an encryption / decryption function).
チェックサム呼び出しポイントの最も簡単な実施は、プログラムが現在の状態Sを読み出し、対応するチェックサム値をチェックサムテーブルにおいて見つけ出し、記憶されているチェックサム値に対して照合されるべきチェックサムを生成することである。照合が失敗である場合、望ましくは、実行は中止される。 The simplest implementation of a checksum call point is that the program reads the current state S, finds the corresponding checksum value in the checksum table, and generates a checksum that is to be checked against the stored checksum value. It is to be. If the verification is unsuccessful, execution is preferably aborted.
当業者に明らかなように、攻撃者はチェックサム値を改ざんしようと試みる。このような理由で、他のチェックサムを含む呼び出し関数と同様にチェックサムテーブルを保護することが好ましく、これにより、これらは照合される。 As will be apparent to those skilled in the art, the attacker attempts to tamper with the checksum value. For this reason, it is preferable to protect the checksum table in the same way as calling functions that include other checksums, so that they are verified.
可能であればいつでも、呼び出しポイントコードにおいてチェックサム値をインラインにすることによって、セキュリティのレベルを高めることが可能である。この場合、保護エンジンは、有利に、下記の3つの場合の間を区別するようコールグラフを解析する。
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よりも多い)状態を有することが可能である。
Whenever possible, it is possible to increase the level of security by inlining the checksum value in the call point code. In this case, the protection engine advantageously analyzes the call graph to distinguish between the following three cases:
1. If a protected function is entered, the state is unique. That is, a single execution path leads to the function. In this case, the checksum value is unique and the call point code may comprise a code that embeds the checksum value (preferably in an obfuscated manner). For example,
if (checksum_value equals checksum_ref) then (do_something)
2. When a function to be protected is input, there are a few (less than 5) possible states. In this case also, it is possible to embed a checksum value in the call point code. For example,
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 there are many possible states, a checksum table is a desirable solution. For example,
if (checksum_value equals LookupInChecksumTable (S)) then (do_something)
In the specification, a module has been described as having two possible states (eg, encryption and decryption). As will be apparent to those skilled in the art, a module can have multiple (particularly more than two) states.
本発明は、上記の攻撃に打ち勝つことができるマルチステート・ソフトウェアコードのインテグリティを確かめる方法を提供することができると認められる。 It will be appreciated that the present invention can provide a method for verifying the integrity of multi-state software code that can overcome the above attacks.
明細書並びに(必要に応じて)特許請求の範囲及び図面で開示されている夫々の特徴は、独立して、又は何らかの適切な組合せにおいて、提供されてよい。ハードウェアで実施されると記載される特徴は、ソフトウェアでも実施されてよく、また、その逆も同様である。特許請求の範囲に現れる参照符号は、単なる例示として用いられ、特許請求の範囲の適用範囲を限定するものではない。 Each feature disclosed in the description and (where appropriate) the claims and drawings may be provided independently or in any appropriate combination. Features described as being implemented in hardware may also be implemented in software and vice versa. Reference numerals appearing in the claims are by way of illustration only and shall have no limiting effect on the scope of the claims.
100 コンピュータ
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 チェックサム
100
140 Second interface (I / O)
150
410
430
432
Claims (14)
前記ソフトウェアコードは複数のモジュールを有し、各モジュールは、前記ソフトウェアコードの実行中に少なくとも2つのとり得る状態にあることが可能であり、該とり得る状態は暗号化された状態及び暗号化されていない状態であり、
当該方法は、前記ソフトウェアコードを実行するプロセッサによって実行され、前記プロセッサに、
前記複数のモジュールのうちの1つを第1の状態から第2の状態に変えることによって前記ソフトウェアコードを変更するステップと、
前記変更されたソフトウェアコードについてチェックサムと前記変更されたソフトウェアコードを比較することによって前記ソフトウェアコードのインテグリティを確かめるステップと
を実行させる方法。 A method to verify the integrity of self-modifying software code during its execution,
The software code has a plurality of modules, and each module can be in at least two possible states during execution of the software code, the possible states being an encrypted state and an encrypted state. Is not in the state
The method is executed by a processor that executes the software code,
Changing the software code by changing one of the plurality of modules from a first state to a second state;
Checking the integrity of the software code by comparing a checksum with the modified software code for the modified software code.
前記ソフトウェアコードは複数のモジュールを有し、各モジュールは、前記ソフトウェアコードの実行中に少なくとも2つのとり得る状態にあることが可能であり、該とり得る状態は暗号化された状態及び暗号化されていない状態であり、
前記ソフトウェアコードを実行し、それによって、
前記複数のモジュールのうちの1つを第1の状態から第2の状態に変えることによって前記ソフトウェアコードを変更し、
前記変更されたソフトウェアコードについてチェックサムと前記変更されたソフトウェアコードを比較することによって前記ソフトウェアコードのインテグリティを確かめる
よう構成されるプロセッサを有する、装置。 A device that verifies the integrity of self-modifying software code during its execution,
The software code has a plurality of modules, and each module can be in at least two possible states during execution of the software code, the possible states being an encrypted state and an encrypted state. Is not in the state
Execute the software code, thereby
Changing the software code by changing one of the plurality of modules from a first state to a second state;
An apparatus comprising a processor configured to verify the integrity of the software code by comparing a checksum with the modified software code for the modified software code.
前記バイナリは複数のモジュールを有し、各モジュールは、前記バイナリの実行中に少なくとも2つのとり得る状態にあることができ、該とり得る状態は暗号化された状態及び暗号化されていない状態であり、
プロセッサを有し、該プロセッサは、
バイナリを受け取り、
前記バイナリのチェックサムを、そのとり得る状態の夫々において生成し、
少なくとも1つのチェックサム照合関数及び前記生成されたチェックサムを前記バイナリに挿入することによって、前記インテグリティが保護されたバイナリを生成する
よう構成され、
各チェックサム関数は、前記バイナリの状態を該バイナリの状態についてのチェックサムと比較することによって、前記インテグリティが保護されたバイナリの各状態のインテグリティを確かめるよう構成される、装置。 A device that generates integrity-protected self-rewriting binaries,
The binary has a plurality of modules, and each module can be in at least two possible states during execution of the binary, the possible states being encrypted and unencrypted. Yes,
A processor, the processor comprising:
Receive binaries,
Generating a binary checksum in each of its possible states;
The integrity is configured to generate a protected binary by inserting at least one checksum verification function and the generated checksum into the binary;
Each checksum function is configured to verify the integrity of each state of the protected binary by comparing the binary state to a checksum for the binary state.
複数のモジュールを有するバイナリの各状態についてチェックサムを生成し、各モジュールは前記バイナリの実行中に少なくとも2つのとり得る状態にあることができ、該とり得る状態は暗号化された状態及び暗号化されていない状態であり、
少なくとも1つのチェックサム照合関数及び前記生成されたチェックサムを前記バイナリに挿入することによって、インテグリティが保護されたバイナリを生成し、各チェックサム関数は、前記バイナリの状態を該バイナリの状態についてのチェックサムと比較することによって、前記インテグリティが保護されたバイナリの各状態のインテグリティを確かめるよう構成される
命令を記憶しているコンピュータプログラム。 When executed by the processor,
Generating a checksum for each state of a binary having a plurality of modules, each module being in at least two possible states during execution of the binary, the possible states being an encrypted state and an encryption Is not in the state,
An integrity protected binary is generated by inserting at least one checksum verification function and the generated checksum into the binary, each checksum function representing the binary state for the binary state. A computer program storing instructions configured to verify the integrity of each state of a protected binary by comparing the integrity with a checksum.
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 (en) | 2011-09-01 |
JP2011170847A5 JP2011170847A5 (en) | 2014-03-06 |
JP5734685B2 JP5734685B2 (en) | 2015-06-17 |
Family
ID=42320561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011020280A Expired - Fee Related JP5734685B2 (en) | 2010-02-18 | 2011-02-02 | Program, method, and storage medium for generating software for checking integrity during execution |
Country Status (4)
Country | Link |
---|---|
US (1) | US20110202996A1 (en) |
EP (1) | EP2362314A1 (en) |
JP (1) | JP5734685B2 (en) |
CN (1) | CN102163268B (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017538217A (en) * | 2014-11-28 | 2017-12-21 | トムソン ライセンシングThomson Licensing | Method and device for providing application integrity verification |
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 (en) * | 2013-09-27 | 2015-01-14 | (주)잉카엔트웍스 | Method For Verifying Integrity of Program Using Hash |
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 (en) * | 2016-09-30 | 2020-03-04 | Nagravision Sa | On-demand code decryption integrity |
US11281769B2 (en) * | 2016-12-15 | 2022-03-22 | Irdeto B.V. | Software integrity verification |
FR3083343B1 (en) * | 2018-06-29 | 2023-05-26 | Ingenico Group | METHOD FOR DETERMINING THE VALIDITY OF A CORRESPONDING APPLICATION CODE, DEVICE AND COMPUTER PROGRAM PRODUCT. |
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 (en) * | 2023-04-18 | 2023-10-20 | 青海省第三地质勘查院 | Authority control method and system based on improved last-bit checksum double hash function |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001175466A (en) * | 1999-12-21 | 2001-06-29 | Fuji Xerox Co Ltd | Method and device for generating execution program, and method for executing execution program and computer-readable program storage medium |
JP2002507307A (en) * | 1998-04-27 | 2002-03-05 | モトローラ・インコーポレイテッド | Apparatus and method for loading a program into a processor |
JP2002297542A (en) * | 2001-04-02 | 2002-10-11 | Nippon Telegr & Teleph Corp <Ntt> | Disclosure method of contents time limit, its system and security device |
US20050210287A1 (en) * | 2004-03-19 | 2005-09-22 | Nokia Corporation | Secure mode controlled memory |
KR100772881B1 (en) * | 2006-05-25 | 2007-11-05 | 삼성전자주식회사 | Apparatus and method for checking self modifying code |
JP2008532113A (en) * | 2005-02-11 | 2008-08-14 | シンプレックス メジャー センドリアン ベルハッド | Software protection methods |
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 (en) * | 2009-05-06 | 2012-10-25 | イルデト カナダ コーポレーション | Interlocked binary protection using white-box encryption technology |
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/en 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/en not_active Expired - Fee Related
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002507307A (en) * | 1998-04-27 | 2002-03-05 | モトローラ・インコーポレイテッド | Apparatus and method for loading a program into a processor |
JP2001175466A (en) * | 1999-12-21 | 2001-06-29 | Fuji Xerox Co Ltd | Method and device for generating execution program, and method for executing execution program and computer-readable program storage medium |
JP2002297542A (en) * | 2001-04-02 | 2002-10-11 | Nippon Telegr & Teleph Corp <Ntt> | Disclosure method of contents time limit, its system and security device |
US20050210287A1 (en) * | 2004-03-19 | 2005-09-22 | Nokia Corporation | Secure mode controlled memory |
JP2008532113A (en) * | 2005-02-11 | 2008-08-14 | シンプレックス メジャー センドリアン ベルハッド | Software protection methods |
KR100772881B1 (en) * | 2006-05-25 | 2007-11-05 | 삼성전자주식회사 | Apparatus and method for checking self modifying code |
WO2009125220A1 (en) * | 2008-04-07 | 2009-10-15 | Metaforic Limited | An anti-tamper system employing automated analysis |
JP2011516953A (en) * | 2008-04-07 | 2011-05-26 | メタフォリック リミテッド | Anti-tamper system using automatic analysis |
WO2009150475A1 (en) * | 2008-06-12 | 2009-12-17 | Metaforic Limited | A method of protecting computer program code |
JP2011525650A (en) * | 2008-06-12 | 2011-09-22 | メタフォリック リミテッド | How to protect computer program code |
JP2012526310A (en) * | 2009-05-06 | 2012-10-25 | イルデト カナダ コーポレーション | Interlocked binary protection using white-box encryption technology |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017538217A (en) * | 2014-11-28 | 2017-12-21 | トムソン ライセンシングThomson Licensing | Method and device for providing application integrity verification |
Also Published As
Publication number | Publication date |
---|---|
CN102163268B (en) | 2016-03-16 |
CN102163268A (en) | 2011-08-24 |
EP2362314A1 (en) | 2011-08-31 |
JP5734685B2 (en) | 2015-06-17 |
US20110202996A1 (en) | 2011-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5734685B2 (en) | Program, method, and storage medium for generating software for checking integrity during execution | |
US7546587B2 (en) | Run-time call stack verification | |
EP2634960B1 (en) | Method and apparatus for incremental code signing | |
KR101798672B1 (en) | Steganographic messaging system using code invariants | |
CN109313677B (en) | Method and apparatus for dynamically executable verification | |
US20170116410A1 (en) | Software protection | |
JP5785762B2 (en) | Method, apparatus and computer program carrier for checksum verification of self-correcting computer code | |
TWI567580B (en) | Method and system for preventing execution of malware | |
US20110208975A1 (en) | Electronic device and method of software or firmware updating of an electronic device | |
US20140337639A1 (en) | Steganographic embedding of executable code | |
JP2009543244A (en) | Method and system for obfuscating cryptographic functions | |
US20050198507A1 (en) | Import address table verification | |
US20160055331A1 (en) | Detecting exploits against software applications | |
KR101968382B1 (en) | User apparatus based on trusted platform module and booting method using the same | |
Kim et al. | Anti-reversible dynamic tamper detection scheme using distributed image steganography for IoT applications | |
CN114139117A (en) | Application program reinforcing method and device, electronic equipment and storage medium | |
TWI682296B (en) | Image file packaging method and image file packaging system | |
US11977760B1 (en) | Secure data and instruction loading | |
CN112685697B (en) | Method and terminal for preventing cracking and tampering of Ann Zhuo Ying application | |
CN112131612A (en) | CF card data tamper-proofing method, device, equipment and medium | |
CN111338664A (en) | Image file packaging method and image file packaging system |
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 |