JP2004503860A - データ処理方法及び保護された命令の実行のための装置 - Google Patents

データ処理方法及び保護された命令の実行のための装置 Download PDF

Info

Publication number
JP2004503860A
JP2004503860A JP2002511070A JP2002511070A JP2004503860A JP 2004503860 A JP2004503860 A JP 2004503860A JP 2002511070 A JP2002511070 A JP 2002511070A JP 2002511070 A JP2002511070 A JP 2002511070A JP 2004503860 A JP2004503860 A JP 2004503860A
Authority
JP
Japan
Prior art keywords
program
sequence
address
signature register
stored
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.)
Withdrawn
Application number
JP2002511070A
Other languages
English (en)
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of JP2004503860A publication Critical patent/JP2004503860A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/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/74Protecting 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 operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/341Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/0806Details of the card
    • G07F7/0813Specific details related to card security
    • G07F7/082Features insuring the integrity of the data on or in the card
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/12Card verification
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/12Card verification
    • G07F7/122Online card verification

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Business, Economics & Management (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Accounting & Taxation (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

アプリケーションプログラムが不当に操作されたかどうかを判定する装置には、命令レジスタの出力及び/又はプログラムメモリのアドレスに接続されるシグネチャレジスタが設けられる。シグネチャレジスタはまた、2つのオペレーティングモードを有するプロセッサのモードビットにも接続される。第1のモードでは、シグネチャレジスタは命令レジスタの出力及び/又はプログラムメモリのアドレスを蓄積するが、シグネチャレジスタの出力は外部から識別できない。第2のモードでは、シグネチャレジスタは入力をそれ以上蓄積しないように設定される。第2のモードでは、シグネチャレジスタの内容は特定値との比較によってチェックされる。この比較値を、プログラムの関連位置にある命令に有効に含めることができる。一実施形態ではシグネチャ値は直ぐ比較されず、プログラムの無許可の操作時に比較値を容易に変更できないように値を暗号化した後に比較される。

Description

【0001】
本発明は一般に、命令シーケンスを実行するための方法及びデータ処理装置に関する。具体的には、本発明はプログラム部分を変更せずに適当な順序で実行するための方法及びデータ処理装置に関する。
【0002】
プログラムの実行において、命令シーケンスからなるプログラム部分には意図するシーケンスの流れがある。割込み要求の場合でも、このプログラム部分には典型的に予め定義した割込み出口点、割込み入口点及び割込み処理シーケンスがある。しかしながら、プログラムの順序付けで問題が起こることがある。例えば電気的な干渉信号や欠陥のある要素によって、一連の命令シーケンスの実行時にエラーが起こることがある。これらのエラーによって命令を特定の意図した順序で実行することがもはやできなくなり、プログラムシーケンスの続行も永久に妨害される。
【0003】
しかしながら、適切な動作時にプログラムの命令が特定の順序で実行されない場合もある。これらの場合は、例えばいわゆるスマートカードに関するものである。スマートカードとは、マイクロプロセッサの形式のデータ処理装置やメモリを含む平坦なカードである。スマートカードは、接点又は無線接触媒体を利用するホスト装置(例えば、読み取り装置)と共に操作される。
【0004】
この種のスマートカードは、厳しく定義した条件下でだけスマートカードメモリのデータを読み出し、かつ/又は変更することができるバンキングアプリケーションに利用することができる。さらに、典型的には与えられた他のデータ(例えば、セキュリティ関連データ)はスマートカードと読み取り装置の間でしか交換されず、外部に配布されたり外部から識別したりできない。このようなセキュリティ関連データは、例えば健康管理カードやセットトップボックスのアクセスカードとしての使用などのスマートカードの他のアプリケーションにも含まれる。
【0005】
典型的に、これらのスマートカードにあるプログラムは普通、スマートカードにデータを追加したり、スマートカードを種々のアプリケーションに適合させたり、かつ/又はさらなる使用の可能性を形成するために、変更又は補足される。スマートカードの発信者だけがこれらの変更や補足を認識するのが好ましい。しかしながら実際には、認証されていない人物がマイクロプロセッサ又はそのプログラムメモリにある命令シーケンスを変更してデータを無許可に読み取ったり不正に変更したりしようと企てることを殆ど防ぐことができない。
【0006】
参照として本明細書中に援用するドイツ特許第19804784.3号に記載されている従来技術のシステムでは、この種の操作に対して高い程度の保護を与えるスマートカードが提案されている。この目的のために、スマートカードを制御するプログラム部分と読み取り装置の相互作用は実質的に2つの命令シーケンスに細分割され、そのうち1つの命令シーケンスは変更できないように保存される。実質的な、特にセキュリティ関連データへの全てのアクセスは、システムプログラムと称する一方の命令シーケンスでのみ可能である。他方の命令シーケンスをアプリケーションプログラムと称する。命令シーケンスとプログラムは両方とも多数の個々の命令シーケンスからなる。アプリケーションプログラムで与えられた、特にセキュリティ関連データにアクセスしようとする場合、システムプログラムへのジャンプが行われる。その後アプリケーションプログラムへのジャンプが行われ、アプリケーションプログラムが続けて実行される。しかしながらこのシステムには、保護されていないアプリケーションプログラムで無許可の変更が行われ得るという問題がある。無許可の変更を行う際、システムプログラムに侵入してセキュリティ関連データへの外部アクセスを得るか又はシステムプログラムを無許可の方法で実行するために、意図した入口及び出口部分を迂回することができる。
【0007】
本発明と同じ譲受人に譲受され参照として本明細書中に援用される米国出願番号第09/365,212号に示す他の従来技術のシステムでは、アドレス又は命令のシーケンスを蓄積するためにシグネチャレジスタが利用される。シグネチャレジスタから蓄積されたアドレス又は命令は命令部分に含まれる値と比較され、意図した命令の流れが適切に変更されているかどうかを判定する。不適切な命令の流れが起こった場合、シグネチャレジスタに保存される値は命令部分にある値と対応しないため、装置の動作が終了する。シグネチャレジスタの値が無許可に変更されることを食い止めるために、時に暗号化装置を利用してシグネチャレジスタの値を秘密に変更する。しかしながら、暗号化装置における暗号化方法が無許可の改竄によって発覚してしまった場合、装置のセキュリティが損なわれる可能性がある。
【0008】
したがって本発明の目的は、従来技術の欠点を克服することである。
【0009】
本発明のさらなる目的は、命令の無許可の変更又は補足を認識できる方法及びデータ処理装置を提供することである。
【0010】
アプリケーションプログラムが不当に操作されたかどうかを判定する装置には、命令レジスタの出力及び/又はプログラムメモリのアドレスに接続されるシグネチャレジスタが設けられる。シグネチャレジスタはまた、2つのオペレーティングモードを有するプロセッサのモードビットにも接続される。第1のモードでは、シグネチャレジスタは命令レジスタの出力及び/又はプログラムメモリのアドレスを蓄積するが、シグネチャレジスタの出力は外部から識別できない。第2のモードでは、シグネチャレジスタは入力をそれ以上蓄積しないように設定される。第2のモードでは、シグネチャレジスタの内容は特定値との比較によってチェックされる。この比較値を、プログラムの関連位置にある命令に有効に含めることができる。一実施形態ではシグネチャ値は直ぐ比較されず、プログラムの無許可の操作時に比較値を容易に変更できないように値を暗号化した後に比較される。
【0011】
一実施形態では、シグネチャレジスタはメモリ管理ユニットを介してプログラムメモリのアドレスに接続される。こうして、シグネチャレジスタはプログラムメモリの実アドレスの代わりにプログラムメモリの仮想アドレスを蓄積するため、プログラムの流れを容易に特徴付けることができる。仮想アドレスは、自己相対アドレスに対応することができる。
【0012】
実施形態では、プロセッサの第1のモードが信頼されていないアプリケーションプログラムシーケンスのために保存され、プログラムの第2のモードが信頼されているプログラムシーケンスのために保存される。信頼されていないプログラムシーケンスは、装置外からの介入によって変更可能且つ識別可能なプログラムシーケンスである。信頼されているプログラムシーケンスは、装置外からの介入によって変更不可能且つ識別不可能なプログラムシーケンスである。特定の実施形態では、この装置はスマートカードに対応することができる。
【0013】
以下は、上記の特徴や利点、またその他の特徴や利点を図面に関連させて示す本発明の実施形態の説明である。図面は例示の目的で含められており本発明の範囲を表すものではないことを理解されたい。添付の図面に関連させることで、本発明を最もよく理解できる。
【0014】
以下の説明において、幾つかの用語は説明を簡単にするために特定の実施形態又はシステムに関して例示のために説明されている。しかしながら、当業者が容易に理解するように、これらの用語は本発明を容易に適用できる他の類似したアプリケーション及び実施形態も含むものと理解すべきである。
【0015】
図1は、本発明のデータ処理装置100のブロック図を示す。メモリ10は、リード13Aを介してアドレス発生器12によってアドレス指定されて連続的に読み出される命令シーケンスを含む。読み出された命令は、1回に少なくとも1つの命令を保存する命令レジスタ14に出力される。命令又はその少なくとも一部はリード15を介して種々の要素に出力される。
【0016】
これらの要素のうちの1つが命令デコーダ16である。この命令デコーダ16は特に命令の演算部を復号し、対応する制御リードを介してこの場合一般に実行装置18として示される他の要素に信号を送る。実行装置18は特に、中央処理ユニット(「CPU」)などのプロセッサやレジスタ(図示せず)を含む。
【0017】
実行装置18からアドレス発生器12へのリード19は、命令の実行が終了し次の命令を呼び出そうとするときに、制御信号をアドレス発生器12へ送る。さらにリード19は、例えば同時の命令(例えば割込み命令)に応答して、又は実行装置18で異なる命令部分がアドレス発生器12から要求された場合、制御信号をアドレス発生器12へ送る。異なる命令部分の新しいアドレスは、命令レジスタ14に存在する命令の一部分によって、リード15を介して示されるのが好ましい。この場合、この新しいアドレスとリード19の制御信号が命令シーケンスのジャンプをトリガする。
【0018】
一実施形態では、リード15はシグネチャレジスタ20の入力にも接続される。シグネチャレジスタ20はまた、リード13Bを介してアドレス発生器12の出力にも接続される。他の実施形態では、これら2つのリード13Bと15のうち1つだけをシグネチャレジスタ20に接続させることもできる。シグネチャレジスタ20は、アドレス発生器12と命令レジスタ14のいずれか又は両方から新しく受け取った値を蓄積し、保存する。シグネチャレジスタ20は、リード17Aを介して命令デコーダ16から受け取った関連信号に応答して、蓄積した値を保存する。悪意のある意図的な介入を防ぐために、シグネチャ20は受け取った値の全て又はその一部を蓄積することができることを明らかにされたい。
【0019】
シグネチャレジスタ20は、蓄積データのチェックサムの維持、蓄積データの排他的論理和(XOR)、他の公知の蓄積方法などの多くの公知の方法で値を蓄積することができる。さらに、入力値の各ビットを結合/蓄積することができ、その後保存した蓄積蓄積結果に蓄積することができる。重要なのは、蓄積方法は当業界で公知であるが選択した特定の方法は知られていないため、命令の無許可の変更又は補足を隠そうとする試みをくじくことができる点である。一実施形態では入力値の全ビットを蓄積し、他の実施形態では選択したビットだけを蓄積し、或いはこれらを組み合わせることで蓄積データの予測不能性(明らかにランダムな状態)をさらに提供することができる。
【0020】
シグネチャレジスタ20の出力21は、コンパレータ22の入力に接続する。コンパレータ22の第2の入力は、例示の実施形態ではリード15に接続される。このようにして、コンパレータ22はシグネチャレジスタ20がリード21を介して出力した値と命令デコーダ16がリード17Bを介して対応する信号を出力したときに命令部分に含まれる値とを比較する。他の実施形態では、コンパレータ22はシグネチャレジスタ20が出力した値と命令レジスタ14及びリード15を介したメモリ10の変更できない部分に含まれる値とを比較してもよい。
【0021】
シグネチャレジスタ20がリード21を介して出力した値が命令部分に含まれる値に対応しない場合、コンパレータ22はリード23を介して値と制御信号をアドレス発生器12に出力する。制御信号に応答してアドレス発生器12は所与のアドレスに設定されるため、所定の命令シーケンスが実行される。例えば所定の命令シーケンスは、装置のさらなる機能を抑止する割込み命令シーケンスであることができる。
【0022】
一実施形態では、シグネチャレジスタ20は、秘密のアルゴリズムを用いてシグネチャレジスタ20に保存された結合値から新しい値を生成する暗号化装置24を含むこともできる。この新しい値は、関連制御信号がリード17Aにあるときにシグネチャレジスタ20に保存される。次いでシグネチャレジスタ20は、暗号化装置24の暗号化アルゴリズムを知らない人物が予測できない値に基づいて他のシグネチャの作成を開始する。したがって、前の命令シーケンスを変更する場合にコンパレータ23が信号を生成したり割込み命令シーケンスへのジャンプを実行しないように、関連する命令によってコンパレータ22に出力される値を変更するのは困難である。このようにして、命令シーケンス及びこれに含まれる命令が正しい順序で実行されるかどうか、また命令が変更されているかどうかをチェックすることができる。
【0023】
チェックサムがカードリーダ28などによって外部と通信する場合、暗号化装置24によって与えられる他の暗号化や保護をさらに利用することができる。シグネチャレジスタ20が出力したチェックサムを暗号化することで、ハッカーが自動テラーマシン(ATM)などの対応する装置のリード(例えば電話線)を簡単に傍受して正しいチェックサムにパッチすることがより困難になる。
【0024】
さらに本発明によると、実行装置18からリード17Cで出力されたモード信号は、アプリケーションモードをシグネチャレジスタ20へのアクセス及び/又はこれの変更から除外するハードウェア保護として作用する。このようにして、スマートカードなどの装置100は、モード信号の形式のハードウェア制約によって決定された明確なオペレーティングモードを有する。
【0025】
一実施形態では、「アプリケーションモード」又は「ユーザモード」はモード信号の論理状態がゼロ(「ゼロモード信号」)であることによって決定される。ゼロモード信号は、信頼されていないアプリケーションを実行するために保存される。モード信号の論理状態が1(「1モード信号」)の場合は、割込みコード部分の実行を含めたシステムプログラムのために保存される。このように、モード信号はプロセッサ状態(例えば、実行装置18のCPU)の一部である。したがって、アプリケーションプログラムは、フル制御を所定の入口点からオペレーティングシステムコードに送ること以外にハードウェア制約(例えば、モード信号)によって、オペレーティングモードを「システムモード」に広げることから除外される。
【0026】
一実施形態では、アプリケーションプログラムは、「システム呼び出し」命令を起動する。命令レジスタ14からのシステム呼び出し命令は、割込み命令部分をトリガする。この実施形態では、オペレーティングシステムコードはこれらの「システム呼び出し」の割込みのための割込みハンドラとして作用する。
【0027】
動作上、シグネチャレジスタ20はチェックサム又は実行した命令及び/又は命令アドレスの他の論理演算を蓄積する。その際CPUはアプリケーションモードで作動している。ゼロモード信号はアプリケーションモードで設定されるハードウェアロックとして作用するため、シグネチャレジスタ20はいかなる方法でもアプリケーションプログラムではアクセスできない。したがって、ゼロモード信号はアプリケーションプログラムによってシグネチャレジスタ20の出力21へアクセスするのを防ぐことができる。
【0028】
システムモードではハードウェアが1モード信号によって決定されるため、シグネチャレジスタ20のチェックサム状態は他のアドレス生成の影響を受けず読み取り動作にアクセスすることができる。全ての割込みコードがシステムモードで実行されるため、割り込みコードはシグネチャレジスタ20によって加算されることから除外される。さらに、割込みプログラムのモードは割り込み入口/出口で保存/再保存されるため、シグネチャレジスタ20はコントロールが割込み出口でアプリケーションモードに戻ったときだけチェックサム処理を再開する。シグネチャレジスタ20は、コントロールが前の割込みシステムプログラムにリターンした場合はチェックサムを再開しない。こうして、CPUのモードが蓄積/停止状態を制御し、シグネチャレジスタ20の結果(例えば、チェックサム)にアクセスする。
【0029】
割込みコードをシグネチャレジスタ20の結果から除外することは、アプリケーションプログラムやその流れを固有のシグネチャによって特徴付けることを容易にするために望ましい。割込みコード部分を結果に含めると、その結果が、正確な時間や割込みコードがアプリケーションプログラムで実行された命令部分に依存することになる。割込みの発生をアプリケーションプログラムの所与の特定の部分に限定できないため、このことによってシグネチャレジスタ20に含まれる結果によって命令の流れを適切に特徴付けることがより難しくなる。
【0030】
システムモードでは、システムプログラムはシグネチャレジスタ20の結果に対する完全な制御を有する。ドイツ特許第19804784.3号に記載されたハードウェア保護メカニズムによって制御されるように、システムプログラムは「NONTRUSTED」アプリケーションプログラムから変更できない「TRUSTED」コードであるため、シグネチャレジスタ20をシステムプログラムによる変更から保護する必要がない。この特許に示されるように、システムプログラムはメモリ保護ハードウェアの完全な制御下にあるため、システムプログラムをアプリケーションプログラムによるアクセスから保護することができる。
【0031】
一実施形態では、アドレス発生器12は、メモリ10にアクセスしリード13Bを介してシグネチャレジスタ20に出力されるアドレスを制御するためにアドレスの再配置を実行するメモリ管理ユニットとして作用する。一実施形態ではシグネチャレジスタ20はアドレスのチェックサムを実行することができるのでアドレス発生器がメモリ管理ユニットとして作用するのは望ましいが、アプリケーションプログラムは定義された(例えば、固定した)メモリ位置を持たずにオンザフライでロードされてもよい。
【0032】
メモリ管理ユニットによって実行されるアドレスの再配置をしないならば、プログラム(例えば、アドレスXXへJUMPせよ)内で参照されるようなアドレスをメモリにおけるプログラムの最終的な配置のために変更すべきである。再配置ローダは、このアドレスの変更を実行することができる。しかしながら、その際シグネチャレジスタのチェックサムはもはやプログラムを特徴付けず、その新しいアドレスのプログラムが特徴付けることになる。再配置ローダは、典型的にはプログラムのアドレス部分を変更する一方でこれを例えば実行する前にメモリに送るユーティリティプログラムである。再配置ローダはプログラム実行前にプログラムを調べ、全ての基準を記号アドレス(例えば、プログラムの流れに関連し、プログラムが保存されるメモリ中の実際の位置には関連しないアドレス)からプログラムが保存されている実際のアドレスに変更する。このことに関する問題は、記号アドレスが普通は失われるためにプログラムの流れを特徴付けるためにシグネチャレジスタが利用できないことである。
【0033】
アドレス発生器12をメモリ管理ユニットとして利用することで、この問題を解決することができる。メモリ管理ユニットでは、プログラムの流れを、実行前に変化しない仮想アドレスと称することがある。仮想アドレスはアドレス発生器12によってリード13Bを介してシグネチャレジスタ20に出力される。そのためシグネチャレジスタのチェックサムはプログラムがメモリ10中で配置される実アドレスの影響を受けない。メモリ管理ユニットは仮想アドレスの実アドレスへの変更を実行し、これらの実アドレスをリード13Aを介してメモリ10に出力する。
【0034】
本実施形態では、メモリ管理ユニット又は他のアドレス独立のための手段は、プログラムのアドレスシーケンスによるプログラムの特徴付けを容易にするために望ましい。メモリ管理ユニットは、システムプログラムの完全な制御下にある。システムモードプログラムは、アプリケーションプログラムの仮想アドレスと実アドレスの対応を「知っている」。そのため、アプリケーションプログラムは、メモリにおけるアプリケーションプログラムの位置に関係なく変更されない仮想アドレスのみを参照する。したがって、シグネチャレジスタは実アドレスの影響を受けずに(仮想アドレスによって)プログラムの流れを特徴付けることができる。
【0035】
他の実施形態では、プログラム部分は自己相対アドレス指定を利用することができる。自己相対アドレス指定によって、プログラム部分が「位置独立的」になる。この方法は、シグネチャレジスタ20のチェックサムがプログラムの流れを特徴付けることができるように、相対ジャンプのようなCPUのアドレス指定モードを利用する。自己相対アドレス指定では、アプリケーションプログラムのアドレスは例えば、分岐先の現在の命令からの距離しか参照しない幾つかの基準アドレスを表している。アプリケーションプログラムが1個で動く限り、分岐の開始と終了の相対位置も一緒に移動するため、アプリケーションプログラム内の全ての分岐は変更されない。
【0036】
一実施形態では、図1に示す装置100は参照したドイツ特許第19804784.3号に記載されるようにスマートカードの制御装置を構成する。この実施形態では、リード17Bの制御信号がコンパレータ22を起動し、この信号は説明したシステムプログラムへのジャンプが実行されるジャンプ命令毎に生成されるのが好ましい。同時に、シグネチャレジスタ20はCPUからのモード信号の変化によって蓄積しないように設定される。システムプログラムは、上述のようにメモリ10の変更できない部分に保存されるのが好ましい。アプリケーションプログラムへのリターンジャンプ時だけ、シグネチャレジスタ20は解放されてモード信号によって再び蓄積する。一実施形態では、暗号化ユニット24によって生成された値は、スマートカードからのリード29の信号又は命令デコーダ16からのリード17Aの信号に応答して、シグネチャレジスタ20のチェックサムとして保存される。
【0037】
スマートカードは典型的にカードリーダと共に動作する。図1のブロック28はこのようなカードリーダを象徴的に表す。スマートカードのプログラムがジャンプを実行すると、カードリーダ28は例えばシグネチャレジスタ20の出力21の値を受け取ることができる。出力21は直接チェックサムを表してもよいし、暗号化ユニット24によって暗号化された値を表してもよい。次いでこの値はカードリーダ28の所定値と比較される。一実施形態では、カードリーダ28がスマートカードを制御することができるならば、コンパレータ22を省いてもよい。
【0038】
他の実施形態では、カードリーダ28は受け取った値から他のシグネチャを作成することもできるし、この他のシグネチャをリード29を介してシグネチャレジスタ20にリターンすることもできる。したがってスマートカードが適切な、特に操作されていないカードリーダと協働しているかどうかをチェックすることができる。
【0039】
図2は、本発明の実施の形態の命令シーケンスの実行の例示的なフローチャートを示す。示されるように、実行はスタート30から始まりそこではスマートカードをカードリーダに挿入することでこれらの導電接続又は非接触接続を確立する。続いてスタートプログラム31が実行され、このとき、例えばカードの特徴や認証テストを実施する必要があるかなどを決定するためにカードとカードリーダが種々のデータを交換する。次に、処理はアプリケーションプログラムの一部を形成するプログラムシーケンス32へと進む。プログラムシーケンス32を実行する前に(例えばプログラムシーケンス31の最終部分として又はそれより前に)、実行装置18のCPUのモード信号がゼロにクリアされることでシグネチャレジスタ20を設定して蓄積を開始させる。
【0040】
プログラムシーケンス32は、システムプログラムへのジャンプ命令を所定の位置に含む。CPUはモードビットを設定し、このことによってシグネチャレジスタ20の蓄積を停止させる。その後処理はシステム命令シーケンス33へと続く。シーケンス33は、プログラムシーケンス32の処理時に予め作成したシグネチャを確認する。続いてさらなる所定の命令34が実行され、その後にアプリケーションプログラムへのリターンジャンプが行われCPUはモードビットをクリアしてシグネチャレジスタ20の蓄積を開始する。アプリケーションプログラムはシーケンス35へと続き、そこでは新しいシグネチャがシグネチャレジスタ20によって作成される。シーケンス35におけるアプリケーションプログラムの所与の位置で又は所与の条件が満たされたときに、システムプログラムへのジャンプが再度行われCPUはモードビットを設定し、これによってシグネチャレジスタ20の蓄積が停止する。次いで処理はシーケンス36のシステム命令へと進み、作成されたシグネチャが再度テストされる。さらなるシステム命令はシーケンス37へと続く。
【0041】
一実施形態では、シーケンス37は新しい初期値の生成を組み込むことができ、先に作成したチェックサムの暗号化などのシグネチャレジスタに保存されるチェックサムの消去又は他の変更であってもよい。変更したチェックサムをシステムプログラムのシーケンス37の実行時にシステムプログラムによってシグネチャレジスタ20に書き込むことができる。この場合、アプリケーションプログラムシーケンスへのリターン時の他のチェックサム作成の基準として、変更したチェックサムを利用することができる。
【0042】
最終的にカードの所望の動作がアプリケーションプログラムの命令シーケンス38によって実行されるまで、上記を数回繰り返す。終了すると、プログラムはジャンプ命令によって再びシステムプログラムにリターンし、CPUがモードビットを設定することでシグネチャレジスタ20の蓄積を停止する。こうしてシグネチャレジスタ20の出力のシグネチャをシステム命令39によってチェックする。その後システムプログラムの終了命令40が実行されて、終了シーケンス42によって示すようにプログラムが最終的に停止しカードが取り出される。
【0043】
シグネチャレジスタからの値をシーケンス33、36又は39の命令でテストすることで期待値が存在しないことが分かった場合、シーケンス41の割込みプログラムへのジャンプが行われる。割込みプログラムはカードのさらなる外部動作を全て禁止し、直接終了42へと導く。
【0044】
最後に、上記の説明は本発明を単に例示するように意図されている。例えばシステムプログラムは、制御された方法で(例えば、時分割のための循環モードで)幾つかのアプリケーションプログラムに制御をディスパッチしてもよい。同時に、別個のアプリケーションプログラムの実行それぞれだけが対応するアプリケーションプログラムの結果をアップデートするように、システムプログラムはシグネチャレジスタ20から/シグネチャレジスタ20への対応する中間結果を保存及び再保存することができる。
【0045】
例えば、システムプログラムはチェックサムAをシグネチャレジスタ20にロードし、アプリケーションプログラムAの命令を実行し、チェックサムAに蓄積し、そして蓄積したチェックサムAを保存することができる。その後システムプログラムはチェックサムBをシグネチャレジスタ20にロードし、アプリケーションプログラムBの一部を実行し、チェックサムBに蓄積し、そしてチェックサムBを保存することができる。次いでシステムプログラムはチェックサムAをシグネチャレジスタ20に再保存し、アプリケーションプログラムAの実行などを開始する。両方(又はそれ以上)のアプリケーションプログラムをある程度まで実行してから、アプリケーションプログラムそれぞれの累積チェックサムを評価してもよい。これによってプロセッサがほぼ同時の幾つかのアプリケーションプログラムに対して「時分割」できるだけでなく、チェックサムメカニズムの「時分割」も可能になるため、シグネチャレジスタ20はほぼ同時に関与するアプリケーションプログラム全てに対して独立して動作することができる。
【0046】
他の例として、図1は特定した機能に対して別個の機能ブロックを示すが、これらの機能のうち1つ以上を単一のブロックに合体させてもよいし、別個の機能ブロックに分割してもよい。これらの機能ブロックのうち1つ以上はプロセッサの命令シーケンスによって実行されてもよいし、ハードワイヤード集積回路によって実行されてもよいし、再プログラム可能な集積回路又は任意の他の公知の手段やそれらの組み合わせによって実行されてもよいことは明らかである。
【0047】
当業者なら、特許請求の範囲の趣旨及び範囲から逸脱せずに、数々の代替的な実施形態を考案することができる。添付の特許請求の範囲を解釈する際、以下のことを理解されたい。
a) 「含む(「comprising」)」という語は、与えられた請求の範囲に挙げた他の要素や作用の存在を除外するものではない。
b) 要素の前に付く「a」又は「an」という語はこのような複数の要素の存在を除外するものではない。
c) 請求の範囲にある参照記号は、請求の範囲を限定するものではない。
d) 幾つかの「手段(「means」)」は、同じアイテム又はハードウェア又はソフトウェアによって実施される構造又は機能によって表されることがある。
【図面の簡単な説明】
【図1】本発明の実施の形態のデータ処理装置のブロック図である。
【図2】本発明の実施の形態の命令シーケンスの実行のフローチャートを示す。
【符号の説明】
10 メモリ
12 アドレス発生器
14 命令レジスタ
16 命令デコーダ
18 実行装置
20 シグネチャレジスタ
22 コンパレータ
24 暗号化装置
28 カードリーダ

