JP4708703B2 - 携帯型データ記憶媒体により制御されるプログラム実行 - Google Patents

携帯型データ記憶媒体により制御されるプログラム実行 Download PDF

Info

Publication number
JP4708703B2
JP4708703B2 JP2003544345A JP2003544345A JP4708703B2 JP 4708703 B2 JP4708703 B2 JP 4708703B2 JP 2003544345 A JP2003544345 A JP 2003544345A JP 2003544345 A JP2003544345 A JP 2003544345A JP 4708703 B2 JP4708703 B2 JP 4708703B2
Authority
JP
Japan
Prior art keywords
counter
controlled
module
processor core
program
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 - Fee Related
Application number
JP2003544345A
Other languages
English (en)
Other versions
JP2005509936A (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.)
Giesecke and Devrient GmbH
Original Assignee
Giesecke and Devrient GmbH
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 Giesecke and Devrient GmbH filed Critical Giesecke and Devrient GmbH
Publication of JP2005509936A publication Critical patent/JP2005509936A/ja
Application granted granted Critical
Publication of JP4708703B2 publication Critical patent/JP4708703B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Retry When Errors Occur (AREA)

Description

本発明は、全般的には、少なくとも1つのプログラムをもつプログラムメモリ及びそのプログラムを実行するためのプロセッサコアを備える携帯型データ記憶媒体によるプログラム実行の技術分野に関する。このタイプの携帯型データ記憶媒体は、特に、様々な形態のチップカードまたはチップモジュールとすることができる。特に、本発明は妨害または攻撃を検出するため及び適するエラー処理を開始するための被制御プログラム実行に関する。
携帯型データ記憶媒体を攻撃する手法の多くでは、正常なプログラム実行が外部の影響により撹乱される。このタイプの妨害は特に、電圧パルス、高温または低温の効果、電場または磁場、電磁波または粒子線により生じ得る。例えば、携帯型データ記憶媒体の露出した半導体チップに閃光を浴びせることにより、プロセッサコアのレジスタ内容を操作することが可能である。携帯型データ記憶媒体に格納されているプログラムに反して、携帯型データ記憶媒体に入力/出力バッファから秘密データを吐き出させるために、プログラムカウンタをその様な光攻撃により修正することが潜在的に可能である。
制御プロセッサが複数のサブプログラムを順次に実行し、それぞれのサブプログラム実行後にカウンタがインクリメントされる、乗り物のドアロックモーターを制御するための装置が特許文献1により知られている。サブプログラムの実行後、カウンタステータスがサブプログラムの数に対応しているか否かについてのチェックがなされる。
しかし、上記の既知の装置は乗り物に永久的に装着されるシステムにしか関していない。特に携帯型データ記憶媒体における、より一般的な使用は考慮されていない。さらに、上記の装置には、全てのサブプログラムの厳密な順次シーケンスしか与えられていない。したがって、特許文献1から知られる教示は、個々のサブプログラムが必要に応じてスキップされる、さらに複雑な用途には適していない。
欧州特許出願公開第1056012号明細書
したがって、本発明の目的は従来技術の問題を少なくともある程度は回避すること、並びに、携帯型データ記憶媒体により制御されるプログラム実行のための方法及びプログラムカウンタの値の操作に対して信頼できる保護を提供し、複雑なプログラムの実行における使用にも適する携帯型データ記憶媒体のいずれをもつくりだすことである。少ない経費で特に強力な保護が好ましい実施形態において達成されることになる。
本発明にしたがえば、上記目的は、請求項1の特徴をもつ方法及び請求項10の特徴をもつ携帯型データ記憶媒体により、完全にまたはある程度達成される。従属請求項は本発明の好ましい実施形態に関する。
本発明は、プログラム実行中に組み入れられるステータスカウンタによる正しいプログラム実行の制御という基本概念から発している。プログラムは複数の被制御セクションを有し、それぞれのセクションの処理が行なわれた場合にステータスカウンタが変えられる。被制御セクションは、サブプログラムまたはプログラムモジュールに一致する必要はない。ステータスカウンタの読み値が、プログラムの少なくとも1つのチェックポイントにおいて1つまたはそれより多くの許容値と比較され、異なっていた場合に、適するエラー処理が行われる。
本発明にしたがえば、少なくとも1つのジャンプ命令を含むプログラムの少なくとも可能性が提供され、ジャンプ命令により1つまたはそれより多くの被制御セクションがスキップされ、したがって実行されない。この場合、ステータスカウンタの読み値は、スキップされた被制御セクションが実行されたかのように、ジャンプ命令の実行にともなって変えられる。次いで、ジャンプ命令の実行とは独立に、以降の時間点においてステータスカウンタの値をチェックすることができる。すなわち、実行されるべきプログラムの構成のフレキシビリティを、なされるべきセキュリティに関わる制限無しに、大きく高めることができる。
ステータスカウンタは、プロセッサコア内のレジスタとして、または携帯型データ記憶媒体の作業メモリ内のメモリ領域として構成することができる。本発明の好ましい実施形態において、ステータスカウンタは、ベースカウンタおよびアクティブカウンタと呼ばれるハードウエアに関して実装された2つのカウンタの間の差から値が得られる差値ステータスカウンタとして構成される。すなわち、ステータスカウンタは、プログラム実行の進行中に値のシーケンスが1つでありかつ同じであると常時想定することから解放される。したがって、差値ステータスカウンタの使用は、使用される本方法の探り出しを一層困難にし、そのセキュリティを高める。ベースカウンタは、アクティブカウンタのそれぞれの読み値に設定されるように定期的に初期化されることが好ましい。
原理的に、実行されるべきプログラムの構造はいかなる制限も受けない。特にチップカードまたはチップモジュールについて考えられる、好ましい構成において、プログラムの基本構造はループであるが、ループには、開始セクション、複数の被制御セクションおよび作用セクションが含まれる。
開始セクションは外部コマンドの読込みを引き起こし、被制御セクションはコマンドの処理に関係して、応答が作用セクションに送られることが好ましい。この場合、チェックポイント、または複数のチェックポイントがある場合にはチェックポイントの内の1つが最後尾の被制御セクションと作用セクションの間に配置され、よってステータスカウンタのチェック結果にプログラム実行への妨害の兆候が全くなかったときにのみ、応答が送られることが好ましい。プログラム構造にかかわらず、本発明の好ましい実施形態の全般的特徴は、携帯型データ記憶媒体の外部に向けての作用のそれぞれの前に、チェックポイントを設けることである。
プログラムは1つまたは順次に実行されるべき1つより多くのモジュールからなり、それぞれのモジュールは少なくとも1つの被制御セクションを含むことが好ましい。いくつかの実施形態において、それぞれのモジュールは1つの被制御セクションだけからなり、必要に応じて、後続のモジュールが実行されるべきかスキップされるべきかについてのチェックを含む。別の実施形態において、モジュールの内の少なくともいくつかは複数の被制御セクションを含む。
モジュールの内の少なくとも1つが少なくとも1つのモジュール内チェックポイントをもつ被制御モジュールとして構成されていれば、監視の度合いのさらなる強化が達成される。プログラム実行の開始またはループのその時点での実行の開始以降のステータスカウンタの値をモジュール内チェックポイントにおける1つまたはそれより多くのあらかじめ定められた値との一致に関してチェックすることができ、あるいはモジュール実行の開始以降のステータスカウンタの変化をチェックすることができる。第2の場合には、ステータスカウンタの読み値またはそれと関係付けられた値、例えばアクティブカウンタのステータスが、モジュール内のステータスカウンタが最初の変化をおこす前にローカルベースカウンタにバッファされることが好ましい。
ローカルカウンタは、モジュール内またはセクション内の追加の構成で、同様に組み込むことができ、このカウンタはグローバルステータスカウンタとは独立にモジュール内またはセクション内の正しいプログラム実行を監視する。ローカルカウンタはグローバルステータスカウンタに関して上述した手法にしたがって構成することができ、特に差値ローカルカウンタとしての構成が可能である。
それを介して被制御セクションがスキップされ得る、それぞれのジャンプ命令は、ステータスカウンタの調整のための対応するコマンドと組み合わされることが好ましい。しかし、本発明の構成では、個々のジャンプ命令にステータスカウンタの調整がともなっていない構成も提供される。この場合には通常、複数の許容カウンタステータスが1つのチェックポイントまたは複数のチェックポイントにおいて定められる。しかし、この手段は監視の確度を低めるから、上述したローカルステータスカウンタだけに用いられることが好ましい。
本発明にしたがう携帯型データ記憶媒体は、チップカードまたはチップモジュールとして構成されることが好ましい。好ましい構成において、本発明にしたがう携帯型データ記憶媒体は、上述したばかりの特徴に相当する特徴及び/または従属する方法の請求項に述べられる特徴を有する。
本発明のさらなる特徴、利点及び目的は、以下の複数の実施形態及び代替実施形態の詳細な説明から明らかである。簡略な図面が参照される。
図1に示される携帯型データ記憶媒体10は、本実施形態においてチップカードとして構成されている。携帯型データ記憶媒体10は、外部との無接触型または接触型データ交換のためのインターフェース12,プログラムカウンタ16を備えるプロセッサコア14及びメモリ18を有する。プロセッサコア14,メモリ18及びインターフェース12のコンポーネントは通常、単一の半導体チップ上に集積されている。
メモリ18は様々なメモリ技術で構成された複数の領域を有する。図1の実施形態においては、例えばマスクプログラム型ROMとして構成された、リードオンリメモリ20,フラッシュメモリ技術で構成された不揮発性リード−ライトメモリ22,及びRAM(ランダムアクセスメモリ)として構成された揮発性リード−ライトメモリ24がある。概念により、メモリ18には領域20及び22に配置されたプログラムメモリ26並びに領域22及び24に配置された作業メモリ28がある。
プログラムメモリ26には、1つが図1に示され、参照数字30が与えられている、複数のプログラムが入っている。複数のカウンタ32のため、さらに詳しくは、図2の実施形態ではステータスカウンタZZのため、図3の実施形態ではアクティブカウンタAZ及びベースカウンタBZのため、図4の改変形態ではステータスカウンタZZ及びローカルベースカウンタLBZのため、及び図5の改変形態ではステータスカウンタ及びローカルカウンタLZのための、メモリロケーションが作業メモリ28に予約されている。別の構成において、これらのカウンタは、全てまたは一部を、作業メモリ28におく代わりにプロセッサコア14のレジスタとして構成することもでき、あるいは図1には示されていない携帯型データ記憶媒体10の別のユニットに格納することもできる。
本実施形態において、プロセッサコア14のプログラムカウンタ16は半導体チップ上に向けられた閃光により影響を受け得る。それにもかかわらず、閃光によりなされ得るプロセッサコアに管理されるデータへの攻撃を不可能にするため、図2にしたがうプログラム実行においては。ステータスカウンタZZ及び、それぞれの場合における、外部に向けられる作用の実行に先立つあらかじめ定められたカウンタステータスとの一致についてのチェックが、プログラムカウンタ16とは独立の制御機構としてプログラム実行中に組み入れられる。
図2の実施形態において、プログラム30は、開始セクション34,以降は一括して36.xで指定される複数の被制御セクション36.1,36.2,...,36.N、チェックポイント38及び作用セクション40を含む無限ループの構造を有する。携帯型データ記憶媒体10で処理されるべきコマンドは、例えば、開始セクション34においてインターフェース12を介して読み込まれる。被制御セクション36.xは、例えば、コマンドが初めに有効性についてチェックされ、次いで認証チェックが行われ、次いで、例えば要求されたデータが存在するか否かのチェックによる、コマンドの実行可能性のチェックが行われ、最後に、例えば要求されたデータが出力バッファに書き込まれるというようにして、コマンドが実行されるというように、順次に実行されるコマンドの処理段に関係する。本実施形態において、応答は作用セクション40においてインターフェース12を介して送られ、その結果、コマンドの実行成功またはコマンドの実行失敗が明示される。
個々の被制御セクション36.xの機能において、上に例として挙げられた、後続の被制御セクション36.xの実行をプログラム実行において不要にする、エラー状況がおこり得る。例えば、認証の欠如のためコマンドが実行されてはならない場合には、後続の処理段は不要である。したがって、規定されたシーケンスにおける後続の被制御セクション36.xが実行されるべきかスキップされるべきかについてチェックがなされる、以降は一括して42.xで指定される、退去ジャンプチェック41.1,41.2等がある。退去ジャンプ命令42.xのそれぞれは、退去ジャンプフラッグの値をチェックする条件付ジャンプ命令である。さらに、退去ジャンプフラッグは、退去ジャンプを行うべきであることを示すためにそれぞれの先行被制御セクション36.xにより設定される。退去ジャンプチェック42.xは、退去ジャンプフラッグの値がある被制御セクション36.xにおいて変わり得る場合にのみ、その被制御セクション36.xに随伴する必要があることは当然である。
プログラムカウンタ16のステータスには無関係にプログラム実行をチェックするため、したがって閃光攻撃の認識が可能であるために、ステータスカウンタZZが用いられる。ステータスカウンタZZは開始セクション34の実行とともに初期化命令44により初期値に設定される。図2の実施形態において、初期値はゼロである。それぞれの被制御セクション36.xには、ステータスカウンタZZが変更される、すなわち本実施形態においては1単位だけインクリメントされる、命令46.xもある。次いで、それぞれの被制御セクション36.x内で実行されるべきオペレーションが終了したときにのみ、命令46.xがそれぞれの被制御セクション36.x内で実行される。命令46.xはそれぞれの場合においてそれぞれの被制御セクション36.xの最終コマンドであることが好ましい。
したがって、ジャンプがおこらないと仮定すれば、ステータスカウンタZZは結果としてプログラム実行中に実行される被制御セクション36.xの数に対応する値をもつ。図2の例示的シーケンスにおいて、この数は値Nで指定される。したがって、ステータスカウンタZZの読み値が単一の許容値Nであるか否かが確認される、チェック48がチェックポイント38で行われる。ステータスカウンタZZの読み値がNであれば、作用セクション40が実行される。ステータスカウンタZZが異なる値を有していれば、プログラム実行はエラー処理ルーチン50に分岐する。
例えば、包括的な携帯型データ記憶媒体10の再設定が、あるいは、エラーの反復発生による携帯型データ記憶媒体10の遮断さえもが、エラー処理50として行われ得る。適するエラーメッセージもインターフェース12を介して送られ得る。いかなる場合にも、携帯型データ記憶媒体10に出力のためにおそらくは既に与えられているいかなるデータもインターフェース12を介して外部に送られることはないことを、エラー処理50が保証すべきである。
前述したシーケンスにしたがえば、1つまたはそれより多くの被制御セクション36.xにわたって退去ジャンプチェック42.xの内の1つによりジャンプが引き起こされている場合は、ステータスカウンタZZは許容値Nを有していないであろう。この場合においてさえも正しいプログラム機能実行を保証するため、被制御セクション36.xが退去ジャンプチェック42.xによりスキップされたときには必ず、以降は一括して52.xで指定される、対応する補正命令52.1,52.2が実行される。ステータスカウンタZZは、スキップされた被制御セクション36.xが実行されたかのように、いずれかの補正命令52.xにおいて変えられる。本事例において、ステータスカウンタZZは補正命令52.x毎にスキップされたセクション36.xの数だけ増加される。したがって、ステータスカウンタZZは、ループの実行中に退去ジャンプが行われたとしても、チェックポイント38に達したときには単一の許容値Nを有する。
本実施形態においては、ステータスカウンタZZが値ゼロに初期化され、それぞれの被制御セクションの処理中に1単位だけインクリメントされた。別の構成においては、別の初期化値及び/またはステータスカウンタを変えるための別の方法が提供される。例えば、ステータスカウンタZZを命令44において値1またはNあるいは他の値に初期化することができる。退去ジャンプチェック42.x後に被制御セクション36.xがスキップされる場合に、ステータスカウンタZZが、補正なしでカウントを続け、代わりにスキップされたセクション36.xの数だけ値Nをデクリメントすることも可能である。この時、補正命令52.1,52.2はN:=1及びN:=2等である。いかなる数学的操作、例えば1単位減算またはビット毎のシフトまたは回転も、命令46.xにおいて実行することができる。チェック48における許容値が上記の場合に応じて適合されることは当然である。
図3は図2のシーケンスの別種の変形を示す。この場合、ステータスカウンタZZは作業メモリ28にあるカウンタとして直接に実装されるのではなく、2つのカウンタ32,すなわちアクティブカウンタAZ及びベースカウンタBZが作業メモリ28に設けられる。差値カウンタとしてのステータスカウンタZZの本構成により、プログラムカウンタ16のそれぞれのステータスが作業メモリ28のカウンタ32の固定された常に同じ値に対応するという状況が回避される。
図3に示されるシーケンスは、アクティブカウンタAZが出発値、本実施形態では値ゼロに設定される初期化ステップ54で開始される。初期化ステップ54後、図3に示されるプログラム構造は図2と同等であり、そのため図2と同じ参照数字が図3に用いられている。違いは、ベースカウンタBZが命令44においてアクティブカウンタAZのそれぞれのステータスに設定されることである。したがって、ベースカウンタBZのステータスは、いかなるループにおいても、アクティブカウンタAZがカウントを開始する“ゼロマーク”である。
図3にしたがえば、アクティブカウンタAZは、図2におけるステータスカウンタZZと同じ態様で、命令46.x及び52.xにおいて変えられる。最後に、アクティブカウンタAZとベースカウンタBZの差がチェック48において許容値Nと比較される。チェック48の実際のプログラムでは、例えば、初めに暫定結果BZ+Nが計算され、この暫定結果が次いでアクティブカウンタAZの値と比較されるというようにして、常に一定の値Nとの比較が回避されることが好ましい。
アクティブカウンタAZは1つのループ実行から次のループ実行にかけて再設定されず、ベースカウンタBZで定められる“ゼロマーク”が命令44において再び確立されるだけである。したがって、カウンタAZ及びBZの値はループの実行毎に変わり、よって図3の方法の探り出しが極めて困難になる。図3の方法の変形において、アクティブカウンタAZの値はチェック48後に任意に再設定できる。アクティブカウンタAZ及びベースカウンタBZをそれぞれ形成する、作業メモリ28内のカウンタ32の役割は、時々スワップすることもできる。
図2及び図3は、2つの被制御セクション36.1及び36.2並びに割り当てられた2つのジャンプチェック42.1及び42.2を結合している、モジュール56を例として示す。図4は、図2のこのモジュール56を、モジュール56の実行中にステータスカウンタZZの変化の追加ローカルチェックを含む別種の変形で示す。図4にしたがえば、追加ローカルチェックのために、ステータスカウンタZZの読み値がモジュール実行の開始時にローカルベースカウンタLBZにセーブされる。
被制御セクション36.1及び36.2並びに対応するジャンプチェック42.1及び42.2の処理後、プログラム実行はモジュール内チェックポイント60に到達する。ここで、モジュールの開始時にセーブされた値LBZに対するステータスカウンタZZの変化がその間に実行された被制御セクションの数Mに対応するか否かがチェック62でチェックされる。本例においてMの値は2である。ステータスカウンタZZのモジュール内変化が許容値を有していればプログラム実行は継続され、そうでなければエラー処理64のためのモジュール内ルーチンが実行される。
図4の変形構成は差値ステータスカウンタを含む図3にしたがう方法にも用いることができる。この場合、アクティブカウンタAZの値または差AZ−BZがステップ58でローカルベースカウンタLBZに格納され、この値またはこの差とローカルベースカウンタLBZの値との差がチェック62でつくられる。
図4においてはモジュール内変化のチェック中にグローバルステータスカウンタZZが進められたが、モジュール56内または被制御セクション36.x内にさらにローカルステータスカウンタを組み入れることも可能である。図5は、図2の被制御セクション36.xがローカルステータスカウンタLZによりさらになお保護される、上記の変形構成の例示的なシーケンスを示す。
図5にしたがえば、ローカルステータスカウンタLZがステップ66において値ゼロに初期化される。一括して68.xで指定される、複数の、本例においては3つである、被制御サブセクション68.1,68.2,68.3の実行が後続する。ローカルカウンタLZは被制御サブセクション68.xのそれぞれでそれぞれの命令70.xにおいてインクリメントされる。第2の被制御サブセクション68.2は、図5に破線で示される、条件付退去ジャンプを含み、この条件付ジャンプによって、インクリメントステップ70.2及び第3のサブセクション68.3がスキップされる。
最後の被制御サブセクション68.3の処理後、プログラム実行はローカルチェックポイント72に到達する。チェック目的のために、ローカルカウンタLZのステータスが許容値1及び3と比較される、チェック74が実行される。これらの値の内の1つと一致すればプログラム実行が継続されて命令46.xによりグローバルステータスカウンタZZが変えられ、そうでなければエラー処理76が行われる。
ステータスカウンタZZとともに既述した上記の変形は、図5のローカルカウンタLZの実装に対しても可能である。特に、ローカルカウンタLZは差値カウンタとして形成することもできる。図5の方法が図3の構成と組み合わせて用いられる場合は、割当て46.xだけが適合されなければならない。
図5は、相異なるプログラム実行パスが対応する補正命令52.x無しに設けられる場合に必要である、複数の許容値によるカウンタの比較を示す。本発明のいくつかの実施形態において、複数の許容値によるこのタイプの比較はグローバルステータスカウンタZZに対しても用いることができる。しかし、そのような構成は制御の信頼性を低め、したがってローカルステータスカウンタLZにしか好ましくない。逆に、第2の被制御サブセクション68.2における退去ジャンプは、適する補正命令により別の変形で実行することもできる。この場合、ローカルカウンタLZの単一のステータス、すなわちカウンタステータス3だけがチェック74で許容される。
本発明の一実施形態にしたがう携帯型データ記憶媒体の機能ユニットを含むブロック図である 図1の実施形態におけるプログラム実行のフローチャートである 図2の構成の変形のフローチャートである 図2の構成の別の変形にしたがう被制御モジュールにおけるプログラム実行のフローチャートである 複数の被制御サブセクションを含むセクションにおけるプログラム実行のフローチャートである
符号の説明
10 携帯型データ記憶媒体
12 インターフェース
14 プロセッサコア
16 プログラムカウンタ
18 メモリ
20 リードオンリメモリ
22 不揮発性リード−ライトメモリ
24 揮発性リード−ライトメモリ
26 プログラムメモリ
28 作業メモリ
30 プログラム
32 カウンタ
34 開始セクション
36.x 被制御セクション
38,60,72 チェックポイント
40 作用セクション
42.x ジャンプ命令
50,64,76 エラー処理
52.x 補正命令
56 モジュール
68.x 被制御サブセクション
AZ アクティブカウンタ
BZ ベースカウンタ
LZ ローカルカウンタ
LBZ ローカルベースカウンタ
ZZ ステータスカウンタ

