JP2007517299A - 実行トレースプリントを検証することによるプログラム実行整合性の制御方法 - Google Patents
実行トレースプリントを検証することによるプログラム実行整合性の制御方法 Download PDFInfo
- Publication number
- JP2007517299A JP2007517299A JP2006546232A JP2006546232A JP2007517299A JP 2007517299 A JP2007517299 A JP 2007517299A JP 2006546232 A JP2006546232 A JP 2006546232A JP 2006546232 A JP2006546232 A JP 2006546232A JP 2007517299 A JP2007517299 A JP 2007517299A
- Authority
- JP
- Japan
- Prior art keywords
- program
- trace
- trace print
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000004364 calculation method Methods 0.000 claims description 20
- 230000006870 function Effects 0.000 claims description 14
- 230000003068 static effect Effects 0.000 claims description 11
- 238000004458 analytical method Methods 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 6
- 238000011084 recovery Methods 0.000 claims description 3
- 125000004122 cyclic group Chemical group 0.000 claims description 2
- 230000000007 visual effect Effects 0.000 claims description 2
- 230000000295 complement effect Effects 0.000 claims 5
- 230000001419 dependent effect Effects 0.000 claims 1
- 238000000605 extraction Methods 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 3
- 230000009471 action Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000003780 insertion Methods 0.000 description 5
- 230000037431 insertion Effects 0.000 description 5
- 238000007792 addition Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000007935 neutral effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000006378 damage Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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)
Abstract
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のプログラムルーチンの命令の形をなす別物(singleton)によって、調査されるべき全てのプログラムポイントを初期化するステップと、
・プログラムルーチンエントリポイントで、得られた最初のトレースプリント値に等しいトレースプリント値を記憶するステップと、
・調査されるべき一組のプログラムポイントが無効でない限り、
・調査されるべき一組のプログラムポイントから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 (26)
- 実行トレースプリントを検証することによってプログラム実行の整合性を制御する方法であって、
・プログラム実行に関する実行経路及び/または処理されたデータを示すトレースプリントを更新するステップと、
・前記プログラムの決定されたポイントにおいて前記トレースプリント(動的に算出された現在値)を(静的に固定されていて、プログラム実行が妨げられない場合にトレースプリントが有するべき値に等しい)期待値と比較するステップと、
・前記現在のトレースプリントが前記期待値とは異なる場合に特別な処理を実行するステップと、
を含むことを特徴とする方法。 - 前記現在のトレースプリントが前記期待値と異なる場合に、前記プログラムの前記特別な処理が、決定的であろうとなかろうと、特定のデータを保護するステップ、及び/またはうまく機能していないユーザに音または視覚の信号によって警告するステップ、及び/または前記プログラムの実行を中断するステップから成ることを特徴とする請求項1記載の方法。
- 前記トレースプリントは、重要であるとみなされる前記プログラム及び/またはプログラム状態の重要なコード部分にだけ関係することを特徴とする請求項1記載の方法。
- 前記トレースプリントが、その1つの引数が前記現在のトレースプリント値でありもう1つの引数がトレースプリント更新の前記ポイント及び時期(プログラム状態及び/またはプログラム実行ポイント及び/または処理されたデータ)における特定の観察データである関数の連続した組成物で、前記プログラムの前記実行経路に沿って、増分的に算出されることを特徴とする請求項1記載の方法。
- 前記関数が、≪チェックサム(checksum)≫、線形一致、周期的冗長検査(CRC)、暗号のトレーシングプリント(≪ダイジェスト(digest)≫)若しくは、加算、減算、定数または前記観察データ項目を有する≪or≫排他的論理(≪xor≫)、または固定ビット数の交代、奇数定数による乗算といった演算の組合せの関数の1つから成ることを特徴とする請求項4記載の方法。
- 前記トレースプリントが、前記チェックフローのある収束ポイントに到る前に前記実行経路に沿って調整されて、前記収束経路の前記トレースプリントが等しくされることを特徴とする請求項1記載の方法。
- 前記調整演算が、定数値へのアサインメント、定数の加算、定数値との≪or≫排他的論理(≪xor≫)といった関数の組合せから成ることを特徴とする請求項6記載の方法。
- 前記プログラムのあるポイントにおいて、前記トレースプリントが、前記先行するトレースプリント値から差し引かれるというよりむしろある値に割り当てられることを特徴とする請求項1記載の方法。
- 前記プログラムポイントが、その数がある閾値より大きい実行分岐が収束するポイント並びに/または、サブルーチン及び/または例外ハンドラの前記エントリポイントであるポイントであり、前記アサインされた値が所定の値及び/またはランダムな抽出によって決定された何らかの値、並びに/または考慮中に前記プログラムポイントにおいて不変式と前の分析によって決定されたプログラム式であることを特徴とする請求項8記載の方法。
- 前記トレースプリント値が、プログラムポイントにおいて前記期待値と比較され、前記プログラムポイントは前記プログラムの前記チェックフローグラフ中のプログラムポイントの特定の特徴によってかつ/または前記プログラムポイントで実行される演算のタイプによって決定されることを特徴とする請求項1記載の方法。
- 前記プログラムポイントが、前記チェックフローの各々の分岐の後及び/または各々の結合の前、並びに/または不揮発性メモリで書き込む各々の演算の前、並びに/または特定の暗号演算の前、並びに/または特定のライブラリプログラムルーチンに対する呼び出しの前及び/または特定のライブラリプログラムルーチンに対する呼び出しの後、に位置することを特徴とする請求項10記載の方法。
- トレースプリント設定(算出及び/または更新及び/または調整及び/またはアサインメント)及び/または制御が、
・前記プログラムコードの装備によって明示的に、かつ/または
・トレースプリント設定及び/または制御演算が(複合の演算から生じている値を含むこと)どのプログラムポイントでかつ/またはどの値を用いてなされるかを前記実行マシンに指示する補完的なプログラム・データに基づいて前記実行マシン(前記実行プラットフォームのバーチャルマシン及び/またはプロセッサ)によって明示的に、かつ/または
・実行された命令の特定の観察に基づいて、前記実行マシン(バーチャルマシン及び/または前記実行プラットフォームのプロセッサ)によって陰的に、
なされることを特徴とする請求項1乃至11のいずれかに記載の方法、 - 前記プログラムコードの前記装備は、前記トレースプリントを示す変数またはレジスタの明示的な処理、及び/または専用のプログラムルーチンに対する呼び出し、及び/または前記実行マシンの専用の命令の使用、に基づいていることを特徴とする請求項12記載の方法。
- 前記補完的なプログラム・データは、実行されるべき前記演算を定義しているコードとプログラムポイントを関連させかつ特定の命令を実行する場合に前記実行マシンによって参考にだけされるテーブルにおいてコード化されることを特徴とする請求項12記載の方法。
- 前記特定の命令が、分岐及び/または不揮発性メモリにおける書き込み及び/またはあるプログラムルーチンへの呼び出し及び/または特定の暗号演算であることを特徴とする請求項14記載の方法。
- 所定のプログラムポイントにおける前記期待されるトレースプリント値及びトレースプリント調整値が、前記プログラムコード(ソースまたはオブジェクト)の静的分析によって決定され、前記プログラムコードが、いくつかのループ及び再帰をほどくことをシミュレーションすることができ、さらにプログラムコードを修正して前記トレースプリント値を予測可能にしかつ/またはこれらの値を点検することができることを特徴とする請求項1記載の方法。
- 前記分析の目的で、トレースプリント更新(プログラムポイント及びこのプログラムポイントでの実行観察のタイプ)及び/またはトレースプリント調整(トレースプリントが特定の値に調整されなければならないプログラムポイント)及び/またはトレースプリントアサインメント(前記トレースプリントがある値に強制的になされなければならないプログラムポイント)及び/またはトレースプリント制御(前記トレースプリントがチェックされなければならないプログラムポイント)に関する情報が提供され、この情報が、
・請求項6乃至11のいずれかにおけるような前記方法に従って自動的に決定され、かつ/または
・前記プログラムコードに配置される命令から成っていて、(引数としていかなる整数をとるか否かによらず、プログラムルーチン呼び出しなどの)前記トレースプリントに上で演算をする指令の形で与えられ、かつ/または前記プログラムに補完的なテーブルの形で与えられ、かつ、
・前記分析によって算出される前記値に従って完了され、かつ/または修正されることが可能である、
ことを特徴とする請求項4乃至16のいずれかに記載の方法。 - 各々のプログラムルーチンに対して、前記期待されるトレースプリント値が、以下の演算手順、即ち、
・調査されるべき全てのプログラムポイントを、第1のプログラムルーチン命令の形をなす別物(singleton)を用いて初期化するステップと、
・前記プログラムルーチン・エントリポイントで、前記所定の初期トレースプリント値に等しいトレースプリント値を記憶するステップと、
・調査されるべき前記一組のプログラムポイントが無効でない限り、
・調査されるべき前記一組のプログラムポイントから1つのプログラムポイント(起点)を抽出するステップと、
・前記命令の実行後に結果として生じる可能なプログラムポイント(目標ポイント)の各々に対して:
*前記目標ポイントがトレースプリントアサインメントを含み、かつ、この目標ポイントがまだ調査されていない場合に、前記目標ポイントにおいて、前記アサインメントによって画定される前記トレースポイント値を記憶するステップと、
*前記目標ポイントがトレースプリントアサインメントを含まず、かつ、この目標ポイントがすでに調査されている場合に、前記起点におけるトレースプリント値を前記目標ポイントにおいて記憶された前記トレースポイント値上へと送出するトレースプリント調整を、前記起点における前記命令と前記目標ポイントにおける前記命令との間に、挿入するステップと、
*前記目標ポイントがトレースプリントアサインメントを含まず、かつ、この目標ポイントがまだ調査されていない場合、前記起点と前記目標ポイントとの間に1つがある場合にトレースプリント更新によって任意に変更される、前記起点における前記トレースプリント値を前記目標ポイントにおいて記憶するステップと、
*前記目標ポイントがまだ調査されていない場合、調査されるべき前記一組のプログラムポイント中の前記目標ポイントを追加するステップと、
によって決定されることを特徴とする請求項17記載の方法。 - 第1に、前記トレースプリントがそのエントリポイントから(プログラムルーチン呼び出しを含め)前記プログラムの完全な実行に関係し、第2に、請求項17におけるような前記方法が、前記呼び出されたプログラムルーチンの第1の命令に関する無条件の分岐としての静的プログラムルーチン呼び出しの命令、前記対応する呼び出されたプログラムルーチンの前記第1の命令に関する条件分岐としての前記ダイナミックプログラムルーチン呼び出しの命令、及び前記対応する呼び出しの直後に続く命令の方への分岐としての復帰呼び出しの命令、を処理することによって一組のプログラムルーチンに適用されることを特徴とする請求項12乃至18のいずれかに記載の方法。
- 前記プログラム及び/または前記実行マシンが装備されて、前記トレースプリントがプログラムルーチン(例えばプログラムの一部でないかまたは分析されることができないようなプログラムルーチン)に対する特定の呼び出しで保存されて、リターン呼び出しで復帰することを特徴とする請求項12記載の方法。
- 前記プログラム及び/または前記実行マシンが装備されて、前記トレースプリントが特定のプログラムルーチン(呼び出しの時点で動的に決定されるプログラムルーチンを含む)からの呼び出し及び復帰で調整され、前記トレースプリントが:
・呼び出されたプログラムルーチンのエントリ上で、前記呼び出されたプログラムルーチンの名前及び/または符号定数に依存する値(例えば前記名前及び/または符号定数の暗号トレーシングプリントによって得られる値など)、
・前記呼び出し中のプログラムルーチンにおけるリターン後に、前記呼び出されたプログラムルーチンの前記名前及び/または前記符号定数に同様に依存する値であって、前記プログラムルーチン呼び出しによって関係している各々の例外ハンドラ(即ち、例外が前記呼び出されたプログラムルーチンにおいて持ち上げられる時に影響を及ぼされるかもしれない)が決定された値に前記トレースプリントをアサインしなければいけない、
に等しいように装備されることを特徴とする請求項12記載の方法。 - 前記トレースプリントが実行マシンによって陰的に更新される場合に、
・前記プログラムの重要でないコード部分を実行する場合、及び/またはプログラム状態が重要であるとみなされない場合に不必要な計算、及び/または特定のプログラムの実行中にトレースプリントチェックを実行していないルーチン、を避けるためにトレースプリント設定が一時的に停止され、
・それが停止されていない場合、トレースプリント設定は各々の実行された命令に関係し、
*その直接の引数のいくつか及び/またはこの命令(例えば前記オペランド・スタックの高さまたは前記オペランド・スタックにおける価値の特定のタイプの存在など)に対するいくつかのプログラム不変式及び/または前記命令が分岐である場合になされた分岐の選択を含み、
* しかし、前記実行された命令が観察されるべき命令の所定のクラスに属するように設けられているので、前記クラスは前記実行マシンに対して固定されるか、さもなくば前記命令が観察されるべきかどうかを命令するあらゆる命令コードをブールに関係付けるテーブルによって与えられ、さらに前記テーブルは様々なプログラムルーチン及び/または様々なプログラムに特有である、
ことを特徴とする請求項3乃至12のいずれかに記載の方法。 - ・前記トレースプリントに関するいくつかの演算(例えば、トレースプリントアサインメント及び制御など)は、前記プログラムコードに明示的に挿入され、
・前記トレースプリントに関するいくつかの演算(例えば、トレースプリント調整など)は、補完的なプログラム情報に関して前記実行マシンによって明示的に実行され、
・前記トレースプリントに関するいくつかの演算(例えば、トレースプリント更新など)は、前記実行マシンによって陰的に実行される、
ことを特徴とする請求項12記載の方法。 - ・トレースプリントセット及び/またはチェック演算がプログラムルーチン呼び出しによってなされる場合、前記プログラムはこれらのプログラムルーチンを実行するライブラリによって付随され、実行プラットフォームにロードする場合に、前記ライブラリが特別な実行によっておそらく置換され、
・前記トレースプリントセット及びチェック演算が、補完的なプログラム情報によって表現され、かつ、前記実行プラットフォームが、この情報を用いることを知らず、かつ/または用いることができず、かつ/または用いたくない場合に、前記情報は無視されて整合性制御を用いることなく実行を可能にする、
ことを特徴とする請求項12記載の方法。 - 前記プログラムの前記実行マシンは、トレースプリント算出及び/またはトレースプリント更新及び/またはトレースプリント調整及び/またはトレースプリントアサインメント及び/またはトレースプリント制御及び/またはプログラムルーチンへの呼び出しに関するトレースプリント保存、及びプログラムルーチンからの復帰に関するトレースプリント回復、に対する専用の命令を有し、これらの命令がプログラムコードにおいて明示的に現れ、かつ/または前記実行マシンを実行するために用いられることを特徴とする請求項12及び20のいずれかに記載の方法。
- 実行整合性の制御を可能にする実行システムであって、前記システムが、請求項1乃至25のいずれかにおいてのような方法に従って、トレースプリント算出及び/またはトレースプリント更新及び/またはトレースプリント調整及び/またはトレースプリントアサインメント及び/またはトレースプリント制御及び/またはプログラムルーチンへの呼び出しに関するトレースプリント保存及びプログラムルーチンからの復帰に関するトレースプリント回復に対する専門化された命令を有するマイクロプロセッサを含むことを特徴とするシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0315633 | 2003-12-31 | ||
FR0315633A FR2864655B1 (fr) | 2003-12-31 | 2003-12-31 | Procede de controle d'integrite de programmes par verification d'empreintes de traces d'execution |
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 true JP2007517299A (ja) | 2007-06-28 |
JP2007517299A5 JP2007517299A5 (ja) | 2011-07-21 |
JP4777903B2 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) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009245336A (ja) * | 2008-03-31 | 2009-10-22 | Ntt Data Corp | 情報処理装置、情報処理方法、および、情報処理プログラム |
JP2010539577A (ja) * | 2007-09-14 | 2010-12-16 | エアバス オペレーションズ (エスアーエス) | 航空機搭載のオペレーション・ソフトウェアのデバッグ・フェーズ中に扱われる情報の量を処理するための方法およびその方法を実施するためのデバイス |
JP4754635B2 (ja) * | 2006-02-27 | 2011-08-24 | シャープ株式会社 | 制御フロー保護機構 |
US8302188B2 (en) | 2006-07-18 | 2012-10-30 | Panasonic Corporation | Instruction generation apparatus for generating a computer program resistant to unauthorized analyses and tampering |
Families Citing this family (29)
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 |
US8434148B2 (en) * | 2006-03-30 | 2013-04-30 | Advanced Network Technology Laboratories Pte Ltd. | 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 |
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 |
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 |
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 |
WO2016080735A1 (en) * | 2014-11-17 | 2016-05-26 | Samsung Electronics Co., Ltd. | Method and apparatus for preventing injection-type attack in 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 |
US10979229B2 (en) | 2017-10-27 | 2021-04-13 | Digital Asset (Switzerland) GmbH | Computer system and method for distributed privacy-preserving shared execution of one or more processes |
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的流体物料输送提前量计算方法及流体物料输送方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04259036A (ja) * | 1991-02-13 | 1992-09-14 | Nec Corp | プログラム変換方式及びプログラム不正動作検出機構 |
JP2002539523A (ja) * | 1999-03-09 | 2002-11-19 | ジェムプリュス | プログラムの実行の監視方法 |
WO2003042547A2 (de) * | 2001-11-16 | 2003-05-22 | Giesecke & Devrient Gmbh | Kontrollierte programmausführung durch einen tragbaren datenträger |
Family Cites Families (28)
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 |
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 |
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 |
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 WO PCT/FR2004/003273 patent/WO2005073859A2/fr active Application Filing
- 2004-12-16 JP JP2006546232A patent/JP4777903B2/ja active Active
- 2004-12-16 US US10/585,140 patent/US7882396B2/en active Active
- 2004-12-16 EP EP04821239.3A patent/EP1702268B8/fr active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04259036A (ja) * | 1991-02-13 | 1992-09-14 | Nec Corp | プログラム変換方式及びプログラム不正動作検出機構 |
JP2002539523A (ja) * | 1999-03-09 | 2002-11-19 | ジェムプリュス | プログラムの実行の監視方法 |
WO2003042547A2 (de) * | 2001-11-16 | 2003-05-22 | Giesecke & Devrient Gmbh | Kontrollierte programmausführung durch einen tragbaren datenträger |
JP2005509936A (ja) * | 2001-11-16 | 2005-04-14 | ギーゼッケ ウント デフリエント ゲーエムベーハー | 携帯型データ記憶媒体により制御されるプログラム実行 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4754635B2 (ja) * | 2006-02-27 | 2011-08-24 | シャープ株式会社 | 制御フロー保護機構 |
US8302188B2 (en) | 2006-07-18 | 2012-10-30 | Panasonic Corporation | Instruction generation apparatus for generating a computer program resistant to unauthorized analyses and tampering |
JP5118036B2 (ja) * | 2006-07-18 | 2013-01-16 | パナソニック株式会社 | 命令生成装置、命令生成方法、プログラムおよび集積回路 |
JP2010539577A (ja) * | 2007-09-14 | 2010-12-16 | エアバス オペレーションズ (エスアーエス) | 航空機搭載のオペレーション・ソフトウェアのデバッグ・フェーズ中に扱われる情報の量を処理するための方法およびその方法を実施するためのデバイス |
JP2009245336A (ja) * | 2008-03-31 | 2009-10-22 | Ntt Data Corp | 情報処理装置、情報処理方法、および、情報処理プログラム |
JP4701260B2 (ja) * | 2008-03-31 | 2011-06-15 | 株式会社エヌ・ティ・ティ・データ | 情報処理装置、情報処理方法、および、情報処理プログラム |
Also Published As
Publication number | Publication date |
---|---|
WO2005073859A3 (fr) | 2006-04-20 |
JP4777903B2 (ja) | 2011-09-21 |
FR2864655B1 (fr) | 2006-03-24 |
WO2005073859A2 (fr) | 2005-08-11 |
EP1702268B8 (fr) | 2019-01-16 |
US7882396B2 (en) | 2011-02-01 |
US20100070804A1 (en) | 2010-03-18 |
EP1702268A2 (fr) | 2006-09-20 |
FR2864655A1 (fr) | 2005-07-01 |
EP1702268B1 (fr) | 2018-11-14 |
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 | |
Borrello et al. | Constantine: Automatic side-channel resistance using efficient control and data flow linearization | |
Leroy | Bytecode verification on Java smart cards | |
Zeng et al. | Combining control-flow integrity and static analysis for efficient and validated data sandboxing | |
US8893275B2 (en) | JCVM bytecode execution protection against fault attacks | |
US20080271001A1 (en) | Method of generating program, information processing device and microcomputer | |
JP7154365B2 (ja) | ソフトウェアコードをセキュアにするための方法 | |
CN105930694B (zh) | 用于模糊虚拟机的灵活指令集 | |
Soares et al. | Memory-safe elimination of side channels | |
TWI801505B (zh) | 帶鏈結分支指令的分支目標變體 | |
JP4754635B2 (ja) | 制御フロー保護機構 | |
EP3574425B1 (en) | Method to secure a software code | |
Lackner et al. | Towards the hardware accelerated defensive virtual machine–type and bound protection | |
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 | |
US8458790B2 (en) | Defending smart cards against attacks by redundant processing | |
JP2009009537A (ja) | プログラム作成方法及び情報処理装置ならびにマイコン | |
Maebe et al. | Mitigating smart card fault injection with link-time code rewriting: a feasibility study | |
US12061888B2 (en) | Method for verifying an execution of a software program | |
CN114489657A (zh) | 用于编译源代码的系统和过程 | |
Del Tedesco et al. | Fault-Tolerant Non-interference | |
Barbu et al. | Tampering with Java Card Exceptions-The Exception Proves the Rule | |
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 |