JP2002539523A - プログラムの実行の監視方法 - Google Patents

プログラムの実行の監視方法

Info

Publication number
JP2002539523A
JP2002539523A JP2000604312A JP2000604312A JP2002539523A JP 2002539523 A JP2002539523 A JP 2002539523A JP 2000604312 A JP2000604312 A JP 2000604312A JP 2000604312 A JP2000604312 A JP 2000604312A JP 2002539523 A JP2002539523 A JP 2002539523A
Authority
JP
Japan
Prior art keywords
instruction
program
inst
monitored
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2000604312A
Other languages
English (en)
Other versions
JP4172745B2 (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

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)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Communication Control (AREA)
  • Storage Device Security (AREA)
  • Flow Control (AREA)

Abstract

(57)【要約】 情報処理プログラムの一続きの命令(Inst.1−Inst.n)の実行のランの監視が、監視されるプログラムを実行するためのプロセッサ(4)に伝送される命令シーケンスを分析することによって、そして、前記プログラムと共に記録されている基準データ(Vref)を参照してこの分析結果を検証することによって、取得される。基準データは、プログラムのランの際に命令シーケンスの全ての命令(Inst.1−Inst.n)が実際に分析された場合のみ、監視の際に実現された分析結果に対応するように予め設定された値(Vref)を含むことができる。本発明は、プログラムの実行の監視装置、プログラムの実行装置および先に引用された監視の原理において機能するプログラミング装置にもまた関するものである。

Description

