(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-09-30
(45)【発行日】2024-10-08
(54)【発明の名称】ICカード、半導体チップ、内部状態復元方法およびコンピュータプログラム
(51)【国際特許分類】
G06F 11/14 20060101AFI20241001BHJP
G06K 19/07 20060101ALI20241001BHJP
G06K 19/073 20060101ALI20241001BHJP
【FI】
G06F11/14 602D
G06K19/07 230
G06K19/073
(21)【出願番号】P 2023120325
(22)【出願日】2023-07-24
【審査請求日】2023-11-01
【早期審査対象出願】
(73)【特許権者】
【識別番号】000002897
【氏名又は名称】大日本印刷株式会社
(74)【代理人】
【識別番号】100122529
【氏名又は名称】藤枡 裕実
(74)【代理人】
【識別番号】100135954
【氏名又は名称】深町 圭子
(74)【代理人】
【識別番号】100119057
【氏名又は名称】伊藤 英生
(74)【代理人】
【識別番号】100131369
【氏名又は名称】後藤 直樹
(74)【代理人】
【識別番号】100171859
【氏名又は名称】立石 英之
(72)【発明者】
【氏名】飯塚 健太
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2019-008671(JP,A)
【文献】米国特許出願公開第2010/0122056(US,A1)
【文献】米国特許出願公開第2004/0006486(US,A1)
【文献】特開2004-341892(JP,A)
【文献】特開昭62-154083(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/14
G06K 19/07
G06K 19/073
(57)【特許請求の範囲】
【請求項1】
先頭と末尾を論理的に繋げたリング状をなした環状領域を有し、
前記環状領域におけるデータの書き込み位置を示すポインタを制御することで前記環状領域を循環的に利用して
、内部状態を表わす状態データを
複数格納できるように構成した環状記憶部と、
外部装置から受信したコマンドを実行すると、前記ポインタの位置を使用して前記環状領域における最新の前記状態データを判別し、この時点の前記状態データと最新の前記状態データを比較することで、前記状態データが前記コマンドの実行によって更新され
たか否かを判定し、前記状態データが更新されたと判定すると、前記状態データを識別するための
番号である状態識別情報を付与した更新後の前記状態データを前記環状記憶部の前記環状領域に記憶
し、前記状態識別情報となる番号の値を1つ増やす状態保存手段と、
外部装置から指定された前記状態識別情報が付与された前記状態データを前記環状記憶部の前記環状領域から読み出し、前記環状記憶部の前記環状領域から読み出した前記状態データに対応する内部状態を復元する状態復元手段を、
備えたICカード。
【請求項2】
ICカードに実装する半導体チップであって、
先頭と末尾を論理的に繋げたリング状をなした環状領域を有し、
前記環状領域におけるデータの書き込み位置を示すポインタを制御することで前記環状領域を循環的に利用して
、内部状態を表わす状態データを
複数格納できるように構成した環状記憶部と、
外部装置から受信したコマンドを実行すると、前記ポインタの位置を使用して前記環状領域における最新の前記状態データを判別し、この時点の前記状態データと最新の前記状態データを比較することで、前記状態データが前記コマンドの実行によって更新され
たか否かを判定し、前記状態データが更新されたと判定すると、前記状態データを識別するための
番号である状態識別情報を付与した更新後の前記状態データを前記環状記憶部の前記環状領域に記憶
し、前記状態識別情報となる番号の値を1つ増やす状態保存手段と、
外部装置から指定された前記状態識別情報が付与された前記状態データを前記環状記憶部の前記環状領域から読み出し、前記環状記憶部の前記環状領域から読み出した前記状態データに対応する内部状態を復元する状態復元手段を、
備えた半導体チップ。
【請求項3】
先頭と末尾を論理的に繋げたリング状をなした環状領域を有し、
前記環状領域におけるデータの書き込み位置を示すポインタを制御することで前記環状領域を循環的に利用して、
内部状態を表わす状態データを
複数格納できるように構成した環状記憶部を有するICカードが、
外部装置から受信したコマンドを実行すると、前記ポインタの位置を使用して前記環状領域における最新の前記状態データを判別し、この時点の前記状態データと最新の前記状態データを比較することで、前記状態データがコマンドの実行によって更新され
たか否かを判定し、前記状態データが更新されたと判定すると、前記状態データを識別するための
番号である状態識別情報を付与した更新後の前記状態データを
前記環状領域に記憶
し、前記状態識別情報となる番号の値を1つ増やすステップaと、
ICカードが、外部装置から指定された前記状態識別情報が付与された前記状態データを前記環状領域から読み出し、前記環状領域から読み出した前記状態データに対応する内部状態を復元するステップbを、
含む内部状態復元方法。
【請求項4】
先頭と末尾を論理的に繋げたリング状をなした環状領域を有し、
前記環状領域におけるデータの書き込み位置を示すポインタを制御することで前記環状領域を循環的に利用して、
内部状態を表わす状態データを
複数格納できるように構成した環状記憶部と、
外部装置から受信したコマンドを実行すると、前記ポインタの位置を使用して前記環状領域における最新の前記状態データを判別し、この時点の前記状態データと最新の前記状態データを比較することで、前記状態データ前記コマンドの実行によって更新され
たか否かを判定し、前記状態データが更新されたと判定すると、前記状態データを識別するための
番号である状態識別情報を付与した更新後の前記状態データを前記環状記憶部の前記環状領域に記憶
し、前記状態識別情報となる番号の値を1つ増やす状態保存手段と、
外部装置から指定された前記状態識別情報が付与された前記状態データを前記環状記憶部の前記環状領域から読み出し、前記環状記憶部の前記環状領域から読み出した前記状態データに対応する内部状態を復元する状態復元手段として、
ICカードに実装する半導体チップのプロセッサを機能させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、ICカードの内部状態を復元する技術に関する。
【背景技術】
【0002】
ICカードは高いセキュリティが求められる分野で普及しており、ICカードに実装したソフトウェアが正常に動作するか否かの検査が重要になっている。しかし、ICカードに求められる機能が複雑化して、ICカードの内部状態の数やコマンド数が増加している。このため、ICカードの内部状態ごとにコマンドを実行して、コマンドが正常に動作することを確認しようとすると、ICカードの検査内容が増え、ICカードの動作を検査する検査者の負担も増加する。
【0003】
この問題の解決に対しては、ICカードの設計段階から検査の容易さを考慮することが重要となる。例えば、特許文献1で開示された発明では、この問題を解決するために、特定のコマンドまたは自動保存機能によりICカードの内部状態を表わす状態データを保存し、保存した状態データを使用して内部状態を復元する方法などを提案している。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、一般的なパーソナルコンピュータと比較して、ICカードのメモリサイズは小さい。このため、ICカードの内部状態が多い場合、全ての状態データを保存できる領域をICカードのメモリに確保できない。よって、状態データの保存に使用する領域内に状態データを保存するための空き領域がない場合、古いデータから優先して削除することが必要になる。
【0006】
上述した通り、ICカードの設計段階から検査の容易さを考慮することが重要となるが、特許文献1で開示された発明は、状態データの保存に使用する領域内に状態データを保存するための空き領域がない場合、古いデータから優先して削除することを考慮して設計されていない。
【0007】
そこで、本願では、ICカードの内部状態を表わす状態データを保存し、保存した状態データを使用してICカードの内部状態を復元する機能と、状態データの保存に使用する領域内に状態データを保存するための空き領域がない場合、古いデータから優先して削除することに適したメモリ管理を備えたICカードを提案する。
【課題を解決するための手段】
【0008】
上述した課題を解決する第1発明は、先頭と末尾を論理的に繋げたリング状をなした環状領域を有し、前記環状領域におけるデータの書き込み位置を示すポインタを制御することで前記環状領域を循環的に利用して、内部状態を表わす状態データを複数格納できるように構成した環状記憶部と、外部装置から受信したコマンドを実行すると、前記ポインタの位置を使用して前記環状領域における最新の前記状態データを判別し、この時点の前記状態データと最新の前記状態データを比較することで、前記状態データが前記コマンドの実行によって更新されたか否かを判定し、前記状態データが更新されたと判定すると、前記状態データを識別するための番号である状態識別情報を付与した更新後の前記状態データを前記環状記憶部の前記環状領域に記憶し、前記状態識別情報となる番号の値を1つ増やす状態保存手段と、外部装置から指定された前記状態識別情報が付与された前記状態データを前記環状記憶部の前記環状領域から読み出し、前記環状記憶部の前記環状領域から読み出した前記状態データに対応する内部状態を復元する状態復元手段を備えたICカードである。
【0009】
第2発明は、ICカードに実装する半導体チップであって、先頭と末尾を論理的に繋げたリング状をなした環状領域を有し、前記環状領域におけるデータの書き込み位置を示すポインタを制御することで前記環状領域を循環的に利用して、内部状態を表わす状態データを複数格納できるように構成した環状記憶部と、外部装置から受信したコマンドを実行すると、前記ポインタの位置を使用して前記環状領域における最新の前記状態データを判別し、この時点の前記状態データと最新の前記状態データを比較することで、前記状態データが前記コマンドの実行によって更新されたか否かを判定し、前記状態データが更新されたと判定すると、前記状態データを識別するための番号である状態識別情報を付与した更新後の前記状態データを前記環状記憶部の前記環状領域に記憶し、前記状態識別情報となる番号の値を1つ増やす状態保存手段と、外部装置から指定された前記状態識別情報が付与された前記状態データを前記環状記憶部の前記環状領域から読み出し、前記環状記憶部の前記環状領域から読み出した前記状態データに対応する内部状態を復元する状態復元手段を備えた半導体チップである。
【0010】
第3発明は、先頭と末尾を論理的に繋げたリング状をなした環状領域を有し、前記環状領域におけるデータの書き込み位置を示すポインタを制御することで前記環状領域を循環的に利用して、内部状態を表わす状態データを複数格納できるように構成した環状記憶部を有するICカードが、外部装置から受信したコマンドを実行すると、前記ポインタの位置を使用して前記環状領域における最新の前記状態データを判別し、この時点の前記状態データと最新の前記状態データを比較することで、前記状態データがコマンドの実行によって更新されたか否かを判定し、前記状態データが更新されたと判定すると、前記状態データを識別するための番号である状態識別情報を付与した更新後の前記状態データを前記環状領域に記憶し、前記状態識別情報となる番号の値を1つ増やすステップaと、ICカードが、外部装置から指定された前記状態識別情報が付与された前記状態データを前記環状領域から読み出し、前記環状領域から読み出した前記状態データに対応する内部状態を復元するステップbを含む内部状態復元方法である。
【0011】
第4発明は、先頭と末尾を論理的に繋げたリング状をなした環状領域を有し、前記環状領域におけるデータの書き込み位置を示すポインタを制御することで前記環状領域を循環的に利用して、内部状態を表わす状態データを複数格納できるように構成した環状記憶部と、外部装置から受信したコマンドを実行すると、前記ポインタの位置を使用して前記環状領域における最新の前記状態データを判別し、この時点の前記状態データと最新の前記状態データを比較することで、前記状態データ前記コマンドの実行によって更新されたか否かを判定し、前記状態データが更新されたと判定すると、前記状態データを識別するための番号である状態識別情報を付与した更新後の前記状態データを前記環状記憶部の前記環状領域に記憶し、前記状態識別情報となる番号の値を1つ増やす状態保存手段と、外部装置から指定された前記状態識別情報が付与された前記状態データを前記環状記憶部の前記環状領域から読み出し、前記環状記憶部の前記環状領域から読み出した前記状態データに対応する内部状態を復元する状態復元手段として、ICカードに実装する半導体チップのプロセッサを機能させるコンピュータプログラムである。
【発明の効果】
【0012】
本願の課題を解決するため、本願で開示する発明では、先頭と末尾を論理的に繋げたリング状をなした環状領域を状態データの保存領域に用い、環状領域に状態データを循環的に格納できるようにしている。
【図面の簡単な説明】
【0013】
【
図1】ICカードが備えるハードウェア要素を示した図。
【
図2】ICカードが備えるソフトウェア要素を示した図。
【
図5】ICカードが実行する一連の処理を説明する図。
【発明を実施するための形態】
【0014】
ここから,本願で開示する本発明に係る実施形態について記載する。本実施形態は,本発明の理解を容易にするためのものである。本発明は,周知技術を利用することで、本実施形態ではない様々に形態に変更できる。また,特に断りのない限り,図面は,本発明の理解を容易にするために描かれた模式的な図である。
【0015】
先ず、ICカード1について説明する。
図1では、ICカード1が備えるハードウェア要素を示している。
図1で示した通り、本願で開示するICカード1は、本願で開示する半導体チップ2を実装したカード型のデバイスである。
【0016】
図1で図示したICカード1は、クレジットカードと同様な形状になっているが、本願で開示するICカード1には、スマートフォンなどのモバイル端末に装着するSIM(Subscriber Identity Module)も含まれる。また、
図1で図示したICカード1は、コンタクト端子1aを有する接触型になっているが、ICカード1は、アンテナを有する非接触型でもよい。なお、本願で開示する半導体チップ2は、ICカード1ではないデバイスにも実装可能である。例えば、IoTデバイス(IoT: Internet of Things)にも、本願で開示する半導体チップ2を実装できる。
【0017】
ここから、ICカード1について詳細に説明するが、ICカード1の説明は、本願で開示する半導体チップ2の説明も兼ねている。本願で開示する半導体チップ2の説明に関しては、これ以降の「ICカード1」を「半導体チップ2」に読み替えて頂きたい。
【0018】
図1で図示しているプロセッサ20は、ICカード1の内部で処理を行うための中央演算処理装置である。ROM22は、読み取り専用メモリで、プログラムやデータを保存するためのメモリである。RAM21は、揮発性メモリで、プログラムやデータを一時的に保存するための作業用メモリである。NVM23は、電気的に書き換え可能な不揮発性メモリで、ロードしたプログラムやデータを保存するためのメモリである。インタフェース回路24は、ICカード1と外部機器との通信を行うための回路で、通信プロトコルを制御する機能を有する。インタフェース回路24の仕様は、半導体チップ2を実装するデバイスによって異なる。例えば、ICカード1が接触型の場合、インタフェース回路24は、ISO7816規格の通信プロトコルに従い動作する回路になる。また、ICカード1が非接触型の場合、インタフェース回路24は、ISO14443規格の通信プロトコルに従い動作する回路になる。更に、半導体チップ2をIoTデバイスに実装する場合、インタフェース回路24は、無線通信の規格に従い動作する回路になる。
【0019】
図2では、ICカード1が備えるソフトウェア要素を示している。ICカード1は、ICカード1の内部状態を表わす状態データ13を記憶する。また、ICカード1は、ICカード1(詳しくは、半導体チップ2が有するプロセッサ20)を動作させるプログラムを利用して実現される機能として、複数のコマンド14と、コマンドディパーチャー15を備える。更に、ICカード1は、このプログラムを利用して実現される機能として、環状記憶部12、状態保存手段10および状態復元手段11を備える。
【0020】
ICカード1には、ICカード1で必要となる複数のコマンド14が実装される。コマンド14のプログラムコードは、ROM22またはNVM23に格納される。ICカード1が備えるコマンド14には、例えば、NVM23に格納されたファイルを選択する選択コマンド、PIN(Personal Identification Number)またはパスワードを照合するベリファイコマンド、暗号鍵を照合する認証コマンドなどが含まれる。
【0021】
本実施形態では、外部装置から受信したコマンドメッセージに対応するコマンド14を実行する機能のことをコマンドディパーチャー15としている。コマンドメッセージは、ICカード1に処理させるコマンド14の識別子と、このコマンド14の実行に必要なデータなどを含んでいる。本実施形態に係るコマンドディパーチャー15は、外部装置からのコマンドメッセージを受信すると、外部装置から受信したコマンドメッセージを解析して、外部装置から受信したコマンドメッセージに対応するコマンド14を実行させる。コマンドディパーチャー15は、コマンド14の処理が終了すると、これ以降で詳細に説明する状態保存手段10を呼び出し、状態保存手段10の処理が終了すると、コマンド14の実行結果を示すレスポンスメッセージを外部装置へ送信する。
【0022】
ICカード1の内部状態を表わす状態データ13は、半導体チップ2が有するRAM21に記憶され、特定のコマンド14によって操作されるデータである。ICカード1の場合、ICカード1の内部状態を表わすデータとして、ICカード1においてカレント状態に設定されているファイルに関する情報を利用できる。
【0023】
図3は、NVM23に格納されるファイルの階層構造を示している。
図3で示した通り、NVM23に格納されるファイルの階層構造は、ファイルとして、MF30(Master File)、DF31(Dedicated File)、EF32(Elementary File)を含んでいる。MF30は、ファイルの階層構造の基幹となるファイルである。NVM23に格納されるすべてのファイルは、MF30に関連付けられている。DF31は、EF32を分類・整理するためのファイルである。EF32は、作業データを記憶するファイルである。カレント状態のファイルは、選択コマンドによって選択されたファイルになる。なお、ICカード1の起動直後は、MF30が自動選択される。
【0024】
ICカード1においてカレント状態に設定されているファイルに関する情報には、以下の情報を含ませることができる。
・カレント状態に設定されたファイル(MF30、DF31、EF32)の識別情報
・カレント状態に設定されたMF30またはDF31に係るセキュリティステータスに係る情報
ファイルの識別情報とは、例えば、ファイルに付与されたIDである。カレント状態に設定されたファイルの識別情報は、選択コマンドの実行によって更新される。セキュリティステータスに係る情報は、照合または認証に係る処理結果を示す情報である。セキュリティステータスは、PINまたはパスワードを照合するベリファイコマンド、または、暗号鍵を照合する認証コマンドなどの実行によって更新される。なお、カレント状態に設定されているファイルに関する情報には、セキュアメッセージに係る情報など、上述した情報以外の情報を含ませることができる。
【0025】
ここから、環状記憶部12について詳細に説明する。
図4では、環状記憶部12が有する環状領域120の概念図を示している。環状記憶部12は、先頭と末尾を論理的に繋げたリング状をなした環状領域120を有し、環状領域120を循環的に利用してデータを格納できるように構成されている。このような環状記憶部12は、NVM23またはRAM21に設けた所定サイズの環状領域120と、この環状領域120を操作するコンピュータプログラムにより実現されている。
図4で示した通り、環状記憶部12が有する環状領域120は、先頭と末尾を論理的に繋げたリング状をなしている。環状記憶部12は、環状領域120の先頭から順にデータを格納し、環状領域120に記憶させたデータが環状領域120の末尾に達すると、環状領域120の先頭に戻ってデータを上書きする。このことにより、環状記憶部12が有する環状領域120のサイズは固定であるが、環状領域120を循環的に利用することで、上限を設けることなくデータを環状領域120に格納できる。
【0026】
図4では、環状記憶部12が有する環状領域120の要素120bを視覚的に分かり易く示している。環状領域120の要素120bとは、環状領域120に記憶するデータの最小単位である。環状記憶部12に記憶するデータの最小単位は、1バイトでもよいが、複数バイトにすることもできる。環状領域120は、複数の要素120bを有するが、
図4などでは、一つの要素120bにのみ符号を付している。
【0027】
環状記憶部12は、環状領域120へのデータの書き込みに、データの書き込み位置を示すポインタ120aを利用する。本実施形態では、環状記憶部12は、
図4で示した環状領域120において右回りで移動するようにポインタ120aを制御する。環状記憶部12は、指定されたデータを環状領域120に書き込むと、指定されたデータを書き込んだ最後の要素120
bの次の要素120
bを示すようにポインタ120aを制御する。ポインタ120aが環状領域120を一周すると、環状記憶部12は、環状領域120の最初の要素120
bにポインタ120aを戻し、環状領域120の最初の要素120
bからデータを上書きする。
【0028】
ここから、ICカード1を動作させるプログラムにより実現される状態保存手段10と状態復元手段11について、それぞれ説明する。
図5は、ICカード1が実行する一連の処理を説明する図である。
図6は、状態保存手段10の動作を説明する図である。
図7は、状態データ13の書込み方を説明する第1図である。
図8は、状態データ13の書込み方を説明する第2図である。
図9は、状態データ13の書込み方を説明する第3図である。
図10は、状態復元手段11の動作を説明する図である。
【0029】
まず、
図5を参照しながら、ICカード1が実行する一連の処理を説明する。コマンドディパーチャー15は、外部装置からコマンド14を受信すると(ステップS1)、外部装置から受信したコマンド14が復元コマンドであるか確認する(ステップS2)。外部装置から受信したコマンド14が復元コマンドでない場合、コマンドディパーチャー15は、外部装置から受信したコマンド14を実行する(ステップS3)。外部装置から受信したコマンド14を実行すると、コマンドディパーチャー15は、状態保存手段10を呼び出して、状態保存手段10の処理を実行する(ステップS4)。状態保存手段10の処理が終了すると、コマンドディパーチャー15は、外部装置から受信したコマンド14の実行結果を示すレスポンスメッセージを外部装置へ送信して(ステップS5)、
図5の手順は終了する。
図5のS1において、外部装置から受信したコマンド14が復元コマンドである場合、コマンドディパーチャー15は、状態復元手段11を呼び出して、状態復元手段11の処理を実行する(ステップS6)。状態復元手段11の処理が終了すると、コマンドディパーチャー15は、状態復元手段11の実行結果を示すレスポンスを外部装置へ送信して(ステップS7)、
図5の手順を終了する。
【0030】
図6を参照しながら、状態保存手段10の処理について説明する。状態保存手段10は、コマンドディパーチャー15から呼び出されて起動すると、RAM21に格納されている状態データ13がコマンド14の実行によって変更されたか否かを判定する(ステップS40)。この処理は、この時点でRAM21に格納されている状態データ13と、環状領域120において最新の状態データ13を比較する処理になる。環状領域12において最新の状態データ13の判別には、ポインタ120aの位置を利用できる。この時点の状態データ13と、環状領域120において最新の状態データ13が異なる場合、コマンド14の実行によって状態データ13が更新されたと判定できる。状態保存手段10は、状態データ13が更新されたと判定した場合、更新後の状態データ13の書き込みを環状記憶部12に依頼し、環状記憶部12が更新後の状態データ13を環状領域120に書き込むと(ステップS41)、
図6の手順を終了する。状態保存手段10は、状態データ13が更新されていないと判定した場合、更新後の状態データ13の書き込みを環状記憶部12に依頼することなく、
図6の手順を終了する。
【0031】
ここから、
図7から
図10を参照して、変更後の状態データ13を環状記憶部12の環状領域120に書き込む処理について詳細に説明する。本実施形態において、状態保存手段10は、環状記憶部12の環状領域120に書き込む状態データ13に、状態データ13を識別するための状態識別情報を付与する。これは、環状記憶部12の環状領域120に書き込んだ状態データ13それぞれを識別できるようにするためである。本実施形態において、状態識別情報は番号である。
図7などでは、状態識別情報となる番号に「#」を付与して記載している。状態保存手段10は、更新された状態データ13を環状記憶部12の環状領域120に書き込むごとに、状態識別情報となる番号の値を1つ増やす処理を実行する。
【0032】
図7では、1個目の状態データ13を書き込んだ後の環状記憶部12の環状領域120を示している。
図7で図示した環状領域120では、状態識別情報が「01」である状態データ13が書き込まれている。状態識別情報が「01」である状態データ13が書き込まれると、環状記憶部12は、状態データ13を書き込んだ最後の要素120bの次の要素120bにポインタ120aを移動させる。
図7では、ポインタ120aが示す要素120bは、状態識別情報が「01」である状態データ13を書き込んだ最後の要素120bの次の要素120bになっている。
【0033】
図8では、8個目の状態データ13を書き込んだ後の環状記憶部12の環状領域120を示している。環状領域120に書き込まれている状態データ13の状態識別情報はすべて異なっている。
図8で示した環状領域120において、最新の状態データ13は、状態識別情報が「08」の状態データ13になる。また、
図8で示した環状領域120において、最も古い状態データ13は、状態識別情報が「01」の状態データ13になる。なお、
図8では、8つの状態データ13を便宜的にすべて同じサイズにしているが、それぞれの状態データ13のサイズは異なっていてもよい。
【0034】
図8では、合計で8個の状態データ13を書き込むことで、環状記憶部12の環状領域120が有するすべての要素120bに状態データ13が書き込まれる。よって、ポインタ120aは、環状記憶部12が有する環状領域120を一周することになり、
図8では、ポインタ120aは最初の要素120bに移動している。
【0035】
図9では、9個の状態データ13を書き込んだ後の環状記憶部12を示している。
図8において、ポインタ120aが示す要素120bは最初の要素120bになっているため、
図9では、状態識別情報が「01」の状態データ13が上書きされて、状態識別情報が「09」の状態データ13が環状領域120に書き込まれている。また、
図9において、ポインタ120aは、状態識別情報が「09」の状態データ13を書き込んだ要素120bの次になる要素120bに移動している。
【0036】
このように、本発明では、状態データ13を循環的に環状記憶部12の環状領域120に記憶させることができる。状態データ13を循環的に環状記憶部12の環状領域120に記憶させることで、ICカード1が取り得る内部状態の数が多くなる場合であっても、状態データ13を記憶させる領域が不足する事態にならない。
【0037】
次に、
図10を参照しながら、状態復元手段11の動作について説明する。状態復元手段11の動作の説明は、本発明に係る内部状態復元方法の説明も兼ねている。コマンドディパーチャー15から呼び出された状態復元手段11は、この時点の環状記憶部12の環状領域120の中から、復元コマンドのコマンドメッセージで示される状態識別情報が付与された状態データ13を検索する(ステップS60)。
【0038】
状態復元手段11は、状態データ13の検索結果に応じて処理を分岐する(ステップS61)。復元コマンドのコマンドメッセージで示される状態識別情報が付与された状態データ13を環状記憶部12の環状領域120から検索できなかった場合、状態復元手段11は、例外処理を実行して(ステップS64)、
図9の手順を終了する。例外処理としては、エラーメッセージを返信するなどが考えられる。
【0039】
復元コマンドのコマンドメッセージで示される状態識別情報が付与された状態データ13を環状記憶部12の環状領域120から検索できた場合、状態復元手段11は、この状態データ13を環状記憶部12の環状領域120から読み出した後(ステップS62)、この時点の状態データ13を、環状記憶部12の環状領域120から読み出した状態データ13に置き換えて(ステップS63)、
図10の手順は終了する。
【0040】
この時点の状態データ13を、環状記憶部12の環状領域120から読み出した状態データ13に置き換えることで、ICカード1の内部状態を、環状記憶部12から読み出した状態データ13に対応する内部状態に復元できる。なお、ICカード1の内部状態を復元しても、状態復元手段11は、環状記憶部12の環状領域120から状態データ13を消去しないため、環状記憶部12の環状領域120に記憶されている状態データ13を何度も利用して復元できる。
【符号の説明】
【0041】
1 ICカード
10 状態保存手段
11 状態復元手段
12 環状記憶部
120 環状領域
120a ポインタ
120b 要素
2 半導体チップ
【要約】
【課題】ICカードの内部状態を表わす状態データを保存し、保存した状態データを使用してICカードの内部状態を復元する機能を備えたICカードを提供する。
【解決手段】ICカード1は、先頭と末尾を論理的に繋げたリング状をなした環状領域120を有し、環状領域120を循環的に利用してデータを格納できるように構成した環状記憶部12と、内部状態を表わす状態データがコマンドの実行によって更新されると、状態データを識別するための状態識別情報を付与した更新後の状態データを環状記憶部12の環状領域120に記憶する状態保存手段10と、外部装置から指定された状態識別情報が付与された状態データを環状記憶部12の環状領域120から読み出し、環状記憶部12の環状領域120から読み出した状態データに対応する内部状態を復元する状態復元手段11を備えている。
【選択図】
図2