[go: up one dir, main page]

JP5734685B2 - インテグリティを実行中に確かめるソフトウェアを生成するプログラム、方法及び記憶媒体 - Google Patents

インテグリティを実行中に確かめるソフトウェアを生成するプログラム、方法及び記憶媒体 Download PDF

Info

Publication number
JP5734685B2
JP5734685B2 JP2011020280A JP2011020280A JP5734685B2 JP 5734685 B2 JP5734685 B2 JP 5734685B2 JP 2011020280 A JP2011020280 A JP 2011020280A JP 2011020280 A JP2011020280 A JP 2011020280A JP 5734685 B2 JP5734685 B2 JP 5734685B2
Authority
JP
Japan
Prior art keywords
checksum
state
binary
modules
generating
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.)
Expired - Fee Related
Application number
JP2011020280A
Other languages
English (en)
Other versions
JP2011170847A (ja
JP2011170847A5 (ja
Inventor
サルモン−ルガニュール シャルル
サルモン−ルガニュール シャルル
モンシフロ アントワーヌ
モンシフロ アントワーヌ
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/ja
Publication of JP2011170847A5 publication Critical patent/JP2011170847A5/ja
Application granted granted Critical
Publication of JP5734685B2 publication Critical patent/JP5734685B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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)

Description

本発明は、概して、ソフトウェア、特に、ソフトウェアのインテグリティを確保すること、に関する。
本項目は、以下で記載及び/又は請求される本発明の様々な態様に関連する技術の様々な側面を読む者に紹介することを目的とする。この議論は、本発明の様々な態様のより良い理解を助けるよう読む者に背景情報を提供するのに役立つと信じられている。従って、当然、これらの記述は、先行技術の容認としてではなく、この観点から読まれるべきである。
プログラムが意図されたように実行されることを確かにすることを目的にコンピュータプログラムのインテグリティを保護することは、ソフトウェアのプロバイダにとって、比較的一般的である。しかし、通常、ハッカーは、様々な方法で、実行すべきプログラムに不正侵入しようとする。一例として、ハッカーは、ときどき、必要なアクセス権原を有さずにプログラムを使用することができるように、プログラムのアクセス制御機能を回避すべくコードを書き換えることを望む。
プログラムのインテグリティを保証する先行技術に係る方法は、コードの少なくとも幾つかの部分に対してシグニチャ(「チェックサム」ともいう。)を計算することである。例えば、シグニチャは、コードの部分に対して計算されて、秘密キーにより署名されたハッシュ値であってよい。当業者には当然のことながら、多くの他の可能性が存在する。プログラム実行中に、コードのシグニチャは少なくとも一度計算される。セキュリティ・レベルを高めるために、シグニチャを計算する関数が入れ子にされ、それにより、各関数のインテグリティは少なくとも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)で見つけられる。この文献において、暗号化されたインテグリティ関数は復号化されて、特別の暗号化されていないモジュールのインテグリティを確かめるために使用される。
予想通りに、このような保護に対処する方法は、ハッカーではなく学究的な興味よって見出されてきた(例えば、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つのコピーは変更されておらず、もうひとつのコピーは変更されている。変更されているコードのコピーは実行され、チェックサムが必要とされるときには、これは変更されていないコードのコピーを用いて計算される。このようにして、当該方法は、コードの変更を可能にし、同時に、正しいチェックサム、すなわち、変更されていないコードに対応するチェックサム、を提供することが可能である。なお、攻撃はあらゆる種類のプロセッサにおいて行われ得ないことが認知されるべきである。
非特許文献2で提案されている対策は、コードを含むページについてアクセス権原を変更することである。コードを読み出す権利がそのコード自体についても解除される場合、これは、変更されていないコードを提供するよう接続される割り込みを(コードが自身を読み出そうとする場合に)引き起こす。
他の問題は、先行技術に係るチェックサムは自己書換コード(self-modifying code)に適合しないことである。これは、特定のチェックサムが、コードの1バージョンについてのみ、すなわち、変更の前又は後にのみ、有効であるためである。
米国特許出願公報第2003/188231号明細書 欧州特許第1942431号明細書 米国特許出願公開第2002/138748号明細書
D.Aucsmith、Tamper Resistant Software:An Implementation Proceedings of the International Workshop 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 Society
従って、ソフトウェア、特に、自己書換型であるコード、のインテグリティを保証するための改善された解決法が必要である。本発明は、かかる解決法を提供する。
第1の態様で、本発明は、自己書換ソフトウェアコードのインテグリティをその実行中に確かめる方法を対象とする。ソフトウェアコードは複数のモジュールを有し、各モジュールは、ソフトウェアコードの実行中に、少なくとも2つのとり得る状態、すなわち、暗号化された状態及び暗号化されていない状態、にあることができる。ソフトウェアコードを実行するプロセッサは、複数のモジュールのうちの1つを第1の状態から第2の状態に変えることによってソフトウェアコードを変更し、その変更されたソフトウェアコードについてチェックサムと変更されたソフトウェアコードを比較することによってソフトウェアコードのインテグリティ確かめる。
第1の望ましい実施形態で、チェックサムはハッシュ値である。
第2の望ましい実施形態で、チェックサムは、モジュールのインテグリティを確かめる関数に埋め込まれている。
第3の望ましい実施形態で、チェックサムはルックアップテーブルに含まれる。有利に、変更されたソフトウェアコードのインテグリティを確かめる関数は、ルックアップテーブルに含まれるチェックサムにアクセスするために、複数のモジュールの夫々の状態を示す状態変数を使用する。
第2の態様で、本発明は、自己書換ソフトウェアコードのインテグリティをその実行中に確かめる装置を対象とする。ソフトウェアコードは複数のモジュールを有し、各モジュールは、ソフトウェアコードの実行中に、少なくとも2つのとり得る状態、すなわち、暗号化された状態及び暗号化されていない状態、にあることができる。当該装置は、ソフトウェアコードを実行し、それによって、複数のモジュールのうちの1つを第1の状態から第2の状態に変えることによってソフトウェアコードを変更し、その変更されたソフトウェアコードについてチェックサムと変更されたソフトウェアコードを比較することによってソフトウェアコードのインテグリティ確かめるよう構成されたプロセッサを有する。
第1の望ましい実施形態で、チェックサムはハッシュ値である。
第2の望ましい実施形態で、チェックサムは、モジュールのインテグリティを確かめる関数に埋め込まれている。
第3の望ましい実施形態で、チェックサムはルックアップテーブルに含まれる。有利に、変更されたソフトウェアコードのインテグリティを確かめる関数は、ルックアップテーブルに含まれるチェックサムにアクセスするために、複数のモジュールの夫々の状態を示す状態変数を使用する。
第3の態様で、本発明は、インテグリティが保護された自己書換バイナリを生成する装置を対象とする。バイナリは複数のモジュールを有し、各モジュールは、ソフトウェアコードの実行中に、少なくとも2つのとり得る状態、すなわち、暗号化された状態及び暗号化されていない状態、にあることができる。当該装置はプロセッサを有し、プロセッサは、バイナリを受け取り、バイナリのチェックサムを、そのとり得る状態の夫々において生成し、少なくとも1つのチェックサム照合関数及び前記生成されたチェックサムをバイナリに挿入することによって、インテグリティが保護されたバイナリを生成するよう構成される。各チェックサム関数は、バイナリの状態を該バイナリの状態についてのチェックサムと比較することによって、インテグリティが保護されたバイナリの各状態のインテグリティを確かめるよう構成される。
第1の望ましい実施形態で、プロセッサは、更に、入れ子式に複数のチェックサム照合関数を挿入し、それにより、実行中に、各チェックサム照合関数のインテグリティが少なくとも1つの他のチェックサム照合関数によって確かめられるようにする、よう構成される。
第4の態様で、本発明は、自己書換型のインテグリティが保護されたバイナリを記憶しており、プロセッサによって実行される場合に、本発明の第1の態様に係る方法のステップを実行するコンピュータプログラムを対象とする。
第5の態様で、本発明は、プロセッサによって実行される場合に、複数のモジュールを有するバイナリの各状態についてチェックサムを生成し、各モジュールは前記バイナリの実行中に少なくとも2つのとり得る状態にあることができ、該とり得る状態は暗号化された状態及び暗号化されていない状態であり、少なくとも1つのチェックサム照合関数及び前記生成されたチェックサムを前記バイナリに挿入することによって、インテグリティが保護されたバイナリを生成し、各チェックサム関数は、前記バイナリの状態を該バイナリの状態についてのチェックサムと比較することによって、前記インテグリティが保護されたバイナリの各状態のインテグリティを確かめるよう構成される、命令を記憶しているコンピュータプログラムを対象とする。
本発明の実施形態によれば、ソフトウェア、特に、自己書換型であるコード、のインテグリティを保証するための改善された解決法が提供される。
本発明が実施されるコンピュータデバイスの例を表す。 本発明の望ましい実施形態を表す状態図である。 本発明の望ましい実施形態に従うインテグリティ照合のための方法を表す。 バイナリの保護を表す。 例となる状態遷移図を表す。
本発明の望ましい特徴について、添付の図面を参照して、限定されない例を用いて記載する。
図1は、本発明が実施されるコンピュータデバイス(コンピュータ)100の例を表す。コンピュータ100は、例えば、標準のパーソナルコンピュータ(PC)といった、計算を実行することができる如何なる種類のコンピュータ又はデバイスであってもよい。コンピュータ100は、少なくとも1つのプロセッサ110と、RAMメモリ120と、ユーザと対話するためのユーザインターフェース(UI)130と、デジタルデータ担体150からソフトウェアプログラムを読み出すための第2のインターフェース(I/O)140とを有する。当業者には明らかなように、図示されているコンピュータは、明りょうさのために簡単化されており、実際のコンピュータは、更に、ネットワーク接続や持続記憶デバイス等の機能を有する。
本発明の主たる発明概念は、各状態が保護されているプログラムコードの状態に対応するところの、プログラムの実行中の有限状態機械(finite state machine)の使用である。1つの状態から他の状態に移るとき、コードの少なくとも1つのモジュールは動的に変更される。有限状態機械はそれ自体当該技術でよく知られているので、それについて詳細には記載しない。モジュールの限定されない例は、コードのサブセクション、コードのチャンク(chunks)、及び関数である。改ざんから保護するために、各状態についてチェックサムを計算することが可能であり、これにより、コードを改ざんすることを防ぐことができる。
図2は、本発明の望ましい実施形態を表す状態図である。説明の明りょうさのために、例となる状態図は3つの状態(S1、S2及びS3)しか含まず、各状態はチェックサムに関連付けられており、コードは3つのモジュール(M1、M2及びM3)しか有さない。当業者には明らかなように、本発明は、より多くの(又はより少ない)状態及びモジュールにも等しく適用され、それに対応する異なった状態遷移が可能である。
例において、初期状態はS1である。この状態において、コードの全てのモジュールは、それらの初期状態にあり、状態は第1チェックサム、すなわち、チェックサムV1、に関連付けられている。この第1チェックサムにより、少なくとも1つのモジュールのインテグリティ照合が可能となる。
実行により状態S1から状態S2へのシフトが起こる場合、第1のモジュールM1は変更され、変更されたモジュールM’1が生成される。望ましくは、この時点で(チェックサムV2を用いて)チェックサムが確認されるが、その確認は、夫々の状態遷移に適用することができる、後の段階で行われてもよい。
同様に、実行により状態S2から状態S3へのシフトが起こる場合、第2のモジュールM2が変更され、変更されたモジュールM’2が生成される。変更されたモジュールM’1は、その変更されていない形態M1に戻り、それにより、コードは3つのモジュールM1、M’2及びM3を有する。前に説明されたように、望ましくは、この時点で(チェックサムV3を用いて)チェックサムが確認される。
状態S3から状態S2へ、更に状態S2から状態S1へ移ると、変更は逆方向に行われる。例えば、状態S2から状態S1に進む場合、変更されたモジュールM’1は、その変更されていない形態M1に戻る。また、かかる場合に、望ましくは、遷移後に(関連するチェックサムを用いて)チェックサムが確認される。
図3は、本発明の望ましい実施形態に従うインテグリティ照合のための方法を表す。方法は、通常のプログラム実行から始まることができる(ステップ310)。或る時点で、状態を変化させることが決定される(ステップ320)。少なくとも1つのモジュールが変更され(ステップ330)、インテグリティがチェックされる(ステップ340)。この後、通常のプログラム実行がステップ310で戻る。
モジュールは、例えば、モジュールの解読によって(その場合には、復号化キーが必要である。)、又はモジュールの一部のバイトを変更することによって(例えば、置換によって)、変更されてよい。前者の場合、コードは、その最初の状態に戻るよう暗号化される(対称的な暗号アルゴリズムでは、復号化キーと同じ暗号キーを必要とする。)。後者の場合、バイトは、例えば、バックワード置換(backwards permutation)によって、最初の構成に戻される。
図4は、バイナリ410の保護を表す。保護エンジン420は、とり得る状態及びそれらの夫々のチェックサム値を列挙するよう機能する。これらのチェックサム値は、識別を可能にする何らかのリファレンスとともに、保護されたバイナリ430に挿入される。保護エンジン420は、例えばパーソナルPC等の如何なる種類の適切なコンピュータデバイスであってもよい。それは、望ましくは、プロセッサ及びメモリ等(図示せず。)を有する。コンピュータプログラムプロダクト415は、例えばCD−ROM又はUSBメモリ等であって、プロセッサによって実行される場合に本願で記載されるようにバイナリを保護する命令を記憶する。
バイナリ410を保護するために、保護エンジン420は、バイナリ410を解析して、とり得る状態を計算する。この目的のために、有利に、保護エンジン420は、コールグラフ解析及び状態解析を使用する。状態が生成されると、保護エンジン420は、その状態に係るチェックサムを計算する。
次いで、保護エンジン420は、少なくとも1つのチェックサム呼び出し(invocation)ポイント432と、チェックサムが確認される各状態ごとに1つである、チェックサムの(単一値を有することができる)テーブル434とを有する保護されたバイナリ430を生成する。望ましくは、チェックサムは、容易なアクセスを可能にするある種の識別子(例えば、状態1、状態2・・・といった表示、又は“暗号化されたモジュール1、復号化されたモジュール2、暗号化されたモジュール3”のラインに沿った表示)と関連付けられる。望ましくは、チェックサムテーブル434は、保護されたバイナリの少なくとも一部についてハッシュ値の形をとるが、他のチェックサムも想定されてよい(例えば、バイナリの一定範囲における特定の文字の数)。チェックサムは、例えば暗号化によって、保護されるが、先に記載されたように、チェックサム照合関数を入れ子にすることが好ましく、それにより、各関数のインテグリティは少なくとも1つの他の関数によって確認される。
状態のチェックサムが決定論的に前の状態のチェックサムから決定される場合に、チェックサムテーブル434を用いずに行うことも可能である点に留意すべきである。チェックサムは、また、保護されたバイナリにおいて難読化され、又は別なファイルに記憶されてもよい。
次いで、以下の限定されない例を考える。記載及びその理解を容易にするよう、例は、単一コード領域(「チェックサム範囲」と呼ばれる。)が、望ましくはプログラム実行中に複数の照合ポイントで起こるチェックサム照合によって保護される場合に限定される。当業者には明らかなように、本発明は、複数のチェックサム範囲の場合に容易に拡張可能である。例は、更に、モジュールが、2つの異なった状態、すなわち、暗号化された状態及び復号化された状態、にあることができる関数に対応する特定の場合に限定される。
このようにして、コードには特有の状態遷移が存在し、各状態は、望ましくは、保護されたバイナリにおける少なくとも1つの照合ポイントで確認される。
例において、各関数が2つのとり得る状態(暗号化された状態及び復号化された状態)のうちの1つにある場合、状態変数S(望ましくは、ビットストリーム)において状態ビットSiとして状態を表すことが可能である。状態変数Sは、アプリケーションの関数コールグラフに依存して、とり得ない値を表すことができる。そのようなものとして、状態変数Sのとり得る値のサブセットのみがアプリケーションについて有効であってよい。状態変数Sの各値は、保護エンジンによって計算されるチェックサム値に対応し、これらのチェックサム値は、保護されたバイナリに(有利にハッシュ値として)埋め込まれる。次いで、ハッシュ・チェックサムは、識別子として状態変数Sを用いて調べられてよい。
関数が暗号化又は復号化されるときはいつでも、すなわち、状態が変化する場合には、状態変数Sは、適切な状態ビットSiを反転(flip)させることによって、更新される。
図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である。
関数F1(530)には2つの可能性が存在する。F1の実行が終わり、F1はF2を呼び出す。最初の場合では、F1は暗号化され(540)、S1は反転され、実行はメイン関数510に戻る。そして、状態はS0=S1S2に戻る。
第2の場合では、F2は復号化され(550)、状態ビットS2は反転され、F2の実行560が始まる。しかし、メイン関数510が直接F2を呼び出す場合と対照的に、F1も復号化されている。このことは、状態がS3=S1S2であることを意味する。従って、F2の実行中、状態はS1又はS3のいずれかである。
このようにして、F2の実行が終わると、F2は暗号化され(570)、状態ビットS2は反転され、実行は関数の呼び出しに戻る。呼び出す関数がメイン関数である場合、メイン関数510は実行を引き継ぐ。このとき、状態はS0=S1S2である。他方で、呼び出す関数がF1であった場合、F1の実行530が再開する。このとき、状態はS2=S1S2である。
図5で、チェックサム呼び出しポイントは、理解を簡単にするために、省略されているが、当然、夫々の関数(メイン関数、F1、F2)は、望ましくは、状態に関連付けられたチェックサムを確認する(場合により、暗号化/復号化関数の部分としての)少なくとも1つのチェックサム呼び出しポイントを有する。
チェックサム呼び出しポイントの最も簡単な実施は、プログラムが現在の状態Sを読み出し、対応するチェックサム値をチェックサムテーブルにおいて見つけ出し、記憶されているチェックサム値に対して照合されるべきチェックサムを生成することである。照合が失敗である場合、望ましくは、実行は中止される。
当業者に明らかなように、攻撃者はチェックサム値を改ざんしようと試みる。このような理由で、他のチェックサムを含む呼び出し関数と同様にチェックサムテーブルを保護することが好ましく、これにより、これらは照合される。
可能であればいつでも、呼び出しポイントコードにおいてチェックサム値をインラインにすることによって、セキュリティのレベルを高めることが可能である。この場合、保護エンジンは、有利に、下記の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よりも多い)状態を有することが可能である。
本発明は、上記の攻撃に打ち勝つことができるマルチステート・ソフトウェアコードのインテグリティを確かめる方法を提供することができると認められる。
明細書並びに(必要に応じて)特許請求の範囲及び図面で開示されている夫々の特徴は、独立して、又は何らかの適切な組合せにおいて、提供されてよい。ハードウェアで実施されると記載される特徴は、ソフトウェアでも実施されてよく、また、その逆も同様である。特許請求の範囲に現れる参照符号は、単なる例示として用いられ、特許請求の範囲の適用範囲を限定するものではない。
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 チェックサム