【発明の詳細な説明】
【0001】 本発明は、情報処理プログラムのセキュリティの分野、特に情報処理プログラ
ムの実行において容認できないランを検知する方法および装置に関するものであ
り、該プログラムは、低級または高級言語によるものであることができる。
【0002】 低級言語で書かれるプログラムでは、コンピュータのプロセッサ部分で実際に
実行される命令の構造に非常に近い構造によって、コマンドが作成される。プロ
グラムは、実行される前に、コンパイルされることだけが必要となる。低級言語
は、機械コードの呼称で知られているが、特にマイクロプロセッサまたはマイク
ロコントローラのプログラミングのために用いられる。マイクロコントローラは
、少数の特殊な命令のみ実行することのできるプロセッサである。それは、特に
チップカード(銀行、電話、サービスへのアクセス等のカード)を装備するため
に、そして工業的な又は家庭の機器を操作するために用いられる。
【0003】 高級言語で書かれるプログラムでは、コマンドは自然言語にはより近いが、そ
の代わりプロセッサによって用いられる構造とは遠い構造を有する。このような
言語で書かれたコマンドは、まず翻訳され、つまり機械コードのコマンドに変換
されてから、次にプロセッサにより実行される命令形式にすることができる。
【0004】 このように、あらゆる情報処理プログラムによって、特定のプロセッサ、マイ
クロプロセッサ、またはマイクロコントローラに適した一連の命令が行われる。
【0005】 従来的には、図1を参照して簡潔に記載されるように、プログラムの命令は、
命令カウンタによって規定されるシーケンスに従って、プロセッサによって実行
される。
【0006】 プログラムの、コンパイルされた命令は、連続する命令Inst.1,Inst.2,In
st.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を最初に指定し、それから対応する命令I
nst.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による“Ta
mper−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に値V
H=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に等しい)から、および前の命令I
nst.n−1について得られたハッシュ結果VHn−1から得られる。
【0074】 このように、第2の監視命令Inst.n+1への応答として、計算機26は、レ
ジスタ22内の値VHnを、この監視命令において特別な基準値Vrefと比較する。
【0075】 基準値Vrefは、記録されるプログラムを作成する際に、命令、Inst.1,Inst.
2,Inst.3,…,Inst.nの値の連続的なハッシュ結果について期待される値VH
nに対応するように、決定される。この値Vrefは、監視ユニット22によって用
いられるのと同じ手続き、つまり命令、Inst.1,Inst.2,Inst.3,…,Inst.
nの連続的なハッシュ手続きを用いて、前もって計算することができる。
【0076】 好ましくは、値Vrefは、悪意のあるアクションによって変更することができな
いように、固定メモリ内に布線化される。
【0077】 もし、監視ユニット22が、監視命令Inst.n+1を実行しながら、前述の値V
refと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,…,I
nst.nがこのように一旦処理されると、この監視ユニットは、第2の監視命令In
st.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,…,I
nst.nの良好なランを確認することができ:VHn=Vrefである場合(ステップ5
2)、全ての命令が、実際にプロセッサ4へ送られたと仮定する。監視演算は、
命令Inst.1,Inst.2,Inst.3,…,Inst.nを含むプログラムまたはプログラ
ムの部分については、ここで終了する。
【0097】 そして、監視手続きは、開始段階30に戻り、新しい第1の監視命令を待つ。
【0098】 その反対に、比較ステップ50が、比較された値の間で同一性を有さない(VH
n≠Vref)ことを示す場合、全ての命令、Inst.1,Inst.2,Inst.3,…,Ins
t.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)。この閾値VCseu
ilは、命令Inst.1−Inst.nの予定外の実行が、プログラムされた装置において
不意に生じてもよい回数に対応し、その後、このような不良に対応するための決
定的な対策が取られる。チップカードの背景における例としては、読取り装置(
プログラム実行装置20)に関する一時的な損傷であるかもしれないという疑い
のために、このような不良のほどほどの数(例えば、3または4)を認めること
ができるが、この数を超えると、カードが、事故か、あるいは悪意によって改竄
されたとみなさなければならない。このような実施の場合、プログラム装置に物
理的に接続した、このような不良の実行の履歴を保持するために、プログラムさ
れた装置(カード)に値VCを書き込むことも想定できる。
【0111】 カウント値VCが、閾VCseuil未満である場合、監視ユニット22は、ユーザー
および/またはオペレーティング・システムへの単なる警告メッセージを有する
先に記載されたような割込みコマンドInt.を作成し(ステップ66)、それをプ
ロセッサ4に伝送する(ステップ68)。
【0112】 その反対に、カウント値VCが閾値VCseuilに達する場合、監視ユニット22は
、予定外に実行される命令を含むプログラムされた装置の今後の一切の使用を禁
止する命令を有する先に記載されたような割込みコマンドInt.を作成し(ステッ
プ70)、それをプロセッサに伝送する(ステップ68)。この場合、メモリ6
0を再プログラムしただけではこの装置を再使用することは不可能である。この
メモリ60が、EEPROMまたは他の不揮発性メモリの形態である場合、このような
再プログラミングは不正なやり方では非常に実現するのが困難である。
【0113】 警告メッセージまたは今後の使用の無効化コマンドを伝送するのを伴うプログ
ラムの割込みコマンドInt.は、プロセッサのレベルで、または、監視ユニット2
2のレベルで実行することができることに留意する。
【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から7
0(図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つのプログラムの命
令セットを簡略化して示している。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成13年3月5日(2001.3.5)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,TZ,UG,ZW ),EA(AM,AZ,BY,KG,KZ,MD,RU, TJ,TM),AE,AL,AM,AT,AU,AZ, BA,BB,BG,BR,BY,CA,CH,CN,C R,CU,CZ,DE,DK,DM,EE,ES,FI ,GB,GD,GE,GH,GM,HR,HU,ID, IL,IN,IS,JP,KE,KG,KP,KR,K Z,LC,LK,LR,LS,LT,LU,LV,MA ,MD,MG,MK,MN,MW,MX,NO,NZ, PL,PT,RO,RU,SD,SE,SG,SI,S K,SL,TJ,TM,TR,TT,TZ,UA,UG ,US,UZ,VN,YU,ZA,ZW (72)発明者 ルソー,リュドヴィック フランス共和国,エフ−13400 オバーニ ュ,レ ゼール サン ミッシェル,バッ トゥ. アー Fターム(参考) 5B042 GA01 JJ06 JJ10 JJ12 JJ49 LA10 5B076 FA12 FD05