Claims (12)

  1. プログラムメモリ(26)、プロセッサコア(14)及び少なくとも1つのステータスカウンタ(ZZ)を備える携帯型データ記憶媒体により制御されるプログラム実行のための方法において、前記プログラムメモリ(26)が、前記プロセッサコア(14)により実行される少なくとも1つのプログラム(30)を含み、該プログラム(30)が、該プログラム実行の処理段に関連する複数の被制御セクション(36.x)を含み、
    前記プロセッサコア(14)が、前記複数の被制御セクション(36.x)のそれぞれの処理が行われた場合、前記それぞれの被制御セクション(36.x)の処理中に前記ステータスカウンタ(ZZ)の読み値を1単位変更し、
    前記プロセッサコア(14)が、ジャンプ命令(42.x)の実行に伴って、該ジャンプ命令(42.x)の結果として1つまたはそれより多くの被制御セクション(36.x)を、他の被制御セクションを実行することなくスキップし、前記ステータスカウンタ(ZZ)の前記読み値を、前記ジャンプ命令によりスキップした前記被制御セクションの数分変更し、
    前記プロセッサコア(14)が、少なくとも1つのチェックポイント(38,60,72)において前記ステータスカウンタ(ZZ)の前記読み値を少なくとも1つの許容値と比較し、一致したときに前記プログラム実行を継続し、異なる場合にはエラー処理(50,64,76)を行うことを特徴とする方法。
  2. 前記ステータスカウンタ(ZZ)が、前記被制御セクションの処理および前記ジャンプ命令の実行に伴って、前記プロセッサコア(14)により読み値が変更されるアクティブカウンタ(AZ)、および前記ステータスカウンタ(ZZ)の読み値の基準となるベースカウンタ(BZ)を含み、前記ステータスカウンタ(ZZ)の読み値が、前記アクティブカウンタ(AZ)の値と前記ベースカウンタ(BZ)の値との差分であることを特徴とする請求項1に記載の方法。
  3. 前記プログラム(30)が、前記携帯型データ記憶装置(10)により処理されるべきコマンドを読み込む開始セクション(34)、複数の前記被制御セクション(36.x)及び前記携帯型データ記憶装置(10)が応答を送信する作用セクション(40)を含むループとして構成され、前記チェックポイント(38)または複数の前記チェックポイントの内の1つが最後尾の被制御セクション(36.N)と前記作用セクション(40)の間に配置されることを特徴とする請求項1または2に記載の方法。
  4. 前記プロセッサコア(14)が、前記被制御セクション(36.x)の実行の前に、前記アクティブカウンタ(AZ)の値を変化させることなく維持しつつ、前記ベースカウンタ(BZ)を前記アクティブカウンタ(AZ)の読み値に設定することを特徴とする請求項2に記載の方法。
  5. 前記プログラム(30)が複数のモジュール(56)を含み、該各モジュール(56)が、1以上の前記被制御セクション(36.x)を含み、該各モジュール(56)がさらに少なくとも1つのモジュール内チェックポイント(60)を含むことを特徴とする請求項1から4のいずれか1項に記載の方法。
  6. 前記各モジュール(56)が、前記プロセッサコア(14)が該モジュール(56)の実行の開始以降の該モジュール(56)内の前記ステータスカウンタ(ZZ)の前記読み値を、前記モジュール内チェックポイント(60)において少なくとも1つの許容値と比較する、被制御モジュールであることを特徴とする請求項5に記載の方法。
  7. 前記プロセッサコア(14)が、前記被制御モジュール(56)内の前記ステータスカウンタ(ZZ)の最初の前記変化の前に、前記ステータスカウンタ(ZZ)の前記読み値をローカルベースカウンタ(LBZ)にバッファすることを特徴とする請求項6に記載の方法。
  8. 前記プログラム(30)が複数のモジュール(56)を含み、該各モジュール(56)が、1以上の前記被制御セクション(36.x)を含み、該各モジュール(56)がさらに少なくとも1つのモジュール内チェックポイント(60)を含み、
    前記各モジュール(56)が、前記プロセッサコア(14)が該モジュール(56)の実行が開始されてからの該モジュール(56)内の前記ステータスカウンタ(ZZ)の前記読み値を、前記モジュール内チェックポイント(60)において少なくとも1つの許容値と比較する、被制御モジュールであり、
    前記プロセッサコア(14)が、前記被制御モジュール(56)内の前記ステータスカウンタ(ZZ)の最初の前記変化の前に、前記アクティブカウンタ(AZ)の前記読み値をローカルベースカウンタ(LBZ)にバッファすることを特徴とする請求項2から4のいずれか1項に記載の方法。
  9. 前記被制御セクション(36.x)の内の少なくとも1つが複数の被制御サブセクション(68.x)を含み、前記プロセッサコア(14)が、前記複数の被制御サブセクション(68.x)のそれぞれの処理を反映するために前記それぞれの被制御サブセクション(68.x)の実行中にローカルカウンタ(LZ)の読み値を1単位変更し、前記プロセッサコア(14)が、前記ローカルカウンタ(LZ)の前記値を少なくとも1つのチェックポイント(72)において少なくとも1つの許容値と比較することを特徴とする請求項1から8のいずれか1項に記載の方法。
  10. 前記方法が、前記プロセッサコア(14)のプログラムカウンタ(16)が光の影響により操作される、光攻撃を撃退するために用いられることを特徴とする請求項1から9のいずれか1項に記載の方法。
  11. 携帯型データ記憶媒体(10)において、プログラムメモリ(26)、プロセッサコア(14)及び少なくとも1つのステータスカウンタ(ZZ)を備え、前記プログラムメモリ(26)が前記プロセッサコア(14)により実行可能であり複数の被制御セクション(36.x)を含む少なくとも1つのプログラム(30)を含み、前記プログラムメモリ(26)が前記プロセッサコア(14)に請求項1から10のいずれか1項に記載の方法を実行させるためのコマンドを含むことを特徴とする携帯型データ記憶媒体。
  12. チップカードまたはチップモジュールであることを特徴とする請求項11記載の携帯型データ記憶媒体。