Claims (16)

  1. プログラム命令シーケンスをプロセッサで実行する方法であって、
    プロセッサからの第1のモード信号に応答して、蓄積したデータの現行値の表示を行わずに、プログラム命令シーケンスの第1の部分からデータを蓄積するステップと、
    前記プロセッサからの第2のモード信号に応答して、プログラム命令シーケンスの第2の部分の実行時にプログラム命令シーケンスの前記第1の部分から蓄積したデータを判定するステップと、を含む、
    プログラム命令シーケンス実行方法。
  2. プログラム命令シーケンスの前記第1の部分から蓄積し判定されたデータと値とを比較するステップと、前記比較に応じてプログラムをさらに実行するステップと、を含む請求項1に記載の方法。
  3. プログラム命令シーケンスの前記第1の部分から蓄積したデータが、プログラム命令の実際のメモリアドレス位置に対応するプログラム命令と、プログラム命令の仮想のメモリアドレス位置に対応するプログラム命令のうちの少なくとも1つである、請求項1に記載の方法。
  4. プログラム命令シーケンスの前記第1の部分が保護されていないアプリケーションプログラムの一部であり、プログラム命令シーケンスの前記第2の部分が保護されているシステムプログラムの一部である、請求項1に記載の方法。
  5. 対応するアドレス位置を、プログラム命令シーケンスの前記第1の部分のメモリ中の実アドレスから仮想アドレスに変更するステップであって、プログラム命令シーケンスの前記第1の部分から蓄積したデータがプログラム命令の仮想アドレスであるステップを含む、請求項1に記載の方法。
  6. 前記仮想アドレスが自己相対アドレスである、請求項5に記載の方法。
  7. 判定した蓄積データと値とを比較する前に、プログラム命令シーケンスの前記第1の部分から蓄積したデータを変更するステップを含む、請求項2に記載の方法。
  8. 蓄積データが暗号化によって変更される、請求項7に記載の方法。
  9. 第1の命令シーケンスを実行し、対応する第1のモード信号を出力し、第2の命令シーケンスを実行し、対応する第2のモード信号を出力するように構成されたプロセッサと、
    前記第1のモード信号を受け取った場合に前記第1の命令シーケンスに対応するデータを蓄積し、この蓄積したデータを表示せず、前記第2のモード信号を受け取った場合にデータの蓄積を停止してこの蓄積したデータの表示を行うように構成されたシグネチャレジスタと、を含む、
    処理装置。
  10. 前記シグネチャレジスタの出力に接続され、蓄積したデータを受け取り前記蓄積したデータと値とを比較するように構成されたコンパレータを含み、前記プロセッサが比較の結果に応じてさらなる命令シーケンスを実行するように構成されている、請求項9に記載の処理装置。
  11. 前記シグネチャレジスタに接続され、第1の命令シーケンスの対応するアドレス位置を仮想アドレスに変更するように構成されたメモリマネージャを含み、前記シグネチャレジスタが前記仮想アドレスを蓄積するように構成される、請求項9に記載の処理装置。
  12. 前記仮想アドレスが自己相対アドレスに対応する、請求項11に記載の処理装置。
  13. 前記処理装置がスマートカードの一部である、請求項9に記載の処理装置。
  14. 保護されたメモリ部分と保護されていないメモリ部分を有するプロセッサ読み取り可能メモリ装置に保存されるプログラムであって、
    保護されていないメモリ部分に保存され、第1のプロセッサモード状態で対応するプログラム部分を実行したり蓄積したりする、第1のプログラムシーケンスと、
    保護されているメモリ部分に保存され、第2のプロセッサモード状態で蓄積したプログラム部分を実行したり比較したりする、第2のプログラムシーケンスと、を含む、
    プログラム。
  15. 前記第2のプログラムシーケンスが蓄積した部分と比較される値を含み、前記プログラムが前記比較の結果に応じてさらに実行するように構成される、請求項14に記載のプログラム。
  16. 前記プログラムが、蓄積した部分の暗号化部分と値とを比較するように構成される、請求項15に記載のプログラム。