Claims (34)

    【特許請求の範囲】
  1. 【請求項1】情報処理プログラムの一連の命令(Inst.1−Inst.n)の実行
    のランの監視方法であって、監視されるプログラムを実行するためのプロセッサ
    (4)に伝送される命令シーケンスを分析することと、前記プログラムと共に記
    録される基準データ(Vref)を参照してこの分析結果を検証することから成る方
    法。
  2. 【請求項2】基準データは、前もって規定された値(Vref)を有し、該値は
    、プログラムのランの際に命令シーケンスの全ての命令(Inst.1−Inst.n)が
    実際に分析された場合にのみ、監視方法実施の際に実現される分析結果に対応す
    るものであることを特徴とする、請求項1に記載の方法。
  3. 【請求項3】命令シーケンス(Inst.1−Inst.n)の前記分析が、プロセッ
    サ(4)に伝送されるそれぞれの命令からデータを抽出(38)し、このように
    抽出されたそれぞれのデータに所定の計算(40,42)をすることを含み、検
    証が、分析結果を基準データ(Vref)と比較(50)することを含むことを特徴
    とする、請求項1または2に記載の方法。
  4. 【請求項4】分析結果の前記検証が、監視すべきプログラム内の所定の箇所
    に置かれた1つの命令(Inst.n+1)によって引き起こされ、この命令は、命
    令セット(Inst.1−Inst.n)に関する基準データ(Vref)を含み、該命令セッ
    トの正しい実行が監視すべきものであることを特徴とする、請求項1から3のい
    ずれか1つに記載の方法。
  5. 【請求項5】監視すべき命令セットの命令(Inst.1−Inst.n)が、16進
    法または10進法で記録されたコードのような1つの値の形式で存在するとき、
    命令の前記分析をそれらの数値とみなして行うことを特徴とする、請求項1から
    4のいずれか1つに記載の方法。
  6. 【請求項6】以下から成るステップを含む、請求項1に記載の方法。 −監視すべきプログラムを作成する際 −監視すべきそれぞれの命令において識別可能なデータに適用される予め設定
    された規則に従って規定された基準値(Vref)を、プログラムの1つの命令シー
    ケンス(Inst.1−Inst.n)の少なくとも1つの所定の箇所に挿入し、 −監視すべきプログラムを実行する際 −実行するために受信したそれぞれの命令において識別可能な前記データを取
    得(38)し、 −このように得られた前記の識別可能なデータに、予め設定された前記規則を
    適用し(40,42)て、検証値(VHn)を規定し、 −この検証値が、プログラムと共に記録されている基準値に実際に対応するこ
    とを検証する(50)。
  7. 【請求項7】監視されるプログラムが予定されたようにランされないことが
    分析によって明らかにされた場合、監視されるプログラムのランの割込みステッ
    プ(56)をさらに含むことを特徴とする、請求項1から6のいずれか1つに記
    載の方法。
  8. 【請求項8】監視されるプログラムが予定されたようにランされない所定の
    回数が前記分析によって明らかにされた場合、監視されるプログラムを備えた装
    置の今後の使用を無効にするステップ(70)をさらに含むことを特徴とする、
    請求項1から7のいずれか1つに記載の方法。
  9. 【請求項9】監視すべき命令セットが、その予定されたランにおいてジャン
    プを含まないことを特徴とする、請求項1から8のいずれか1つに記載の方法。
  10. 【請求項10】監視すべきプログラム(EI1,EI2,EI3)またはプログラ
    ムの部分が、少なくとも1回のジャンプを備えているとき、2つの連続する命令
    の間にジャンプを含まないこのプログラムの命令セットに、別々に監視方法を適
    用することを特徴とする、請求項1から8のいずれか1つに記載の方法。
  11. 【請求項11】監視すべきプログラムが、処理されるデータに依存するジャ
    ンプを引き起こす命令(EI1−j)を有するとき、ジャンプの前にある命令セッ
    ト(EI1)と、このジャンプの後にくる少なくとも1つの命令セット(EI2,EI
    3)とに対して、別々に監視方法を実施することを特徴とする、請求項10に記
    載の方法。
  12. 【請求項12】ジャンプを備える命令セット(EI1)について、この命令セ
    ットの検証値(VH)を得る分析のために、このジャンプをコマンドする命令セッ
    ト(EI1−j)を組み込み、この命令セットの良好なランをこのように検証して
    からジャンプの命令を実行することを特徴とする、請求項11に記載の方法。
  13. 【請求項13】分析を再初期化してから、監視すべきシーケンスまたは命令
    セット(EI1,EI2,EI3)をそれぞれ新たに監視することを特徴とする、請求
    項1から12のいずれか1つに記載の方法。
  14. 【請求項14】新たな監視のたびの分析の再初期化が、先の分析の際に得ら
    れた検証値(VH)を消去するか、または置き換えることから成ることを特徴とす
    る、請求項13に記載の方法。
  15. 【請求項15】監視の分析の再初期化が、保護されたソフトウェアによって
    コマンドされることを特徴とする、請求項13または14に記載の方法。
  16. 【請求項16】分析によって検証値(VH)が生成され、該検証値が、命令セ
    ットの分析されるそれぞれの命令(Inst.1−Inst.n)の分析とともに連続的に
    進行する一連の値の最後の値として得られ、このように、監視方法のランの内部
    状態を含み、その進行に付随することを可能にすることを特徴とする、請求項1
    から15のいずれか1つに記載の方法。
  17. 【請求項17】先行する命令(Inst.n−1)に続く対象となるそれぞれの
    命令(Inst.n)について、分析は、対象となる命令から得られた値(VHn)と
    、先行する命令において実施された同じ演算によって得られた結果(VHn−1)
    とについて、同時に演算結果を計算する(40,42)ことから成ることを特徴
    とする、請求項1から16のいずれか1つに記載の方法。
  18. 【請求項18】分析は、監視されるそれぞれの命令から得られた値について
    、ハッシュ関数f(VHn−1,Vinst.n)を再帰的に適用することから成り、最
    後に行われた初期化から開始することを特徴とする、請求項1から17のいずれ
    か1つに記載の方法。
  19. 【請求項19】分析は、演算コードおよび最後に行われた初期化以来実行さ
    れたアドレスの全体について、必ずしも暗号化ではない冗長計算を行うことによ
    って、検証値を進行させることから成ることを特徴とする、請求項1から17の
    いずれか1つに記載の方法。
  20. 【請求項20】分析は、連続する中間値を計算することによって、比較値(
    VCn)を得ることから成り、これらの命令の実行の間、この計算のために用いら
    れるそれぞれの命令のデータを取得するのに応じて行われることを特徴とする、
    請求項1から19のいずれか1つに記載の方法。
  21. 【請求項21】分析は、検証に必要なそれぞれのデータをバックアップする
    ステップを含み、該データは、監視すべき命令セットの命令(Inst.1−Inst.n
    )から、それらが実行されるのに応じて取得されることと、すべての必要なデー
    タが一度得られると、必要な時にのみ、これらのデータから検証値(VHn)の計
    算を行うことを特徴とする、請求項1から19のいずれか1つに記載の方法。
  22. 【請求項22】情報処理プログラムの一連の命令(Inst.1−Inst.n)の実
    行のランの監視装置であって、監視されるプログラムを実行するためのプロセッ
    サ(4)に伝送される命令シーケンスを分析する手段(22−26)と、前記プ
    ログラムと共に記録された基準データ(Vref)を参照してこの分析結果(VCn)
    を検証する手段(26)とを有する装置。
  23. 【請求項23】検証値(VHn)を得るために、分析手段(26)によって行
    われる連鎖的な計算において、中間結果(VH)を記録することを可能にするレジ
    スタ(24)を有することを特徴とする、請求項1から21のいずれか1つに記
    載の監視方法を実施するのに適した請求項22に記載の装置。
  24. 【請求項24】監視されるプログラムを実行する際、例えば、プログラムに
    おけるジャンプの折りに、伝送される命令(Inst.n+1)のコマンドのもと、
    所定の値の記録またはレジスタ(24)をゼロにリセットすることを可能にする
    手段を含むことを特徴とする、請求項23に記載の装置。
  25. 【請求項25】分析手段(26)によって決定されるような、監視されるプ
    ログラムの予定外のランの数のカウント手段(60)と、この数が所定の閾値(
    VCseuil)に達した場合、監視すべきプログラムの今後の使用を無効にするため
    の手段とを有することを特徴とする、請求項22から24のいずれか1つに記載
    の装置。
  26. 【請求項26】監視すべき前記プログラムを含む、チップカードのようなプ
    ログラムされた装置に、内蔵されていることを特徴とする、請求項22から25
    のいずれか1つに記載の装置。
  27. 【請求項27】プログラム実行装置(20)に内蔵されていることを特徴と
    する、請求項22から25のいずれか1つに記載の装置。
  28. 【請求項28】情報処理プログラムの一連の命令(Inst.1−Inst.n)を実
    行するためのプログラム実行装置(20)であって、実行のために伝送された命
    令シーケンスを分析するための手段(22−26)と、監視すべきプログラムと
    共に記録された基準データ(Vref)を参照してこの分析結果を検証する手段とを
    有することを特徴とするプログラム実行装置。
  29. 【請求項29】請求項1から21のいずれか1つに記載の方法を実施するの
    に適した、請求項28に記載のプログラム実行装置(20)。
  30. 【請求項30】記録された一連の命令(Inst.1−Inst.n)を有するプログ
    ラムされた装置であって、基準データ(Vref)をさらに有し、該基準データは、
    前記命令に含まれるデータに応じて予め設定され、請求項1から21のいずれか
    1つに記載の分析された命令シーケンスの検証を可能にすることを特徴とする、
    プログラムされた装置。
  31. 【請求項31】チップカードの形態で存在することを特徴とする、請求項3
    0に記載の装置。
  32. 【請求項32】基準データ(Vref)が、メモリに固定された布線式の値の形
    式で記録されていることを特徴とする、請求項30または31に記載の装置。
  33. 【請求項33】プログラムの命令シーケンス(Inst.1−Inst.n)の所定の
    少なくとも1つの箇所に、基準値(Vref)を書き込む手段を有し、該基準値は、
    実行の監視を望む命令セットのそれぞれの命令に含まれるデータから、前もって
    規定された態様に従って計算されることを特徴とする、請求項30から32のい
    ずれか1つに記載のプログラムされるための装置のプログラミング装置。
  34. 【請求項34】クリティカルコードの実行のために、請求項1から21のい
    ずれか1つに記載の方法を実施することを特徴とする、クリティカルコードを翻
    訳する仮想マシンまたはインタープリタ。