JP2003544345A 2001-11-16 2002-10-29 携帯型データ記憶媒体により制御されるプログラム実行 Expired - Fee Related JP4708703B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE10156394A DE10156394A1 (de) 2001-11-16 2001-11-16 Kontrollierte Programmausführung durch einen tragbaren Datenträger
DE10156394.9 2001-11-16
PCT/EP2002/012074 WO2003042547A2 (de) 2001-11-16 2002-10-29 Kontrollierte programmausführung durch einen tragbaren datenträger

Publications (2)

Publication Number Publication Date
JP2005509936A JP2005509936A (ja) 2005-04-14
JP4708703B2 true JP4708703B2 (ja) 2011-06-22

Family

ID=7706025

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003544345A Expired - Fee Related JP4708703B2 (ja) 2001-11-16 2002-10-29 携帯型データ記憶媒体により制御されるプログラム実行

Country Status (9)

Country Link
US (1) US7441111B2 (ja)
EP (1) EP1449084B1 (ja)
JP (1) JP4708703B2 (ja)
CN (1) CN1296819C (ja)
AU (1) AU2002363665A1 (ja)
DE (1) DE10156394A1 (ja)
ES (1) ES2414435T3 (ja)
RU (1) RU2295756C2 (ja)
WO (1) WO2003042547A2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
DE102004021088A1 (de) * 2004-04-29 2005-11-17 Giesecke & Devrient Gmbh Verfahren zum Schützen von Daten eines Datenträgers gegen DFA-Angriffe
EP1605333B1 (fr) * 2004-06-07 2008-12-10 Proton World International N.V. Contrôle de l'exécution d'un programme
FR2886027A1 (fr) * 2005-05-20 2006-11-24 Proton World Internatinal Nv Detection d'erreur de sequencement dans l'execution d'un programme
JP2007004456A (ja) * 2005-06-23 2007-01-11 Toshiba Corp 携帯可能電子装置及び携帯可能電子装置のデータ出力方法
GB2435531A (en) * 2006-02-27 2007-08-29 Sharp Kk Control Flow Protection Mechanism
JP2008152452A (ja) * 2006-12-15 2008-07-03 Toshiba Corp 携帯可能電子装置、携帯可能電子装置の制御方法およびicカード
DE102007015369A1 (de) * 2006-12-29 2008-07-03 Endress + Hauser Gmbh + Co. Kg Verfahren zur Überwachung des logischen Programmablaufs von kritischen Funktionen in Programmen eines Feldgeräts der Prozess- und Automatisierungstechnik
JP2008243097A (ja) * 2007-03-29 2008-10-09 Toshiba Corp 情報記憶媒体
JP5018199B2 (ja) * 2007-04-10 2012-09-05 大日本印刷株式会社 携帯用セキュリティデバイス
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
JP4701260B2 (ja) * 2008-03-31 2011-06-15 株式会社エヌ・ティ・ティ・データ 情報処理装置、情報処理方法、および、情報処理プログラム
FR2990533B1 (fr) * 2012-05-09 2015-02-13 Morpho Procede de suivi d'execution d'un logiciel et logiciel pour la mise en oeuvre du procede
DE102013001143A1 (de) 2013-01-23 2014-07-24 Giesecke & Devrient Gmbh Verfahren zur Ausvührung eines Programms über einen Mikroprozessor auf einem Sicherheitsmodul
EP3040895A1 (en) * 2014-12-30 2016-07-06 Gemalto Sa System and method for protecting a device against return-oriented programming attacks
FR3035240B1 (fr) 2015-04-15 2018-04-06 Rambus Inc. Procede de securisation de l'execution d'un programme

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5276852A (en) * 1975-12-22 1977-06-28 Hitachi Ltd Error detection circuit
JPS59200344A (ja) * 1983-04-27 1984-11-13 Hitachi Ltd マイクロプログラム暴走検出方式
JPH01258142A (ja) * 1988-04-08 1989-10-16 Natl Space Dev Agency Japan<Nasda> 故障容認計算機装置
JPH04160642A (ja) * 1990-10-25 1992-06-03 Nec Corp コンピュータシステム
JPH0962525A (ja) * 1995-08-30 1997-03-07 Nec Ic Microcomput Syst Ltd プログラム暴走検出装置および暴走検出方法
JPH11184735A (ja) * 1997-12-19 1999-07-09 Nec Corp プログラム暴走検出方法および暴走検出ルーチンを含む記録媒体
JP2000339188A (ja) * 1999-05-27 2000-12-08 Harness Syst Tech Res Ltd プログラム実行異常検出装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4939353A (en) * 1987-01-22 1990-07-03 Kabushiki Kaisha Toshiba Processing system for enabling data communication with a self-diagnose device
US5357627A (en) * 1989-03-28 1994-10-18 Olympus Optical Co., Ltd. Microcomputer having a program correction function
US4939393A (en) * 1989-10-02 1990-07-03 Motorola Inc. ECL to TTL/CMOS translator using a single power supply
DE4036765A1 (de) * 1990-11-17 1992-05-21 Angewandte Digital Elektronik Kodierte chipkartenaktivierung
US5732272A (en) * 1995-07-31 1998-03-24 Apple Computer, Inc. Subroutine execution time tracer
US5784607A (en) * 1996-03-29 1998-07-21 Integrated Device Technology, Inc. Apparatus and method for exception handling during micro code string instructions
JPH10240522A (ja) * 1997-02-26 1998-09-11 Matsushita Electric Works Ltd 演算装置
US6148437A (en) * 1998-05-04 2000-11-14 Hewlett-Packard Company System and method for jump-evaluated trace designation
US6353924B1 (en) * 1999-02-08 2002-03-05 Incert Software Corporation Method for back tracing program execution
FR2790844B1 (fr) 1999-03-09 2001-05-25 Gemplus Card Int Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme
US6453430B1 (en) * 1999-05-06 2002-09-17 Cisco Technology, Inc. Apparatus and methods for controlling restart conditions of a faulted process
US6625725B1 (en) * 1999-12-22 2003-09-23 Intel Corporation Speculative reuse of code regions
US6915416B2 (en) * 2000-12-28 2005-07-05 Texas Instruments Incorporated Apparatus and method for microcontroller debugging

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5276852A (en) * 1975-12-22 1977-06-28 Hitachi Ltd Error detection circuit
JPS59200344A (ja) * 1983-04-27 1984-11-13 Hitachi Ltd マイクロプログラム暴走検出方式
JPH01258142A (ja) * 1988-04-08 1989-10-16 Natl Space Dev Agency Japan<Nasda> 故障容認計算機装置
JPH04160642A (ja) * 1990-10-25 1992-06-03 Nec Corp コンピュータシステム
JPH0962525A (ja) * 1995-08-30 1997-03-07 Nec Ic Microcomput Syst Ltd プログラム暴走検出装置および暴走検出方法
JPH11184735A (ja) * 1997-12-19 1999-07-09 Nec Corp プログラム暴走検出方法および暴走検出ルーチンを含む記録媒体
JP2000339188A (ja) * 1999-05-27 2000-12-08 Harness Syst Tech Res Ltd プログラム実行異常検出装置

