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 PDF

Info

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
Application number
JP2011020280A
Other languages
Japanese (ja)
Other versions
JP5734685B2 (en
JP2011170847A5 (en
Inventor
Charles Salmon-Legagneur
サルモン−ルガニュール シャルル
Antoine Monsifrot
モンシフロ アントワーヌ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Thomson Licensing SAS
Original Assignee
Thomson Licensing SAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Thomson Licensing SAS filed Critical Thomson Licensing SAS
Publication of JP2011170847A publication Critical patent/JP2011170847A/en
Publication of JP2011170847A5 publication Critical patent/JP2011170847A5/ja
Application granted granted Critical
Publication of JP5734685B2 publication Critical patent/JP5734685B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting 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

<P>PROBLEM TO BE SOLVED: To ensure the integrity of software code that is a self-modifying type. <P>SOLUTION: In order to verify the integrity of software code, for various states of the code, a checksum, (e.g. a hash value), is generated for at least a part of the code. During execution, the state of the code is changed (320), a module is modified (330), and an integrity check is performed (340) using the checksum for the state of the code. The checksum may be stored in a look-up table or it may be embedded in an integrity verification function. A state variable indicating the state of the modules may be used to look up the checksum included in the table. Possible states of a module are encrypted and not-encrypted states. <P>COPYRIGHT: (C)2011,JPO&INPIT

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.

米国特許出願公報第2003/188231号明細書US Patent Application Publication No. 2003/188231 欧州特許第1942431号明細書European Patent No. 1942431 米国特許出願公開第2002/138748号明細書US Patent Application Publication No. 2002/138748

D.Aucsmith、Tamper Resistant Software:An Implementation Proceedings of the International Workshop on Information HidingD. Auxmith, Tamper Resistant Software: An Implementation Processes of the International Works on Information Hiding 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 SocietyGlen Wurster et al., “A Generic Attack on Checking Based on Software Tamper Resistance, SP’05: Proceeding of the 2005 E1, United States, Sci.

従って、ソフトウェア、特に、自己書換型であるコード、のインテグリティを保証するための改善された解決法が必要である。本発明は、かかる解決法を提供する。   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.

本発明が実施されるコンピュータデバイスの例を表す。Fig. 4 represents an example of a computing device in which the present invention is implemented. 本発明の望ましい実施形態を表す状態図である。FIG. 4 is a state diagram illustrating a preferred embodiment of the present invention. 本発明の望ましい実施形態に従うインテグリティ照合のための方法を表す。2 illustrates a method for integrity verification according to a preferred embodiment of the present invention. バイナリの保護を表す。Represents binary protection. 例となる状態遷移図を表す。An example state transition diagram is shown.

本発明の望ましい特徴について、添付の図面を参照して、限定されない例を用いて記載する。   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 computer 100 may be any type of computer or device capable of performing calculations, such as a standard personal computer (PC). The computer 100 comprises at least one processor 110, a RAM memory 120, a user interface (UI) 130 for interacting with a user, and a second interface (I / O) for reading a software program from the digital data carrier 150. 140. As will be apparent to those skilled in the art, the computer shown is simplified for clarity, and the actual computer further has functions such as network connectivity and persistent storage devices.

本発明の主たる発明概念は、各状態が保護されているプログラムコードの状態に対応するところの、プログラムの実行中の有限状態機械(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 step 310.

モジュールは、例えば、モジュールの解読によって(その場合には、復号化キーが必要である。)、又はモジュールの一部のバイトを変更することによって(例えば、置換によって)、変更されてよい。前者の場合、コードは、その最初の状態に戻るよう暗号化される(対称的な暗号アルゴリズムでは、復号化キーと同じ暗号キーを必要とする。)。後者の場合、バイトは、例えば、バックワード置換(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 binary 430 along with some reference that allows identification. The protection engine 420 may be any type of suitable computer device such as a personal PC. It preferably includes a processor, memory, etc. (not shown). The computer program product 415 is a CD-ROM or USB memory, for example, and stores instructions that protect the binary as described herein when executed by a processor.

バイナリ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 checksum invocation point 432 and a checksum table (which may have a single value) 434, one for each state for which the checksum is verified. Generate a protected binary 430 with Preferably, the checksum is a type of identifier that allows easy access (eg, state 1, state 2..., Or “encrypted module 1, decrypted module 2, encrypted Display along the line of the module 3 ″ made). Desirably, the checksum table 434 takes the form of a hash value for at least a portion of the protected binary, although other checksums may be envisioned (eg, the number of specific characters in a range of binaries). The checksum is protected, for example by encryption, but it is preferable to nest the checksum verification function as described above so that the integrity of each function is verified by at least one other function Is done.

状態のチェックサムが決定論的に前の状態のチェックサムから決定される場合に、チェックサムテーブル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 main function 510. At this time, the state S is S0 = S1S2. The main function can call functions F1 and F2. When the function F1 is called, the encrypted F1 is decrypted (520). Thereafter, execution 530 of F1 begins. At this time, the state S is S2 = S1 S2. Similarly, when the function F2 is called, the encrypted F2 is decrypted (550) and S2 is inverted. Thereafter, execution of F2 (560) begins. At this time, the state S is S1 = S1 S2 .

関数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 main function 510. Then, the state returns to S0 = S1S2.

第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 560 begins. However, in contrast to the case where the main function 510 calls F2 directly, F1 is also decoded. This means that the state is S3 = S1S2 . Thus, during execution of F2, the state is either S1 or S3.

このようにして、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 main function 510 takes over execution. At this time, the state is S0 = S1S2. On the other hand, if the function to call is F1, execution 530 of F1 resumes. At this time, the state is S2 = S1 S2.

図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 Computer 110 Processor 120 RAM Memory 130 User Interface (UI)
140 Second interface (I / O)
150 Digital data carrier 150
410 Binary 415 Computer Program Product 420 Protection Engine 420
430 Protected binary 430
432 Checksum call point 434 Checksum table F1, F2 Functions M1-M3, M'1-M'3 Modules S0-S3 Status V1-V3 Checksum

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.
前記チェックサムはハッシュ値である、請求項1に記載の方法。   The method of claim 1, wherein the checksum is a hash value. 前記チェックサムは、前記モジュールのインテグリティを確かめる関数に埋め込まれている、請求項1に記載の方法。   The method of claim 1, wherein the checksum is embedded in a function that verifies the integrity of the module. 前記チェックサムは、ルックアップテーブルに含まれる、請求項1に記載の方法。   The method of claim 1, wherein the checksum is included in a lookup table. 前記変更されたソフトウェアコードのインテグリティを確かめる関数は、前記ルックアップテーブルに含まれる前記チェックサムにアクセスするために、前記複数のモジュールの夫々の状態を示す状態変数を用いる、請求項4に記載の方法。   The function of verifying the integrity of the modified software code uses a state variable indicating a state of each of the plurality of modules to access the checksum included in the lookup table. Method. 自己書換ソフトウェアコードのインテグリティをその実行中に確かめる装置であって、
前記ソフトウェアコードは複数のモジュールを有し、各モジュールは、前記ソフトウェアコードの実行中に少なくとも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.
前記チェックサムはハッシュ値である、請求項6に記載の装置。   The apparatus of claim 6, wherein the checksum is a hash value. 前記チェックサムは、前記モジュールのインテグリティを確かめる関数に埋め込まれている、請求項6に記載の装置。   The apparatus of claim 6, wherein the checksum is embedded in a function that verifies the integrity of the module. 前記チェックサムは、ルックアップテーブルに含まれる、請求項6に記載の装置   The apparatus of claim 6, wherein the checksum is included in a lookup table. 前記変更されたソフトウェアコードのインテグリティを確かめる関数は、前記ルックアップテーブルに含まれる前記チェックサムにアクセスするために、前記複数のモジュールの夫々の状態を示す状態変数を用いる、請求項9に記載の装置。   The function of ascertaining the integrity of the modified software code uses a state variable that indicates a state of each of the plurality of modules to access the checksum included in the lookup table. apparatus. インテグリティが保護された自己書換バイナリを生成する装置であって、
前記バイナリは複数のモジュールを有し、各モジュールは、前記バイナリの実行中に少なくとも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.
前記プロセッサは、更に、入れ子式に複数のチェックサム照合関数を挿入し、それにより、実行中に、各チェックサム照合関数のインテグリティが少なくとも1つの他のチェックサム照合関数によって確かめられるようにする、よう構成される、請求項11に記載の装置。   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 verified by at least one other checksum verification function. The apparatus of claim 11, configured as follows. 自己書換型のインテグリティが保護されたバイナリを記憶しており、プロセッサによって実行される場合に、請求項1乃至5のうちのいずれか一項に記載の方法のステップを実行するコンピュータプログラム。   6. A computer program for carrying out the steps of the method according to any one of claims 1 to 5, when the self-rewritable integrity stores a protected binary and is executed by a processor. プロセッサによって実行される場合に、
複数のモジュールを有するバイナリの各状態についてチェックサムを生成し、各モジュールは前記バイナリの実行中に少なくとも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.
JP2011020280A 2010-02-18 2011-02-02 Program, method, and storage medium for generating software for checking integrity during execution Expired - Fee Related JP5734685B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (11)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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