JP2000604312A 1999-03-09 2000-01-24 プロセッサによる命令シーケンスの実行を監視する方法および監視装置 Expired - Lifetime JP4172745B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR99/02924 1999-03-09
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
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 true JP2002539523A (ja) 2002-11-19
JP4172745B2 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)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006009081A1 (ja) * 2004-07-16 2006-01-26 Matsushita Electric Industrial Co., Ltd. アプリケーション実行装置及びアプリケーション実行装置のアプリケーション実行方法
JP2007517299A (ja) * 2003-12-31 2007-06-28 トラステッド ロジック ソシエテ アノニム 実行トレースプリントを検証することによるプログラム実行整合性の制御方法
JP2009288908A (ja) * 2008-05-28 2009-12-10 Dainippon Printing Co Ltd メモリの内容を改竄する故障攻撃の検知方法、セキュリティデバイス及びコンピュータプログラム
JP2010002975A (ja) * 2008-06-18 2010-01-07 Dainippon Printing Co Ltd 情報処理装置、正常処理判別方法、及び情報処理プログラム
US8161293B2 (en) * 2005-04-20 2012-04-17 Stmicroelectronics S.A. Protection of the execution of a program executed by an integrated circuit
US9092619B2 (en) 2008-04-10 2015-07-28 Renesas Electronics Corporation Data processing apparatus
JP2016045676A (ja) * 2014-08-22 2016-04-04 富士通株式会社 デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法
US10785259B2 (en) 2016-04-19 2020-09-22 Mitsubishi Electric Corporation Relay device

