JP4777903B2 - 実行トレースプリントを検証することによるプログラム実行整合性の制御方法 - Google Patents
実行トレースプリントを検証することによるプログラム実行整合性の制御方法 Download PDFInfo
- Publication number
- JP4777903B2 JP4777903B2 JP2006546232A JP2006546232A JP4777903B2 JP 4777903 B2 JP4777903 B2 JP 4777903B2 JP 2006546232 A JP2006546232 A JP 2006546232A JP 2006546232 A JP2006546232 A JP 2006546232A JP 4777903 B2 JP4777903 B2 JP 4777903B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- trace
- trace print
- value
- 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.)
- Active
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
Description
if(!condition 2())goto error;
do_sensitive_action();
2つの条件≪条件1()(condition1())≫及び≪条件2()(condition2())≫が満足する場合に、機密に関わる処置≪機密に関わる処置を実行せよ()(do-sensitive-action())≫が正常に実行されるだけである。それでもなお、物理的妨害は、2つの≪イフ(ifs)≫というコードを直接飛び越すかまたは2つの≪イフ(ifs)≫というコードの一連の様々な命令をメモリから読むことをプロセッサに引き起こすかもしれない。この場合、テスト≪条件1()(condition1())≫及び≪条件2()(condition2())≫が満足されなかったとしても、プロセッサは、≪機密に関わる処置を実行せよ()(do-sensitive-action()≫を実行するかもしれない。
trace=0;
if(condition1()trace|=1;else goto error;
if(condition2()trace|=2;else goto error;
if(trace= = 3)do_sensitive_action();
従って、最初の2つの≪イフ(ifs)≫が正しく実行されない場合、≪トレース(trace)≫変数が最後に3に等しくなく、その結果、演算≪機密に関わる処置を実行せよ()(do_sensitive_action())≫が実行されないという見通しがある。
trace= 42:
for(i = 0;i<4;i++){
if(provided_pin[i]!=actual_pin[i]goto error;
trace= h(trace,i);
]
if(trace== 2346)do_sensitive_action();
しかしながら、PINコードはこのような方法で通常チェックされないことが注目されるべきである。これは、トレースプリント計算の使用法を説明するための単なる例である。
・≪a * b≫は≪a≫に≪b≫を掛けた積を表す
・≪a mod b≫は≪a≫を≪b≫で除算した余りを表す(即ちモジュロである)
・≪a^b≫は≪a≫を≪b≫累乗することを表す
・≪a xor b≫は、≪a≫及び≪b≫を表すビット上で≪or排他的論理≫演算である
値2346は、≪h(h(h(h(42,0),1),2),3)≫、即ち、ループ(0から3の変数≪i≫毎に4ターン)の正常実行のトレースプリント以外でない。ループが、実行されないかまたは4ターンをする前に異常終了する場合、≪機密に関わる処置を実行せよ()(do_sensitive_action())≫呼び出しの前に≪トレース(trace)≫変数の値は2346とほとんど異なっているだろう。
・プログラム実行の間に、実行経路及び/または処理されたデータを示すトレースプリント更新するステップと、
・プログラムの所定のポイントで、該トレースプリント(動的に算出される現在値)を期待値(静的に固定されていて、プログラム実行が妨げられない場合にトレースプリントが有しなければならない値に等しい)と比較するステップと、
・現在のトレースプリントが期待値とは異なる場合に、特別な処理を実行するステップと、
によってである。
・トレースプリントは、プログラムのクリティカルなコード部分に関係するだけである。
・プログラムの所定のポイントにおいて、トレースプリントの期待値が、トレースプリント値が予測可能であるように、プログラムコードを任意に修正してもよい静的プログラム解析によって決定される。
addTrace(1);
…
addTrace(2);
}elese{
addTrace(3);
…
addTrace(4);
]
トレースプリントが≪イフ(if)≫の前に値≪T0≫を有する場合、この≪イフ(if)≫の2つの分岐の各々の終わりにおいて、値≪h(h(T0,1),2) ≫及び ≪h(h(T0,3),4)≫をそれぞれ有する。
この≪イフ(if)≫の後にトレースプリント制御ポイントを定めるために、次のように分岐を等しくすることが可能である。即ち、
if(cond){
addTrace(1);
…
addTrace(2);
}else{
addTrace(3);
…
addTrace(4);
adjustTrace(X);
}
checkTrace(Y);
であって、以下の定義を有する。
・≪アジャストトレース(N)(adjustTrace(N))≫は、トレースプリントの現在値に整数≪N≫を加える
・≪X≫は、≪h(h(T0,1),2)−h(h(T0,3),4)≫,
・≪Y≫は、≪h(h(T0,1),2)≫
従って、取られる実行経路にかかわりなく、トレースプリントは、常に≪イフ(if)≫の後、≪Y≫に等しい。トレースプリントの現在値に値≪X≫を加える事実は、偽造するのが困難であるという事実を維持すると同時に、このトレースプリントを予測可能にする。調整が、≪イフ(if)≫の2番目の分岐上よりむしろ1番目の分岐上で対称の形でなされるかもしれない。
・第1のプログラムルーチンの命令の形をなすシングルトンによって、調査されるべき全てのプログラムポイントを初期化するステップと、
・プログラムルーチンエントリポイントで、得られた最初のトレースプリント値に等しいトレースプリント値を記憶するステップと、
・調査されるべき一組のプログラムポイントがボイドでない限り、
・調査されるべき一組のプログラムポイントから1つのプログラムポイント(起点)を抽出するステップと、
・命令の実行後に生じる可能なプログラムポイント(目標ポイント)の各々に対して、
目標ポイントがトレースプリントアサインメントを含み、かつ、この目標ポイントがまだ調査されていない場合、アサインメントによって定義されるトレースプリント値を目標ポイントで記憶するステップと、
目標ポイントがトレースプリントアサインメントを含まず、かつ、この目標ポイントがすでに調査されている場合、起点における命令と目標ポイントにおける命令との間に、目標ポイントにおいて記憶されたトレースにプリント値上へと起点におけるトレースプリント値を送出するトレースプリント調整を挿入するステップと、
目標ポイントがトレースプリントアサインメントを含まず、かつ、この目標ポイントがまだ調査されていない場合、起点と目標ポイントとの間に1つが存在する場合にトレースプリント更新によって任意に変更される起点におけるトレースプリント値を、目標ポイントで記憶するステップと、
目標ポイントがまだ調査されていない場合、調査されるべき一組のプログラムポイントにおいて目標ポイントを加えるステップと、
によってである。
{
…
if(cond){
a[i+j] = b[i];
addTrace();
}
checkTrace();
}
catch(Exception e){
setTrace();
…
}
このプログラム部分は、更新演算及びアサインメント演算に対して任意のトレースプリント値を割り当てるために一度目を変更してもよい。
{
…
(if(cond){
a[i+j] = b[i];
addTrace(28935);
}
checkTrace();
}
catch(Exception e){
setTrace(9056);
…
}
次に、プログラムは、制御ポイントでのトレースプリント値を決定しかつ必要な調整を挿入するために、上記の方法を用いて二度目を変換してもよい。この変換によってアサインされる値は、用いられるトレーシングプリント演算子に依存する。上記に例として与えられたプログラム部分は、次のように変換されてもよい。
…
if(cond){
a[i+j] = b[i];
addTrace(28935);
adjustTrace(16220);
}
checkTrace(13991);
}
catch(Exception e){
setTrace(9056);
…
}
例えばデバッグすることなどの、変換前のプログラムをコンパイルしかつ実行する可能性を有することが望ましい場合、ソースプログラムを適応させることが要求されてもよい。トレースプリントセット及びチェックライブラリが、引数に対して整数を用いるプログラムルーチンを含むだけの場合、≪チェックトレース()(checkTrace())≫を記述することは不正である。この場合、以下の仕様が用いられてもよい。(例えば)値≪0≫は、未だ決定されない値を示す。次に、≪チェックトレース()(checkTrace())≫が、最初のソースコードに記述される。変換後、プログラムルーチン呼び出しは、例えば≪チェックトレース(13991)(checkTrace(13991))≫になるだろう。
JCVMの実行フォーマットへコンパイルして変換した後、オブジェクトコードは、
sconst_0
invokestatic checkTrace
の形式で得られる。
invokestatic checkTrace
自動的にトレースプリント値決定するこの方法は、プログラムループ及び再帰の巻き戻しを場合によっては実行するプログラム解析と組み合わされてもよい。そのとき、自動算出は、≪トレース=h(トレース,i)(trace=h(trace,i))≫がインデックス≪i≫のループ内にある上記の例においてのように、プログラム変数に関するトレースプリントで可能である。
while(1){
//Reading of instruction code at pc address
opcode = *pc++
switch(opcode){
case INSTR:
//Instruction semantics≪instr≫
…
}
}
である。
while(1){
opcode = *pc++;
addTrace(opcode);
switch(opcode){
…
}
}
である。
while(1){
opcode = *pc++;
if(update_trace[opcode]
trace= h(trace、opcode);
switch(opcode){
…
}
}
効率的にトレースされるべき命令に関する情報が(ここではテーブル≪アップデートトレース(update_trace)≫)、情報がロードされて実行プラットフォームで実行される間、プログラムを伴ってもよい。この情報は、プログラムに従って、さらに、様々なプログラムの様々なプログラムルーチンによっても変化することができる。
while(1){
opcode = *pc++;
switch(opcode){
case INSTRI://trace
trace= h(trace、opcode);
…
case INSTR2://no torace
…
}
}
命令の直接の引数の値に関するなんらかの妨害も検出するために、トレースプリント算出において直接の引数を統合することも可能である。例えば、JCVMにおいて、(それは、オペランドスタック上への整数の定数≪n)をプッシュする)命令≪bspush n≫に対して、インタプリタが、単に≪トレース= h(トレース,BSPUSH)(trace = h(trace,BSPUSH))≫の代わりに≪トレース= h(h(トレース、BSPUSH,n)(trace= h(h(trace、BSPUSH,n)) ≫を実行することができる。
switch(opcode){
case IFZERO:
if(top_of_stack == 0){
trace= h(trace,BRANCH_TAKEN);
pc+=pc[0];
}else{
trace= h(trace,BRANCH_NOT_TAKEN);
pc+=1;
]
…
を与える。
opcode = *pc++;
if(method_flags & NEEDS_TRACE)
trace = h(trace, opcode)
switch(opcode){
…
}
}
JCVMの特定の場合において、例えば、この情報が、(例えばプログラムローディングに関して)きっぱりと算出され、構造≪メソッドインフォ(method_info)≫の≪フラッグス(flags)≫フィールドにおいてビット形式で保存されてもよい。
・不揮発性メモリ(EEPROM)を書き込む各々の命令の前に、クラスフィールド(≪プットスタティック(putstatic)≫)またはインスタンスフィールド(≪プットフィールド(putfield)≫)に記述して、またはテーブル(≪x-アストア(x-astore)≫)に記述して、
・各々の処理の開始時及び終了時に、
・特定のライブラリ方法などへの呼び出しの前に、
チェックが実行されてもよい。
Claims (25)
- 実行トレースを検証することによってプログラム実行の整合性を制御する方法であって、
プログラム実行に関する実行経路及び/または処理されたデータを示すトレースプリントを更新するステップと、
チェックフローについての特定の収束ポイントに至る前に前記実行経路に沿って前記トレースプリントを調整して、収束している経路のトレースプリント同士を等しくするステップと、
前記プログラムの決定されたポイントにおいて、前記トレースプリントを、静的に固定されておりかつプログラム実行が妨げられない場合にトレースプリントが有するべき値に等しい期待値と動的に比較するステップと、
前記トレースプリントが前記期待値と異なる場合に特別な処理を実行するステップと、
を含むことを特徴とする方法。 - 前記トレースプリントが前記期待値と異なる場合の前記プログラムの前記特別な処理は、特定のデータを保護するステップ、及び/またはうまく機能していないことをユーザに音または視覚の信号によって警告するステップ、及び/または前記プログラムの前記実行を完全にまたは完全にではなくても中断するステップから成ることを特徴とする請求項1記載の方法。
- 前記トレースプリントは、前記プログラムのクリティカルなコード部分及び/またはクリティカルなプログラム状態にだけ関係することを特徴とする請求項1記載の方法。
- 前記トレースプリントは、関数の連続した合成によって前記プログラムの前記実行経路に沿って増分的に算出され、前記関数の1つの引数が前記トレースプリントの値でありもう1つの引数が前記プログラムのローカルな実行結果もしくは動的プログラムデータに関係する式を表すことを特徴とする請求項1記載の方法。
- 前記関数が、以下の関数のうちの1つから成り、
前記以下の関数は、チェックサム、線形合同、周期的冗長検査(CRC)、暗号化トレーシングプリントまたは以下の演算の組み合わせであり、
前記以下の演算は、定数もしくは前記観察データ項目を用いた加算、減算、排他的論理和、ビット定数のローテーション、または奇数定数による乗算であることを特徴とする請求項4記載の方法。 - 前記調整の演算が、以下の関数の組み合せから成り、前記以下の関数の組み合わせは、定数値へのアサインメント、定数の加算、定数値との排他的論理和であることを特徴とする請求項1記載の方法。
- 前記プログラムのあるポイントにおいて、前記トレースプリントが、先行するトレースプリント値から差し引かれるのではなくある値にアサインメントされることを特徴とする請求項1記載の方法。
- 前記プログラムポイントは、ある閾値より大きい数の実行分岐が収束するプログラムポイントであり、かつ/または、サブルーチン及び/または例外ハンドラのエントリポイントであるプログラムポイントであり、前記アサインメントの行われた値は、所定の値及び/またはランダムな抽出によって決定された何らかの値、並びに/または対象としている前記プログラムポイントにおいて不変式と事前の解析によって決定されたプログラム式であることを特徴とする請求項7記載の方法。
- 前記トレースプリント値が、プログラムポイントにおいて前記期待値と比較され、前記プログラムポイントは前記プログラムの前記チェックフローグラフ中の前記プログラムポイントの特定の特徴によってかつ/または前記プログラムポイントで実行される演算の型によって決定されることを特徴とする請求項1記載の方法。
- 前記プログラムポイントは、前記チェックフローの各々の分岐の後及び/または各々の結合の前、及び/または不揮発性メモリに書き込む各々の演算の前、及び/または特定の暗号演算の前、及び/または特定のライブラリルーチンに対する呼び出しの前及び/または特定のライブラリルーチンに対する呼び出しの後、に位置することを特徴とする請求項9記載の方法。
- トレースプリント設定及び/またはトレースプリント制御が、
前記プログラムの構成によって明示的に行われ、かつ/または
トレースプリント設定演算及び/またはトレースプリント制御演算がどのプログラムポイントでかつ/またはどの値を用いてなされるかを前記実行マシンに指示する補完的なプログラムデータに基づいて前記実行マシンによって明示的に行われ、前記値は複合の演算から得られる値を含み、かつ/または
実行された命令の特定の観察に基づいて、前記実行マシンによって黙示的に行われることを特徴とする請求項1記載の方法。 - 前記プログラムコードの前記構成は、前記トレースプリントを示す変数の明示的な処理であるレジスタの明示的な処理に基づきかつ/または特定のルーチンに対する呼び出しに基づきかつ/または前記実行マシンの特定の命令の使用に基づいていることを特徴とする請求項11記載の方法。
- 前記補完的なプログラムデータは、実行されるべき前記演算を定義しているコードとプログラムポイントを関連させかつ特定の命令を実行する場合に前記実行マシンによって参考にだけされるテーブルにおいてコード化されることを特徴とする請求項11記載の方法。
- 前記特定の命令が、分岐及び/または不揮発性メモリにおける書き込み及び/またはあるプログラムルーチンに対する呼び出し及び/または特定の暗号演算であることを特徴とする請求項13記載の方法。
- 所定のプログラムポイントにおける前記期待されるトレースプリント値及びトレースプリント調整値が、前記プログラムの静的解析によって決定され、前記プログラムの静的解析は、いくつかのループ及び再帰をほどくことをシミュレーションすることができ、前記プログラムを修正して前記トレースプリント値を予測可能にしかつ/またはトレースプリントの値を点検することができることを特徴とする請求項1記載の方法。
- 前記解析の目的で、プログラムポイント及びこのプログラムポイントにおける実行観察の型に対応するトレースプリント更新に関する情報及び/またはトレースプリントが特定の値に調整されなければならないプログラムポイントに対応するトレースプリント調整に関する情報及び/または前記トレースプリントがある値に強制的になされなければならないプログラムポイントに対応するトレースプリントアサインメントに関する情報及び/または前記トレースプリントがチェックされなければならないプログラムポイントに対応するトレースプリント制御に関する情報が提供され、この情報が、
自動的に決定され、
前記プログラムコードに配置される命令から成っていて、引数としていかなる整数をとっても、プログラムルーチン呼び出しである前記トレースプリントに基づいて動作する指令の形で与えられ、かつ/または前記プログラムに補完的なテーブルの形で与えられ、
前記解析によって算出される前記値に従って完了され、かつ/または修正されることが可能である、
ことを特徴とする請求項8記載の方法。 - 各々のプログラムルーチンに対して、前記期待されるトレースプリント値が、以下の演算手順で決定され、前記以下の演算手順は、
調査されるべき全てのプログラムポイントを、第1のプログラムルーチン命令の形をなすシングルトンを用いて初期化するステップと、
前記プログラムルーチンのエントリポイントで、所定の初期トレースプリント値に等しいトレースプリント値を記憶するステップと、
調査されるべき前記一組のプログラムポイントがボイドでない限り、以下のステップを行うステップを含み、
前記以下のステップは、
調査されるべき前記一組のプログラムポイントから起点である1つのプログラムポイントを抽出するステップと、
目標ポイントとなる前記第1のプログラムルーチン命令の実行後に得られる可能なプログラムポイントの各々に対して以下のことを行うステップと、を含み、前記以下のことは、
前記目標ポイントがトレースプリントアサインメントを含む場合、かつ、この目標ポイントがまだ調査されていない場合に、前記目標ポイントにおいて、前記アサインメントによって画定される前記トレースポイント値を記憶するステップと、
前記目標ポイントがトレースプリントアサインメントを含まない場合、かつ、この目標ポイントがすでに調査されている場合に、前記起点におけるトレースプリント値を前記目標ポイントにおいて記憶された前記トレースポイント値上へと送出するトレースプリント調整を、前記起点における命令と前記目標ポイントにおける命令との間に、挿入するステップと、
前記目標ポイントがトレースプリントアサインメントを含まない場合、かつ、この目標ポイントがまだ調査されていない場合、前記起点と前記目標ポイントとの間に1つがある場合にトレースプリント更新によって任意に変更される、前記起点における前記トレースプリント値を前記目標ポイントにおいて記憶するステップと、
前記目標ポイントがまだ調査されていない場合、調査されるべき前記一組のプログラムポイント中の前記目標ポイントを追加するステップと、
であることを特徴とする請求項16記載の方法。 - 前記トレースプリントは、そのエントリポイントからの、プログラムルーチン呼び出しを含む前記プログラムの完全な実行に関係し、
前記方法は、静的プログラムルーチン呼び出しの命令を前記呼び出されたプログラムルーチンの第1の命令に従って無条件分岐として処理することによって、動的プログラムルーチン呼び出しの命令を前記対応する呼び出されたプログラムルーチンの前記第1の命令に従って条件付き分岐として処理することによって、かつ前記復帰呼び出しの命令を前記対応する呼び出し直後に続く前記命令への分岐として処理することによって、一組のルーチンに適用されることを特徴とする請求項16記載の方法。 - 前記プログラム及び/または前記実行マシンは、プログラムの一部でないルーチンまたは解析することができないルーチンであるルーチンに対する特定の呼び出しで保存されて、復帰呼び出しで復帰するように構成されていることを特徴とする請求項11記載の方法。
- 前記プログラム及び/または前記実行マシンは、前記トレースプリントが、呼び出しの時点で動的に決定されるプログラムルーチンを含む特定のルーチンからの呼び出し及び復帰で調整されて以下の値に等しくなるよう構成されていて、
前記以下の値は、
呼び出されたプログラムルーチンのエントリ時に、前記呼び出されたプログラムルーチンの名前及び/またはシグネチャによって決まる値であって、前記名前及び/または前記シグネチャの暗号トレーシングプリントによって得られる値であり、
前記呼び出し中のプログラムルーチンにおける復帰後に、前記呼び出されたプログラムルーチンの前記名前及び/または前記シグネチャによって同様に決まる値であって、前記プログラムルーチン呼び出しが関係している各々の例外ハンドラは決定された値に前記トレースプリントをアサインメントしなければならず、例外が前記呼び出されたプログラムルーチンにおいて取り除かれると、前記例外ハンドラは影響を及ぼされることを特徴とする請求項11記載の方法。 - 前記トレースプリントが実行マシンによって暗黙的に更新される場合に、
前記プログラムの非クリティカルコード部分を実行する場合、及び/またはプログラム状態がクリティカルでない場合、及び/またはトレースプリントチェックを実行していない前記特定のルーチンの実行の間、不必要な計算を避けるためにトレースプリント設定を一時的に停止することができ、
トレースプリント設定を停止していない場合、トレースプリント設定は各々の実行された命令に関係し、
当該実行された命令は、
そのすぐ次の引数のうちのいくつか、及び/または前記オペランドスタックの高さまたは前記オペランドにおける値の特定の型の存在である当該命令に対するいくつかのプログラム不変式、及び/または前記命令が分岐である場合に行われた分岐の選択を含み、
前記実行された命令が観察されるべき所定の命令のクラスに属するように設けられているならば、前記クラスは前記実行マシンに対して固定されるか、またはあらゆる命令コードをブール型で示して前記命令が観察されることになっているかどうかがわかるテーブルによって与えられ、前記テーブルは異なるプログラムルーチン及び/または異なるプログラムで異なっていることを特徴とする請求項3記載の方法。 - トレースプリントアサインメント及びトレースプリント制御である前記トレースプリントに関する演算は、前記プログラムコードに明示的に挿入され、
トレースプリント調整である前記トレースプリントに関する演算は、補完的なプログラム情報に関して前記実行マシンによって明示的に実行され、
トレースプリント更新である前記トレースプリントに関する演算は、前記実行マシンによって暗黙的に実行される、
ことを特徴とする請求項11記載の方法。 - トレースプリント設定演算及び/またはチェック演算がプログラムルーチン呼び出しによって行われる場合、前記プログラムにはこれらのルーチンを実行するライブラリが付随されており、前記ライブラリは、実行プラットフォームにロードすると、必要なときは特別な作業をして前記プログラムに用いられ、
前記トレースプリントセット及びチェック演算が、補完的なプログラム情報によって表現され、かつ、前記実行プラットフォームが、この情報を用いることを知らず、かつ/または用いることができず、かつ/または用いたくない場合に、前記情報は無視されて整合性制御を用いることなく実行を可能にする、
ことを特徴とする請求項11記載の方法。 - 前記プログラムの前記実行マシンは、トレースプリント算出についての特定の命令及び/またはトレースプリント更新についての特定の命令及び/またはトレースプリント調整についての特定の命令及び/またはトレースプリントアサインメントについての特定の命令及び/またはトレースプリント制御についての特定の命令及び/またはプログラムルーチンへの呼び出しに関するトレースプリント保存についての特定の命令、及びプログラムルーチンからの復帰に関するトレースプリント回復についての特定の命令を受け、これらの命令が前記プログラムコードにおいて明示的に現れ、かつ/または前記実行マシンを実行するために用いられることを特徴とする請求項19記載の方法。
- 実行整合性の制御を可能にする実行システムであって、
前記システムはマイクロプロセッサを含み、前記マイクロプロセッサは、トレースプリント算出についての特定の命令及び/またはトレースプリント更新についての特定の命令及び/またはトレースプリント調整についての特定の命令及び/またはトレースプリントアサインメントについての特定の命令及び/またはトレースプリント制御についての特定の命令及び/またはルーチンへの呼び出しを減らすトレースプリントについての特定の命令、及びプログラムルーチンからの復帰でのトレースプリント回復についての特定の命令を受け、
前記制御は、
プログラム実行中に実行経路及び/または処理されるデータを表すトレースプリントを更新するステップと、
チェックフローについての特定の収束ポイントに至る前に前記実行経路に沿って前記トレースプリントを調整して、収束している経路のトレースプリント同士を等しくするステップと、
前記プログラムの決定されたポイントにおいて前記トレースプリントを期待値と比較するステップとを含み、
前記トレースポイントは、動的に算出された現在の値であり、前記期待値は、プログラム実行が妨げられない場合に前記トレースプリントが有するべき値に等しいよう静的に固定されており、
前記制御は更に、前記現在のトレースプリントが前記期待値と異なる場合に特定の処理を行うステップを含むことを特徴とする実行システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0315633A FR2864655B1 (fr) | 2003-12-31 | 2003-12-31 | Procede de controle d'integrite de programmes par verification d'empreintes de traces d'execution |
FR0315633 | 2003-12-31 | ||
PCT/FR2004/003273 WO2005073859A2 (fr) | 2003-12-31 | 2004-12-16 | Procede de controle d'integrite d'execution de programmes par verification d'empreintes de traces d'execution |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2007517299A JP2007517299A (ja) | 2007-06-28 |
JP2007517299A5 JP2007517299A5 (ja) | 2011-07-21 |
JP4777903B2 true JP4777903B2 (ja) | 2011-09-21 |
Family
ID=34639740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006546232A Active JP4777903B2 (ja) | 2003-12-31 | 2004-12-16 | 実行トレースプリントを検証することによるプログラム実行整合性の制御方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7882396B2 (ja) |
EP (1) | EP1702268B8 (ja) |
JP (1) | JP4777903B2 (ja) |
FR (1) | FR2864655B1 (ja) |
WO (1) | WO2005073859A2 (ja) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1383047A1 (fr) * | 2002-07-18 | 2004-01-21 | Cp8 | Procédé de sécurisation de l'exécution d'un programme contre des attaques par rayonnement ou autres |
GB2435531A (en) * | 2006-02-27 | 2007-08-29 | Sharp Kk | Control Flow Protection Mechanism |
WO2007149140A2 (en) * | 2006-03-30 | 2007-12-27 | Antlabs | System and method for providing transactional security for an end-user device |
US9112897B2 (en) * | 2006-03-30 | 2015-08-18 | Advanced Network Technology Laboratories Pte Ltd. | System and method for securing a network session |
JP5118036B2 (ja) * | 2006-07-18 | 2013-01-16 | パナソニック株式会社 | 命令生成装置、命令生成方法、プログラムおよび集積回路 |
EP1923789A1 (fr) * | 2006-11-16 | 2008-05-21 | Nagracard S.A. | Procédé de contrôle de l'exécution d'un programme par un microcontrôleur |
US8490073B2 (en) * | 2007-03-30 | 2013-07-16 | International Business Machines Corporation | Controlling tracing within compiled code |
EP2043017A1 (fr) * | 2007-04-12 | 2009-04-01 | Gemplus | Procédé d'exécution sécurisée d'une application |
DE102007038763A1 (de) | 2007-08-16 | 2009-02-19 | Siemens Ag | Verfahren und Vorrichtung zur Sicherung eines Programms gegen eine Kontrollflussmanipulation und gegen einen fehlerhaften Programmablauf |
FR2921171B1 (fr) * | 2007-09-14 | 2015-10-23 | Airbus France | Procede de minimisation du volume d'informations requis pour le debogage d'un logiciel de fonctionnement d'un systeme embarque a bord d'un aeronef, et dispositif de mise en oeuvre |
JP4701260B2 (ja) * | 2008-03-31 | 2011-06-15 | 株式会社エヌ・ティ・ティ・データ | 情報処理装置、情報処理方法、および、情報処理プログラム |
KR101331935B1 (ko) * | 2009-12-09 | 2013-11-21 | 한국전자통신연구원 | 추적점 기반의 고장 진단/복구 시스템 및 그 방법 |
FR2957164B1 (fr) | 2010-03-03 | 2012-05-11 | Airbus Operations Sas | Procedes et dispositifs de validation de configuration d'un systeme multielements complexe |
GB2481385B (en) * | 2010-06-21 | 2018-08-15 | Advanced Risc Mach Ltd | Tracing speculatively executed instructions |
US9195486B2 (en) * | 2010-07-30 | 2015-11-24 | Apple Inc. | Observation and analysis based code optimization |
US9146759B2 (en) | 2010-07-30 | 2015-09-29 | Apple Inc. | Assumption-based compilation |
US8578340B1 (en) * | 2010-09-24 | 2013-11-05 | Ca, Inc. | Recording and replaying computer program execution with recorded execution event breakpoints |
US20120089962A1 (en) * | 2010-10-08 | 2012-04-12 | International Business Machines Corporation | Unchanged Object Management |
FR2989488B1 (fr) * | 2012-04-13 | 2015-02-20 | Commissariat Energie Atomique | Dispositif pour generer une signature a l'execution d'une tache de programme et methode de comparaison de flots d'execution |
US9501383B2 (en) * | 2013-02-26 | 2016-11-22 | Dominique Bolignano | Method for securing a program |
US9275236B2 (en) | 2013-06-28 | 2016-03-01 | Dominique Bolignano | Method for securing a program |
US9256515B2 (en) | 2013-08-21 | 2016-02-09 | Vmware, Inc. | Stack trace compression |
US9104402B2 (en) * | 2013-08-21 | 2015-08-11 | Vmware, Inc. | Branch trace compression |
EP3021252B1 (en) * | 2014-11-17 | 2020-10-21 | Samsung Electronics Co., Ltd. | Method and apparatus for preventing injection-type attack in web-based operating system |
US20160142437A1 (en) | 2014-11-17 | 2016-05-19 | Samsung Electronics Co., Ltd. | Method and system for preventing injection-type attacks in a web based operating system |
US9495138B1 (en) * | 2016-01-04 | 2016-11-15 | International Business Machines Corporation | Scheme for verifying the effects of program optimizations |
FR3064781B1 (fr) * | 2017-03-30 | 2019-04-05 | Idemia Identity And Security | Procede de protection d'un dispositif electronique contre des attaques par injection de faute pendant l'execution d'un programme |
CN111295655B (zh) * | 2017-10-27 | 2021-08-31 | 数字资产(瑞士)股份有限公司 | 用于一个或多个进程的分布式隐私保护共享执行的计算机***和方法 |
EP3506100A1 (en) * | 2017-12-28 | 2019-07-03 | GuardSquare NV | Automated software application verification system |
US10747645B2 (en) * | 2018-04-27 | 2020-08-18 | Microsoft Technology Licensing, Llc | Selectively tracing portions of computer process execution |
FR3089657B1 (fr) * | 2018-12-06 | 2021-05-28 | Idemia Identity & Security France | Dispositif tel qu’un objet connecté pourvu de moyens pour contrôler l’exécution d’un programme exécuté par le dispositif |
CN111626033B (zh) * | 2020-05-22 | 2023-07-11 | 广东电网有限责任公司 | 一种定值的核对方法、装置、设备和介质 |
CN112783126B (zh) * | 2020-12-31 | 2022-03-22 | 浙江中控技术股份有限公司 | 一种基于dcs的流体物料输送提前量计算方法及流体物料输送方法 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3551659A (en) * | 1969-05-05 | 1970-12-29 | Charles O Forsythe | Method for debugging computer programs |
US4533997A (en) * | 1972-08-25 | 1985-08-06 | Westinghouse Electric Corp. | Computer monitored or controlled system which may be modified and de-bugged on-line by one not skilled in computer programming |
US5124989A (en) * | 1990-01-08 | 1992-06-23 | Microsoft Corporation | Method of debugging a computer program |
JPH04259036A (ja) * | 1991-02-13 | 1992-09-14 | Nec Corp | プログラム変換方式及びプログラム不正動作検出機構 |
US5421006A (en) * | 1992-05-07 | 1995-05-30 | Compaq Computer Corp. | Method and apparatus for assessing integrity of computer system software |
FR2700032B1 (fr) * | 1992-12-31 | 1995-02-10 | Alsthom Gec | Procédé de détection des erreurs d'exécution d'un logiciel. |
US6463535B1 (en) * | 1998-10-05 | 2002-10-08 | Intel Corporation | System and method for verifying the integrity and authorization of software before execution in a local platform |
FR2790844B1 (fr) * | 1999-03-09 | 2001-05-25 | Gemplus Card Int | Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme |
US6978444B1 (en) * | 2000-08-01 | 2005-12-20 | International Business Machines Corporation | Computer-implemented method and system for automatically invoking a predetermined debugger command at a desired location of a single thread of a program |
US20020199173A1 (en) * | 2001-01-29 | 2002-12-26 | Matt Bowen | System, method and article of manufacture for a debugger capable of operating across multiple threads and lock domains |
US7036111B2 (en) * | 2001-06-01 | 2006-04-25 | Hewlett-Packard Development Company, L.P. | Code verification system and method |
US7003672B2 (en) * | 2001-09-25 | 2006-02-21 | Hewlett-Packard Development Company, L.P. | Authentication and verification for use of software |
US7257805B2 (en) * | 2001-11-09 | 2007-08-14 | International Business Machines Corporation | Restoring debugging breakpoints subsequent to program code modifications |
DE10156394A1 (de) * | 2001-11-16 | 2003-06-12 | Giesecke & Devrient Gmbh | Kontrollierte Programmausführung durch einen tragbaren Datenträger |
US7644394B2 (en) * | 2001-11-30 | 2010-01-05 | International Business Machines Corporation | Object-oriented creation breakpoints |
FR2841015A1 (fr) * | 2002-06-18 | 2003-12-19 | St Microelectronics Sa | Controle d'execution d'un programme |
US7296259B2 (en) * | 2002-09-11 | 2007-11-13 | Agere Systems Inc. | Processor system with cache-based software breakpoints |
US7299458B2 (en) * | 2002-10-31 | 2007-11-20 | Src Computers, Inc. | System and method for converting control flow graph representations to control-dataflow graph representations |
US7383539B2 (en) * | 2003-09-18 | 2008-06-03 | International Business Machines Corporation | Managing breakpoints in a multi-threaded environment |
GB0326903D0 (en) * | 2003-11-19 | 2003-12-24 | Ibm | System and method for software debugging |
US7287243B2 (en) * | 2004-01-06 | 2007-10-23 | Hewlett-Packard Development Company, L.P. | Code verification system and method |
US7331002B2 (en) * | 2004-06-17 | 2008-02-12 | Intel Corporation | Navigating breakpoints in a program in a debugging mode |
US7543186B2 (en) * | 2004-09-13 | 2009-06-02 | Sigmatel, Inc. | System and method for implementing software breakpoints |
US20060101310A1 (en) * | 2004-10-22 | 2006-05-11 | Nimrod Diamant | Device, system and method for verifying integrity of software programs |
WO2006054128A1 (en) * | 2004-11-22 | 2006-05-26 | Nokia Corporation | Method and device for verifying the integrity of platform software of an electronic device |
US7634759B2 (en) * | 2004-12-01 | 2009-12-15 | Microsoft Corporation | Distributed debugger environment |
US7472378B2 (en) * | 2005-02-23 | 2008-12-30 | International Business Machines Corporation | Breakpoint management and reconciliation for embedded scripts in a business integration language specified program process |
US7555419B2 (en) * | 2006-07-23 | 2009-06-30 | Hewlett-Packard Development Company, L.P. | Simulation of system execution of instructions |
US8352713B2 (en) * | 2006-08-09 | 2013-01-08 | Qualcomm Incorporated | Debug circuit comparing processor instruction set operating mode |
US7694282B2 (en) * | 2006-12-12 | 2010-04-06 | Arkhipov Mikhail E | Mapping breakpoints between web based documents |
US7689868B2 (en) * | 2007-06-22 | 2010-03-30 | Sony Computer Entertainment Inc. | Memory handling techniques to facilitate debugging |
-
2003
- 2003-12-31 FR FR0315633A patent/FR2864655B1/fr not_active Expired - Fee Related
-
2004
- 2004-12-16 JP JP2006546232A patent/JP4777903B2/ja active Active
- 2004-12-16 WO PCT/FR2004/003273 patent/WO2005073859A2/fr active Application Filing
- 2004-12-16 EP EP04821239.3A patent/EP1702268B8/fr active Active
- 2004-12-16 US US10/585,140 patent/US7882396B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP1702268B8 (fr) | 2019-01-16 |
FR2864655A1 (fr) | 2005-07-01 |
US20100070804A1 (en) | 2010-03-18 |
WO2005073859A3 (fr) | 2006-04-20 |
EP1702268B1 (fr) | 2018-11-14 |
WO2005073859A2 (fr) | 2005-08-11 |
EP1702268A2 (fr) | 2006-09-20 |
US7882396B2 (en) | 2011-02-01 |
JP2007517299A (ja) | 2007-06-28 |
FR2864655B1 (fr) | 2006-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4777903B2 (ja) | 実行トレースプリントを検証することによるプログラム実行整合性の制御方法 | |
Liljestrand et al. | {PAC} it up: Towards pointer integrity using {ARM} pointer authentication | |
Simon et al. | What you get is what you C: Controlling side effects in mainstream C compilers | |
EP1936532B1 (en) | Obfuscating computer program code | |
Borrello et al. | Constantine: Automatic side-channel resistance using efficient control and data flow linearization | |
JP7154365B2 (ja) | ソフトウェアコードをセキュアにするための方法 | |
US20080271001A1 (en) | Method of generating program, information processing device and microcomputer | |
CN105930694B (zh) | 用于模糊虚拟机的灵活指令集 | |
US20170024230A1 (en) | Method, apparatus, and computer-readable medium for ofuscating execution of an application on a virtual machine | |
JP2007517299A5 (ja) | ||
US20160171213A1 (en) | Apparatus and method for controlling instruction execution to prevent illegal accesses to a computer | |
EP3765957B1 (en) | Branch target variant of branch-with-link instruction | |
JP4754635B2 (ja) | 制御フロー保護機構 | |
US11256786B2 (en) | Method to secure a software code | |
US10579457B1 (en) | Processor for achieving flow integrity and a method of providing notice of a fault in control flow | |
Lehniger et al. | Combination of ROP Defense Mechanisms for Better Safety and Security in Embedded Systems | |
JP2009009537A (ja) | プログラム作成方法及び情報処理装置ならびにマイコン | |
US20100031357A1 (en) | Defending Smart Cards Against Attacks by Redundant Processing | |
Olmos et al. | Protecting cryptographic code against Spectre-RSB (and, in fact, all known Spectre variants) | |
US20230040093A1 (en) | Method for verifying an execution of a software program | |
Resell | Forward-edge and backward-edge control-flow integrity performance in the linux kernel | |
Wang et al. | Fpvalidator: validating type equivalence of function pointers on the fly | |
CN114489657A (zh) | 用于编译源代码的***和过程 | |
Nduru et al. | Assessing Bit Flip Attacks and Countermeasures | |
Tatara et al. | Active Modification Method of Program Control Flow for Efficient Anomaly Detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071029 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101214 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110310 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110317 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110413 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110420 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20110603 |
|
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: 20110628 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110630 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4777903 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140708 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |