JP4172745B2 - プロセッサによる命令シーケンスの実行を監視する方法および監視装置 - Google Patents

プロセッサによる命令シーケンスの実行を監視する方法および監視装置 Download PDF

Info

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
Application number
JP2000604312A
Other languages
English (en)
Other versions
JP2002539523A (ja
Inventor
ジラール,ピエール
ナカッシュ,ダビッド
ルソー,リュドヴィック
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gemplus SA
Original Assignee
Gemplus SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Gemplus SA filed Critical Gemplus SA
Publication of JP2002539523A publication Critical patent/JP2002539523A/ja
Application granted granted Critical
Publication of JP4172745B2 publication Critical patent/JP4172745B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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/54Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/77Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2153Using 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

【0001】
本発明は、情報処理プログラムのセキュリティの分野、特に情報処理プログラムの実行において容認できないランを検知する方法および装置に関するものであり、該プログラムは、低級または高級言語によるものであることができる。
【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)

  1. プロセッサ(4)で実行される情報処理プログラム内の命令シーケンス( Inst. 1− Inst. n)の実行順序を監視する方法であり、監視装置(22)はそれにより実行される前記プロセッサに前記命令を伝送し、
    該監視方法は、
    前記監視装置によって、前記監視装置が前記プロセッサに伝送する各命令から取得されるデータを使用して検証値( VH n)を計算(40、42)すること、および、
    前記監視装置によって、計算された前記検証値を所定の基準データ( Vref )と比較(50)することからなり、
    前記検証値の計算は、前記命令シーケンスの中の第1の命令から取得されるデータで始まり、前記命令シーケンスの中の最後の命令から取得されるデータで終了するものであり、
    前記所定の基準データ( Vref )は、前記命令シーケンスの所定の実行順序に従って前記命令シーケンスの中の各命令のデータのみを使用して計算されているものであり、
    前記検証値と前記所定の基準データの一致が、前記命令シーケンスの中の命令が他のいかなる命令の実行によっても割り込まれることなく前記所定の実行順序で実行されていることを示し、該2つの値の不一致がそれ以外を示しており、
    前記計算された検証値と所定の基準データ(Vref)との比較(50)が、前記プログラム内の所定の箇所に置かれた1つの命令(Inst.n+1)によって引き起こされ、この命令が前記所定の基準データを含んでいることを特徴とする、命令シーケンスの実行順序の監視方法。
  2. 前記命令が16進値または10進値を用いてそれぞれコード化されており、前記検証値および前記所定の基準値の計算のために使用されるデータが16進値または10進値を含んでいることを特徴とする、請求項1に記載の監視方法。
  3. 当該監視方法が、前記検証値と前記所定の基準データとの不一致がある場合に監視されているプログラムの実行に割り込むこと(56)をさらに含むことを特徴とする、請求項1又は2に記載の監視方法。
  4. 当該監視方法が、
    前記検証値と前記所定の基準データの間の不一致の回数のカウントを保つこと、および、
    前記不一致の回数が所定数に達した場合に前記情報処理プログラムの実行を禁止することをさらに含むことを特徴とする、請求項1からのいずれか1つに記載の監視方法。
  5. 前記命令シーケンスが、その予定されたランにおいてジャンプを含まないことを特徴とする、請求項1からのいずれか1つに記載の監視方法。
  6. 前記検証値を計算することが、一連の中間検証値を計算することを含んでおり、
    該中間検証値のそれぞれは、前記命令シーケンスの中の一つの命令にそれぞれ対応しており、
    該中間検証値のうち最後のものは、前記所定の基準データとの比較のために使用される、最終的な計算された検証値を構成することを特徴とする、請求項1からのいずれか1つに記載の監視方法。
  7. 前記一連の中間検証値の中のそれぞれの中間検証値(VHn)が、現在の中間検証値の計算の直前に計算されている、別の中間検証値(VHn−1)に基づいて計算されることを特徴とする、請求項に記載の監視方法。
  8. 現在の命令について中間検証値(VHn)を計算することが、
    前記直前に計算された検証値(VHn−1)と前記現在の命令のデータに対してハッシュ関数f(VHn−1,Vinst.n)を適用することからなることを特徴とする、請求項に記載の監視方法。
  9. 前記データは演算コードおよびアドレスを含んでおり、
    前記検証値を計算することが、該演算コードおよびアドレスに対する冗長計算を実行することから成ることを特徴とする、請求項1からのいずれか1つに記載の監視方法。
  10. プロセッサによって実行されるときに、情報処理プログラム内の命令シーケンス( Inst. 1− Inst. n)の実行の順序を監視するための装置であって、
    該監視装置は、
    該監視装置が前記プロセッサに伝送する各命令から取得されるデータを使用して検証値( VH n)を計算する(40、42)こと、および、
    前記検証値を所定の基準データ( Vref )と比較する(50)ことができるように適合化されており、
    該検証値の計算は、前記命令シーケンスの中の第1の命令から取得されるデータで始まり、前記命令シーケンスの中の最後の命令から取得されるデータで終了するものであり、
    前記所定の基準データ( Vref )は、前記命令シーケンスの所定の実行順序に従って前記命令シーケンスの中の各命令のデータのみを使用して計算されているものであり、
    前記検証値と前記所定の基準データの一致が、前記命令シーケンスの中の命令が他のいかなる命令の実行によっても割り込まれることなく前記所定の実行順序で実行されることを示し、該2つの値の不一致がそれ以外を示しており、
    前記監視装置が、中間検証値を計算するための計算機(26)と、前記中間検証値(VH)を記憶するためのレジスタ(24)とを備え、
    該中間検証値のそれぞれは、前記命令シーケンスの中の一つの命令にそれぞれ対応しており、
    該中間検証値のうち最後のものは、前記所定の基準データとの比較のために使用される、最終的な計算された検証値を構成することを特徴とする、監視装置。
  11. 前記レジスタ(24)が前記情報処理プログラム内の一つの命令の制御下でリセットされることを特徴とする、請求項1に記載の監視装置。
  12. 前記監視装置が、不一致が検出された回数のカウントを記憶するためのカウンタ(60)をさらに備えることを特徴とする、請求項10又は11に記載の監視装置。
  13. 前記情報処理プログラムを記憶するための手段(2)、および、請求項1から1のいずれか1つに記載の監視装置を備えていることを特徴とする、プログラムされた装置。
  14. 前記情報処理プログラムを実行するためのプログラム実行装置であって、該プログラム実行装置が、
    前記情報処理プログラムを記憶するための手段(2)と、
    前記情報処理プログラムを実行するためのプロセッサ(4)と、
    請求項1から1のいずれか1つに記載の監視装置とを備えていることを特徴とする、プログラム実行装置。
  15. チップカードであることを特徴とする、請求項1に記載のプログラムされた装置。
  16. 監視装置が、プログラム実行装置による命令シーケンス( 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)前記基準値と、この時点におけるレジスタの値即ち検証値とを比較する。
  17. 監視装置が、プログラム実行装置による命令シーケンス( 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)前記比較において基準値と検証値が一致していない場合に、割込命令をプロセッサに伝送する。
  18. プログラム実行装置による命令シーケンス( 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)プログラム実行装置から受信した基準値と、この時点におけるレジスタの値即ち検証値とを比較する。
  19. プログラム実行装置による命令シーケンス( 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)前記比較処理において基準値と検証値が一致していない場合に、割込命令をプログラム実行装置に伝送する。
  20. レジスタおよびプロセッサを有するプログラム実行装置であって、請求項18又は19の監視装置が前記レジスタと前記プロセッサとの間に配置されていることを特徴とする、プログラム実行装置。
  21. プログラムされた装置に内蔵された監視装置が、プログラム実行装置による命令シーケンス( 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)前記基準値と、この時点におけるレジスタの値即ち検証値とを比較する。
  22. プログラムされた装置に内蔵された監視装置が、プログラム実行装置による命令シーケンス( 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)前記比較において基準値と検証値が一致していない場合に、割込命令をプログラム実行装置に伝送する。
  23. 前記プログラムされた装置とはチップカードであることを特徴とする、請求項21又は22に記載の監視方法。
  24. プログラム実行装置による命令シーケンス( 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)前記基準値と、この時点におけるレジスタの値即ち検証値とを比較する。
  25. プログラム実行装置による命令シーケンス( 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)前記比較処理において基準値と検証値が一致していない場合に、割込命令をプログラム実行装置に伝送する。
  26. チップカードであることを特徴とする、請求項24又は25に記載のプログラムされた装置。
JP2000604312A 1999-03-09 2000-01-24 プロセッサによる命令シーケンスの実行を監視する方法および監視装置 Expired - Lifetime JP4172745B2 (ja)

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)

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

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

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