Families Citing this family (75)

* 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 株式会社東芝 マイクロプロセッサ
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
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
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
FR2883998A1 (fr) * 2005-04-05 2006-10-06 St Microelectronics Sa Coprocesseur securise comprenant un circuit de detection d'un evenement
FR2886027A1 (fr) * 2005-05-20 2006-11-24 Proton World Internatinal Nv Detection d'erreur de sequencement dans l'execution d'un programme
EP1894101A1 (de) * 2005-06-23 2008-03-05 Bayerische Motorenwerke Aktiengesellschaft 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
EP2033145B1 (en) * 2006-06-15 2011-04-06 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
EP2043017A1 (fr) * 2007-04-12 2009-04-01 Gemplus Procédé d'exécution sécurisée d'une application
FR2915007A1 (fr) 2007-04-12 2008-10-17 St Microelectronics Sa Protection de l'execution d'un programme
CN101689233B (zh) * 2007-07-05 2013-01-02 Nxp股份有限公司 安全敏感系统中的微处理器
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 株式会社デンソー 検査システム及びプログラム
CN101299849B (zh) * 2008-04-25 2010-05-12 中兴通讯股份有限公司 一种WiMAX终端及其启动方法
US8667352B2 (en) * 2008-05-27 2014-03-04 Freescale Semiconductor, Inc. Semiconductor device and method for validating a state thereof
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 美商密碼研究公司 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體
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
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
WO2018138793A1 (ja) * 2017-01-25 2018-08-02 三菱電機株式会社 攻撃・異常検知装置、攻撃・異常検知方法、および攻撃・異常検知プログラム
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
CN116982047A (zh) * 2021-04-06 2023-10-31 谷歌有限责任公司 安全密码协处理器

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
JP2000503154A (ja) * 1996-01-11 2000-03-14 エムアールジェイ インコーポレイテッド デジタル所有権のアクセスと分配を制御するためのシステム
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
DE69738810D1 (de) * 1996-01-24 2008-08-14 Sun Microsystems Inc Befehlsfalten in einem stapelspeicherprozessor
EP0976050B1 (en) * 1996-01-24 2002-06-12 Sun Microsystems, Inc. Processor with array access bounds checking
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
CN1260055A (zh) * 1997-06-09 2000-07-12 联信公司 用于提高软件安全性的模糊技术
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
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
US6402028B1 (en) * 1999-04-06 2002-06-11 Visa International Service Association Integrated production of smart cards
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

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007517299A (ja) * 2003-12-31 2007-06-28 トラステッド ロジック ソシエテ アノニム 実行トレースプリントを検証することによるプログラム実行整合性の制御方法
WO2006009081A1 (ja) * 2004-07-16 2006-01-26 Matsushita Electric Industrial Co., Ltd. アプリケーション実行装置及びアプリケーション実行装置のアプリケーション実行方法
CN100465982C (zh) * 2004-07-16 2009-03-04 松下电器产业株式会社 应用执行装置及应用执行装置的应用执行方法
US8161293B2 (en) * 2005-04-20 2012-04-17 Stmicroelectronics S.A. Protection of the execution of a program executed by an integrated circuit
US9092619B2 (en) 2008-04-10 2015-07-28 Renesas Electronics Corporation Data processing apparatus
JP2009288908A (ja) * 2008-05-28 2009-12-10 Dainippon Printing Co Ltd メモリの内容を改竄する故障攻撃の検知方法、セキュリティデバイス及びコンピュータプログラム
JP2010002975A (ja) * 2008-06-18 2010-01-07 Dainippon Printing Co Ltd 情報処理装置、正常処理判別方法、及び情報処理プログラム
JP2016045676A (ja) * 2014-08-22 2016-04-04 富士通株式会社 デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法
US10785259B2 (en) 2016-04-19 2020-09-22 Mitsubishi Electric Corporation Relay device