Claims (6)

  1. プロセッサによって実行される場合に、該プロセッサに、
    複数のモジュールを有し、該複数のモジュールの夫々が、暗号化された状態及び暗号化されていない状態を含む少なくとも2つの状態のうちのいずれかの状態をとることができる自己書換型のバイナリを受け取るステップと、
    前記複数のモジュールとり得る状態の組み合わせごとに状態変数を生成するステップと、
    コールグラフ解析を用いて、前記状態変数から、とり得る値を有する状態変数のサブセットを生成するステップと、
    前記サブセットに含まれる状態変数ごとに、対応するチェックサム生成するステップと
    前記サブセットに含まれる状態変数の数に基づき、前記チェックサムを前記バイナリに埋め込む方法を決定するステップと、
    前記チェックサムを照合するための少なくとも1つの呼び出し関数前記バイナリに挿入することによって、且つ、前記決定された方法に従って前記チェックサムを前記バイナリに埋め込むことによって、インテグリティが保護された自己書換型のバイナリを生成するステップと
    を実行させる保護エンジンプログラム。
  2. 前記チェックサムを埋め込む方法を決定するステップは、
    前記プロセッサに、前記サブセットに含まれる状態変数の数に基づき、前記チェックサムの夫々を、そのチェックサムを照合するための呼び出し関数に埋め込む第1の方法、又は前記チェックサムをルックアップテーブルに含める第2の方法のいずれかを選択させることを含む、
    請求項1に記載の保護エンジンプログラム。
  3. 前記状態変数の夫々は、状態ビットのストリームを有し、該状態ビットの夫々は、前記複数のモジュールの夫々1つに対応し、該対応するモジュールの状態を示す、
    請求項1に記載の保護エンジンプログラム。
  4. 前記チェックサムは、ハッシュ値である、
    請求項1乃至3のうちいずれか一項に記載の保護エンジンプログラム。
  5. 請求項1乃至4のうちいずれか一項に記載の保護エンジンプログラムを記憶するコンピュータ可読記憶媒体。
  6. インテグリティが保護された自己書換型のバイナリを生成するための装置の作動方法であって、
    複数のモジュールを有し、該複数のモジュールの夫々が、暗号化された状態及び暗号化されていない状態を含む少なくとも2つの状態のうちのいずれかの状態をとることができる自己書換型のバイナリを受け取るステップと、
    前記複数のモジュールがとり得る状態の組み合わせごとに状態変数を生成するステップと、
    コールグラフ解析を用いて、前記状態変数から、とり得る値を有する状態変数のサブセットを生成するステップと、
    前記サブセットに含まれる状態変数ごとに、対応するチェックサムを生成するステップと、
    前記サブセットに含まれる状態変数の数に基づき、前記チェックサムを前記バイナリに埋め込む方法を決定するステップと、
    前記チェックサムを照合するための少なくとも1つの呼び出し関数を前記バイナリに挿入することによって、且つ、前記決定された方法に従って前記チェックサムを前記バイナリに埋め込むことによって、前記インテグリティが保護された自己書換型のバイナリを生成するステップと
    を有する方法。
