JP4172745B2 - プロセッサによる命令シーケンスの実行を監視する方法および監視装置 - Google Patents
プロセッサによる命令シーケンスの実行を監視する方法および監視装置 Download PDFInfo
- Publication number
- JP4172745B2 JP4172745B2 JP2000604312A JP2000604312A JP4172745B2 JP 4172745 B2 JP4172745 B2 JP 4172745B2 JP 2000604312 A JP2000604312 A JP 2000604312A JP 2000604312 A JP2000604312 A JP 2000604312A JP 4172745 B2 JP4172745 B2 JP 4172745B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- monitoring
- value
- inst
- register
- 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 - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/77—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2153—Using hardware token as a secondary aspect
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
- Communication Control (AREA)
- Flow Control (AREA)
- Storage Device Security (AREA)
Description
本発明は、情報処理プログラムのセキュリティの分野、特に情報処理プログラムの実行において容認できないランを検知する方法および装置に関するものであり、該プログラムは、低級または高級言語によるものであることができる。
【0002】
低級言語で書かれるプログラムでは、コンピュータのプロセッサ部分で実際に実行される命令の構造に非常に近い構造によって、コマンドが作成される。プログラムは、実行される前に、コンパイルされることだけが必要となる。低級言語は、機械コードの呼称で知られているが、特にマイクロプロセッサまたはマイクロコントローラのプログラミングのために用いられる。マイクロコントローラは、少数の特殊な命令のみ実行することのできるプロセッサである。それは、特にチップカード(銀行、電話、サービスへのアクセス等のカード)を装備するために、そして工業的な又は家庭の機器を操作するために用いられる。
【0003】
高級言語で書かれるプログラムでは、コマンドは自然言語にはより近いが、その代わりプロセッサによって用いられる構造とは遠い構造を有する。このような言語で書かれたコマンドは、まず翻訳され、つまり機械コードのコマンドに変換されてから、次にプロセッサにより実行される命令形式にすることができる。
【0004】
このように、あらゆる情報処理プログラムによって、特定のプロセッサ、マイクロプロセッサ、またはマイクロコントローラに適した一連の命令が行われる。
【0005】
従来的には、図1を参照して簡潔に記載されるように、プログラムの命令は、命令カウンタによって規定されるシーケンスに従って、プロセッサによって実行される。
【0006】
プログラムの、コンパイルされた命令は、連続する命令Inst.1,Inst.2,Inst.3,…,Inst.(nは整数である)のブロックで、コードまたはマイクロコードの形式で命令レジスタ2にロードされる。それぞれの命令は、このレジスタ2における特別なアドレスによって識別される。例では、命令Inst.1,Inst.2,Inst.3,…,Inst.nのアドレスが、それぞれAd.1,Ad.2,Ad.3,…Ad.nと示されている。命令は、命令レジスタ2から読み取られ、続いてプロセッサ4にロードされ、そこで、プロセッサ4によって制御される命令カウンタ6のコマンドの下で実行される。このため、命令カウンタ6は、アドレスポインタ8を有し、該アドレスポインタは、レジスタ2のアドレスAd.1,…Ad.nを指し、該アドレスから、1つの命令シーケンスの実行中にプロセッサ4にロードすべき命令を読み取る。従って、ポインタ8の、命令レジスタ2のアドレスに対する位置は、命令の実行に応じて変化する。
【0007】
図1に示されている例では、レジスタ2内の命令、Inst.1,Inst.2,Inst.3,…,Inst.nは、最初の命令Inst.1からn番目の命令Inst.nまで連続して、すなわち、線形に実行されなければならない。従って、命令カウンタ6のポインタ8は、レジスタ2のアドレスAd.1を最初に指定し、それから対応する命令Inst.1のデータ10−1が、プロセッサ4にロードされる。プロセッサ4が、命令カウンタ6に、次の命令(この場合、Inst.2)を与えるように命令すると、該命令カウンタは、アドレスAd.2を指定するために、ポインタ8の位置を、アドレス移動の1単位分インクリメントする。このプロセスは繰り返され、最後の命令Inst.nのデータ10−nをロードするために(点線)、ポインタ8がアドレスAd.nを指定すると終了する。
【0008】
線形に実行される一連の命令は、連続するアドレスに対応するポインタ8のシーケンシャルな移動から外れる “ジャンプ”を有さない。これは、例えば、次のようなマイクロコードでの命令シーケンスでの場合である。
lda t
txa
mul
bset 3,t
sta n
【0009】
言いかえれば、このシーケンスは線形に実行され、命令カウンタ6は、1つの命令から別の命令へ移行する際に、アドレスの移動の1単位分をインクリメントする。
【0010】
しかしながら、プログラムの実行が、レジスタ2内に在る命令の線形シーケンスの外にある命令へのジャンプを要することはよくあることである。このようなジャンプは、シーケンスの外にあるアドレスに位置するデータのロード命令、または次のコマンドを条件に従って実行する、いわゆる分岐命令に起因することがあり得る。
【0011】
ジャンプを引き起こす命令は、命令カウンタ6のところで、このジャンプに続く次の命令の、レジスタ2におけるアドレスを決定し、そこにある命令またはデータをプロセッサ4にロードするように、ポインタ8がこのアドレスを指すことを要する。
【0012】
例として、以下のシーケンスは、コメント“ジャンプ”に対応するコードの箇所において、命令カウンタ6への、新しい値のロードを引き起こす。
lda
txa
bra ラベル;ジャンプ
mul
bset 3,t
sta n
ラベル rts
【0013】
このように一連のシーケンシャルなアドレスの外にあるアドレスへジャンプするコマンドの下で実行できることによって、不幸なことに、プログラムの容認できないランが起こり得る。このようなプログラムの容認できないランは、プログラムされた装置の事故的な作動不良に起因し得る。しかし、それは、望まれる機能がプログラムされた装置の作動を、不正に使用することをねらった悪意のあるアクションによっても起こり得る。例えば、チップカードの場合、ジャンプおよび/または分岐の作成あるいは変更によって、マイクロコントローラのプログラミングを変更することにより、間違ったデータ(銀行または電話カードで許可された予算の増額、あるサービスへの偽のアクセス許可等)をロードすること、または、メモリに保存されている機密データ(アクセスコード、カードの名義人に関する個人的な情報等)を奪取することが可能となる。
【0014】
実際、プログラムが、半導体チップに固定された状態で記録されているときでさえも、プローブおよび部品のテストの現状技術を用いて、集束イオンビーム(英語での“Focus Ion Beams”または“FIBs”の名称の下でも知られている)の作業ステーションによって、チップの表面に(または、その下側の相においても)プローブ接触部を作ることが可能である。
【0015】
これらのプローブ点が一度作られると、ビットを連続して読み取る(かつ、時間とともにその移動に付随し)、またはその値の外部変更を可能にする、特別な台(英語での “probe stations(プローブステーション)”という名称の下でも知られている)によって、プローブ先端を置くことが可能になる。
【0016】
特に、命令カウンタ6のレジスタ上への接触部の設置は、実行中のレジスタの値を外部からロードすることを可能にし、かつプログラムの設計者が想定していない分岐を引き起こすことを可能にする。上記において説明されたように、このようなジャンプは、当然、実施のセキュリティに対して有害な影響を与え、そして、例えば不完全に計算を行うことによって秘密データの漏洩に至ることがあり得る。
【0017】
また、より初歩的で、しかし確実さに劣る方法も存在するが、それは、プログラムのランにおいて作動不良を引き起こす。1つの例が、R.Andersonによる“Tamper−resistance, a cautionary note”と題された記事において与えられている。1つの別の技術は、秘密鍵のようなデータをチップカードから引き出すために故意になされる計算誤りを利用することから成る。この技術は、1996年10月31日に出版されたBellcore Reportの、Boneh、DeMillo、およびLiptonによる“On the Importance of Checking Computations”と題された記事に記載されている。
【0018】
当然ながら、攻撃されるプログラムがコンパイルされる代わりに翻訳される際にもまた、同じ現象が起こりうる。従って、攻撃者が、例えば、翻訳すべきカレント命令を指す、インタープリタのプログラムポインタを変更するのに成功した場合、Java(登録商標)またはBasic言語によるアプリケーションは、その正当な使用から逸脱させることが可能となる。
【0019】
ところで、現在の情報処理システムは、コードの内部での制御されない分岐を禁ずるように特別に設計されているわけではない。むしろその反対で、アセンブリ言語は、プログラマに最大限の自由を与えるように特別に設計されているのである。例として、C言語では、ポインタによってインデックス修飾される実行を用いることで、1つの関数のコード内でジャンプすることが可能である。
【0020】
原因が、不都合な作動不良であるにしろ、想定されたその使用からプログラムを不正に使用する意志であるにしろ、容認できないようなプログラムのランのこれらの問題に対して、本発明は、情報処理プログラムの一続きの命令を実行するランの監視方法を提案するものであり、監視されるプログラムを実行するためのプロセッサに伝送される命令シーケンスを分析することと、前記プログラムによって記録される基準データでこの分析結果を検証することから成る。
【0021】
このように、本発明は、対象となる命令セットに含まれる全ての命令が、それらを実行するために、確実にプロセッサに伝送されたことを検証することを可能にする。その場合、このように読み取られた命令は、実行もされたと仮定する。
【0022】
基準データは、例えば前もって規定された値であることができ、該値は、プログラムのランの際に命令シーケンスの全ての命令が実際に分析された場合にのみ、監視方法実施の際に実現される分析結果に対応するものである。
【0023】
好ましくは、分析のステップは、プロセッサへ伝送された各命令からデータを抽出するサブステップと、このように抽出された各データについて所定の計算をするサブステップとを含み、検証ステップは、分析結果を基準データと比較する。
【0024】
有利には、検証ステップは、監視手段に接続されたレジスタに保存されている値と基準値とを、固定プログラム方式で比較することで実行され、該基準値は、監視プログラムを構成するコードをマスキングする際に1度だけ固められる布線式プログラムに(例えば、ROMタイプの固定メモリに)書き込まれることができる。
【0025】
好ましくは、検証は、プログラム内の所定の場所に置かれた1つの命令によって引き起こされ、この命令は、先に引用された基準データを含んでいる。
【0026】
有利には、監視すべき命令セットの命令が、16進法または10進法の1つの値の形式で存在するとき、前述された分析の際には、単なる数値としてこれらの命令が処理される。
【0027】
情報処理プログラムの命令シーケンスの実行を監視するグローバルな方法は、このように、以下のステップを含むことができる。
−プログラムを作成する際
−監視すべき各命令において識別可能なデータに適用される所定の規則に従って規定された基準値を、プログラムの1つの命令シーケンスの少なくとも1つの所定の箇所に挿入し、
−監視すべきプログラムの部分を実行する際
−実行される各命令において識別可能な前記データを取得し、
−このように得られた前記の識別可能なデータに、前記の所定の規則を適用して、検証値を規定し、
−この検証値が、プログラムと共に記録されている基準値に実際に対応することを検証する。
【0028】
本発明の好適な実施態様では、検証値が基準値に対応しないことが検知された際に、プログラムのランを中断することにする。この割込みは、検証値と基準値との間での不一致が所定の回数検知された場合に、監視されている情報処理プログラムを備えた装置の今後の使用を無効にするアクションを伴うことができる。
【0029】
有利には、監視すべき命令セットは、予定されているランにおいてジャンプを有さず、それが有する全ての命令が、対象となる全ての場合において実行されるよう期待される。
【0030】
監視すべきプログラムまたはプログラムの部分が、少なくとも1回のジャンプを備えているとき、ジャンプを含まない命令セットに別々に監視方法を実施することが可能である。
【0031】
処理されるデータに依存するジャンプ、つまり条件分岐を少なくとも1回引き起こす命令の場合は、ジャンプの前にあるジャンプの無い命令セットと、このジャンプの後にくるジャンプの無い少なくとも一つの命令セットとに対して、別々に監視方法を実施することができる。
【0032】
この場合、ジャンプの前にある命令セットについて、この命令セットの検証値を得ようとする分析のためには、ジャンプをコマンドする命令(この命令は通常、分岐前の最後のものである)をこのセットに挿入し、従って、この命令セットの良好なランを検証してから、ジャンプの命令を実行するように計画することができる。
【0033】
有利には、新たに方法を実施するたびに、前回、方法を実施した際に得られた検証値を消去する。この措置によって、ジャンプによって分離されている命令セットのような、1つのプログラムの様々な命令セットの監視を容易に管理することが可能になる。それは、特に、ジャンプによって分離されている様々なセットについて、検証値の計算と同じ初期条件で方法を実施することを可能にする。
【0034】
新たに方法を実施するたびに、検証値は、単にゼロへリセットすることによって消去することができる。この値は、別の所定の初期値によって置き換えることもできる。ゼロへのリセット、あるいは初期化のこれらの演算は、保護されたソフトウェアによってアクティブにすることができる。
【0035】
有利には、検証値は、一連の値の最後の値として得られ、該一連の値とは、命令セットの対象となる命令のそれぞれの分析とともに連続的に進行するものである。この取組み方は、監視方法のランの内部状態を含み、その進行に付随することを可能にする。
【0036】
好ましくは、検証値のこの進行を可能にする分析態様は、先行する命令に続く対象となる各命令について対象となる命令から抽出された値と、この先行する命令において実施された同じ演算によって得られた結果とについて、同時に演算結果を計算することから成る。検証すべき第1の命令に関する計算については、この第1の命令から抽出されたデータと、所定の値(ここで、先に引用された再初期化またはゼロへのリセットの値に対応することのできる)とについて、同時に演算を実施することができ、該所定の値は、先行する演算結果が存在しない場合に“種”の値の役割を果たす。
【0037】
このようにして、対象となる命令のそれぞれから抽出されたデータについて、同じように適用される再帰的アルゴリズム用いることによって、正しい検証値を得ることが可能となる。そのうえ、計算の演算は、一つには、計算の際に全ての命令のデータが対象となった場合、あるいは該データが予定された順序で対象となった場合にのみ、正しい検証値が得られるように、容易に選択することができる。
【0038】
計算の演算は、ハッシュの連邦規格によって規定されたハッシュ関数SHA-1などの、データの暗号化の分野で周知の技術により、ハッシュ関数を適用することから成ることができる。この場合、演算コード(数値として考えられる)と、最後に行われた初期化以来実行されたアドレスとの全体を、暗号方式的にハッシングすることによって、監視方法のランの、前述の内部進行を実現することが可能である。
【0039】
変型において、演算コードと、最後に行われた初期化以来実行されたアドレスとの全体について、必ずしも暗号化ではない冗長計算を行うことによって、検証値を進行させることが可能である。例として、CRC(英語でcyclic redundancy check(巡回冗長検査))タイプのアルゴリズムを用いることができる。
【0040】
本発明によって、それぞれの命令に含まれるデータが、それらの実行の間に得られるに従って、中間値の計算により比較値を得ることが可能となる。この取組み方では、対象となる命令セットの命令から抽出されるそれぞれの値は、バックアップする必要がない。実際、中間値の計算の後では、次の中間値を計算するためにこの中間値(あるいは、検証値に対応する最終値)のみが重要となり、それを生成させるデータは、もはや考慮に入れられるものではない。この措置によって、本発明の実施手段におけるメモリスペースを節約することができる。
【0041】
変型では、対象となる命令セットの命令に含まれているそれぞれのデータは、それらが実行されるのに従ってバックアップすることができ、例えば、検証ステップのなどの必要なときにのみ、検証値の計算を行うことが可能である。
【0042】
本発明は、また、情報処理プログラムの一続きの命令の実行のランの監視装置に関するものであり、監視されるプログラムを実行するためのプロセッサに伝送された命令シーケンスを分析するための手段と、前記プログラムと共に記録されている基準データでこの分析結果を検証するための手段とを有することを特徴とする。
【0043】
本発明に合致する監視装置は、有利には、検証値の計算において中間結果を記録することができるレジスタを有する。このレジスタは、途中の最後の中間結果のみを取っておくのに適することができる。
【0044】
実行中のプログラムのコマンドの下、所定の値の記録またはゼロへのリセットを可能にすることができる。このようにして、プログラムは、監視方法を新たに実施するたびに、レジスタの内容における初期条件をコマンドすることができるが、ここでいう実施は、例えばプログラム内でのジャンプの後に発生するものである。
【0045】
監視装置は、監視すべきプログラムの実行装置内に、または監視すべきプログラムを含むプログラムされた装置内に、内蔵することができる。
【0046】
また、本発明は、プログラム実行装置、例えば、コンピュータ、チップカードまたはPCMCIAサイズのカードに記録されたプログラムの読取り装置のようなマイクロプロセッサまたはマイクロコントローラ機器などの、情報処理プログラムの一続きの命令を実行するためのものに関し、実行するために伝送された命令シーケンスを分析するための手段と、プログラムと共に記録されている基準データでこの分析結果を検証するための手段とを有することを特徴とする。
【0047】
また、本発明は、前述のプログラム実行装置と共に機能するための、一続きの命令を有するプログラムされた装置にも関するものであり、さらに、基準データを有し、該基準データは、前記の命令の中に含まれるデータに応じて前もって規定され、かつ前述のプログラム実行装置によって分析される命令シーケンスの検証を可能にするものであることを特徴とする。
【0048】
プログラムされた装置、例えば、チップカード、またはABSのブレーキシステムのようなメカニズムの制御機構は、監視すべきプログラムを、ROMタイプの固定メモリに内蔵することができる。
【0049】
有利には、基準データは、コードをマスキングする際に一度だけ、布線式の固められた値の形式で、メモリに記録される。
【0050】
また、本発明は、前述のプログラムされた装置と関連して機能するためのプログラムの実行装置のプログラミング装置に関し、プログラムの命令シーケンスの少なくとも1つの所定の箇所に、実行を監視することが望まれる命令セットのそれぞれの命令に含まれるデータから、前もって規定された態様に従って計算される基準値を書き込む手段を有することを特徴とする。
【0051】
最後に、本発明は、クリティカルコードを翻訳する仮想マシンまたはインタープリタにも関し、クリティカルコードを実行するために、上述の監視方法を実施することを特徴とする。
【0052】
監視、プログラム実行、またはプログラミングの前述の装置、さらにはこのようなプログラムを備える装置は、必要となる全ての手段を備え、前述の監視方法の様々な可能なオプションの局面を実現することができる。
【0053】
例として、チップカードに関する応用において、プログラムを実行するマイクロプロセッサに、監視ユニットの役割を果たす追加の物的な要素を加えることを考えることができる。このユニットの役割は、ソフトウェアの設計者が想定していないジャンプが、実行中に起こり得ないことを監視することである。この例では、監視ユニットは、レジスタから成ることができ、該レジスタの内容は、監視ユニットの内部状態を常に形成する。監視ユニットの特殊な入力は、典型的には、監視ユニットの内容を消去することによって、そのゼロへのリセット(RAZ)を可能にする。この機能は、実行されるソフトウェアによって常にアクティブにすることができ、例えば、アセンブラで書かれた新規の演算コード(例えば、“clr us”)を加えることによって、または、保護された要素のメモリ内のある1ビットを処理することによって(例えば:setb 3,SERVICE)、実現することができる。
【0054】
この応用例では、監視ユニットは、その内部状態を、保護されたソフトウェアによって与えられるデータストリングと比較する。それは、例えば、ソフトウェアが内部状態を比較することを望む値を、監視ユニットの内部で(ループ“lda-sta”によって)コピーすることによって実現することができる。値のコピーが一旦終了すると、監視ユニットは、それを、その内部状態と比較し、次の動作を採用する:監視ユニットの状態が、保護されているソフトウェアによって示される値に等しい場合、正常に実行を再開し、そうでなければ、プログラムの実行は停止されるが(ユーザーにカードをゼロにリセットをさせるよう強制する)、この場合、虚偽実行カウンタを前もって認めておくこともあり、該カウンタは、値が適切な限度(例えば4)を超える場合にカードを決定的にブロックするEEPROMタイプの不揮発性メモリ内にある。
【0055】
監視ユニットは、その最後にゼロにリセットして以来に実行された、命令コードおよびアドレスを暗号方式的にハッシングしたものを、恒久的に保存することができる。
【0056】
監視のメカニズムは、仮想マシンにおけるコード(例えば、Java(登録商標)の“byte code(バイトコード)”)の翻訳に適することができる。コンパイラは、バイトコードの一部分のハッシュ値を計算し、それを英語で“class file(クラスファイル)”として知られているある属性の構造に入れ込み、発生したバイトコードに、監視ユニットのゼロへのリセットおよび検証機能の呼び出しに対応する、英語で“opcodes(命令コード)”として知られている補足的なコードを加えることができる。仮想マシンは、監視ユニットの代わりをし、それが検証の命令コードに遭遇したとき、クラスファイルに含まれる理論的なハッシュ値と、カレントのハッシュ値とを検証することになる。
【0057】
本発明は、付属の図面を参照して、純粋に例として挙げられた、好適実施態様の以下の説明を読むことによって、より明確に、利点および特徴が理解されるだろう。
−図1は、すでに紹介されたが、プログラムの実行のランにおいて命令カウンタの役割を説明することを目的とする、単純化されたブロック図である。
−図2は、本発明の第1の実施態様に合致する監視ユニットの作動原理を説明することをねらいとする、プログラム実行装置の単純化されたブロック図である。
−図3は、本発明による、監視方法のフローチャートである。
−図4は、本発明による、監視方法の変型のフローチャートである。
−図5は、本発明の第2の実施態様に合致する監視ユニットの作動原理を説明することをねらいとする、プログラム実行装置の単純化されたブロック図である。
−図6は、第2の実施態様に適した、本発明による監視方法のフローチャートである。
−図7は、監視方法に特有の命令をさらに含む分岐のある1つのプログラムの命令セットを簡略化して示している。
【0058】
本発明の原理は、図2のブロック図を参照して説明されるが、図1のブロックと類似の役割を有するブロックには同じ参照番号がつけられ、簡潔さをはかるために、新たに説明はしない。
【0059】
図2は、広い意味でのプログラム実行装置20の基本要素を表している。それは、高級言語で書かれたプログラムを実行するためのコンピュータ、又はマイクロプロセッサ、あるいはマイクロコントローラであることが可能であるが、後ろの二つは低級言語で書かれたプログラムから作動する。例として、実行装置20は、銀行、電話、または他のサービスの取引を管理するためのチップカードの読取り装置であることができる。そして、検証すべきプログラムは、チップカードの中に物的に保存されている。
【0060】
続く説明を具体的にするために、プログラム実行装置20は、マイクロコントローラタイプのプロセッサ4に基づくことと仮定する。
【0061】
プロセッサ4は、マイクロコードの形で命令レジスタ2に保存されているプログラムの一部分を実行する。このプログラムの部分での実際に作動する部分は、Inst.1,Inst.2,Inst.3,…,Inst.nでそれぞれ示されるn個の命令(nは1より大きい整数である)から成る1つのシーケンスを有する。命令を構成するマイクロコードは、10進法または16進法であることのできる数値の形で存在する。
【0062】
このような値は、2つの異なる形で考えることができるが、それぞれは、データを次のものとして所持する:第1には、プロセッサに対して示す命令として(その場合、それは“コード値”と示される)、第2に、算術処理がされる単なる数値としてである(この場合、それは、“数値”Vinst.と示される)。例えば、第1の命令Inst.1は40に等しい。この数字は、プロセッサによって認知される1つの命令に対応するコードであるが、数値40と同じ2進法構造をもっている。
【0063】
命令Inst.1,Inst.2,Inst.3,…,Inst.nのうちのいかなるものも、命令実行の線形シーケンス外にある別の命令へのジャンプを命令しない。このように、この部分のプログラムの正常かつ予定されたランは、命令Inst.1から始まり、命令Inst.nで終わるように、連続してそれぞれの命令を実行することを必然的に要する。そのように、命令カウンタ6(既に記載)のそのポインタ8は、命令レジスタ2内の命令Inst.1からInst.nが、プロセッサ4にロードされるのに応じて逐次的に、それらの各アドレスを指す。
【0064】
本発明に従って、プログラム実行装置20は、監視ユニット22を有し、該監視ユニットは、Inst.1からInst.nまでのそれぞれの命令が、それらの実行のためにプロセッサ4に確実にロードされたことを検証することを可能にする。それは、機能的には、命令レジスタ2とプロセッサ4との間に接続されている。このように、命令レジスタ2から読み取られる全ての命令は、監視ユニット22を通ってから、プロセッサ4に達する。
【0065】
この例では、監視ユニット22は、プログラム実行装置20に内蔵されているように記載されている。しかしながら、監視ユニット22は、監視すべきプログラムを有する装置と共に、チップカードの中に例えば埋めこまれつつ内蔵されることももちろん可能であり、ここで、チップカードの監視すべきプログラムはメモリに保存されているが、そのことによって、以下に記載される原理が変わることはない。
【0066】
後により詳細に説明されるように、監視ユニット22は、命令Inst.1,Inst.2,Inst.3,…,Inst.nに含まれるデータを一時的に保存するためのレジスタ24と、このデータについて演算を実行するための計算機26とを有する。
【0067】
監視ユニットの実施は、プログラムのn個の命令、Inst.1,Inst.2,Inst.3,…,Inst.nに、新規の2つの命令を付加することを要求する:プログラムの第1の命令Inst.1の前に置かれる第1の監視命令Inst.0、およびプログラムの最後の命令Inst.nの後に置かれる第2の監視命令Inst.n+1。
【0068】
プログラムのn個の命令の実行のランのとき、命令カウンタ6は、最初に、そのポインタ8を、第1の監視命令Inst.0のアドレスを指すようにコマンドする。この命令は、監視ユニットが、そのレジスタ24に含まれるハッシュ値VHを初期化するようコマンドする。例では、命令Inst.0は、単に、レジスタ24に値VH=0を置くようにコマンドする。それは、プロセッサ4には伝送されない。
【0069】
続いて、プログラム実行装置20は、プログラムの命令、Inst.1,Inst.2,Inst.3,…,Inst.nの本来の実行の段階に移る。命令レジスタ2から読み取られたそれぞれの命令は、最初に監視ユニット22に伝送され、そこでは、それを数値とみなす。
【0070】
それぞれの命令の数値に対しては、計算機26によって、ハッシュアルゴリズムを適用するが、それは例えば、ハッシュの連邦規格によって明示されているハッシュSHA-1である。命令Inst.i(iは1からnまでの整数)に関するハッシュ演算の結果VHiは、レジスタ24に書き込まれる。
【0071】
この値VHiは、次の命令Inst.i+1でのハッシュ演算のためのベースとなる。次に、命令Inst.i+1について、このようにして得られたハッシュ結果VHi+1は、先に得られたハッシュ結果VHiと入れ代わって書き込まれる。
【0072】
この手続きは、監視ユニット22を通過するそれぞれの命令、Inst.1,Inst.2,Inst.3,…,Inst.nごとに続けられる。
【0073】
最後の命令Inst.nが実行されたとき、第2の監視命令Inst.n+1は、監視ユニット22にロードされる。この命令は2つの要素を有する:基準値Vref、およびこの基準値Vrefとレジスタ24に登録された最後のハッシュ結果の値とを比較する計算機26に向けられたコマンド。後者の値は、ハッシュ結果VHnに対応し、該結果は、命令Inst.nの数値(図では36に等しい)から、および前の命令Inst.n−1について得られたハッシュ結果VHn−1から得られる。
【0074】
このように、第2の監視命令Inst.n+1への応答として、計算機26は、レジスタ22内の値VHnを、この監視命令において特別な基準値Vrefと比較する。
【0075】
基準値Vrefは、記録されるプログラムを作成する際に、命令、Inst.1,Inst.2,Inst.3,…,Inst.nの値の連続的なハッシュ結果について期待される値VHnに対応するように、決定される。この値Vrefは、監視ユニット22によって用いられるのと同じ手続き、つまり命令、Inst.1,Inst.2,Inst.3,…,Inst.nの連続的なハッシュ手続きを用いて、前もって計算することができる。
【0076】
好ましくは、値Vrefは、悪意のあるアクションによって変更することができないように、固定メモリ内に布線化される。
【0077】
もし、監視ユニット22が、監視命令Inst.n+1を実行しながら、前述の値VrefとVHnの間に同一性があると確認したならば、全ての命令、Inst.1,Inst.2,Inst.3,…,Inst.nが、それらの実行のためにプロセッサ4に確実に伝送されたと判断される。
【0078】
その反対に、もし監視ユニット22が、値VrefとVHnとの間に同一性がないと確認したならば、全ての命令、Inst.1,Inst.2,Inst.3,…,Inst.nが、監視ユニットによって受信および伝送されなかったと判断されるか、あるいは予定されていたシーケンスの順序になかったと判断される。この場合、プログラムのユーザーまたは名義人に警告を発するような、またはプログラムが続行するのを阻止するようなアクションを備えることができる。例では、このようなアクションは、監視ユニット22からプロセッサ4に、プログラム割込みコマンドInt.の形で伝送される。
【0079】
今度は、図2の手段で実現されているような監視方法が、図3に示されているフローチャートを参照して記載されている。監視すべきプログラムまたはプログラムの部分が、監視方法について、第1および第2の監視命令を最初と最後に組み込むことによって、正しく準備されたと仮定する。
【0080】
初期の段階で、監視ユニット22は、監視の最初のルーチン30に位置し、その第1ステップ32は、第1の監視命令(Inst.0)の待機である。
【0081】
第1の監視命令Inst.0を受信した際、監視ユニット22は、命令カウンタおよびレジスタ24の初期化ステップ34(ゼロへのリセットによる)を行う。レジスタ24のゼロへのリセットは、後に説明されるように、ハッシュ演算のシーケンスを開始するために、このレジスタに“種”の値を置く方法である。これらの演算は、第1の監視命令によって直接コマンドされるか、あるいは単に、第1の監視命令によって、監視ユニット22と関連したルーチンから始動することができる。
【0082】
前者の場合、ゼロへのリセットは、アセンブラで書かれた新規の演算コード(例えば“clr us”)を付加することによって、またはプログラム実行装置20のメモリ内のあるビットを処理することによって、実現することができる。このようなコマンドは、“setb 3, service”であることができる。
【0083】
初期化ステップの後、監視ユニット22は、命令カウンタを1単位インクリメントする(その時、このカウンタはn=1を指す)(ステップ36)。
【0084】
次に、監視下にあるプログラムまたはプログラムの部分の第1の命令Inst.1は、命令レジスタ2から読み取られる(ステップ38)。上記に説明されたように、この命令は、監視ユニット22によって、純粋に、算術演算を可能にする数値としてみなされる。図2の例では、この値は40である。
【0085】
そこで、この第1の命令Inst.1の数値に、レジスタ24に保存される値と共に、ハッシュ演算を適用する(ステップ40)。第1の命令の場合、この最後の値は、初期化の値、つまり0である。
【0086】
ハッシュ演算自体はよく知られているが、ここでは、数学演算子f(VHn−1,Vinst.n)を、対象となる命令nの値において作用させることから成り、ここで、VHn−1は、レジスタ24に記録された先のハッシュ演算の結果(または、第1の命令の場合では初期化の値)であり、Vinst.nは、対象となる命令nの数値である。
【0087】
続いて、このハッシュ演算の結果VHnは、先の結果VHn−1に入れ代わってレジスタ24に記録される(ステップ42)。この毎回のハッシュ演算のたびにレジスタの内容の再更新の手続きによって、最後の初期化以来実行された命令コードおよびアドレスの暗号方式的にハッシングされたものを、恒久的に保持できることに留意する。
【0088】
このハッシュ演算の終わりに、命令はその実行のためにプロセッサ4に伝送される(ステップ44)。
【0089】
ついで、監視ユニット22は、監視すべきプログラムまたはプログラムの部分が、実行すべき別の命令を含んでいるかを明確にする(ステップ46)。
【0090】
その場合、手続きは、nからn+1へのインクリメントのステップ36にフィードバックB1する。そこで、次の命令(Inst.2)の次の値は、命令レジスタ2から読み取られ、命令Inst.1と同じように、ハッシュ演算が適用される。ただ、今回のハッシングは、まず命令Inst.2の数値と、先のハッシュ演算の際に得られた結果、すなわちレジスタ24内にその時在る値VH1(nはここでは2に等しい)とで行われる。
【0091】
本方法のステップ42から46は、第1の命令と同様に行われる。したがって、ステップ36から46の全体は、命令レジスタ2から読み取られるそれぞれの命令Inst.1,Inst.2,Inst.3,…,Inst.nごとに、ループで続行され、命令Inst.i(iは1からnの間の整数である)については、レジスタ24における値VHni−1と、値Vinst.iとでハッシングが行われる。
【0092】
監視ユニット22によって、全ての命令、Inst.1,Inst.2,Inst.3,…,Inst.nがこのように一旦処理されると、この監視ユニットは、第2の監視命令Inst.n+1を受信するが、この第2の監視命令は、監視されるプログラムまたはプログラムの部分の最後の命令Inst.nの後に続くものである。
【0093】
この第2の監視命令は、監視ユニット22が、プログラムの基準値Vrefを抽出すること(ステップ48)、およびレジスタ24の内容をこの値Vrefと比較すること(ステップ50)をコマンドする。このコマンドは、ループ“lda−sta”によって実現することができる。
【0094】
ステップ36から46の連続的ループを実行することにより、この段階でレジスタ24に含まれている値が、前回のハッシュ結果VHn−1と、命令n(図2の例においては36に等しい)の数値とによって実現されたハッシュ結果VHnであることが想起される。
【0095】
基準値Vrefは、ハッシュ演算を考慮した上で、プログラムの作成の際に、全ての命令、Inst.1,Inst.2,Inst.3,…,Inst.nが確実にプロセッサ4に送られた場合に、監視ユニット22が値VHnとして与えるべきであろうものに等しくなるように、前もって決定される。
【0096】
このように、比較の結果によって、命令、Inst.1,Inst.2,Inst.3,…,Inst.nの良好なランを確認することができ:VHn=Vrefである場合(ステップ52)、全ての命令が、実際にプロセッサ4へ送られたと仮定する。監視演算は、命令Inst.1,Inst.2,Inst.3,…,Inst.nを含むプログラムまたはプログラムの部分については、ここで終了する。
【0097】
そして、監視手続きは、開始段階30に戻り、新しい第1の監視命令を待つ。
【0098】
その反対に、比較ステップ50が、比較された値の間で同一性を有さない(VHn≠Vref)ことを示す場合、全ての命令、Inst.1,Inst.2,Inst.3,…,Inst.nがプロセッサ4へ送られていなかったか、あるいは、正しい順序で送られていなかったと仮定する(ステップ54)。実際、連続するハッシュ演算の結果は、それらが行われた順序に依存する。
【0099】
この場合、監視ユニット22は、プログラムの割込み、および/または、プログラムが正しくランしなかったことの記録のようなアクション(ステップ56)をコマンドする。
【0100】
ここで、先に引用された監視方法の変型が、図4のフローチャートを参照して説明される。この変型によると、監視ユニット22により、新規の命令を受信するたびにハッシュ演算を行う代わりに、第2の監視命令の受信後にのみ、ハッシュ演算の全体を実現する。図4のフローチャートでは、図3を参照して先に記載されたステップと同一なものには、同じ参照番号がつけられ、簡潔さのために、改めて説明されることはない。
【0101】
監視方法は、ステップ30から38については、先の場合のようにランする(図3および4)。命令レジスタ2から命令の値Vinst.nを読み取るステップ38の後、監視ユニット22は、この値の記録を行う(ステップ39)。この記録は、計算機26の内部レジスタに、又はレジスタ24の専用セクションに、あるいは監視ユニット22の特別なメモリ(図示せず)、さらに又は外部メモリが監視ユニットによってアクセス可能になるとすぐに監視ユニット22の外部メモリに行われることができる。
【0102】
続いて、監視ユニット22は、先に記載されたステップ44から46を行う。値Vinst.nを記録するステップ39は、ステップ46から、nを1単位インクリメントするステップ36までを接続するループB1の中にあり、従って、それぞれの値Vinst.nは、ステップ46における第2の監視命令の検知まで、このように記録されることが分かる。
【0103】
この第2の命令が現れると、監視ユニット22は基準値Vrefを読み取り(ステップ48)、ステップ49において、図3で先に記載されたステップ40および42と同じアルゴリズムによって、前もって記録された値Vinst.の全体に基づいて、ハッシングを行う。その時、ハッシングの最終値VHnは、図3の方法の場合と同じである。ステップ48および49の順序を逆にすることが可能であることに注目される。
【0104】
比較のステップ50およびそれに続くものは、図3と同じである。
【0105】
図5は、本発明の第2の実施態様に合致する監視ユニット22を簡略化したブロック図である。命令カウンタ6、命令レジスタ2およびプロセッサ4とのその機能について、プログラム実行装置20への組み込みは、図2および3を参照して記載されている第1の実施態様と同じであり、簡潔さのために、繰り返しはされない。
【0106】
第2の実施態様による監視ユニット22は、メモリ60をさらに有することによって、第1の実施態様の監視ユニットと本質的に区別されており、該メモリは、一連の命令Inst.1−Inst.nの実行が、図3および4を参照して説明された基準に従って正しくランされなかった回数を記録する。
【0107】
例では、メモリ60は、電気的に消去可能な内容の固定された(不揮発性の)メモリ(英語での呼称EEPROMで普通知られている)の形で製作されている。
【0108】
メモリ60は、機能的には、計算機26に接続され、監視される一連の命令において不正な実行が確認されるたびに、1単位インクリメントするカウント値VCを記録する。このように、このカウント値VCは、一連の命令の不正なランの数を検知し、その結果、例えば、この数が閾値を超えた場合、プログラムを備えた装置(例えばチップカード)の今後の一切の使用を無効にすることによって動作することを可能にする。
【0109】
図6のフローチャートは、プログラムの実行装置をコントロールするためのカウント値VCの使用例を示している。この例は、図3のフローチャートのステップ30から54の全体、または図4の類似のステップを有している。
【0110】
監視ユニット22が、比較のステップ52の後のステップ54で、命令Inst.1−Inst.nの予定外の実行を検知するとき、計算ユニット26は、最初は0に等しかったメモリ60におけるカウント値VCを、1単位インクリメントする(ステップ62)。次に、それは、このようにインクリメントしたカウント値VCが、所定の閾値VCseuilに達したか否かを検証する(ステップ64)。この閾値VCseuilは、命令Inst.1−Inst.nの予定外の実行が、プログラムされた装置において不意に生じてもよい回数に対応し、その後、このような不良に対応するための決定的な対策が取られる。チップカードの背景における例としては、読取り装置(プログラム実行装置20)に関する一時的な損傷であるかもしれないという疑いのために、このような不良のほどほどの数(例えば、3または4)を認めることができるが、この数を超えると、カードが、事故か、あるいは悪意によって改竄されたとみなさなければならない。このような実施の場合、プログラム装置に物理的に接続した、このような不良の実行の履歴を保持するために、プログラムされた装置(カード)に値VCを書き込むことも想定できる。
【0111】
カウント値VCが、閾VCseuil未満である場合、監視ユニット22は、ユーザーおよび/またはオペレーティング・システムへの単なる警告メッセージを有する先に記載されたような割込みコマンドInt.を作成し(ステップ66)、それをプロセッサ4に伝送する(ステップ68)。
【0112】
その反対に、カウント値VCが閾値VCseuilに達する場合、監視ユニット22は、予定外に実行される命令を含むプログラムされた装置の今後の一切の使用を禁止する命令を有する先に記載されたような割込みコマンドInt.を作成し(ステップ70)、それをプロセッサに伝送する(ステップ68)。この場合、メモリ60を再プログラムしただけではこの装置を再使用することは不可能である。このメモリ60が、EEPROMまたは他の不揮発性メモリの形態である場合、このような再プログラミングは不正なやり方では非常に実現するのが困難である。
【0113】
警告メッセージまたは今後の使用の無効化コマンドを伝送するのを伴うプログラムの割込みコマンドInt.は、プロセッサのレベルで、または、監視ユニット22のレベルで実行することができることに留意する。
【0114】
これから、図7を参照することによって、本発明による監視ユニット22が、どのようにして、ジャンプまたは飛び越しを備えたプログラムを監視するために実施されるかを説明する。
【0115】
図7の例では、プログラムの実行装置20は、プロセッサ4に向けられる、3つの命令セットから構成されるプログラムまたはプログラムの一部分を、命令レジスタ2に有する。
−Inst.EI1−1からInst.EI1−j(jは1より大きい整数である)の第1の命令セット:その最後の命令EI1−jは、次に続く他の2つのセットのどちらかへの条件分岐をコマンドするコードである。
−Inst.EI2−1からInst.EI2k(kは1より大きい整数である)の第2の命令セット:このセットの第1の命令Inst.EI2−1は、条件分岐の命令EI1−jが実行されてから行われるが、それは該条件分岐の命令によって与えられた2つの条件のうちの1つ目が満たされている場合である。
−Inst.EI3−1からInst.EI3l(lは1より大きい整数である)の第3の命令セット:このセットの第1の命令Inst.EI3−1は、条件分岐の命令EI1−jが実行されてから行われるが、それは該条件分岐の命令によって与えられた2つの条件のうちの2つ目が満たされている場合である。
【0116】
3つの命令セットEI1、EI2およびEI3は、それらの命令シーケンスの内部にジャンプを有さない。(第1の命令セットの場合、命令EI1−jへの条件ジャンプは、シーケンスの最後にある。)このように、3つの命令セットのそれぞれについて、全ての命令は、最初のものから逐次的に実行されるよう予定されるのである。
【0117】
プログラムの作成の際、各命令セットEI1、EI2およびEI3の先頭と末尾に、図2から6を参照して上記に記載された第1の監視命令と第2の監視命令をそれぞれ加える。
【0118】
セットEI1、EI2およびEI3によって構成される、プログラム又はプログラムの部分の監視は、以下のように行われる。
【0119】
監視ユニット22は、まず、監視の開始段階に位置する(ステップ30、図3)。
【0120】
ランは、第1の命令セットEI1を実行することによって始まる。このセットの先頭に位置付けられた第1の監視命令は、まず、監視ユニット22にロードされる。この命令への応答として、監視ユニットは、その命令カウンタとハッシュ値VHのレジスタ24を初期化し(ステップ34、図3)、第1の命令セットのそれぞれの命令Inst.EI1−1からInst.EI1−jについて、図3のステップ36から46に沿ってハッシングルーチンを進む。
【0121】
このように、分岐をコマンドするセットの最後の命令EI1−jもまた、監視ユニット22によりハッシングされてから、プロセッサ4へ伝送される。
【0122】
次の命令は、第1の命令セットEI1の末尾の第2の監視命令(図3、ステップ46)であり、それは、レジスタ24に記録された最後のハッシュ値と、この第2の命令に関連した基準値Vrefとの比較段階を引き起こす。
【0123】
比較のステップ50(図3)において、このように記録された最後のハッシュ値が基準値Vrefに対応しないことが検知された場合、監視ユニット22は、プログラムの割込みステップ54および56(図3または4)、あるいは54から70(図6)に進む。しかもプログラムが条件分岐を実行する前に、この割込みを起こすことを、好ましくは想定する。これは、例えば、監視ユニットから来る有効化の待機命令を有するジャンプ命令と連合することによって、周知のプログラミング技術を用いて、実現することができる。
【0124】
比較のステップ50(図2)において、このように記録された最後のハッシュ値が、基準値Vrefに実際に対応することが検知された場合、監視ユニットは、セットの最後の命令EI1−jによって決定された条件分岐の実行を許可する。プログラムは、この最後の命令によって与えられた分岐の条件に従って、2番目または3番目の命令セットのどちらかへと続行する。
【0125】
例では、条件ジャンプが、実行すべき第3の命令セットへの分岐を引き起こすと仮定する。この場合、命令カウンタ6は、命令ポインタ8を、第1の命令セットEI1の末尾の第2の監視命令から、第3の命令セットEI3の先頭の第1の監視命令へと、直接移行させる。
【0126】
監視ユニットは、命令カウンタおよびレジスタ24を再初期化して、この新しい第1の命令を実行する。従って、この第3の命令セットのための監視手続きは、第1の命令セットについてと全く同じように続行される。このように、監視ユニット22は、第1のセットについてと同じ“種”の値(ここでは、0に対応する)で、ハッシングを開始することで、このセットから読み取られた命令のそれぞれの連続的ハッシングを行う。今回は、第2の監視命令は、この第3の命令セットに位置する実行においての予定外のランを発見し、ステップ56において同じタイプのアクションを行うことを可能にする。
【0127】
第3のセットへの分岐の場合について与えられた説明が、第1の命令セットの分岐命令の実行の後の第2の命令セットへの分岐の場合に、きちんと同様な方法で適用されることが理解されるであろう。
【0128】
ジャンプを有するプログラムにおける予定外のランの数だけでなく、それらが生じた、独立して監視される命令セットもまた、監視ユニット22によって数えることができるようにすることが可能である。
【0129】
このように、第2の実施態様(図5)による監視ユニット22は、確認されたそれぞれの割込みにかかわる命令セットを、そのメモリ60に記録することができる。割込みが起こった命令セットに応じてプログラムの今後の使用を無効にする基準をつくることも可能である。
【0130】
当然ながら、監視ユニット22はプロセッサ4から分離されて製作されるか、又は、それに機能的に組み込まれることができることも理解されるであろう。
【0131】
最後に、方法について記載された本発明のすべての局面が、その実施の物的手段の面で容易に理解されること、そしてその逆も明白である。同様に、記載された発明は、実施態様の明白な全ての転用又はその他の形への変型をも網羅することが理解されるであろう。
【図面の簡単な説明】
【図1】 図1は、すでに紹介されたが、プログラムの実行のランにおいて命令カウンタの役割を説明することを目的とする、単純化されたブロック図である。
【図2】 図2は、本発明の第1の実施態様に合致する監視ユニットの作動原理を説明することをねらいとする、プログラム実行装置の単純化されたブロック図である。
【図3】 図3は、本発明による、監視方法のフローチャートである。
【図4】 図4は、本発明による、監視方法の変型のフローチャートである。
【図5】 図5は、本発明の第2の実施態様に合致する監視ユニットの作動原理を説明することをねらいとする、プログラム実行装置の単純化されたブロック図である。
【図6】 図6は、第2の実施態様に適した、本発明による監視方法のフローチャートである。
【図7】 図7は、監視方法に特有の命令をさらに含む分岐のある1つのプログラムの命令セットを簡略化して示している。
Claims (26)
- プロセッサ(4)で実行される情報処理プログラム内の命令シーケンス( Inst. 1− Inst. n)の実行順序を監視する方法であり、監視装置(22)はそれにより実行される前記プロセッサに前記命令を伝送し、
該監視方法は、
前記監視装置によって、前記監視装置が前記プロセッサに伝送する各命令から取得されるデータを使用して検証値( VH n)を計算(40、42)すること、および、
前記監視装置によって、計算された前記検証値を所定の基準データ( Vref )と比較(50)することからなり、
前記検証値の計算は、前記命令シーケンスの中の第1の命令から取得されるデータで始まり、前記命令シーケンスの中の最後の命令から取得されるデータで終了するものであり、
前記所定の基準データ( Vref )は、前記命令シーケンスの所定の実行順序に従って前記命令シーケンスの中の各命令のデータのみを使用して計算されているものであり、
前記検証値と前記所定の基準データの一致が、前記命令シーケンスの中の命令が他のいかなる命令の実行によっても割り込まれることなく前記所定の実行順序で実行されていることを示し、該2つの値の不一致がそれ以外を示しており、
前記計算された検証値と所定の基準データ(Vref)との比較(50)が、前記プログラム内の所定の箇所に置かれた1つの命令(Inst.n+1)によって引き起こされ、この命令が前記所定の基準データを含んでいることを特徴とする、命令シーケンスの実行順序の監視方法。 - 前記命令が16進値または10進値を用いてそれぞれコード化されており、前記検証値および前記所定の基準値の計算のために使用されるデータが16進値または10進値を含んでいることを特徴とする、請求項1に記載の監視方法。
- 当該監視方法が、前記検証値と前記所定の基準データとの不一致がある場合に監視されているプログラムの実行に割り込むこと(56)をさらに含むことを特徴とする、請求項1又は2に記載の監視方法。
- 当該監視方法が、
前記検証値と前記所定の基準データの間の不一致の回数のカウントを保つこと、および、
前記不一致の回数が所定数に達した場合に前記情報処理プログラムの実行を禁止することをさらに含むことを特徴とする、請求項1から3のいずれか1つに記載の監視方法。 - 前記命令シーケンスが、その予定されたランにおいてジャンプを含まないことを特徴とする、請求項1から4のいずれか1つに記載の監視方法。
- 前記検証値を計算することが、一連の中間検証値を計算することを含んでおり、
該中間検証値のそれぞれは、前記命令シーケンスの中の一つの命令にそれぞれ対応しており、
該中間検証値のうち最後のものは、前記所定の基準データとの比較のために使用される、最終的な計算された検証値を構成することを特徴とする、請求項1から5のいずれか1つに記載の監視方法。 - 前記一連の中間検証値の中のそれぞれの中間検証値(VHn)が、現在の中間検証値の計算の直前に計算されている、別の中間検証値(VHn−1)に基づいて計算されることを特徴とする、請求項6に記載の監視方法。
- 現在の命令について中間検証値(VHn)を計算することが、
前記直前に計算された検証値(VHn−1)と前記現在の命令のデータに対してハッシュ関数f(VHn−1,Vinst.n)を適用することからなることを特徴とする、請求項7に記載の監視方法。 - 前記データは演算コードおよびアドレスを含んでおり、
前記検証値を計算することが、該演算コードおよびアドレスに対する冗長計算を実行することから成ることを特徴とする、請求項1から7のいずれか1つに記載の監視方法。 - プロセッサによって実行されるときに、情報処理プログラム内の命令シーケンス( Inst. 1− Inst. n)の実行の順序を監視するための装置であって、
該監視装置は、
該監視装置が前記プロセッサに伝送する各命令から取得されるデータを使用して検証値( VH n)を計算する(40、42)こと、および、
前記検証値を所定の基準データ( Vref )と比較する(50)ことができるように適合化されており、
該検証値の計算は、前記命令シーケンスの中の第1の命令から取得されるデータで始まり、前記命令シーケンスの中の最後の命令から取得されるデータで終了するものであり、
前記所定の基準データ( Vref )は、前記命令シーケンスの所定の実行順序に従って前記命令シーケンスの中の各命令のデータのみを使用して計算されているものであり、
前記検証値と前記所定の基準データの一致が、前記命令シーケンスの中の命令が他のいかなる命令の実行によっても割り込まれることなく前記所定の実行順序で実行されることを示し、該2つの値の不一致がそれ以外を示しており、
前記監視装置が、中間検証値を計算するための計算機(26)と、前記中間検証値(VH)を記憶するためのレジスタ(24)とを備え、
該中間検証値のそれぞれは、前記命令シーケンスの中の一つの命令にそれぞれ対応しており、
該中間検証値のうち最後のものは、前記所定の基準データとの比較のために使用される、最終的な計算された検証値を構成することを特徴とする、監視装置。 - 前記レジスタ(24)が前記情報処理プログラム内の一つの命令の制御下でリセットされることを特徴とする、請求項10に記載の監視装置。
- 前記監視装置が、不一致が検出された回数のカウントを記憶するためのカウンタ(60)をさらに備えることを特徴とする、請求項10又は11に記載の監視装置。
- 前記情報処理プログラムを記憶するための手段(2)、および、請求項10から12のいずれか1つに記載の監視装置を備えていることを特徴とする、プログラムされた装置。
- 前記情報処理プログラムを実行するためのプログラム実行装置であって、該プログラム実行装置が、
前記情報処理プログラムを記憶するための手段(2)と、
前記情報処理プログラムを実行するためのプロセッサ(4)と、
請求項10から12のいずれか1つに記載の監視装置とを備えていることを特徴とする、プログラム実行装置。 - チップカードであることを特徴とする、請求項13に記載のプログラムされた装置。
- 監視装置が、プログラム実行装置による命令シーケンス( Inst. 1− Inst. n)の実行を監視するための監視方法であって、
プログラム実行装置は命令レジスタおよびプロセッサを含み、
命令レジスタには情報処理プログラムが保存されており、
情報処理プログラムは命令シーケンス( Inst. 1− Inst. n)および基準値( Vref )を含み、
基準値は、後述の第 1 のステップにおいて、命令シーケンスに含まれる全ての命令( Inst. 1− Inst. n)が確実にプロセッサに伝送された場合に、後述の第2のステップにおける検証値と等しくなるように適合化されており、
監視装置は命令レジスタとプロセッサの間に配置されており、
監視装置はレジスタと計算機を含んでおり、
監視装置が以下の第 1 のステップ、および、その後に続く以下の第2のステップを実行することを特徴とする、監視装置によるプログラム実行監視方法。
・以下のサブステップ(A1)−(A4)を繰り返し実行する第1のステップ
(A1)命令レジスタから命令を受信する、
(A2)受信した命令の数値に対してハッシュ関数f(VHn−1,Vinst.n)計算を行う、
(A3)レジスタの値を、該ハッシュ関数f(VHn−1,Vinst.n)計算によって得られた値で置き換える、
(A4)受信した命令をプロセッサに伝送する、
・以下のサブステップ(B1)を実行する第2のステップ
(B1)前記基準値と、この時点におけるレジスタの値即ち検証値とを比較する。 - 監視装置が、プログラム実行装置による命令シーケンス( Inst. 1− Inst. n)の実行を監視するための監視方法であって、
プログラム実行装置は命令レジスタおよびプロセッサを含み、
命令レジスタには情報処理プログラムが保存されており、
情報処理プログラムは、命令シーケンス( Inst. 1− Inst. n)、第 1 の監視命令、および、第2の監視命令を含み、
第2の監視命令は基準値( Vref )を含み、
基準値は、後述の第 1 のステップにおいて、命令シーケンスに含まれる全ての命令( Inst. 1− Inst. n)が確実にプロセッサに伝送された場合に、後述の第2のステップにおける検証値と等しくなるように適合化されており、
監視装置は命令レジスタとプロセッサの間に配置されており、
監視装置はレジスタと計算機を含んでおり、
監視装置が以下の第 1 のステップおよび第2のステップを実行することを特徴とする、監視装置によるプログラム実行監視方法。
・監視装置が第1の監視命令を受信することによって引き起こされる、監視装置が第2の監視命令を受信するまでの間以下のサブステップ(A1)−(A4)を繰り返し実行する第1のステップ
(A1)命令レジスタから命令を受信する、
(A2)受信した命令の数値に対してハッシュ関数f(VHn−1,Vinst.n)計算を行う、
(A3)レジスタの値を、該ハッシュ関数f(VHn−1,Vinst.n)計算によって得られた値で置き換える、
(A4)受信した命令をプロセッサに伝送する、
・監視装置が第2の監視命令を受信することによって引き起こされる、以下のサブステップ(B1)−(B2)を実行する第2のステップ
(B1)第2の監視命令に含まれる基準値と、この時点におけるレジスタの値即ち検証値とを比較する、
(B2)前記比較において基準値と検証値が一致していない場合に、割込命令をプロセッサに伝送する。 - プログラム実行装置による命令シーケンス( Inst. 1− Inst. n)の実行を監視するための監視装置であって、
監視装置はレジスタと計算機を含んでおり、
監視装置が以下の第1のデータ処理および第2のデータ処理を実行することができるように適合化されている事を特徴とする、監視装置。
・以下のサブ処理(A1)−(A4)を繰り返し実行する第 1 のデータ処理
(A1)プログラム実行装置から命令を受信する、
(A2)受信した命令の数値に対してハッシュ関数f(VHn−1,Vinst.n)計算を行う、
(A3)レジスタの値を、該ハッシュ関数f(VHn−1,Vinst.n)計算によって得られた値で置き換える、
(A4)受信した命令をプログラム実行装置に伝送する、
・以下のサブ処理(B1)を実行する第2のデータ処理
(B1)プログラム実行装置から受信した基準値と、この時点におけるレジスタの値即ち検証値とを比較する。 - プログラム実行装置による命令シーケンス( Inst. 1− Inst. n)の実行を監視するための監視装置であって、
監視装置はレジスタと計算機を含んでおり、
監視装置が以下の第1のデータ処理および第2のデータ処理を実行することができるように適合化されている事を特徴とする、監視装置。
・第 1 の監視命令を受信することによって引き起こされる、第2の監視命令を受信するまで以下のサブ処理(A1)−(A4)を繰り返し実行する第 1 のデータ処理
(A1)プログラム実行装置から命令を受信する、
(A2)受信した命令の数値に対してハッシュ関数f(VHn−1,Vinst.n)計算を行う、
(A3)レジスタの値を、該ハッシュ関数f(VHn−1,Vinst.n)計算によって得られた値で置き換える、
(A4)受信した命令をプログラム実行装置に伝送する、
・第2の監視命令を受信することによって引き起こされる、以下のサブ処理(B1)−(B2)を実行する第2のデータ処理
(B1)第2の監視命令に含まれる基準値と、この時点におけるレジスタの値即ち検証値とを比較する、
(B2)前記比較処理において基準値と検証値が一致していない場合に、割込命令をプログラム実行装置に伝送する。 - レジスタおよびプロセッサを有するプログラム実行装置であって、請求項18又は19の監視装置が前記レジスタと前記プロセッサとの間に配置されていることを特徴とする、プログラム実行装置。
- プログラムされた装置に内蔵された監視装置が、プログラム実行装置による命令シーケンス( Inst. 1− Inst. n)の実行を監視するための監視方法であって、
プログラム実行装置はプロセッサを含み、
プログラムされた装置は前記監視装置およびメモリを含み、
該メモリには情報処理プログラムおよび基準値( Vref )が保存されており、
情報処理プログラムは、命令シーケンス( Inst. 1− Inst. n)を含み、
基準値は、後述の第 1 のステップにおいて、命令シーケンスに含まれる全ての命令( Inst. 1− Inst. n)が確実にプログラム実行装置に伝送された場合に、後述の第2のステップにおける検証値と等しくなるように適合化されており、
監視装置はレジスタと計算機を含んでおり、
監視装置が以下の第 1 のステップ、および、その後に続く以下の第2のステップを実行することを特徴とする、プログラムされた装置に内蔵された監視装置によるプログラム実行監視方法。
・以下のサブステップ(A1)−(A4)を繰り返し実行する第1のステップ
(A1)前記メモリから命令を受信する、
(A2)受信した命令の数値に対してハッシュ関数f(VHn−1,Vinst.n)計算を行う、
(A3)レジスタの値を、該ハッシュ関数f(VHn−1,Vinst.n)計算によって得られた値で置き換える、
(A4)受信した命令をプログラム実行装置に伝送する、
・以下のサブステップ(B1)を実行する第2のステップ
(B1)前記基準値と、この時点におけるレジスタの値即ち検証値とを比較する。 - プログラムされた装置に内蔵された監視装置が、プログラム実行装置による命令シーケンス( Inst. 1− Inst. n)の実行を監視するための監視方法であって、
プログラム実行装置はプロセッサを含み、
プログラムされた装置は前記監視装置およびメモリを含み、
該メモリには情報処理プログラムが保存されており、
情報処理プログラムは、命令シーケンス( Inst. 1− Inst. n)、第 1 の監視命令、および、第2の監視命令を含み、
第2の監視命令は基準値( Vref )を含み、
該基準値は、後述の第 1 のステップにおいて、命令シーケンスに含まれる全ての命令( Inst. 1− Inst. n)が確実にプログラム実行装置に伝送された場合に、後述の第2のステップにおける検証値と等しくなるように適合化されており、
監視装置はレジスタと計算機を含んでおり、
監視装置が以下の第 1 のステップおよび第2のステップを実行することを特徴とする、プログラムされた装置に内蔵された監視装置によるプログラム実行監視方法。
・監視装置が第1の監視命令を受信することによって引き起こされる、監視装置が第2の監視命令を受信するまでの間以下のサブステップ(A1)−(A4)を繰り返し実行する第1のステップ
(A1)前記メモリから命令を受信する、
(A2)受信した命令の数値に対してハッシュ関数f(VHn−1,Vinst.n)計算を行う、
(A3)レジスタの値を、該ハッシュ関数f(VHn−1,Vinst.n)計算によって得られた値で置き換える、
(A4)受信した命令をプログラム実行装置に伝送する、
・監視装置が第2の監視命令を受信することによって引き起こされる、以下のサブステップ(B1)−(B2)を実行する第2のステップ
(B1)第2の監視命令に含まれる基準値と、この時点におけるレジスタの値即ち検証値とを比較する、
(B2)前記比較において基準値と検証値が一致していない場合に、割込命令をプログラム実行装置に伝送する。 - 前記プログラムされた装置とはチップカードであることを特徴とする、請求項21又は22に記載の監視方法。
- プログラム実行装置による命令シーケンス( Inst. 1− Inst. n)の実行を監視するための監視装置が内蔵されている、プログラムされた装置であって、
プログラムされた装置は前記監視装置およびメモリを含み、
該メモリには情報処理プログラムおよび基準値が保存されており、
情報処理プログラムは、命令シーケンス( Inst. 1− Inst. n)を含み、
基準値は、後述の第 1 のデータ処理において、命令シーケンスに含まれる全ての命令( Inst. 1− Inst. n)が確実にプログラム実行装置に伝送された場合に、後述の第2のデータ処理における検証値と等しくなるように適合化されており、
監視装置はレジスタと計算機を含んでおり、
監視装置が以下の第1のデータ処理および第2のデータ処理を実行することができるように適合化されている事を特徴とする、プログラムされた装置。
・以下のサブ処理(A1)−(A4)を繰り返し実行する第 1 のデータ処理
(A1)前記メモリから命令を受信する、
(A2)受信した命令の数値に対してハッシュ関数f(VHn−1,Vinst.n)計算を行う、
(A3)レジスタの値を、該ハッシュ関数f(VHn−1,Vinst.n)計算によって得られた値で置き換える、
(A4)受信した命令をプログラム実行装置に伝送する、
・以下のサブ処理(B1)を実行する第2のデータ処理
(B1)前記基準値と、この時点におけるレジスタの値即ち検証値とを比較する。 - プログラム実行装置による命令シーケンス( Inst. 1− Inst. n)の実行を監視するための監視装置が内蔵されている、プログラムされた装置であって、
プログラムされた装置は前記監視装置およびメモリを含み、
該メモリには情報処理プログラムが保存されており、
情報処理プログラムは、命令シーケンス( Inst. 1− Inst. n)、第1の監視命令、および、第2の監視命令を含み、
第2の監視命令は基準値を含み、
該基準値は、後述の第 1 のデータ処理において、命令シーケンスに含まれる全ての命令( Inst. 1− Inst. n)が確実にプログラム実行装置に伝送された場合に、後述の第2のデータ処理における検証値と等しくなるように適合化されており、
該監視装置はレジスタと計算機を含んでおり、
該監視装置が以下の第1のデータ処理および第2のデータ処理を実行することができるように適合化されている事を特徴とする、プログラムされた装置。
・監視装置が第 1 の監視命令を受信することによって引き起こされる、監視装置が第2の監視命令を受信するまで以下のサブ処理(A1)−(A4)を繰り返し実行する第 1 のデータ処理
(A1)前記メモリから命令を受信する、
(A2)受信した命令の数値に対してハッシュ関数f(VHn−1,Vinst.n)計算を行う、
(A3)レジスタの値を、該ハッシュ関数f(VHn−1,Vinst.n)計算によって得られた値で置き換える、
(A4)受信した命令をプログラム実行装置に伝送する、
・監視装置が第2の監視命令を受信することによって引き起こされる、以下のサブ処理(B1)−(B2)を実行する第2のデータ処理
(B1)第2の監視命令に含まれる基準値と、この時点におけるレジスタの値即ち検証値とを比較する、
(B2)前記比較処理において基準値と検証値が一致していない場合に、割込命令をプログラム実行装置に伝送する。 - チップカードであることを特徴とする、請求項24又は25に記載のプログラムされた装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9902924A FR2790844B1 (fr) | 1999-03-09 | 1999-03-09 | Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme |
FR99/02924 | 1999-03-09 | ||
PCT/FR2000/000150 WO2000054155A1 (fr) | 1999-03-09 | 2000-01-24 | Procede de surveillance du deroulement d'un programme |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002539523A JP2002539523A (ja) | 2002-11-19 |
JP4172745B2 true JP4172745B2 (ja) | 2008-10-29 |
Family
ID=9542995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000604312A Expired - Lifetime JP4172745B2 (ja) | 1999-03-09 | 2000-01-24 | プロセッサによる命令シーケンスの実行を監視する方法および監視装置 |
Country Status (10)
Country | Link |
---|---|
US (1) | US7168065B1 (ja) |
EP (1) | EP1161725B1 (ja) |
JP (1) | JP4172745B2 (ja) |
CN (1) | CN1350675A (ja) |
AT (1) | ATE232616T1 (ja) |
AU (1) | AU3058900A (ja) |
DE (1) | DE60001393T2 (ja) |
FR (1) | FR2790844B1 (ja) |
MX (1) | MXPA01009056A (ja) |
WO (1) | WO2000054155A1 (ja) |
Families Citing this family (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10148157B4 (de) | 2001-09-28 | 2006-05-18 | Infineon Technologies Ag | Programmgesteuerte Einheit |
DE10156394A1 (de) | 2001-11-16 | 2003-06-12 | Giesecke & Devrient Gmbh | Kontrollierte Programmausführung durch einen tragbaren Datenträger |
US20030149887A1 (en) * | 2002-02-01 | 2003-08-07 | Satyendra Yadav | Application-specific network intrusion detection |
US7533412B2 (en) | 2002-04-23 | 2009-05-12 | Stmicroelectronics S.A. | Processor secured against traps |
FR2841015A1 (fr) * | 2002-06-18 | 2003-12-19 | St Microelectronics Sa | Controle d'execution d'un programme |
FR2849226B1 (fr) * | 2002-12-20 | 2005-12-02 | Oberthur Card Syst Sa | Procede et dispositif de securisation de l'execution d'un programme informatique. |
EP1460546A1 (fr) * | 2003-03-18 | 2004-09-22 | SCHLUMBERGER Systèmes | Procédé de sécurisation de l'exécution d'un programme dans un ensemble électronique contre les attaques par introduction d'erreurs |
DE10340411B4 (de) | 2003-09-02 | 2005-10-13 | Infineon Technologies Ag | Vorrichtung und Verfahren zur sicheren Ausführung eines Programms |
US7424709B2 (en) * | 2003-09-15 | 2008-09-09 | Intel Corporation | Use of multiple virtual machine monitors to handle privileged events |
EP1538509A1 (fr) * | 2003-12-04 | 2005-06-08 | Axalto S.A. | Procédé de sécurisation de l'éxécution d'un programme contre des attaques par rayonnement |
JP4282472B2 (ja) * | 2003-12-26 | 2009-06-24 | 株式会社東芝 | マイクロプロセッサ |
FR2864655B1 (fr) * | 2003-12-31 | 2006-03-24 | Trusted Logic | Procede de controle d'integrite de programmes par verification d'empreintes de traces d'execution |
DE102004007614A1 (de) * | 2004-02-17 | 2005-09-01 | Giesecke & Devrient Gmbh | Datenträger mit Ablaufdiagnosespeicher |
US7904775B2 (en) | 2004-04-21 | 2011-03-08 | Stmicroelectronics Sa | Microprocessor comprising signature means for detecting an attack by error injection |
CN100465982C (zh) * | 2004-07-16 | 2009-03-04 | 松下电器产业株式会社 | 应用执行装置及应用执行装置的应用执行方法 |
US20060047955A1 (en) * | 2004-08-30 | 2006-03-02 | Axalto Inc. | Application code integrity check during virtual machine runtime |
US8364792B2 (en) * | 2005-03-09 | 2013-01-29 | Vudu, Inc. | Method and system for distributing restricted media to consumers |
US7873947B1 (en) * | 2005-03-17 | 2011-01-18 | Arun Lakhotia | Phylogeny generation |
FR2883998A1 (fr) * | 2005-04-05 | 2006-10-06 | St Microelectronics Sa | Coprocesseur securise comprenant un circuit de detection d'un evenement |
FR2884000A1 (fr) * | 2005-04-05 | 2006-10-06 | St Microelectronics Sa | Coprocesseur securise comprenant des moyens pour empecher l'acces a un organe du coprocesseur |
EP1717704A3 (fr) * | 2005-04-20 | 2011-07-20 | St Microelectronics S.A. | Protection du déroulement d'un programme exécuté par un circuit intégré |
FR2886027A1 (fr) * | 2005-05-20 | 2006-11-24 | Proton World Internatinal Nv | Detection d'erreur de sequencement dans l'execution d'un programme |
WO2006136189A1 (de) * | 2005-06-23 | 2006-12-28 | Bayerische Motoren Werke Aktiengsellschaft | Verfahren und vorrichtung zum überwachen eines unerlaubten speicherzugriffs einer rechenvorrichtung, insbesondere in einem kraftfahrzeug |
FR2895814A1 (fr) * | 2006-01-04 | 2007-07-06 | Gemplus Sa | Procede de securisation de l'execution d'un programme d'ordinateur |
US7900060B2 (en) * | 2006-02-17 | 2011-03-01 | Vudu, Inc. | Method and system for securing a disk key |
US8239686B1 (en) * | 2006-04-27 | 2012-08-07 | Vudu, Inc. | Method and system for protecting against the execution of unauthorized software |
DE102006021494A1 (de) * | 2006-05-09 | 2007-11-15 | Giesecke & Devrient Gmbh | Verfahren und Vorrichtung zur Erkennung nichteindeutiger Hashwerte |
US7587663B2 (en) * | 2006-05-22 | 2009-09-08 | Intel Corporation | Fault detection using redundant virtual machines |
WO2007145366A1 (en) * | 2006-06-15 | 2007-12-21 | Kabushiki Kaisha Toshiba | Portable electronic device and control method thereof |
EP1870829B1 (en) | 2006-06-23 | 2014-12-03 | Microsoft Corporation | Securing software by enforcing data flow integrity |
DE102006037810A1 (de) | 2006-08-11 | 2008-02-14 | Giesecke & Devrient Gmbh | Sichere Programmcodeausführung |
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 |
US7644322B2 (en) * | 2006-11-21 | 2010-01-05 | Atmel Corporation | Hardware flow control monitor |
DE102006057297A1 (de) * | 2006-12-05 | 2008-06-12 | Giesecke & Devrient Gmbh | Verfahren zur Überwachung des Ablaufs eines Programms |
US8429623B2 (en) * | 2007-01-16 | 2013-04-23 | Oracle America Inc. | Processing engine for enabling a set of code intended for a first platform to be executed on a second platform |
FR2915007A1 (fr) * | 2007-04-12 | 2008-10-17 | St Microelectronics Sa | Protection de l'execution d'un programme |
EP2043017A1 (fr) * | 2007-04-12 | 2009-04-01 | Gemplus | Procédé d'exécution sécurisée d'une application |
US8205097B2 (en) * | 2007-07-05 | 2012-06-19 | Nxp B.V. | Microprocessor in a security-sensitive system |
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 |
JP4661854B2 (ja) * | 2007-11-09 | 2011-03-30 | 株式会社デンソー | 検査システム及びプログラム |
JP5060372B2 (ja) | 2008-04-10 | 2012-10-31 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
CN101299849B (zh) * | 2008-04-25 | 2010-05-12 | 中兴通讯股份有限公司 | 一种WiMAX终端及其启动方法 |
WO2009144531A1 (en) * | 2008-05-27 | 2009-12-03 | Freescale Semiconductor, Inc. | Semiconductor device and method for validating a state thereof |
JP5200664B2 (ja) * | 2008-05-28 | 2013-06-05 | 大日本印刷株式会社 | メモリの内容を改竄する故障攻撃の検知方法、セキュリティデバイス及びコンピュータプログラム |
JP5200686B2 (ja) * | 2008-06-18 | 2013-06-05 | 大日本印刷株式会社 | 情報処理装置、正常処理判別方法、及び情報処理プログラム |
EP2262259A1 (en) * | 2009-06-08 | 2010-12-15 | Nagravision S.A. | Method for monitoring execution of data processing program instructions in a security module |
FR2958764B1 (fr) * | 2010-04-07 | 2013-01-25 | Proton World Int Nv | Compteur d'evenements dans un systeme adapte au langage javacard |
CN102053927B (zh) * | 2010-12-29 | 2013-11-27 | 北京握奇数据系统有限公司 | 攻击监控方法及具有攻击监控功能的装置 |
FR2970357B1 (fr) * | 2011-01-07 | 2013-01-11 | Oridao | Dispositif et procede de tracage |
US20120179898A1 (en) * | 2011-01-10 | 2012-07-12 | Apple Inc. | System and method for enforcing software security through cpu statistics gathered using hardware features |
US8725644B2 (en) * | 2011-01-28 | 2014-05-13 | The Active Network, Inc. | Secure online transaction processing |
DE102011005209B4 (de) | 2011-03-07 | 2016-06-23 | Infineon Technologies Ag | Programmanweisungsgesteuerte Instruktionsflusskontrolle |
DE102011006000B4 (de) * | 2011-03-23 | 2015-01-15 | Infineon Technologies Ag | Signaturaktualisierung durch Codetransformation |
FR2977342A1 (fr) * | 2011-06-30 | 2013-01-04 | Proton World Int Nv | Verification d'integrite d'un programme execute par un circuit electronique |
WO2013021240A1 (en) * | 2011-08-09 | 2013-02-14 | Freescale Semiconductor, Inc. | An electronic device and a computer program product |
US8417609B2 (en) * | 2011-08-19 | 2013-04-09 | Bank Of America Corporation | Methods and systems for modeling deposits' data |
CN103455445A (zh) * | 2012-05-31 | 2013-12-18 | 上海华虹集成电路有限责任公司 | 智能卡系统抵抗故障攻击的方法 |
US8745594B1 (en) * | 2013-05-10 | 2014-06-03 | Technobasics Software Inc. | Program flow specification language and system |
CN103383566B (zh) * | 2013-06-24 | 2015-10-28 | 奇瑞汽车股份有限公司 | 一种程序流监控方法 |
US9323920B2 (en) * | 2013-10-23 | 2016-04-26 | Infineon Technologies Ag | Data processing arrangement and method for ensuring the integrity of the execution of a computer program |
TWI712915B (zh) * | 2014-06-12 | 2020-12-11 | 美商密碼研究公司 | 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體 |
JP6318976B2 (ja) * | 2014-08-22 | 2018-05-09 | 富士通株式会社 | デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法 |
FR3035240B1 (fr) | 2015-04-15 | 2018-04-06 | Rambus Inc. | Procede de securisation de l'execution d'un programme |
EP3091437A1 (en) | 2015-05-08 | 2016-11-09 | Robert Bosch Gmbh | Method and apparatus for monitoring a control flow of a computer program |
CN109076011B (zh) | 2016-04-19 | 2021-05-07 | 三菱电机株式会社 | 中继装置 |
US10552413B2 (en) | 2016-05-09 | 2020-02-04 | Sap Se | Database workload capture and replay |
CN105955115A (zh) * | 2016-05-10 | 2016-09-21 | 重庆长安汽车股份有限公司 | 一种汽车整车控制器的程序流监控方法和装置 |
GB2550903B (en) * | 2016-05-27 | 2019-06-12 | Arm Ip Ltd | Context data control |
US10298702B2 (en) | 2016-07-05 | 2019-05-21 | Sap Se | Parallelized replay of captured database workload |
EP3279826A1 (en) * | 2016-08-04 | 2018-02-07 | Nagravision SA | Sequence verification |
DE112017006528T5 (de) * | 2017-01-25 | 2019-09-26 | Mitsubishi Electric Corporation | Angriff/abnormalität-detektionsvorrichtung, angriff/abnormalität-detektionsverfahren und angriff/abnormalität-detektionsprogramm |
US10592528B2 (en) | 2017-02-27 | 2020-03-17 | Sap Se | Workload capture and replay for replicated database systems |
CN107194258B (zh) * | 2017-04-06 | 2019-10-01 | 珠海格力电器股份有限公司 | 监测代码漏洞的方法、装置及电子设备、存储介质 |
US10345801B2 (en) * | 2017-08-21 | 2019-07-09 | Honeywell International Inc. | Ensuring a correct program sequence in a dual-processor architecture |
US10698892B2 (en) | 2018-04-10 | 2020-06-30 | Sap Se | Order-independent multi-record hash generation and data filtering |
CN108646708B (zh) * | 2018-05-02 | 2020-05-22 | 阳光电源股份有限公司 | 一种程序流监控方法及系统 |
US20210357220A1 (en) * | 2018-07-31 | 2021-11-18 | Hewlett-Packard Development Company, L.P. | Executing instructions |
US11144375B2 (en) | 2018-10-09 | 2021-10-12 | Argo AI, LLC | Execution sequence integrity parameter monitoring system |
US11138085B2 (en) | 2018-10-09 | 2021-10-05 | Argo AI, LLC | Execution sequence integrity monitoring system |
CN111427723B (zh) * | 2020-03-19 | 2023-05-30 | 阳光电源股份有限公司 | 基于AutoSAR的程序流监控方法及应用装置 |
US11709752B2 (en) | 2020-04-02 | 2023-07-25 | Sap Se | Pause and resume in database system workload capture and replay |
US11615012B2 (en) | 2020-04-03 | 2023-03-28 | Sap Se | Preprocessing in database system workload capture and replay |
WO2022217229A2 (en) * | 2021-04-06 | 2022-10-13 | Google Llc | Secure cryptographic coprocessor |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4266272A (en) * | 1978-10-12 | 1981-05-05 | International Business Machines Corporation | Transient microcode block check word generation control circuitry |
DE2855865C3 (de) * | 1978-12-22 | 1981-11-19 | Ibm Deutschland Gmbh, 7000 Stuttgart | Verfahren und Einrichtung für eine elektronische Datenverarbeitungsanlage zur Prüfung der aus einer Instruktion abgeleiteten Steuersignale |
PL168163B1 (pl) * | 1991-01-18 | 1996-01-31 | Thomson Multimedia Sa | Sposób kontroli dostepu i/lub identyfikacji PL PL |
US5347581A (en) * | 1993-09-15 | 1994-09-13 | Gemplus Developpement | Verification process for a communication system |
CA2242596C (en) * | 1996-01-11 | 2012-06-19 | Mrj, Inc. | System for controlling access and distribution of digital property |
US6065108A (en) * | 1996-01-24 | 2000-05-16 | Sun Microsystems Inc | Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same |
WO1997027544A1 (en) * | 1996-01-24 | 1997-07-31 | Sun Microsystems, Inc. | Processor with accelerated array access bounds checking |
DE69738810D1 (de) * | 1996-01-24 | 2008-08-14 | Sun Microsystems Inc | Befehlsfalten in einem stapelspeicherprozessor |
US5974549A (en) * | 1997-03-27 | 1999-10-26 | Soliton Ltd. | Security monitor |
EP0988591A1 (en) * | 1997-06-09 | 2000-03-29 | Intertrust, Incorporated | Obfuscation techniques for enhancing software security |
US6275938B1 (en) * | 1997-08-28 | 2001-08-14 | Microsoft Corporation | Security enhancement for untrusted executable code |
IL126148A (en) * | 1997-09-09 | 2004-02-19 | Sanctum Ltd | Method and system for maintaining restricted operating environments for application programs or operating systems |
US5983348A (en) * | 1997-09-10 | 1999-11-09 | Trend Micro Incorporated | Computer network malicious code scanner |
US5991414A (en) * | 1997-09-12 | 1999-11-23 | International Business Machines Corporation | Method and apparatus for the secure distributed storage and retrieval of information |
US6279123B1 (en) * | 1997-09-15 | 2001-08-21 | Lucent Technologies, Inc. | System for viewing and monitoring embedded processor operation |
US6023764A (en) * | 1997-10-20 | 2000-02-08 | International Business Machines Corporation | Method and apparatus for providing security certificate management for Java Applets |
FR2776410B1 (fr) * | 1998-03-20 | 2002-11-15 | Gemplus Card Int | Dispositifs pour masquer les operations effectuees dans une carte a microprocesseur |
US6092120A (en) * | 1998-06-26 | 2000-07-18 | Sun Microsystems, Inc. | Method and apparatus for timely delivery of a byte code and serialized objects stream |
US6418420B1 (en) * | 1998-06-30 | 2002-07-09 | Sun Microsystems, Inc. | Distributed budgeting and accounting system with secure token device access |
US6581206B2 (en) * | 1999-11-12 | 2003-06-17 | Sun Microsystems, Inc. | Computer program language subset validation |
US6402028B1 (en) * | 1999-04-06 | 2002-06-11 | Visa International Service Association | Integrated production of smart cards |
US6859533B1 (en) * | 1999-04-06 | 2005-02-22 | Contentguard Holdings, Inc. | System and method for transferring the right to decode messages in a symmetric encoding scheme |
US6615264B1 (en) * | 1999-04-09 | 2003-09-02 | Sun Microsystems, Inc. | Method and apparatus for remotely administered authentication and access control |
US6546546B1 (en) * | 1999-05-19 | 2003-04-08 | International Business Machines Corporation | Integrating operating systems and run-time systems |
US6327700B1 (en) * | 1999-06-08 | 2001-12-04 | Appliant Corporation | Method and system for identifying instrumentation targets in computer programs related to logical transactions |
AU6615600A (en) * | 1999-07-29 | 2001-02-19 | Foxboro Company, The | Methods and apparatus for object-based process control |
FR2804234B1 (fr) * | 2000-01-24 | 2003-05-09 | Gemplus Card Int | Procede de protection contre le vol de la valeur d'authentification pour cartes a puce(s) multi-applications, cartes a puce(s) mettant en oeuvre le procede et terminaux susceptibles de recevoir lesdites cartes |
US6557168B1 (en) * | 2000-02-25 | 2003-04-29 | Sun Microsystems, Inc. | System and method for minimizing inter-application interference among static synchronized methods |
US6507904B1 (en) * | 2000-03-31 | 2003-01-14 | Intel Corporation | Executing isolated mode instructions in a secure system running in privilege rings |
CA2305249A1 (en) * | 2000-04-14 | 2001-10-14 | Branko Sarcanin | Virtual safe |
US6951018B2 (en) * | 2000-05-30 | 2005-09-27 | Sun Microsystems, Inc. | Method and apparatus for efficiently tracking monitors |
FR2809892B1 (fr) * | 2000-05-31 | 2002-09-06 | Gemplus Card Int | Procede de protection contre la modification frauduleuse de donnees envoyees a un support electronique securise |
FR2810481B1 (fr) * | 2000-06-20 | 2003-04-04 | Gemplus Card Int | Controle d'acces a un moyen de traitement de donnees |
US6862684B1 (en) * | 2000-07-28 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for securely providing billable multicast data |
CA2315449A1 (en) * | 2000-08-10 | 2002-02-10 | Ibm Canada Limited-Ibm Canada Limitee | Generation of runtime execution traces of applications and associated problem determination |
FR2814557B1 (fr) * | 2000-09-27 | 2002-12-27 | Gemplus Card Int | Protection contre l'exploitation abusive d'une instruction dans une memoire |
-
1999
- 1999-03-09 FR FR9902924A patent/FR2790844B1/fr not_active Expired - Fee Related
-
2000
- 2000-01-24 JP JP2000604312A patent/JP4172745B2/ja not_active Expired - Lifetime
- 2000-01-24 US US09/936,174 patent/US7168065B1/en not_active Expired - Lifetime
- 2000-01-24 CN CN00807379A patent/CN1350675A/zh active Pending
- 2000-01-24 WO PCT/FR2000/000150 patent/WO2000054155A1/fr active IP Right Grant
- 2000-01-24 EP EP00900650A patent/EP1161725B1/fr not_active Expired - Lifetime
- 2000-01-24 AU AU30589/00A patent/AU3058900A/en not_active Abandoned
- 2000-01-24 MX MXPA01009056A patent/MXPA01009056A/es unknown
- 2000-01-24 DE DE60001393T patent/DE60001393T2/de not_active Expired - Lifetime
- 2000-01-24 AT AT00900650T patent/ATE232616T1/de not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
ATE232616T1 (de) | 2003-02-15 |
MXPA01009056A (es) | 2002-04-24 |
DE60001393D1 (de) | 2003-03-20 |
JP2002539523A (ja) | 2002-11-19 |
EP1161725A1 (fr) | 2001-12-12 |
US7168065B1 (en) | 2007-01-23 |
FR2790844B1 (fr) | 2001-05-25 |
FR2790844A1 (fr) | 2000-09-15 |
WO2000054155A1 (fr) | 2000-09-14 |
DE60001393T2 (de) | 2003-12-11 |
AU3058900A (en) | 2000-09-28 |
CN1350675A (zh) | 2002-05-22 |
EP1161725B1 (fr) | 2003-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4172745B2 (ja) | プロセッサによる命令シーケンスの実行を監視する方法および監視装置 | |
US7882396B2 (en) | Method for controlling program execution integrity by verifying execution trace prints | |
KR101256149B1 (ko) | 프로그램 카운터 인코딩을 이용한 간접 함수 호출 보호 방법 및 보호 장치 | |
US7496738B2 (en) | Method of automatic control of the execution of a program by a microprocessor | |
EP2958044B1 (en) | A computer implemented method and a system for controlling dynamically the execution of a code | |
JP6189039B2 (ja) | セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法 | |
US8127144B2 (en) | Program loader operable to verify if load-destination information has been tampered with, processor including the program loader, data processing device including the processor, promgram loading method, and integrated circuit | |
JP5200664B2 (ja) | メモリの内容を改竄する故障攻撃の検知方法、セキュリティデバイス及びコンピュータプログラム | |
KR101687439B1 (ko) | 소프트웨어 무결성을 보장하기위한 프로세서 실행 방법 | |
KR102036411B1 (ko) | 보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩의 보안화 | |
CN112035152A (zh) | 一种SoC芯片固件升级的安全处理系统及方法 | |
US11250110B2 (en) | Method to secure a software code | |
WO2011134207A1 (zh) | 软件保护方法 | |
US20170124339A1 (en) | Implementing method for javacard application function expansion | |
WO2001097010A2 (en) | Data processing method and device for protected execution of instructions | |
CN111475168A (zh) | 一种代码编译方法及装置 | |
EP3574425B1 (en) | Method to secure a software code | |
KR100300794B1 (ko) | 칩카드에정보를입력하는방법 | |
US8458790B2 (en) | Defending smart cards against attacks by redundant processing | |
US20060265578A1 (en) | Detection of a sequencing error in the execution of a program | |
US20040268313A1 (en) | Statistical control of the integrity of a program | |
US20230161863A1 (en) | Method for executing a software program by a processing unit comprising a compilation phase | |
CN117235747B (zh) | 一种linux下修改bios开机密码的方法 | |
Beilke et al. | A Safe Update Mechanism for Smart Cards | |
JP2004185348A (ja) | プログラム修正方法およびその実施icカード |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041102 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050201 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050208 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050502 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20050719 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051114 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20051125 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20051216 |
|
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: 20080811 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4172745 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110822 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120822 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130822 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
S631 | Written request for registration of reclamation of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313631 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130822 Year of fee payment: 5 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
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 |
|
EXPY | Cancellation because of completion of term |