JP2002511070A 2000-06-12 2001-05-14 データ処理方法及び保護された命令の実行のための装置 Withdrawn JP2004503860A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US59206000A 2000-06-12 2000-06-12
PCT/EP2001/005560 WO2001097010A2 (en) 2000-06-12 2001-05-14 Data processing method and device for protected execution of instructions

Publications (1)

Publication Number Publication Date
JP2004503860A true JP2004503860A (ja) 2004-02-05

Family

ID=24369117

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002511070A Withdrawn JP2004503860A (ja) 2000-06-12 2001-05-14 データ処理方法及び保護された命令の実行のための装置

Country Status (3)

Country Link
EP (1) EP1295200A2 (ja)
JP (1) JP2004503860A (ja)
WO (1) WO2001097010A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007524883A (ja) * 2003-02-07 2007-08-30 ブロードオン コミュニケーションズ コーポレーション 下位互換性のあるセキュアプロセッサとそれによるセキュアソフトウェアの実行方法

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7533412B2 (en) * 2002-04-23 2009-05-12 Stmicroelectronics S.A. Processor secured against traps
FR2849226B1 (fr) * 2002-12-20 2005-12-02 Oberthur Card Syst Sa Procede et dispositif de securisation de l'execution d'un programme informatique.
US20100017627A1 (en) 2003-02-07 2010-01-21 Broadon Communications Corp. Ensuring authenticity in a closed content distribution system
US7533276B2 (en) 2003-08-26 2009-05-12 Panasonic Corporation Program execution device
EP1548537A1 (en) * 2003-12-23 2005-06-29 STMicroelectronics Limited Secure processor arrangement
DE102005050767A1 (de) * 2005-10-24 2007-04-26 Robert Bosch Gmbh Instruktionsspeicherabsicherung durch Control Flow Checking
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
EP3301600B1 (en) * 2016-09-29 2021-03-31 Commsolid GmbH Method and apparatus for signature tracing
CN111083941A (zh) 2018-08-21 2020-04-28 康姆索利德有限责任公司 模数转换器
US11698969B1 (en) * 2021-06-25 2023-07-11 Amazon Technologies, Inc. Boot security of integrated circuit device

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0484348A (ja) * 1990-07-27 1992-03-17 Nec Corp Romデータ保護方式
US5754762A (en) * 1997-01-13 1998-05-19 Kuo; Chih-Cheng Secure multiple application IC card using interrupt instruction issued by operating system or application program to control operation flag that determines the operational mode of bi-modal CPU
DE19804784A1 (de) * 1998-02-06 1999-08-12 Philips Patentverwaltung Chipkarte mit integrierter Schaltung
DE19834486A1 (de) * 1998-07-31 2000-02-03 Philips Corp Intellectual Pty Verfahren und Datenverarbeitungsanordnung zum gesicherten Ausführen von Befehlen

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007524883A (ja) * 2003-02-07 2007-08-30 ブロードオン コミュニケーションズ コーポレーション 下位互換性のあるセキュアプロセッサとそれによるセキュアソフトウェアの実行方法
JP4646900B2 (ja) * 2003-02-07 2011-03-09 イグウエア インコーポレイテッド 下位互換性のあるセキュアプロセッサとそれによるセキュアソフトウェアの実行方法

