(57)【特許請求の範囲】
【請求項１】
予め記憶されたプログラムに基づいて演算を行うＩＣチップを備え、ＩＣリーダと情報通信可能なＩＣ媒体であって、
前記プログラムに含まれる命令のうち、実行中の命令が格納されたアドレスを示すプログラムカウンタを含む、実行中のプログラムに関する情報である実行情報を記憶するメモリ領域と、
前記メモリ領域に記憶された前記実行情報を読出す実行情報読出し部と、
前記ＩＣリーダと通信を行う通信部と、
前記通信部を介して実行情報読出し命令を受信すると、前記実行情報読出し部に前記実行情報を読出させ、前記実行情報読出し部が読出した前記実行情報を、前記通信部を介して前記ＩＣリーダに送信する実行情報読出し制御部と、
を備えることを特徴とするＩＣ媒体。
【請求項２】
前記ＩＣリーダに記憶され、予め定められた第１の認証情報を受信する認証情報受信部と、
予め定められた第２の認証情報を記憶領域に記憶し、前記認証情報受信部が受信する前記第１の認証情報と、前記第２の認証情報とが一致するか否かを判定する認証部と、をさらに備え、
前記実行情報読出し制御部は、前記認証部が、前記第１の認証情報と、前記第２の認証情報とが一致すると判定した場合に、前記実行情報読出し部に前記実行情報を読出させる
ことを特徴とする請求項１に記載のＩＣ媒体。
【請求項３】
前記実行情報読出し部が前記メモリ領域から読出す前記実行情報は、実行中のプログラムの引数を示す情報と、実行中のプログラムの変数を示す情報とを含む
ことを特徴とする請求項１または請求項２のいずれかに記載のＩＣ媒体。
【請求項４】
出力を拒否する対象の実行情報を特定する出力拒否情報を記憶し、前記実行情報読出し部が前記メモリ領域から読出す前記実行情報が、前記出力拒否情報を含むか否かを判定する出力可否判定部をさらに備え、
前記実行情報読出し制御部は、前記出力可否判定部が、前記実行情報は予め定められた出力拒否情報を含まないと判定した場合に、前記実行情報を送信する
ことを特徴とする請求項１から請求項３までのいずれか１項に記載のＩＣ媒体。
【請求項５】
請求項１から請求項４までのいずれか１項に記載のＩＣ媒体として、コンピュータを機能させるためのＩＣ媒体制御プログラム。
【請求項６】
予め記憶されたプログラムに基づいて演算を行い、前記プログラムに含まれる命令のうち、実行中の命令が格納されたアドレスを示すプログラムカウンタを含む、実行中のプログラムに関する情報である実行情報を記憶するメモリ領域を有するＩＣチップを備え、ＩＣリーダと情報通信可能なＩＣ媒体の実行情報読出し方法であって、
前記ＩＣ媒体の、
通信部が、前記ＩＣリーダから、実行情報読出し命令を受信するステップと、
実行情報読出し制御部が、前記通信部が前記実行情報読出し命令を受信すると、実行情報読出し部に実行情報読出し命令を行うステップと、
前記実行情報読出し部が、前記メモリ領域に記憶された前記実行情報を読出すステップと、
前記実行情報読出し制御部が、前記実行情報読出し部が読出した前記実行情報を、前記通信部を介して前記ＩＣリーダに送信するステップと、
を備えることを特徴とする実行情報読出し方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、予め記憶されたプログラムに基づいて演算を行うＩＣチップを備え、ＩＣリーダと情報通信可能なＩＣ媒体、ＩＣ媒体制御プログラム、実行情報読出し方法に関する。
【背景技術】
【０００２】
近年、ＣＰＵ（中央演算装置）や半導体メモリを備えるＩＣ（集積回路）チップを組み込んで、情報の記憶や演算を行うＩＣカードが普及している。このようなＩＣカードでは、基本ＯＳ（Operating System）の上で各種アプリケーションソフトを動作させることによって、クレジットカード、キャッシュカードとしての機能や、電子マネー、電子チケット、電子クーポンなどの機能を搭載することができる。また、認証処理などを行うアプリケーションソフトをＩＣカードに組み込んで、上述のような機能を動作させる際にユーザ認証を行い、正当なユーザにのみそれらの機能の使用を許可することも可能である。このようなＩＣカードは、非特許文献１に示されるような、国際標準化機構（ＩＳＯ）によって規格化されたコマンドに応じて処理を行う。
ＩＣチップの情報処理能力の拡大によって、このようにＩＣカードは様々な高度な機能を備えるようになってきており、処理の複雑化に伴って、ＩＣカード内部で行われる処理に不具合が発生する場合も増えてきた。ここで、一度出荷されたＩＣカードは、改ざんや盗聴の防止、セキュリティ確保のため、内部のメモリ状態、プログラムの実行状態を外部に出力しないように制限されている（例えば、特許文献１参照）。
【非特許文献１】ＩＳＯ／ＩＥＣ７８１６
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、内部のメモリ状態、プログラムの実行状態が外部から検査できない状態では、ＩＣカード内部に不具合が発生した場合に、その原因を究明する手がかりが少ないという問題がある。従来、出荷されたＩＣカードに不具合が発生した場合には、不具合状態のＩＣカードになんらかのコマンドを送信し、そのコマンドに応答して出力される情報を頼りに、内部状態を探っていた。このような方法では、手探り状態での原因追究となるため、必ずしも不具合原因の追究のために有用な情報が得られるとは限らない。
そこで、第三者からの攻撃に対するセキュリティを確保しつつ、不具合時には、内部状態を探るヒントとなる情報を取得できることが望ましい。
【０００４】
本発明は、このような状況に鑑みてなされたもので、セキュリティを確保しつつ内部の実行情報を出力するＩＣ媒体を提供する。
【課題を解決するための手段】
【０００５】
上述した課題を解決するために、本発明は、予め記憶されたプログラムに基づいて演算を行うＩＣチップを備え、ＩＣリーダと情報通信可能なＩＣ媒体であって、プログラムに含まれる命令のうち、実行中の命令が格納されたアドレスを示すプログラムカウンタを含む、実行中のプログラムに関する情報である実行情報を記憶するメモリ領域と、メモリ領域に記憶された実行情報を読出す実行情報読出し部と、ＩＣリーダと通信を行う通信部と、通信部を介して実行情報読出し命令を受信すると、実行情報読出し部に実行情報を読出させ、実行情報読出し部が読出した実行情報を、通信部を介してＩＣリーダに送信する実行情報読出し制御部と、を備えることを特徴とする。
【０００６】
また、本発明は、上述のＩＣ媒体が、ＩＣリーダに記憶され、予め定められた第１の認証情報を受信する認証情報受信部と、予め定められた第２の認証情報を記憶領域に記憶し、認証情報受信部が受信する第１の認証情報と、第２の認証情報とが一致するか否かを判定する認証部と、をさらに備え、実行情報読出し制御部は、認証部が、第１の認証情報と、第２の認証情報とが一致すると判定した場合に、実行情報読出し部に実行情報を読出させることを特徴とする。
【０００７】
また、本発明は、上述の実行情報読出し部がメモリ領域から読出す実行情報は、実行中のプログラムの引数を示す情報と、実行中のプログラムの変数を示す情報とを含むことを特徴とする。
【０００８】
また、本発明は、上述のＩＣ媒体が、出力を拒否する対象の実行情報を特定する出力拒否情報を記憶し、実行情報読出し部がメモリ領域から読出す実行情報が、出力拒否情報を含むか否かを判定する出力可否判定部をさらに備え、実行情報読出し制御部は、出力可否判定部が、実行情報は予め定められた出力拒否情報を含まないと判定した場合に、実行情報を送信することを特徴とする。
【０００９】
また、本発明は、上述のＩＣ媒体として、コンピュータを機能させるためのＩＣ媒体制御プログラムである。
【００１０】
また、本発明は、予め記憶されたプログラムに基づいて演算を行い、プログラムに含まれる命令のうち、実行中の命令が格納されたアドレスを示すプログラムカウンタを含む、実行中のプログラムに関する情報である実行情報を記憶するメモリ領域を有するＩＣチップを備え、ＩＣリーダと情報通信可能なＩＣ媒体の実行情報読出し方法であって、ＩＣ媒体の、通信部が、ＩＣリーダから、実行情報読出し命令を受信するステップと、実行情報読出し制御部が、通信部が実行情報読出し命令を受信すると、実行情報読出し部に実行情報読出し命令を行うステップと、実行情報読出し部が、メモリ領域に記憶された実行情報を読出すステップと、実行情報読出し制御部が、実行情報読出し部が読出した実行情報を、通信部を介してＩＣリーダに送信するステップと、を備えることを特徴とする。
【発明の効果】
【００１１】
以上説明したように、本発明によれば、ＩＣリーダから送信される実行情報読出し命令に応じて、プログラムカウンタを含む実行情報を送信するようにしたので、ＩＣリーダは、ＩＣ媒体内部のプログラムの実行情報を取得することができる。ここで、プログラムカウンタは、実行中の命令が格納されたアドレスを示す情報であるから、合わせてそのアドレスにどのような命令が格納されているかを認知できるユーザにのみ有用な情報であり、どのアドレスにどの命令が格納されているかを知らない第三者が、万が一ＩＣリーダを用いてプログラムカウンタを読出したとしても、著しくセキュリティを損なうものではない。
【００１２】
また、本発明によれば、ＩＣカードから認証情報を受信し、受信した認証情報と予め定められた認証情報とが一致する場合に、実行情報を読出すようにしたので、予め定められた認証情報を送信するＩＣリーダからのみの実行情報読出し命令に応じて、実行情報の読出しを行うことができる。
【００１３】
また、本発明によれば、実行情報読出し命令に応じて読出した実行情報が、予め定められた出力拒否情報を含まないと判定した場合に、実行情報を送信するようにしたので、実行情報読出し命令に対して出力しない情報を予め定めることができる。これにより、予め定められた情報の流出を防ぐことができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の一実施形態について、図面を参照して説明する。
図１は、本実施形態によるＩＣカード１００の構成を示すブロック図である。ＩＣカード１００は、ＩＣカードリーダ２００との情報通信が可能であり、通信部１１０と、アプリケーション機能部としての実行情報読出し制御部１２０、認証部１４０、出力可否判定部１５０と、ＯＳ機能部としての実行情報読出し部１３０、スタック領域１６０、制御部１７０とを備えている。
【００１５】
通信部１１０は、ＩＣカードリーダ２００との情報通信を行う。通信部１１０とＩＣカードリーダ２００との情報通信は、ＩＣカード１００が備えるＩＣチップに接続され、外部に露出された外部端子とＩＣカードリーダ２００とが接触して通信を行うようにしても良いし、通信部１１０は無線通信可能なアンテナを備えることとして、ＩＣカードリーダ２００と非接触で通信を行うようにしても良い。
【００１６】
実行情報読出し制御部１２０は、ＩＣカード１００による実行情報の読出しと出力を制御する。実行情報読出し制御部１２０は、通信部１１０を介してＩＣカードリーダ２００から送信される実行情報読出し命令を受信し、また、後述する実行情報読出し部１３０によってスタック領域１６０から読出された実行状態情報を、通信部１１０を介してＩＣカードリーダ２００に送信する。実行情報読出し制御部１２０は、ＩＣカードリーダ２００から実行情報読出し命令を受信した場合には、後述する認証部１４０による認証処理によって認証成功となった場合に、実行情報読出し部１３０に実行情報の読出し命令を行う。また、実行情報読出し制御部１２０は、実行情報読出し部１３０がスタック領域１６０から実行状態情報を読出すと、後述する出力可否判定部１５０によって出力可否判定を行い、出力可否判定部１５０が出力可と判定した場合に、ＩＣカードリーダ２００に実行状態情報を送信する。
【００１７】
認証部１４０は、実行情報読出し制御部１２０から認証命令を受信すると、認証処理を行う。認証部１４０は、例えば、予め定められたＰＩＮ（Personal Identification Number）コードを自部内の記憶領域に記憶しておき、ＩＣカードリーダ２００から送信されるＰＩＮコードを受信すると、予め記憶したＰＩＮコードと比較し、一致すれば認証成功と、一致しなければ認証失敗と判定して認証結果を出力する。認証部１４０は、ＰＩＮによる認証の他、秘密鍵、公開鍵、電子証明書などの技術を用いてＩＣカードリーダ２００の認証を行うようにしても良い。
【００１８】
出力可否判定部１５０は、後述する実行情報読出し部１３０がスタック領域１６０から読出した実行情報の出力を許可するか否かを判定する。出力可否判定部１５０は、出力を拒否する情報を識別するための拒否識別情報を予め記憶領域に記憶しておく。例えば、出力可否判定部１５０は、ＩＣカード１００内部に記憶された鍵情報を識別するための情報を拒否識別情報として予め記憶しておき、実行情報読出し制御部１２０から出力可否判定部１５０に入力される実行情報が、予め記憶した鍵情報を含むか否かを判定し、予め記憶した鍵情報を含まない場合には出力許可とし、予め記憶した鍵情報を含む場合には出力拒否とする判定結果を出力する。このように、ユーザは、出力を拒否する拒否識別情報を予め記憶しておくことで、鍵情報などの、セキュリティを確保するために流出を防ぎたい情報を出力しないようにすることができる。
【００１９】
スタック領域１６０は、ＩＣカード１００の内部に搭載されたＯＳが、プロセッサを用いて演算処理を行う際に利用する記憶領域である。従来、コンピュータの制御を行うプロセッサ（中央処理装置、ＣＰＵ）は、プログラムを構成する関数（メソッド）を実行する場合に、ＲＡＭ（Random Access Memory）などの記憶媒体に、実行する関数を記憶させるメモリ領域としてスタック領域を割り当てる。このような関数の実行情報は、制御部１７０によって、スタック領域１６０に、関数毎（サブルーチン毎）にフレーム１６１として割り当てられる領域に記憶され、それぞれのフレーム１６１には、引数１６２、変数１６３、プログラムカウンタ１６４などの実行情報が記憶される。
【００２０】
ここで、引数１６２は、フレーム１６１に対応する関数に対する引数である。変数１６３は、フレーム１６１に対応する関数において利用される変数である。プログラムカウンタ１６４は、制御部１７０が次に実行する命令のアドレスを示す情報である。この他にも、スタック領域１６０には、関数から処理が戻った際に実行される命令が記憶された位置を示すリターンアドレスや、関数の呼び出し元のスタック領域１６０の開始位置を示すフレームポインタなどが記憶される。本実施形態では、このようなスタック領域１６０に記憶されたそれぞれのフレーム１６１は、関数が呼び出される毎に割り当てられ、その関数の終了時に解放される。
【００２１】
実行情報読出し部１３０は、実行情報読出し制御部１２０から実行情報読出し命令を受信すると、スタック領域１６０に記憶された、引数１６２と、変数１６３と、プログラムカウンタ１６４とを含む実行情報を読出し、実行情報読出し制御部１２０に送信する。実行情報読出し部１３０は、ＩＣカード１００のＯＳ機能部として格納されており、実行情報読出し部１３０への処理要求は、ＯＳ機能部のＡＰＩ（Application Program Interface）としてアプリケーション（実行情報読出し制御部１２０）に公開する。
【００２２】
次に、図２を参照して、本発明によるＩＣカード１００が、ＩＣカードリーダ２００からの命令に応答して実行情報を出力する動作例を説明する。
ＩＣカードリーダ２００は、ユーザから実行情報読出し要求が入力されると、実行情報読出し命令コマンドと、予め定められたＰＩＮコードとを、ＩＣカード１００に送信する。ＩＣカード１００の実行情報読出し制御部１２０が、通信部１１０を介してＩＣカードリーダ２００から送信される実行情報読出し命令とＰＩＮコードとを受信すると（ステップＳ１）、認証部１４０が、実行情報読出し制御部１２０が受信したＰＩＮコードの認証処理を行う（ステップＳ２）。認証部１４０は、認証処理として、実行情報読出し制御部１２０が受信したＰＩＮコードと、予め自部の記憶領域に記憶されたＰＩＮコードとが一致するか否かを判定し、一致すれば、認証成功とし、一致しなければ、認証失敗とする認証結果を出力する。
【００２３】
実行情報読出し制御部１２０は、ステップＳ２で、認証部１４０が認証失敗と判定すれば、処理を終了する（ステップＳ２−ＮＯ）。一方、ステップＳ２で、認証部１４０が認証成功と判定すれば、実行情報読出し制御部１２０は、実行情報読出し部１３０に実行情報読出し命令を送信する。実行情報読出し部１３０は、実行情報読出し制御部１２０から実行情報読出し命令を受信すると、スタック領域１６０に記憶されたフレーム１６１に記憶された引数１６２、変数１６３、プログラムカウンタ１６４を読出す。この際、実行情報読出し部１３０は、スタック領域１６０が有す全てのフレーム１６１を読出しても良いし、スタック領域１６０に最後に記憶されたフレーム１６１を読出すようにしても良い。
【００２４】
実行情報読出し部１３０は、読出した引数１６２と、変数１６３と、プログラムカウンタ１６４とを、実行情報として、実行情報読出し制御部１２０に送信する（ステップＳ３）。そして、出力可否判定部１５０は、実行情報読出し部１３０が読出した実行情報に、自部の記憶領域に記憶された、予め記憶された情報と一致する情報が含まれているか否かを判定する。ここで、出力可否判定部１５０が自部の記憶領域に予め記憶された情報とは、例えば、ＩＣカード１００が記憶する鍵情報などである。
【００２５】
出力可否判定部１５０は、実行情報読出し部１３０が読出した実行情報に、自部の記憶領域に記憶された、予め記憶された情報と一致する情報が含まれていなければ、出力可と判定し、予め記憶された情報と一致する情報が含まれていれば、出力不可と判定する出力可否判定処理を行う（ステップＳ４）。
【００２６】
ステップ４で、出力可否判定部１５０が、出力不可と判定すれば、実行情報読出し制御部１２０は、処理を終了する（ステップＳ４−ＮＯ）。一方、ステップ４で、出力可否判定部１５０が、出力可と判定すれば、実行情報読出し制御部１２０は、ステップＳ３で実行情報読出し部１３０が読出した実行情報を、ＩＣカードリーダ２００に送信する（ステップＳ５）。
【００２７】
このように、ＩＣカードリーダ２００は、実行情報読出し命令をＩＣカード１００に送信することで、ＩＣカード１００の内部のメモリ状態を取得することができる。そして、ＩＣカードリーダ２００が取得した実行情報を、ディスプレイなどの表示部にユーザに視認可能に表示すれば、ユーザは、ＩＣカードリーダ２００の内部のメモリ状態を知ることができ、ＩＣカードリーダ２００の不具合の原因究明に役立てることができる。すなわち、ユーザは、ＩＣカード１００に記憶されたプログラムカウンタを知ることで、どの処理で処理が止まったかを推定することができる。また、プログラムカウンタは、実行中の命令が格納されたアドレスを示す情報であるから、合わせてそのアドレスにどのような命令が格納されているかを認知できるユーザにのみ有用な情報であり、どのアドレスにどの命令が格納されているかを知らない第三者が、万が一ＩＣリーダを用いてプログラムカウンタを読出したとしても、著しくセキュリティを損なうものではない。
【００２８】
なお、本実施形態において、ステップＳ１でＩＣカード１００が受信するＰＩＮコードは、暗号化されたＰＩＮコードを受信するようにしても良い。
また、本実施形態では、ＩＣカードリーダ２００は、ユーザから実行情報読出し要求が入力されると、実行情報読出し命令コマンドをＩＣカード１００に送信することとした。すなわち、ユーザは、不具合の発生したＩＣカード１００に対してＩＣカードリーダ２００に実行情報読出し命令コマンドを送信させても良いし、不具合の発生していないＩＣカード１００に対しても、内部状態の検査などのために実行情報読出し命令コマンドを送信させても良い。また、ＩＣカードリーダ２００は、ＩＣカード１００の動作時に、ＩＣカード１００からエラーコードが出力されたような場合に、実行情報読出し命令コマンドをＩＣカード１００に送信するようにしても良い。
【００２９】
また、本実施形態では、ステップＳ１にて、ＩＣカード１００は、ＩＣカードリーダ２００から、実行情報読出し要求とともにＰＩＮコードを受信することとしたが、実行情報読出し制御部１２０が実行情報読出し要求を受信した後、認証部１４０が、通信部１１０を介して認証情報要求をＩＣカードリーダ２００に送信し、ＰＩＮコード等の認証情報を取得して認証処理を行うこととしても良い。
また、本実施形態では、ＩＣ媒体として、ＩＣカード１００を例にして説明したが、予め記憶されたプログラムに基づいて演算を行うＩＣチップを備えたＩＣ媒体であれば、携帯電話、ＩＣタグ、ＲＦＩＤ（Radio Frequency IDentification）、パスポートなどを適用しても良い。
【００３０】
このように、本発明によれば、ＩＣカード内部のプログラムのエラーの解析を支援することができる。すなわち、従来、ＩＣカード上で動作するプログラムにおいてエラーが起こった場合、プログラムソース上のどこまで実行が行われていたかを知る手段が用意されておらず、エラーの原因箇所の特定が困難であった。そこで、本発明は、ＩＣカードのＯＳに、セキュリティを保ちつつプログラムの実行状態を出力する機能を付加し、プログラムの実行時に起こるエラーの原因特定を容易にするものである。
【００３１】
なお、本発明におけるＩＣ媒体の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより実行情報読出しを行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００３２】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【図面の簡単な説明】
【００３３】
【図１】本発明の一実施形態によるＩＣカードの構成を示す図である。
【図２】本発明の一実施形態によるＩＣカードの動作例を示すフローチャートである。
【符号の説明】
【００３４】
１００  ＩＣカード
１１０  通信部
１２０  実行情報読出し制御部
１３０  実行情報読出し部
１４０  認証部
１５０  出力可否判定部
１６０  スタック領域
１６１  フレーム
１６２  引数
１６３  変数
１６４  プログラムカウンタ
１７０  制御部
２００  ＩＣカードリーダ
【図１】
0005157432.tif 000002
【図２】
0005157432.tif 000003