Also Published As

Publication number Publication date
RU2295756C2 (ru) 2007-03-20
WO2003042547A2 (de) 2003-05-22
RU2004114666A (ru) 2005-10-27
EP1449084A2 (de) 2004-08-25
ES2414435T3 (es) 2013-07-19
US20050033943A1 (en) 2005-02-10
DE10156394A1 (de) 2003-06-12
CN1636186A (zh) 2005-07-06
CN1296819C (zh) 2007-01-24
AU2002363665A1 (en) 2003-05-26
JP2005509936A (ja) 2005-04-14
EP1449084B1 (de) 2013-04-10
WO2003042547A3 (de) 2004-05-27
US7441111B2 (en) 2008-10-21

Similar Documents

Publication Publication Date Title
JP4708703B2 (ja) 携帯型データ記憶媒体により制御されるプログラム実行
US10509568B2 (en) Efficient secure boot carried out in information processing apparatus
US6453397B1 (en) Single chip microcomputer internally including a flash memory
JP4227149B2 (ja) 電子制御装置の情報記憶方法
US8195946B2 (en) Protection of data of a memory associated with a microprocessor
JP5576557B2 (ja) プロセッサシステム及びその制御方法
JP2009501983A (ja) 長い摂動による故障の検出
JPWO2020158377A1 (ja) 電子制御装置、電子制御装置のセキュリティ検証方法
CN105893877B (zh) 安全数据读取的方法和数据处理系统
US20060289656A1 (en) Portable electronic apparatus and data output method therefor
US20080162837A1 (en) Nonvolatile Memory System
JP6622360B2 (ja) 情報処理装置
WO2001097010A2 (en) Data processing method and device for protected execution of instructions
JP2006252284A (ja) 携帯可能電子装置およびicカード
JP2009223435A (ja) データ記憶方法及び装置、並びにプログラム
US20090150623A1 (en) Semiconductor device and test mode control circuit
JP4543505B2 (ja) マイクロコンピュータの制御方法及び異常監視装置
JP2006172005A (ja) 携帯可能電子装置
US20230359523A1 (en) Memory integrity check
US6493808B1 (en) Device and process for testing a reprogrammable nonvolatile memory
JPH02120951A (ja) 秘密データ記憶装置
JPS6234262A (ja) 不揮発性メモリアクセス方式
JP6398449B2 (ja) 電子情報記録媒体、プロセッサモジュールの動作制御方法、及びプロセッサモジュールの動作制御プログラム
JP6119345B2 (ja) Icチップ、icカード、検証処理方法、及び検証処理プログラム
JPH0273420A (ja) 半導体ディスク装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090317

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090610

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090617

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090817

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090824

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090910

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100209

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100507

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100514

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100602

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100609

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100928

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101220

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110128

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110317

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

LAPS Cancellation because of no payment of annual fees