Also Published As

Publication number Publication date
WO2001097010A2 (en) 2001-12-20
EP1295200A2 (en) 2003-03-26
WO2001097010A3 (en) 2002-03-21

Similar Documents

Publication Publication Date Title
JP4172745B2 (ja) プロセッサによる命令シーケンスの実行を監視する方法および監視装置
US7516902B2 (en) Protection of a microcontroller
US10509568B2 (en) Efficient secure boot carried out in information processing apparatus
US7496738B2 (en) Method of automatic control of the execution of a program by a microprocessor
US20050033969A1 (en) Secure execution architecture
CN102063591B (zh) 基于可信平台的平台配置寄存器参考值的更新方法
EP2854066A1 (en) System and method for firmware integrity verification using multiple keys and OTP memory
JP2001256460A (ja) 1チップマイクロコンピュータ及びそれを用いたicカード
US20040123132A1 (en) Enhancing data integrity and security in a processor-based system
JP2001356963A (ja) 半導体装置およびその制御装置
CN102968392A (zh) 防止存储器转储的微处理器
JP2004503860A (ja) データ処理方法及び保護された命令の実行のための装置
US7447916B2 (en) Blocking of the operation of an integrated circuit
KR20170102285A (ko) 보안 요소
US7624442B2 (en) Memory security device for flexible software environment
CN112199740B (zh) 一种加密锁的实现方法及加密锁
US20060289656A1 (en) Portable electronic apparatus and data output method therefor
JP3491273B2 (ja) チップ・カードおよびその上に情報をインポートする方法
EP1535124B1 (en) Computer architecture for executing a program in a secure of insecure mode
US20060265578A1 (en) Detection of a sequencing error in the execution of a program
JP7247638B2 (ja) 電子情報記憶媒体、icカード、改竄チェック方法、及びプログラム
US11847203B2 (en) Method, system and device for managing an execution of a program relating to part or all of a first application
CN110276213A (zh) 一种智能卡及其敏感结果的存储和校验方法
JP2000112749A (ja) 命令の保護された実行用デ―タ処理方法および装置
CN117786699A (zh) 芯片初始化方法、装置、模块、电子设备和存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080512

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080626

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090917