Also Published As

Publication number Publication date
US7168065B1 (en) 2007-01-23
FR2790844A1 (fr) 2000-09-15
DE60001393T2 (de) 2003-12-11
WO2000054155A1 (fr) 2000-09-14
JP4172745B2 (ja) 2008-10-29
MXPA01009056A (es) 2002-04-24
DE60001393D1 (de) 2003-03-20
CN1350675A (zh) 2002-05-22
AU3058900A (en) 2000-09-28
EP1161725B1 (fr) 2003-02-12
FR2790844B1 (fr) 2001-05-25
EP1161725A1 (fr) 2001-12-12
ATE232616T1 (de) 2003-02-15

Similar Documents

Publication Publication Date Title
JP2002539523A (ja) プログラムの実行の監視方法
EP3207485B1 (en) Code pointer authentication for hardware flow control
US7882396B2 (en) Method for controlling program execution integrity by verifying execution trace prints
EP2958044B1 (en) A computer implemented method and a system for controlling dynamically the execution of a code
JP6189039B2 (ja) セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法
CN112639778A (zh) 指针认证及指针认证方案之间的动态切换
JP7154365B2 (ja) ソフトウェアコードをセキュアにするための方法
CN109583190B (zh) 监控进程的方法和装置
US20020108045A1 (en) Preventing unauthorized updates to a non-volatile memory
EP1295200A2 (en) Data processing method and device for protected execution of instructions
US11256786B2 (en) Method to secure a software code
EP4310711A1 (en) Sensitive data reading method and apparatus, electronic device, and storage medium
CN112100686B (zh) 一种基于arm指针验证的内核代码指针完整性保护方法
CN111881485A (zh) 一种基于arm指针验证的内核敏感数据完整性保护方法
EP3387535B1 (en) Apparatus and method for software self test
CN101178762A (zh) 抑制利用移动存储设备传播病毒的方法及移动存储设备
US20230334149A1 (en) Program processing device and program processing method
KR102195274B1 (ko) 보안 모듈의 메모리 관리
CN116166277A (zh) 一种应用程序的管理装置和嵌入式设备
CN116975869A (zh) 基于地址处理的攻击防御方法、装置、电子设备及介质
is also Vulnerable Heap... Hop!

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