(57)【要約】アプリケーションプログラムが不当に操作されたかどうかを判定する装置には、命令レジスタの出力及び／又はプログラムメモリのアドレスに接続されるシグネチャレジスタが設けられる。シグネチャレジスタはまた、２つのオペレーティングモードを有するプロセッサのモードビットにも接続される。第１のモードでは、シグネチャレジスタは命令レジスタの出力及び／又はプログラムメモリのアドレスを蓄積するが、シグネチャレジスタの出力は外部から識別できない。第２のモードでは、シグネチャレジスタは入力をそれ以上蓄積しないように設定される。第２のモードでは、シグネチャレジスタの内容は特定値との比較によってチェックされる。この比較値を、プログラムの関連位置にある命令に有効に含めることができる。一実施形態ではシグネチャ値は直ぐ比較されず、プログラムの無許可の操作時に比較値を容易に変更できないように値を暗号化した後に比較される。
2004503860.tif 000002
【特許請求の範囲】
【請求項１】
プログラム命令シーケンスをプロセッサで実行する方法であって、
プロセッサからの第１のモード信号に応答して、蓄積したデータの現行値の表示を行わずに、プログラム命令シーケンスの第１の部分からデータを蓄積するステップと、
前記プロセッサからの第２のモード信号に応答して、プログラム命令シーケンスの第２の部分の実行時にプログラム命令シーケンスの前記第１の部分から蓄積したデータを判定するステップと、を含む、
プログラム命令シーケンス実行方法。
【請求項２】
プログラム命令シーケンスの前記第１の部分から蓄積し判定されたデータと値とを比較するステップと、前記比較に応じてプログラムをさらに実行するステップと、を含む請求項１に記載の方法。
【請求項３】
プログラム命令シーケンスの前記第１の部分から蓄積したデータが、プログラム命令の実際のメモリアドレス位置に対応するプログラム命令と、プログラム命令の仮想のメモリアドレス位置に対応するプログラム命令のうちの少なくとも１つである、請求項１に記載の方法。
【請求項４】
プログラム命令シーケンスの前記第１の部分が保護されていないアプリケーションプログラムの一部であり、プログラム命令シーケンスの前記第２の部分が保護されているシステムプログラムの一部である、請求項１に記載の方法。
【請求項５】
対応するアドレス位置を、プログラム命令シーケンスの前記第１の部分のメモリ中の実アドレスから仮想アドレスに変更するステップであって、プログラム命令シーケンスの前記第１の部分から蓄積したデータがプログラム命令の仮想アドレスであるステップを含む、請求項１に記載の方法。
【請求項６】
前記仮想アドレスが自己相対アドレスである、請求項５に記載の方法。
【請求項７】
判定した蓄積データと値とを比較する前に、プログラム命令シーケンスの前記第１の部分から蓄積したデータを変更するステップを含む、請求項２に記載の方法。
【請求項８】
蓄積データが暗号化によって変更される、請求項７に記載の方法。
【請求項９】
第１の命令シーケンスを実行し、対応する第１のモード信号を出力し、第２の命令シーケンスを実行し、対応する第２のモード信号を出力するように構成されたプロセッサと、
前記第１のモード信号を受け取った場合に前記第１の命令シーケンスに対応するデータを蓄積し、この蓄積したデータを表示せず、前記第２のモード信号を受け取った場合にデータの蓄積を停止してこの蓄積したデータの表示を行うように構成されたシグネチャレジスタと、を含む、
処理装置。
【請求項１０】
前記シグネチャレジスタの出力に接続され、蓄積したデータを受け取り前記蓄積したデータと値とを比較するように構成されたコンパレータを含み、前記プロセッサが比較の結果に応じてさらなる命令シーケンスを実行するように構成されている、請求項９に記載の処理装置。
【請求項１１】
前記シグネチャレジスタに接続され、第１の命令シーケンスの対応するアドレス位置を仮想アドレスに変更するように構成されたメモリマネージャを含み、前記シグネチャレジスタが前記仮想アドレスを蓄積するように構成される、請求項９に記載の処理装置。
【請求項１２】
前記仮想アドレスが自己相対アドレスに対応する、請求項１１に記載の処理装置。
【請求項１３】
前記処理装置がスマートカードの一部である、請求項９に記載の処理装置。
【請求項１４】
保護されたメモリ部分と保護されていないメモリ部分を有するプロセッサ読み取り可能メモリ装置に保存されるプログラムであって、
保護されていないメモリ部分に保存され、第１のプロセッサモード状態で対応するプログラム部分を実行したり蓄積したりする、第１のプログラムシーケンスと、
保護されているメモリ部分に保存され、第２のプロセッサモード状態で蓄積したプログラム部分を実行したり比較したりする、第２のプログラムシーケンスと、を含む、
プログラム。
【請求項１５】
前記第２のプログラムシーケンスが蓄積した部分と比較される値を含み、前記プログラムが前記比較の結果に応じてさらに実行するように構成される、請求項１４に記載のプログラム。
【請求項１６】
前記プログラムが、蓄積した部分の暗号化部分と値とを比較するように構成される、請求項１５に記載のプログラム。
【発明の詳細な説明】
【０００１】
本発明は一般に、命令シーケンスを実行するための方法及びデータ処理装置に関する。具体的には、本発明はプログラム部分を変更せずに適当な順序で実行するための方法及びデータ処理装置に関する。
【０００２】
プログラムの実行において、命令シーケンスからなるプログラム部分には意図するシーケンスの流れがある。割込み要求の場合でも、このプログラム部分には典型的に予め定義した割込み出口点、割込み入口点及び割込み処理シーケンスがある。しかしながら、プログラムの順序付けで問題が起こることがある。例えば電気的な干渉信号や欠陥のある要素によって、一連の命令シーケンスの実行時にエラーが起こることがある。これらのエラーによって命令を特定の意図した順序で実行することがもはやできなくなり、プログラムシーケンスの続行も永久に妨害される。
【０００３】
しかしながら、適切な動作時にプログラムの命令が特定の順序で実行されない場合もある。これらの場合は、例えばいわゆるスマートカードに関するものである。スマートカードとは、マイクロプロセッサの形式のデータ処理装置やメモリを含む平坦なカードである。スマートカードは、接点又は無線接触媒体を利用するホスト装置（例えば、読み取り装置）と共に操作される。
【０００４】
この種のスマートカードは、厳しく定義した条件下でだけスマートカードメモリのデータを読み出し、かつ／又は変更することができるバンキングアプリケーションに利用することができる。さらに、典型的には与えられた他のデータ（例えば、セキュリティ関連データ）はスマートカードと読み取り装置の間でしか交換されず、外部に配布されたり外部から識別したりできない。このようなセキュリティ関連データは、例えば健康管理カードやセットトップボックスのアクセスカードとしての使用などのスマートカードの他のアプリケーションにも含まれる。
【０００５】
典型的に、これらのスマートカードにあるプログラムは普通、スマートカードにデータを追加したり、スマートカードを種々のアプリケーションに適合させたり、かつ／又はさらなる使用の可能性を形成するために、変更又は補足される。スマートカードの発信者だけがこれらの変更や補足を認識するのが好ましい。しかしながら実際には、認証されていない人物がマイクロプロセッサ又はそのプログラムメモリにある命令シーケンスを変更してデータを無許可に読み取ったり不正に変更したりしようと企てることを殆ど防ぐことができない。
【０００６】
参照として本明細書中に援用するドイツ特許第１９８０４７８４．３号に記載されている従来技術のシステムでは、この種の操作に対して高い程度の保護を与えるスマートカードが提案されている。この目的のために、スマートカードを制御するプログラム部分と読み取り装置の相互作用は実質的に２つの命令シーケンスに細分割され、そのうち１つの命令シーケンスは変更できないように保存される。実質的な、特にセキュリティ関連データへの全てのアクセスは、システムプログラムと称する一方の命令シーケンスでのみ可能である。他方の命令シーケンスをアプリケーションプログラムと称する。命令シーケンスとプログラムは両方とも多数の個々の命令シーケンスからなる。アプリケーションプログラムで与えられた、特にセキュリティ関連データにアクセスしようとする場合、システムプログラムへのジャンプが行われる。その後アプリケーションプログラムへのジャンプが行われ、アプリケーションプログラムが続けて実行される。しかしながらこのシステムには、保護されていないアプリケーションプログラムで無許可の変更が行われ得るという問題がある。無許可の変更を行う際、システムプログラムに侵入してセキュリティ関連データへの外部アクセスを得るか又はシステムプログラムを無許可の方法で実行するために、意図した入口及び出口部分を迂回することができる。
【０００７】
本発明と同じ譲受人に譲受され参照として本明細書中に援用される米国出願番号第０９／３６５，２１２号に示す他の従来技術のシステムでは、アドレス又は命令のシーケンスを蓄積するためにシグネチャレジスタが利用される。シグネチャレジスタから蓄積されたアドレス又は命令は命令部分に含まれる値と比較され、意図した命令の流れが適切に変更されているかどうかを判定する。不適切な命令の流れが起こった場合、シグネチャレジスタに保存される値は命令部分にある値と対応しないため、装置の動作が終了する。シグネチャレジスタの値が無許可に変更されることを食い止めるために、時に暗号化装置を利用してシグネチャレジスタの値を秘密に変更する。しかしながら、暗号化装置における暗号化方法が無許可の改竄によって発覚してしまった場合、装置のセキュリティが損なわれる可能性がある。
【０００８】
したがって本発明の目的は、従来技術の欠点を克服することである。
【０００９】
本発明のさらなる目的は、命令の無許可の変更又は補足を認識できる方法及びデータ処理装置を提供することである。
【００１０】
アプリケーションプログラムが不当に操作されたかどうかを判定する装置には、命令レジスタの出力及び／又はプログラムメモリのアドレスに接続されるシグネチャレジスタが設けられる。シグネチャレジスタはまた、２つのオペレーティングモードを有するプロセッサのモードビットにも接続される。第１のモードでは、シグネチャレジスタは命令レジスタの出力及び／又はプログラムメモリのアドレスを蓄積するが、シグネチャレジスタの出力は外部から識別できない。第２のモードでは、シグネチャレジスタは入力をそれ以上蓄積しないように設定される。第２のモードでは、シグネチャレジスタの内容は特定値との比較によってチェックされる。この比較値を、プログラムの関連位置にある命令に有効に含めることができる。一実施形態ではシグネチャ値は直ぐ比較されず、プログラムの無許可の操作時に比較値を容易に変更できないように値を暗号化した後に比較される。
【００１１】
一実施形態では、シグネチャレジスタはメモリ管理ユニットを介してプログラムメモリのアドレスに接続される。こうして、シグネチャレジスタはプログラムメモリの実アドレスの代わりにプログラムメモリの仮想アドレスを蓄積するため、プログラムの流れを容易に特徴付けることができる。仮想アドレスは、自己相対アドレスに対応することができる。
【００１２】
実施形態では、プロセッサの第１のモードが信頼されていないアプリケーションプログラムシーケンスのために保存され、プログラムの第２のモードが信頼されているプログラムシーケンスのために保存される。信頼されていないプログラムシーケンスは、装置外からの介入によって変更可能且つ識別可能なプログラムシーケンスである。信頼されているプログラムシーケンスは、装置外からの介入によって変更不可能且つ識別不可能なプログラムシーケンスである。特定の実施形態では、この装置はスマートカードに対応することができる。
【００１３】
以下は、上記の特徴や利点、またその他の特徴や利点を図面に関連させて示す本発明の実施形態の説明である。図面は例示の目的で含められており本発明の範囲を表すものではないことを理解されたい。添付の図面に関連させることで、本発明を最もよく理解できる。
【００１４】
以下の説明において、幾つかの用語は説明を簡単にするために特定の実施形態又はシステムに関して例示のために説明されている。しかしながら、当業者が容易に理解するように、これらの用語は本発明を容易に適用できる他の類似したアプリケーション及び実施形態も含むものと理解すべきである。
【００１５】
図１は、本発明のデータ処理装置１００のブロック図を示す。メモリ１０は、リード１３Ａを介してアドレス発生器１２によってアドレス指定されて連続的に読み出される命令シーケンスを含む。読み出された命令は、１回に少なくとも１つの命令を保存する命令レジスタ１４に出力される。命令又はその少なくとも一部はリード１５を介して種々の要素に出力される。
【００１６】
これらの要素のうちの１つが命令デコーダ１６である。この命令デコーダ１６は特に命令の演算部を復号し、対応する制御リードを介してこの場合一般に実行装置１８として示される他の要素に信号を送る。実行装置１８は特に、中央処理ユニット（「ＣＰＵ」）などのプロセッサやレジスタ（図示せず）を含む。
【００１７】
実行装置１８からアドレス発生器１２へのリード１９は、命令の実行が終了し次の命令を呼び出そうとするときに、制御信号をアドレス発生器１２へ送る。さらにリード１９は、例えば同時の命令（例えば割込み命令）に応答して、又は実行装置１８で異なる命令部分がアドレス発生器１２から要求された場合、制御信号をアドレス発生器１２へ送る。異なる命令部分の新しいアドレスは、命令レジスタ１４に存在する命令の一部分によって、リード１５を介して示されるのが好ましい。この場合、この新しいアドレスとリード１９の制御信号が命令シーケンスのジャンプをトリガする。
【００１８】
一実施形態では、リード１５はシグネチャレジスタ２０の入力にも接続される。シグネチャレジスタ２０はまた、リード１３Ｂを介してアドレス発生器１２の出力にも接続される。他の実施形態では、これら２つのリード１３Ｂと１５のうち１つだけをシグネチャレジスタ２０に接続させることもできる。シグネチャレジスタ２０は、アドレス発生器１２と命令レジスタ１４のいずれか又は両方から新しく受け取った値を蓄積し、保存する。シグネチャレジスタ２０は、リード１７Ａを介して命令デコーダ１６から受け取った関連信号に応答して、蓄積した値を保存する。悪意のある意図的な介入を防ぐために、シグネチャ２０は受け取った値の全て又はその一部を蓄積することができることを明らかにされたい。
【００１９】
シグネチャレジスタ２０は、蓄積データのチェックサムの維持、蓄積データの排他的論理和（ＸＯＲ）、他の公知の蓄積方法などの多くの公知の方法で値を蓄積することができる。さらに、入力値の各ビットを結合／蓄積することができ、その後保存した蓄積蓄積結果に蓄積することができる。重要なのは、蓄積方法は当業界で公知であるが選択した特定の方法は知られていないため、命令の無許可の変更又は補足を隠そうとする試みをくじくことができる点である。一実施形態では入力値の全ビットを蓄積し、他の実施形態では選択したビットだけを蓄積し、或いはこれらを組み合わせることで蓄積データの予測不能性（明らかにランダムな状態）をさらに提供することができる。
【００２０】
シグネチャレジスタ２０の出力２１は、コンパレータ２２の入力に接続する。コンパレータ２２の第２の入力は、例示の実施形態ではリード１５に接続される。このようにして、コンパレータ２２はシグネチャレジスタ２０がリード２１を介して出力した値と命令デコーダ１６がリード１７Ｂを介して対応する信号を出力したときに命令部分に含まれる値とを比較する。他の実施形態では、コンパレータ２２はシグネチャレジスタ２０が出力した値と命令レジスタ１４及びリード１５を介したメモリ１０の変更できない部分に含まれる値とを比較してもよい。
【００２１】
シグネチャレジスタ２０がリード２１を介して出力した値が命令部分に含まれる値に対応しない場合、コンパレータ２２はリード２３を介して値と制御信号をアドレス発生器１２に出力する。制御信号に応答してアドレス発生器１２は所与のアドレスに設定されるため、所定の命令シーケンスが実行される。例えば所定の命令シーケンスは、装置のさらなる機能を抑止する割込み命令シーケンスであることができる。
【００２２】
一実施形態では、シグネチャレジスタ２０は、秘密のアルゴリズムを用いてシグネチャレジスタ２０に保存された結合値から新しい値を生成する暗号化装置２４を含むこともできる。この新しい値は、関連制御信号がリード１７Ａにあるときにシグネチャレジスタ２０に保存される。次いでシグネチャレジスタ２０は、暗号化装置２４の暗号化アルゴリズムを知らない人物が予測できない値に基づいて他のシグネチャの作成を開始する。したがって、前の命令シーケンスを変更する場合にコンパレータ２３が信号を生成したり割込み命令シーケンスへのジャンプを実行しないように、関連する命令によってコンパレータ２２に出力される値を変更するのは困難である。このようにして、命令シーケンス及びこれに含まれる命令が正しい順序で実行されるかどうか、また命令が変更されているかどうかをチェックすることができる。
【００２３】
チェックサムがカードリーダ２８などによって外部と通信する場合、暗号化装置２４によって与えられる他の暗号化や保護をさらに利用することができる。シグネチャレジスタ２０が出力したチェックサムを暗号化することで、ハッカーが自動テラーマシン（ＡＴＭ）などの対応する装置のリード（例えば電話線）を簡単に傍受して正しいチェックサムにパッチすることがより困難になる。
【００２４】
さらに本発明によると、実行装置１８からリード１７Ｃで出力されたモード信号は、アプリケーションモードをシグネチャレジスタ２０へのアクセス及び／又はこれの変更から除外するハードウェア保護として作用する。このようにして、スマートカードなどの装置１００は、モード信号の形式のハードウェア制約によって決定された明確なオペレーティングモードを有する。
【００２５】
一実施形態では、「アプリケーションモード」又は「ユーザモード」はモード信号の論理状態がゼロ（「ゼロモード信号」）であることによって決定される。ゼロモード信号は、信頼されていないアプリケーションを実行するために保存される。モード信号の論理状態が１（「１モード信号」）の場合は、割込みコード部分の実行を含めたシステムプログラムのために保存される。このように、モード信号はプロセッサ状態（例えば、実行装置１８のＣＰＵ）の一部である。したがって、アプリケーションプログラムは、フル制御を所定の入口点からオペレーティングシステムコードに送ること以外にハードウェア制約（例えば、モード信号）によって、オペレーティングモードを「システムモード」に広げることから除外される。
【００２６】
一実施形態では、アプリケーションプログラムは、「システム呼び出し」命令を起動する。命令レジスタ１４からのシステム呼び出し命令は、割込み命令部分をトリガする。この実施形態では、オペレーティングシステムコードはこれらの「システム呼び出し」の割込みのための割込みハンドラとして作用する。
【００２７】
動作上、シグネチャレジスタ２０はチェックサム又は実行した命令及び／又は命令アドレスの他の論理演算を蓄積する。その際ＣＰＵはアプリケーションモードで作動している。ゼロモード信号はアプリケーションモードで設定されるハードウェアロックとして作用するため、シグネチャレジスタ２０はいかなる方法でもアプリケーションプログラムではアクセスできない。したがって、ゼロモード信号はアプリケーションプログラムによってシグネチャレジスタ２０の出力２１へアクセスするのを防ぐことができる。
【００２８】
システムモードではハードウェアが１モード信号によって決定されるため、シグネチャレジスタ２０のチェックサム状態は他のアドレス生成の影響を受けず読み取り動作にアクセスすることができる。全ての割込みコードがシステムモードで実行されるため、割り込みコードはシグネチャレジスタ２０によって加算されることから除外される。さらに、割込みプログラムのモードは割り込み入口／出口で保存／再保存されるため、シグネチャレジスタ２０はコントロールが割込み出口でアプリケーションモードに戻ったときだけチェックサム処理を再開する。シグネチャレジスタ２０は、コントロールが前の割込みシステムプログラムにリターンした場合はチェックサムを再開しない。こうして、ＣＰＵのモードが蓄積／停止状態を制御し、シグネチャレジスタ２０の結果（例えば、チェックサム）にアクセスする。
【００２９】
割込みコードをシグネチャレジスタ２０の結果から除外することは、アプリケーションプログラムやその流れを固有のシグネチャによって特徴付けることを容易にするために望ましい。割込みコード部分を結果に含めると、その結果が、正確な時間や割込みコードがアプリケーションプログラムで実行された命令部分に依存することになる。割込みの発生をアプリケーションプログラムの所与の特定の部分に限定できないため、このことによってシグネチャレジスタ２０に含まれる結果によって命令の流れを適切に特徴付けることがより難しくなる。
【００３０】
システムモードでは、システムプログラムはシグネチャレジスタ２０の結果に対する完全な制御を有する。ドイツ特許第１９８０４７８４．３号に記載されたハードウェア保護メカニズムによって制御されるように、システムプログラムは「ＮＯＮＴＲＵＳＴＥＤ」アプリケーションプログラムから変更できない「ＴＲＵＳＴＥＤ」コードであるため、シグネチャレジスタ２０をシステムプログラムによる変更から保護する必要がない。この特許に示されるように、システムプログラムはメモリ保護ハードウェアの完全な制御下にあるため、システムプログラムをアプリケーションプログラムによるアクセスから保護することができる。
【００３１】
一実施形態では、アドレス発生器１２は、メモリ１０にアクセスしリード１３Ｂを介してシグネチャレジスタ２０に出力されるアドレスを制御するためにアドレスの再配置を実行するメモリ管理ユニットとして作用する。一実施形態ではシグネチャレジスタ２０はアドレスのチェックサムを実行することができるのでアドレス発生器がメモリ管理ユニットとして作用するのは望ましいが、アプリケーションプログラムは定義された（例えば、固定した）メモリ位置を持たずにオンザフライでロードされてもよい。
【００３２】
メモリ管理ユニットによって実行されるアドレスの再配置をしないならば、プログラム（例えば、アドレスＸＸへＪＵＭＰせよ）内で参照されるようなアドレスをメモリにおけるプログラムの最終的な配置のために変更すべきである。再配置ローダは、このアドレスの変更を実行することができる。しかしながら、その際シグネチャレジスタのチェックサムはもはやプログラムを特徴付けず、その新しいアドレスのプログラムが特徴付けることになる。再配置ローダは、典型的にはプログラムのアドレス部分を変更する一方でこれを例えば実行する前にメモリに送るユーティリティプログラムである。再配置ローダはプログラム実行前にプログラムを調べ、全ての基準を記号アドレス（例えば、プログラムの流れに関連し、プログラムが保存されるメモリ中の実際の位置には関連しないアドレス）からプログラムが保存されている実際のアドレスに変更する。このことに関する問題は、記号アドレスが普通は失われるためにプログラムの流れを特徴付けるためにシグネチャレジスタが利用できないことである。
【００３３】
アドレス発生器１２をメモリ管理ユニットとして利用することで、この問題を解決することができる。メモリ管理ユニットでは、プログラムの流れを、実行前に変化しない仮想アドレスと称することがある。仮想アドレスはアドレス発生器１２によってリード１３Ｂを介してシグネチャレジスタ２０に出力される。そのためシグネチャレジスタのチェックサムはプログラムがメモリ１０中で配置される実アドレスの影響を受けない。メモリ管理ユニットは仮想アドレスの実アドレスへの変更を実行し、これらの実アドレスをリード１３Ａを介してメモリ１０に出力する。
【００３４】
本実施形態では、メモリ管理ユニット又は他のアドレス独立のための手段は、プログラムのアドレスシーケンスによるプログラムの特徴付けを容易にするために望ましい。メモリ管理ユニットは、システムプログラムの完全な制御下にある。システムモードプログラムは、アプリケーションプログラムの仮想アドレスと実アドレスの対応を「知っている」。そのため、アプリケーションプログラムは、メモリにおけるアプリケーションプログラムの位置に関係なく変更されない仮想アドレスのみを参照する。したがって、シグネチャレジスタは実アドレスの影響を受けずに（仮想アドレスによって）プログラムの流れを特徴付けることができる。
【００３５】
他の実施形態では、プログラム部分は自己相対アドレス指定を利用することができる。自己相対アドレス指定によって、プログラム部分が「位置独立的」になる。この方法は、シグネチャレジスタ２０のチェックサムがプログラムの流れを特徴付けることができるように、相対ジャンプのようなＣＰＵのアドレス指定モードを利用する。自己相対アドレス指定では、アプリケーションプログラムのアドレスは例えば、分岐先の現在の命令からの距離しか参照しない幾つかの基準アドレスを表している。アプリケーションプログラムが１個で動く限り、分岐の開始と終了の相対位置も一緒に移動するため、アプリケーションプログラム内の全ての分岐は変更されない。
【００３６】
一実施形態では、図１に示す装置１００は参照したドイツ特許第１９８０４７８４．３号に記載されるようにスマートカードの制御装置を構成する。この実施形態では、リード１７Ｂの制御信号がコンパレータ２２を起動し、この信号は説明したシステムプログラムへのジャンプが実行されるジャンプ命令毎に生成されるのが好ましい。同時に、シグネチャレジスタ２０はＣＰＵからのモード信号の変化によって蓄積しないように設定される。システムプログラムは、上述のようにメモリ１０の変更できない部分に保存されるのが好ましい。アプリケーションプログラムへのリターンジャンプ時だけ、シグネチャレジスタ２０は解放されてモード信号によって再び蓄積する。一実施形態では、暗号化ユニット２４によって生成された値は、スマートカードからのリード２９の信号又は命令デコーダ１６からのリード１７Ａの信号に応答して、シグネチャレジスタ２０のチェックサムとして保存される。
【００３７】
スマートカードは典型的にカードリーダと共に動作する。図１のブロック２８はこのようなカードリーダを象徴的に表す。スマートカードのプログラムがジャンプを実行すると、カードリーダ２８は例えばシグネチャレジスタ２０の出力２１の値を受け取ることができる。出力２１は直接チェックサムを表してもよいし、暗号化ユニット２４によって暗号化された値を表してもよい。次いでこの値はカードリーダ２８の所定値と比較される。一実施形態では、カードリーダ２８がスマートカードを制御することができるならば、コンパレータ２２を省いてもよい。
【００３８】
他の実施形態では、カードリーダ２８は受け取った値から他のシグネチャを作成することもできるし、この他のシグネチャをリード２９を介してシグネチャレジスタ２０にリターンすることもできる。したがってスマートカードが適切な、特に操作されていないカードリーダと協働しているかどうかをチェックすることができる。
【００３９】
図２は、本発明の実施の形態の命令シーケンスの実行の例示的なフローチャートを示す。示されるように、実行はスタート３０から始まりそこではスマートカードをカードリーダに挿入することでこれらの導電接続又は非接触接続を確立する。続いてスタートプログラム３１が実行され、このとき、例えばカードの特徴や認証テストを実施する必要があるかなどを決定するためにカードとカードリーダが種々のデータを交換する。次に、処理はアプリケーションプログラムの一部を形成するプログラムシーケンス３２へと進む。プログラムシーケンス３２を実行する前に（例えばプログラムシーケンス３１の最終部分として又はそれより前に）、実行装置１８のＣＰＵのモード信号がゼロにクリアされることでシグネチャレジスタ２０を設定して蓄積を開始させる。
【００４０】
プログラムシーケンス３２は、システムプログラムへのジャンプ命令を所定の位置に含む。ＣＰＵはモードビットを設定し、このことによってシグネチャレジスタ２０の蓄積を停止させる。その後処理はシステム命令シーケンス３３へと続く。シーケンス３３は、プログラムシーケンス３２の処理時に予め作成したシグネチャを確認する。続いてさらなる所定の命令３４が実行され、その後にアプリケーションプログラムへのリターンジャンプが行われＣＰＵはモードビットをクリアしてシグネチャレジスタ２０の蓄積を開始する。アプリケーションプログラムはシーケンス３５へと続き、そこでは新しいシグネチャがシグネチャレジスタ２０によって作成される。シーケンス３５におけるアプリケーションプログラムの所与の位置で又は所与の条件が満たされたときに、システムプログラムへのジャンプが再度行われＣＰＵはモードビットを設定し、これによってシグネチャレジスタ２０の蓄積が停止する。次いで処理はシーケンス３６のシステム命令へと進み、作成されたシグネチャが再度テストされる。さらなるシステム命令はシーケンス３７へと続く。
【００４１】
一実施形態では、シーケンス３７は新しい初期値の生成を組み込むことができ、先に作成したチェックサムの暗号化などのシグネチャレジスタに保存されるチェックサムの消去又は他の変更であってもよい。変更したチェックサムをシステムプログラムのシーケンス３７の実行時にシステムプログラムによってシグネチャレジスタ２０に書き込むことができる。この場合、アプリケーションプログラムシーケンスへのリターン時の他のチェックサム作成の基準として、変更したチェックサムを利用することができる。
【００４２】
最終的にカードの所望の動作がアプリケーションプログラムの命令シーケンス３８によって実行されるまで、上記を数回繰り返す。終了すると、プログラムはジャンプ命令によって再びシステムプログラムにリターンし、ＣＰＵがモードビットを設定することでシグネチャレジスタ２０の蓄積を停止する。こうしてシグネチャレジスタ２０の出力のシグネチャをシステム命令３９によってチェックする。その後システムプログラムの終了命令４０が実行されて、終了シーケンス４２によって示すようにプログラムが最終的に停止しカードが取り出される。
【００４３】
シグネチャレジスタからの値をシーケンス３３、３６又は３９の命令でテストすることで期待値が存在しないことが分かった場合、シーケンス４１の割込みプログラムへのジャンプが行われる。割込みプログラムはカードのさらなる外部動作を全て禁止し、直接終了４２へと導く。
【００４４】
最後に、上記の説明は本発明を単に例示するように意図されている。例えばシステムプログラムは、制御された方法で（例えば、時分割のための循環モードで）幾つかのアプリケーションプログラムに制御をディスパッチしてもよい。同時に、別個のアプリケーションプログラムの実行それぞれだけが対応するアプリケーションプログラムの結果をアップデートするように、システムプログラムはシグネチャレジスタ２０から／シグネチャレジスタ２０への対応する中間結果を保存及び再保存することができる。
【００４５】
例えば、システムプログラムはチェックサムＡをシグネチャレジスタ２０にロードし、アプリケーションプログラムＡの命令を実行し、チェックサムＡに蓄積し、そして蓄積したチェックサムＡを保存することができる。その後システムプログラムはチェックサムＢをシグネチャレジスタ２０にロードし、アプリケーションプログラムＢの一部を実行し、チェックサムＢに蓄積し、そしてチェックサムＢを保存することができる。次いでシステムプログラムはチェックサムＡをシグネチャレジスタ２０に再保存し、アプリケーションプログラムＡの実行などを開始する。両方（又はそれ以上）のアプリケーションプログラムをある程度まで実行してから、アプリケーションプログラムそれぞれの累積チェックサムを評価してもよい。これによってプロセッサがほぼ同時の幾つかのアプリケーションプログラムに対して「時分割」できるだけでなく、チェックサムメカニズムの「時分割」も可能になるため、シグネチャレジスタ２０はほぼ同時に関与するアプリケーションプログラム全てに対して独立して動作することができる。
【００４６】
他の例として、図１は特定した機能に対して別個の機能ブロックを示すが、これらの機能のうち１つ以上を単一のブロックに合体させてもよいし、別個の機能ブロックに分割してもよい。これらの機能ブロックのうち１つ以上はプロセッサの命令シーケンスによって実行されてもよいし、ハードワイヤード集積回路によって実行されてもよいし、再プログラム可能な集積回路又は任意の他の公知の手段やそれらの組み合わせによって実行されてもよいことは明らかである。
【００４７】
当業者なら、特許請求の範囲の趣旨及び範囲から逸脱せずに、数々の代替的な実施形態を考案することができる。添付の特許請求の範囲を解釈する際、以下のことを理解されたい。
ａ）　「含む（「ｃｏｍｐｒｉｓｉｎｇ」）」という語は、与えられた請求の範囲に挙げた他の要素や作用の存在を除外するものではない。
ｂ）　要素の前に付く「ａ」又は「ａｎ」という語はこのような複数の要素の存在を除外するものではない。
ｃ）　請求の範囲にある参照記号は、請求の範囲を限定するものではない。
ｄ）　幾つかの「手段（「ｍｅａｎｓ」）」は、同じアイテム又はハードウェア又はソフトウェアによって実施される構造又は機能によって表されることがある。
【図面の簡単な説明】
【図１】本発明の実施の形態のデータ処理装置のブロック図である。
【図２】本発明の実施の形態の命令シーケンスの実行のフローチャートを示す。
【符号の説明】
１０　メモリ
１２　アドレス発生器
１４　命令レジスタ
１６　命令デコーダ
１８　実行装置
２０　シグネチャレジスタ
２２　コンパレータ
２４　暗号化装置
２８　カードリーダ
【図１】
2004503860.tif 000003
【図２】
2004503860.tif 000004
【国際公開パンフレット】
2004503860.tif 000005
2004503860.tif 000006
2004503860.tif 000007
2004503860.tif 000008
2004503860.tif 000009
2004503860.tif 000010
2004503860.tif 000011
2004503860.tif 000012
2004503860.tif 000013
2004503860.tif 000014
2004503860.tif 000015
2004503860.tif 000016
2004503860.tif 000017
2004503860.tif 000018
2004503860.tif 000019
2004503860.tif 000020
2004503860.tif 000021
【国際公開パンフレット（コレクトバージョン）】
2004503860.tif 000022
【国際調査報告】
2004503860.tif 000023
2004503860.tif 000024
2004503860.tif 000025