JP2011020280A 2010-02-18 2011-02-02 インテグリティを実行中に確かめるソフトウェアを生成するプログラム、方法及び記憶媒体 Expired - Fee Related JP5734685B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
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
EP10305164.5 2010-02-18

Publications (3)

Publication Number Publication Date
JP2011170847A JP2011170847A (ja) 2011-09-01
JP2011170847A5 JP2011170847A5 (ja) 2014-03-06
JP5734685B2 true JP5734685B2 (ja) 2015-06-17

Family

ID=42320561

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011020280A Expired - Fee Related JP5734685B2 (ja) 2010-02-18 2011-02-02 インテグリティを実行中に確かめるソフトウェアを生成するプログラム、方法及び記憶媒体

Country Status (4)

Country Link
US (1) US20110202996A1 (ja)
EP (1) EP2362314A1 (ja)
JP (1) JP5734685B2 (ja)
CN (1) CN102163268B (ja)

Families Citing this family (17)

* 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
CN104798075A (zh) * 2012-09-28 2015-07-22 惠普发展公司,有限责任合伙企业 应用随机化
WO2014080249A1 (en) * 2012-11-23 2014-05-30 Freescale Semiconductor, Inc. Digital device
KR101482700B1 (ko) * 2013-09-27 2015-01-14 (주)잉카엔트웍스 해시를 이용한 프로그램의 무결성 검증 방법
EP3026559A1 (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
EP3026557A1 (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
EP3301601B1 (en) * 2016-09-30 2019-07-03 Nagravision SA Integrity of on demand code decryption
WO2018108275A1 (en) * 2016-12-15 2018-06-21 Irdeto B.V. Software integrity verification
CN108898006B (zh) * 2018-05-30 2020-04-03 百富计算机技术(深圳)有限公司 Html5文件安全保护方法、系统及终端设备
FR3083343B1 (fr) 2018-06-29 2023-05-26 Ingenico Group Procede de determination d'une validite d'un code applicatif, dispositif et produit programme d'ordinateur correspondants.
US12145638B2 (en) * 2020-02-03 2024-11-19 Siemens Mobility GmbH Method for identifying and verifying control software of a rail vehicle
US11288360B2 (en) * 2020-03-04 2022-03-29 Kyndryl, Inc. Preventing untrusted script execution
EP4396713A1 (en) * 2021-08-30 2024-07-10 Qualcomm Incorporated Functional safety software image integrity verifier
CN116415281B (zh) * 2023-04-18 2023-10-20 青海省第三地质勘查院 基于改进末位校验和双重散列函数的权限控制方法及系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141756A (en) * 1998-04-27 2000-10-31 Motorola, Inc. Apparatus and method of reading a program into a processor
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
JP4042280B2 (ja) * 1999-12-21 2008-02-06 富士ゼロックス株式会社 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体
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
JP2002297542A (ja) * 2001-04-02 2002-10-11 Nippon Telegr & Teleph Corp <Ntt> コンテンツ時限開示方法、システム、セキュリティデバイス
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
US7500098B2 (en) * 2004-03-19 2009-03-03 Nokia Corporation Secure mode controlled memory
CN100594509C (zh) * 2005-02-11 2010-03-17 辛普雷克斯梅杰有限公司 软件保护方法
KR100772881B1 (ko) * 2006-05-25 2007-11-05 삼성전자주식회사 자기 수정 코드의 무결성 검증 장치 및 방법
US7841010B2 (en) 2007-01-08 2010-11-23 Apple Inc. Software or other information integrity verification using variable block length and selection
GB0806284D0 (en) * 2008-04-07 2008-05-14 Metaforic Ltd Profile-guided tamper-proofing
GB0810695D0 (en) * 2008-06-12 2008-07-16 Metaforic Ltd Anti-tampering MMU defence
WO2010127438A1 (en) * 2009-05-06 2010-11-11 Irdeto Canada Corporation Interlocked binary protection using whitebox cryptography

Also Published As

Publication number Publication date
US20110202996A1 (en) 2011-08-18
CN102163268B (zh) 2016-03-16
CN102163268A (zh) 2011-08-24
JP2011170847A (ja) 2011-09-01
EP2362314A1 (en) 2011-08-31

Similar Documents

Publication Publication Date Title
JP5734685B2 (ja) インテグリティを実行中に確かめるソフトウェアを生成するプログラム、方法及び記憶媒体
KR101798672B1 (ko) 코드 불변식을 이용한 스테가노그래픽 메시징 시스템
CN112514321B (zh) 共享秘密建立
US7546587B2 (en) Run-time call stack verification
JP5113169B2 (ja) 暗号関数を難読化する方法およびシステム
EP2634960B1 (en) Method and apparatus for incremental code signing
CN102222196B (zh) 验证自修改的计算机代码校验和的方法及装置
CN109313677B (zh) 用于动态可执行验证的方法和装置
US20170116410A1 (en) Software protection
US9602289B2 (en) Steganographic embedding of executable code
US20050114683A1 (en) Tamper-resistant trusted java virtual machine and method of using the same
US20050198507A1 (en) Import address table verification
EP2294529A1 (en) Electronic device and method of software or firmware updating of an electronic device
US20160055331A1 (en) Detecting exploits against software applications
KR20170087887A (ko) 애플리케이션 무결성의 검증을 제공하는 방법 및 디바이스
JP2009169489A (ja) 暗号化方法、復号化方法、暗号化装置、復号化装置
JP2011123229A (ja) プログラムコード暗号化装置及びプログラム
CN119377920B (zh) Hsm固件的防逆向和滥用方法、装置、设备及介质
CN112685697B (zh) 一种防止安卓应用被破解篡改的方法及终端
CN117272377A (zh) 权限数据处理方法、装置及电子设备
CN111338664A (zh) 映像文件打包方法及映像文件打包系统

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140116

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141028

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150317

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150415

R150 Certificate of patent or registration of utility model

Ref document number: 5734685

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees