(57)【要約】【課題】内部メモリのデータ保存容量を圧迫しないＩＣカード及び携帯可能電子装置を提供する。【解決手段】実施形態によれば、ＩＣカードは、通信手段と、記録手段と、受信処理手段と、判定手段と、送信処理手段とを有する。通信手段は、外部端末とデータの送受信を行う。記録手段は、定義情報によって定義されるデータを記録する。受信処理手段は、通信手段により外部端末からコマンドを受信する。判定手段は、受信処理手段によりコマンドを受信した場合、コマンドの実行に必要なデータが記録手段内に存在するか判定する。送信処理手段は、判定手段によりデータが記録手段内に存在しないと判定した場合、外部端末からデータに関連する関連データを取得するセッションの開始を示すレスポンスを通信手段により外部端末へ送信する。【選択図】図４
2014041552.tif 000002
【特許請求の範囲】
【請求項１】
外部端末から与えられるコマンドに応じた処理を実行するＩＣカードにおいて、
前記外部端末とデータの送受信を行う通信手段と、
定義情報によって定義されるデータを記録する記録手段と、
前記通信手段により前記外部端末からコマンドを受信する受信処理手段と、
前記受信処理手段により前記コマンドを受信した場合、前記コマンドの実行に必要なデータが前記記録手段内に存在するか判定する判定手段と、
前記判定手段により前記データが前記記録手段内に存在しないと判定した場合、前記外部端末から前記データに関連する関連データを取得するセッションの開始を示すレスポンスを前記通信手段により前記外部端末へ送信する送信処理手段と、
を備えるＩＣカード。
【請求項２】
前記送信処理手段が前記セッションの開始を示すレスポンスを前記外部装置に出力した後、前記データに関連する関連データを前記外部端末から取得するプロアクティブコマンドを前記外部端末へ送信する第２送信処理手段と、
前記プロアクティブコマンドに対するレスポンスとして、前記関連データを含む端末応答コマンドを前記外部端末から受信する第２受信処理手段と、
前記端末応答コマンドに対するレスポンスとして、前記コマンドの実行結果を出力する第３送信処理手段と、
を備える前記請求項１に記載のＩＣカード。
【請求項３】
前記関連データは、前記データを暗号化した暗号データであり、
さらに、前記暗号データを復号するための鍵を保存する保存手段と、
前記保存手段に格納されている前記鍵を用いて前記端末応答コマンドに含まれる前記関連データとして暗号データを復号する復号手段と、
を備える前記請求項１又は２に記載のＩＣカード。
【請求項４】
さらに、前記送信処理手段が前記セッションの開始を示すレスポンスを出力した後、前記第２送信処理手段が前記プロアクティブコマンドを出力する前に、前記外部端末から前記プロアクティブコマンドの送信を要求するコマンド送信要求コマンドを受信する第３受信処理手段と、を備え、
前記第２送信処理手段は、前記送信処理手段が前記セッションの開始を示すレスポンスを前記外部装置に出力した後、前記外部端末から前記プロアクティブコマンドの送信を要求する送信要求コマンドを受信したのに基づいて、前記プロアクティブコマンドを送信する、
前記請求項２又は３に記載のＩＣカード。
【請求項５】
前記コマンドは、前記記録手段内のデータの読取を要求するリードコマンドである、
前記請求項１乃至４のいずれか１項に記載のＩＣカード。
【請求項６】
外部端末から与えられるコマンドに応じた処理を実行するＩＣカードにおいて、
前記外部端末とデータの送受信を行う通信手段と、定義情報によって定義されるデータを記録する記録手段と、前記通信手段により前記外部端末からコマンドを受信する受信処理手段と、前記受信処理手段により前記コマンドを受信した場合、前記コマンドの実行に必要なデータが前記記録手段内に存在するか判定する判定手段と、前記判定手段により前記データが前記記録手段内に存在しないと判定した場合、前記外部端末から前記データに関連する関連データを取得するセッションの開始を示すレスポンスを前記通信手段により前記外部端末へ送信する送信処理手段と、を備えるモジュールと、
前記モジュールを収納した本体と、
を備えるＩＣカード。
【請求項７】
外部端末から与えられるコマンドに応じた処理を実行する携帯可能電子装置において、
前記外部端末とデータの送受信を行う通信手段と、
定義情報によって定義されるデータを記録する記録手段と、
前記通信手段により前記外部端末からコマンドを受信する受信処理手段と、
前記受信処理手段により前記コマンドを受信した場合、前記コマンドの実行に必要なデータが前記記録手段内に存在するか判定する判定手段と、
前記判定手段により前記データが前記記録手段内に存在しないと判定した場合、前記外部端末から前記データに関連する関連データを取得するセッションの開始を示すレスポンスを前記通信手段により前記外部端末へ送信する送信処理手段と、
を備える携帯可能電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ＩＣカード、及び、携帯可能電子装置に関する。
【背景技術】
【０００２】
ＩＣカードは、ＩＣカード内のメモリに記憶しているデータにアクセスして外部装置から与えられたコマンドに応じた処理を実行する。従来のＩＣカードは、通常、コマンドの処理に必要なデータがＩＣカード内のメモリに格納されている。しかしながら、ＩＣカードは、物理的な制約などから大容量のメモリを搭載するのが難しいため、内部に記憶できるデータ量が制限される。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】ＩＳＯ／ＩＥＣ  ７８１６−４
【非特許文献２】ＥＴＳＩ  ＴＳ  １０２．２２３
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の課題を解決するため、内部メモリのデータ保存容量を圧迫することがないＩＣカード及び携帯可能電子装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によれば、ＩＣカードは、通信手段と、記録手段と、受信処理手段と、判定手段と、送信処理手段とを有する。通信手段は、外部端末とデータの送受信を行う。記録手段は、定義情報によって定義されるデータを記録する。受信処理手段は、通信手段により外部端末からコマンドを受信する。判定手段は、受信処理手段によりコマンドを受信した場合、コマンドの実行に必要なデータが記録手段内に存在するか判定する。送信処理手段は、判定手段によりデータが記録手段内に存在しないと判定した場合、外部端末からデータに関連する関連データを取得するセッションの開始を示すレスポンスを通信手段により外部端末へ送信する。
【図面の簡単な説明】
【０００６】
【図１】本実施形態に係るＩＣカードとＩＣカード処理端末とを有するＩＣカード処理システムの構成例を示す図である。
【図２】本実施形態に係るＩＣカードのＮＶＭに格納されているファイルテーブルの例を示す図である。
【図３】本実施形態に係るＩＣカードの状態の例を示す図である。
【図４】本実施形態に係るＩＣカードにおけるプロアクティブセッションの流れを概略的に説明するための図である。
【図５】本実施形態に係るプロアクティブコマンドの例を示す図である。
【図６】本実施形態に係るプロアクティブコマンドに対する端末応答コマンドのＶａｌｕｅ部の例を示す図である。
【図７】本実施形態に係るＩＣカードにおけるコマンド処理の動作例を説明するためのフローチャートである。
【図８】本実施形態に係るＩＣカードにおけるリードコマンド処理の動作例を説明するためのフローチャートである。
【図９】本実施形態に係るＩＣカードにおけるプロアクティブコマンドの送信処理の動作例を説明するためのフローチャートである。
【図１０】本実施形態に係るＩＣカードにおける端末応答コマンド処理の動作例を説明するためのフローチャートである。
【発明を実施するための形態】
【０００７】
以下、本実施形態について、図面を参照して説明する。  
図1は、本実施形態に係る携帯可能電子装置としてのＩＣカード２と、ＩＣカード２と通信を行う外部装置としてのＩＣカード処理端末１とを有するＩＣカード処理システムの構成例を示すブロック図である。  
まず、ＩＣカード処理端末１の構成について説明する。  
ＩＣカード処理端末１は、図１に示す構成例において、ＣＰＵ１１、メモリ１２及び通信部１３などを有する。これらの各部は、システムバス１４を介して互いに電気的に接続されている。
【０００８】
ＣＰＵ１１は、ＩＣカード処理端末１全体の動作を制御する制御部として機能する。ＣＰＵ１１は、メモリ１２に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。ＣＰＵ１１は、プログラムを実行することにより、ＩＣカード処理端末１の基本的な動作制御およびＩＣカード処理端末１の運用形態に応じた種々の処理を行う。
【０００９】
ＣＰＵ１１は、通信部１３によりＩＣカード２へ命令（コマンド）を送信する機能、ＩＣカード２から受信したデータを基に種々の処理を行う機能などを有する。たとえば、ＣＰＵ１１は、通信部１３を介してＩＣカード２にデータの書き込み命令を送信することによりＩＣカード２内の不揮発性メモリにデータを書き込む制御を行う。また、ＣＰＵ１１は、ＩＣカード２に読み取り命令（リードコマンド）を送信することによりＩＣカード２からデータを読み出す制御を行う。
【００１０】
メモリ１２は、ＩＣカード処理端末１で利用される制御プログラム及び制御データなどを格納するメモリである。メモリ１２は、不揮発性メモリ及び揮発性メモリなどを備える。メモリ１２は、たとえば、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、又はフラッシュメモリなどで構成されてもよい。
【００１１】
メモリ１２は、ＩＣカード２で管理されるファイルに関連するデータ（関連データ）を記憶する記憶領域１２ａを有する。例えば、記憶領域１２ａに記憶する関連データは、ＩＣカード処理端末１がファイルＩＤ（端末側ファイルＩＤ）を付与して管理するファイルとしてＩＣカード処理端末１が保存する。また、記憶領域１２ａに記憶する関連データは、ＩＣカード処理端末１からのコマンドに対するＩＣカード２の処理でアクセス対象となるファイルに関連するデータであって良い。記憶領域１２ａに記憶するデータとしては、ＩＣカード２の利用者の個人情報などが想定される。ただし、記憶領域１２ａに記憶するデータは、特定の内容に限定されるものではない。
【００１２】
本実施形態の説明では、記憶領域１２ａに記憶する関連データは、あらかじめメモリ１２に格納されているものとする。記憶領域１２ａに関連データを書き込む手順及び時期などは、特定の構成に限定されるものではない。  
なお、ＩＣカード２で管理されるファイルに関連するデータ（関連データ）は、ＩＣカード処理端末がアクセスできる状態で保存されるものであれば良く、メモリ１２内に記憶領域１２ａ以外に記憶されるようにしても良い。たとえば、関連データは、ＩＣカード処理端末に接続した第３の装置に保存しても良い。この場合、ＩＣカード処理端末は、ＩＣカードからの関連データ読み出し命令を受けると、第３の装置から関連データを読み出してICカードに送信するようにする。
【００１３】
また、記憶領域１２ａに記憶する関連データは、ＩＣカード２で復号化される暗号データである。記憶領域１２ａに関連データとして記憶する暗号データは、ＩＣカード２が保持する鍵（鍵情報）などを用いて復号化され、ＩＣカード処理端末１では復号化することができないデータである。つまり、ＩＣカード処理端末１は、メモリ１２の記憶領域１２ａに記憶した暗号データを復号化するための情報（鍵）を保持しない。これにより、本ＩＣカードシステムとしては、ＩＣカード処理端末１に不正にアクセスされた場合であっても、記憶領域１２ａに記憶した暗号データが復号化されることが防止できる。
【００１４】
通信部１３は、ＩＣカード２との通信を行うためのインターフェース装置である。通信部１３は、ＩＣカード２のコンタクト部と物理的かつ電気的に接続するための接触部などにより構成される。なお、ＩＣカード２が非接触式のＩＣカードである場合、通信部１３は、非接触でＩＣカード２との通信を行うインターフェース装置により構成する。
【００１５】
次に、ＩＣカード２の構成について説明する。  
ＩＣカード２は、ＩＣカード処理端末１などの外部装置から電力及び動作クロックなどの供給を受けて活性化される（動作可能な状態になる）。本実施形態の説明では、ＩＣカード２は、接触型のインターフェースによりＩＣカード処理端末１と接続される接触式のＩＣカードであることを想定するものとする。ＩＣカード２が接触式のＩＣカードである場合、ＩＣカード２は、通信インターフェースとしてのコンタクト部を介してＩＣカード処理端末１からの動作電力及び動作クロックの供給を受けて活性化される。
【００１６】
次に、ＩＣカード２の構成例について説明する。  
ＩＣカード２は、プラスチックなどで形成されたカード状の本体Ｃを有する。ＩＣカード２は、本体Ｃ内にモジュールＭが内蔵されている。モジュールＭは、１つまたは複数のＩＣチップＣａと通信用の外部インターフェース（ＵＡＲＴ）とが接続された状態で一体的に形成され、ＩＣカード２の本体Ｃ内に埋設されている。
【００１７】
また、ＩＣカード２は、図１に示すように、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、ＮＶＭ２４、及びＵＡＲＴ２５などを備えている。これらの各部は、システムバス２６を介して互いに電気的に接続されている。１つ又は複数のＩＣチップＣａは、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、及びＮＶＭ２４により構成される。ＩＣチップＣａは、ＵＡＲＴ２５に接続された状態でモジュールＭを構成している。
【００１８】
ＣＰＵ２１は、ＩＣカード２全体の制御を司る制御部として機能する。ＣＰＵ２１は、ＲＯＭ２２あるいはＮＶＭ２４に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。ＣＰＵ２１は、プログラムを実行することにより、ＩＣカード２の基本的な動作制御およびＩＣカード２の運用形態に応じた種々の処理を行う。なお、ＩＣカード２の動作制御および処理などの各種の機能のうちの一部は、ハードウエア回路により実現されるものであっても良い。
【００１９】
ＲＯＭ２２は、予め制御用のプログラム及び制御データなどを記憶する不揮発性のメモリである。ＲＯＭ２２は、製造段階で制御プログラム及び制御データなどを記憶した状態でＩＣカード２に組み込まれる。即ち、ＲＯＭ２２に記憶される制御プログラム及び制御データは、予めＩＣカード２の仕様に応じて組み込まれる。
【００２０】
ＲＡＭ２３は、揮発性のメモリである。ＲＡＭ２３は、ＣＰＵ２１の処理中のデータなどを一時的に格納する。たとえば、ＲＡＭ２３は、受信用バッファ、計算用バッファ、送信用バッファなどを備える。受信用バッファとしては、ＵＡＲＴ２５を通じてＩＣカード処理端末１から送信された命令を保持する。計算用バッファとしては、ＣＰＵ２１が種々の計算をするため一時的な結果を保持する。送信用バッファとしては、ＵＡＲＴ２５を通じてＩＣカード処理端末１に送信するためのデータを保持する。たとえば、ＣＰＵ２１は、受信用バッファに保持した命令を解釈し、命令に応じた処理を計算バッファを用いて実行し、実行した処理の結果を送信用バッファに格納する。また、ＲＡＭ２３には、当該ＩＣカード２におけるプロアクティブセッション（後述する）の状態を示す情報を格納する状態テーブル２３ａが設けられる。
【００２１】
ＮＶＭ２４は、データの書き込み及び書き換えが可能な不揮発性のメモリである。ＮＶＭ２４は、例えば、ＥＥＰＲＯＭあるいはフラッシュメモリなどにより構成される。ＮＶＭ２４は、ＩＣカード２の運用用途に応じて制御プログラム、アプリケーション、及び種々のデータを格納する。ＮＶＭ２４は、所定の管理形態により管理される種々のファイルによりデータを記憶する。たとえば、ＮＶＭ２４には、階層構造で管理される、ＭＦ（マスターファイル）、ＤＦ（デディケイテッドファイル）、および、ＥＦ（エレメンタリーファイル）などの各ファイルを記憶する。また、ＮＶＭ２４は、各ファイルの定義情報などを記憶するファイルテーブル２４ａを有する。また、ＮＶＭ２４は、外部装置としてのＩＣカード処理端末１が保存する暗号データを復号化するための鍵情報（鍵）を記憶する記憶領域２４ｂも有する。
【００２２】
ＵＡＲＴ２５は、ＩＣカード処理端末１の通信部１３との通信を行うためのインターフェースである。たとえば、ＩＣカード２が接触式ＩＣカードである場合、ＵＡＲＴ２５は、ＩＣカード処理端末１の通信部１３と物理的かつ電気的に接触して信号の送受信を行うための通信制御部とコンタクト部とにより構成される。  
なお、ＩＣカード２は、非接触型の通信方式によりＩＣカード処理端末１と接続するものであっても良い。ＩＣカード２が非接触式のＩＣカードである場合、ＵＡＲＴ２５は、ＩＣカード処理端末１の通信部１３と非接触でデータの送受信を行う通信制御部及びアンテナなどにより構成される。
【００２３】
次に、ＩＣカード２のＮＶＭ２４に記憶されるファイルについて説明する。  
ＮＶＭ２４に記憶される各ファイルは、ファイルの定義情報と定義情報によって定義されるデータエリアのデータ（実データ）とにより構成される。ＮＶＭ２４は、システム領域とユーザ領域とを有する。ファイルの定義情報は、ＮＶＭ２４のシステム領域に記憶され、ファイルのデータエリアは、ＮＶＭ２４のユーザ領域に記憶される。すなわち、各ファイルは、ＮＶＭ２４において、システム領域内の定義情報と、定義情報によって定義されるユーザ領域内のデータエリアのデータとから構成される。
【００２４】
ＮＶＭ２４のシステム領域に記憶されるファイルの定義情報は、たとえば、ファイルを特定するための識別情報としてのファイルＩＤ、当該ファイルのデータエリアの先頭アドレスを示すアドレス情報、及び、データエリアのサイズを示すサイズ情報などを含む。また、ＮＶＭ２４のユーザ領域に設けられるデータエリアは、定義情報によって定義され、当該ファイルの実データが格納されるエリアである。また、ＮＶＭ２４のシステム領域は、複数のファイルに対する複数の定義情報を一括して管理するファイルテーブル２４ａを有する。
【００２５】
たとえば、ファイルＩＤにより指定されるファイルを読み出す場合、ＣＰＵ２１は、指定されたファイルＩＤに基づいてシステム領域にあるファイルテーブル２４ａを検索し、当該ファイルの定義情報を読み込み、読み込んだ定義情報に基づいてユーザ領域にある当該ファイルのデータエリア（例えば、先頭アドレスおよびデータサイズ）を特定し、特定したデータエリアからファイルの実データを読み出す。
【００２６】
図２は、本実施形態に係るＩＣカード２のＮＶＭ２４におけるシステム領域に格納されているファイルテーブル２４ａの構成例を示す図である。  
ファイルテーブル２４ａは、ファイルの定義情報として、ファイルＩＤ、アドレス情報、サイズ情報、及び、端末側ファイルＩＤを格納する。
【００２７】
ファイルＩＤは、当該ファイルを特定するためのユニークな識別情報である。アドレス情報とサイズ情報とは、当該ファイルのデータエリアを特定するための情報である。アドレス情報は、ユーザ領域における当該ファイルのデータエリアの先頭アドレスを示す情報である。サイズ情報は、ユーザ領域における当該ファイルのデータエリアのサイズを示す情報である。端末側ファイルＩＤは、当該ファイルの実データをＩＣカード処理端末１が保存している場合に設定される情報である。端末側ファイルＩＤは、ＩＣカード処理端末１が保存している当該ファイルの実データを格納したファイルを特定するためのユニークな識別情報である。
【００２８】
ファイルテーブル２４ａは、データエリアがＮＶＭ２４内のユーザ領域に存在しないファイル（実データがデータエリアに存在しないファイル）のアドレス情報としては、ファイルのアドレスに使用できない値を格納する。アドレスに使用できない値とは、たとえば、ＮＶＭ２４の最終アドレスの値よりも大きな値である。図２に示す例では、アドレスに使用できない値として、「０ｘＦＦＦＦ」を格納する。つまり、図２に示すファイルテーブル２４ａの例では、ＮＶＭ２４の最終アドレスが「０ｘＦＦＦＦ」よりも小さいことを前提として、データエリアがＮＶＭ２４内のユーザ領域に存在しないファイルのアドレス情報は「０ｘＦＦＦＦ」とする。
【００２９】
また、図２に示すファイルテーブル２４ａの例では、データエリアがＮＶＭ２４内のユーザ領域に存在しないファイルについては、端末側ファイルＩＤとして、当該ファイルの実データに関連する関連データ（暗号データ）を格納したＩＣカード処理端末１が保存しているファイルを特定する情報を格納する。なお、端末側ファイルＩＤは、ＩＣカード処理端末１が管理するファイルを特定できる情報であれば良い。例えば、ＩＣカード２内のファイルのファイルＩＤとそのファイルに対応するＩＣカード処理端末１が保存するファイル（暗号データを記憶したファイル）のファイルＩＤ（端末側ファイルＩＤ）とは、同一であっても良い。
【００３０】
図２に示すファイルテーブル２４ａにおいて、ＩＣカード処理端末１は、アドレス情報が「０ｘＦＦＦＦ」に設定されたファイルの実データに関連する関連データとして、ＩＣカード２が復号化できる暗号データを端末側ファイルＩＤが示すファイルに格納する。言い換えれば、ファイルテーブル２４ａにおける端末側ファイルＩＤは、ファイルＩＤが示すファイルの実データを暗号化した状態で格納するＩＣカード処理端末１が保存するファイルのファイルＩＤである。
【００３１】
また、図２に示すファイルテーブル２４ａの例では、ファイルＩＤが「０ｘ０００１」であるファイル（即ち、「ＥＦ  ＃１」）は、アドレス情報が「０ｘ０１２３」、かつ、サイズ情報が「０ｘ００４５」であることが定義情報として定義されている。当該定義情報のファイル（ファイルＩＤが「０ｘ０００１」のファイル）は、データエリアがユーザ領域のアドレス「０ｘ０１２３」から開始され、当該データのサイズが「０ｘ００４５」であることを示している。
【００３２】
また、ファイルＩＤが「０ｘ０００２」であるファイル（即ち、「ＥＦ  ＃２」）は、アドレス情報が「０ｘＦＦＦＦ」、かつ、ファイルサイズ「０ｘ００６５」であることが定義情報として定義されている。アドレス情報が「０ｘＦＦＦＦ」（ＮＶＭ２４内のユーザ領域以外のアドレス）であるので、ファイルＩＤが「０ｘ０００２」のファイルのデータエリアは、ＮＶＭ２４内のユーザ領域には存在しない。また、ファイルＩＤが「０ｘ０００２」のファイルは、端末側ファイルＩＤが「０ｘ０１０２」に設定されている。したがって、図２に示す例では、ファイルＩＤが「０ｘ０００２」であるファイル（即ち、「ＥＦ  ＃２」）の実データを暗号化した暗号データはＩＣカード処理端末１にファイルＩＤ（端末側ファイルＩＤ）が「０ｘ０１０２」のファイル（即ち、「ＥＦ  ＃１０２」）として保存されているものと判断できる。
【００３３】
また、ＮＶＭ２４は、ＩＣカード処理端末１が保存している暗号データを復号化するための鍵を記憶する記憶領域２４ｂを有する。記憶領域２４ｂに記憶される鍵は、ＩＣカード処理端末１が記憶領域１２ａに保存している暗号データ（図２に示す例では、端末側ファイルＩＤが「０ｘ０１０２」のファイルに格納したデータ）を復号化するための鍵である。記憶領域２４ｂに記憶される鍵は、ＩＣカード２で定義されるファイルの実データを暗号化するのに利用した暗号化方法に対応する鍵である。また、ＩＣカード処理端末１が保存する暗号データを復号化するための鍵は、ＩＣカード処理端末１には保存されない。ＩＣカード処理端末１が保存する暗号データを復号化するための鍵は、ＩＣカード２内で暗号データを復号化できるものであれば良く、特定の構成に限定されるものではない。
【００３４】
次に、ＩＣカード２におけるプロアクティブセッションの状態管理について説明する。  
本実施形態に係るＩＣカード処理システムでは、ＩＣカード２がＩＣカード処理端末１へ処理を要求し、ＩＣカード処理端末１がＩＣカード２からの要求に応じた処理を実行する機能として、プロアクティブセッションの機能を有する。プロアクティブセッションは、たとえば、ＩＣカード２がＩＣカード処理端末１へコマンド（プロアクティブコマンド）を送信し、ＩＣカード処理端末１からのレスポンスを受信するまでの一連の処理である。プロアクティブコマンドについては、後に詳述する。
【００３５】
ＩＣカード２は、プロアクティブセッション中であるか否か、プロアクティブセッション中のいかなる段階にあるかを示す情報をＲＡＭ２３の状態テーブル２３ａに格納する。ＩＣカード２は、プロアクティブの状態を示す情報をＲＡＭ２３の状態テーブル２３ａに格納することにより、現在プロアクティブセッションのいかなる段階であるかを把握（管理）し、プロアクティブセッションの段階に応じた処理を行う。
【００３６】
図３は、ＩＣカード２におけるプロアクティブセッションの状態を示す情報の設定例を示す図である。  
状態「Ｑ１」は、プロアクティブコマンドを生成していない状態である。即ち、状態Ｑ１は、プロアクティブセッションが開始されていないことを示している。また、状態Ｑ１では、ＩＣカード２は、プロアクティブセッションの状態を示す値として「０ｘ１２」をＲＡＭ２３に設けた状態テーブル２３ａに格納する。また、ＩＣカード２は、活性化直後の初期状態では状態Ｑ１となっているものとする。
【００３７】
状態「Ｑ２」は、ＩＣカード２がプロアクティブコマンドを生成し、生成したプロアクティブコマンドの取出し要求を外部装置（即ち、ＩＣカード処理端末１）へ送信していない状態である。即ち、状態Ｑ２は、プロアクティブセッションが開始され、ＩＣカードがプロアクティブコマンドを生成したが、外部装置へ取出しの要求を送信していない状態である。また、状態Ｑ２では、ＩＣカード２は、プロアクティブセッションの状態を示す値として「０ｘ２４」をＲＡＭ２３に設けた状態テーブル２３ａに格納する。
【００３８】
状態「Ｑ３」は、プロアクティブコマンドを生成し、生成したプロアクティブコマンドの取出し要求を外部装置（ＩＣカード処理端末１）へ送信した状態である。即ち、状態Ｑ３は、プロアクティブセッションが開始された後、ＩＣカード２がプロアクティブコマンドを生成し、生成したプロアクティブコマンドの取出しの要求を外部装置へ送信済みの状態である。また、状態Ｑ３では、ＩＣカード２は、プロアクティブセッションの状態を示す値として「０ｘ４８」をＲＡＭ２３に設けた状態テーブル２３ａに格納する。
【００３９】
状態「Ｑ４」は、外部装置からの取出し要求に応じたプロアクティブコマンドの送信が終了し、外部装置からプロアクティブコマンドに対する処理結果である応答（レスポンス）を待っている状態である。即ち、状態Ｑ４は、プロアクティブセッションにおいて生成したプロアクティブコマンドを外部装置へ送信した後、送信したプロアクティブコマンドに対する応答を待っている状態である。また、状態Ｑ４では、ＩＣカード２は、プロアクティブセッションの状態を示す値として「０ｘ８１」をＲＡＭ２３に設けた状態テーブル２３ａに格納する。
【００４０】
次に、ＩＣカード処理システムにおけるプロアクティブセッションの処理の流れを説明する。  
図４は、本実施形態に係るＩＣカード処理システムにおけるプロアクティブセッションの処理の流れを概略的に説明するための図である。図４に示す処理例は、図２に示すファイルテーブル２４ａにおけるファイルＩＤ「０ｘ０００２（ＥＦ  ＃２）」のファイルに対する読出処理の流れを想定したものである。このため、以下の説明も、図２に示すファイルテーブル２４ａにおけるファイルＩＤ「０ｘ０００２（ＥＦ  ＃２）」のファイルに対する読取処理を想定しつつ説明するものとする。
【００４１】
まず、ＩＣカード処理端末１のＣＰＵ１１は、ファイルＩＤが「０ｘ０００２」（即ち、「ＥＦ  ＃２」）のファイルの読取をＩＣカード２に要求するリードコマンド（ＲＥＡＤ  ＥＦ  ＃２）を生成する。リードコマンドを生成すると、ＣＰＵ１１は、通信部１３を通じて生成したリードコマンドをＩＣカード２へ送信する（ステップＳ１）。
【００４２】
ＩＣカード処理端末１からのリードコマンドをＵＡＲＴ２５により受信すると、ＩＣカード２のＣＰＵ２１は、リードコマンドで指定される読取対象ファイルのファイルＩＤを抽出する。図４に示す処理例では、リードコマンドが読取対象に指定するファイルのファイルＩＤは、「０ｘ０００２」である。
【００４３】
リードコマンドから読取対象ファイルのファイルＩＤを抽出すると、ＣＰＵ２１は、ファイルテーブル２４ａから抽出したファイルＩＤに対応する定義情報を取得する。図２に示すファイルテーブル２４ａの例では、ファイルＩＤ「０ｘ０００２」に対応する定義情報は、アドレス情報が「０ｘＦＦＦＦ」、サイズ情報が「０ｘ００６７」、端末側ファイルＩＤが「０ｘ０１０２」である。アドレス情報が「０ｘＦＦＦＦ」である場合、ＣＰＵ２１は、読取対象ファイルのデータエリアがＮＶＭ２４のユーザ領域にない（つまり、「ＥＦ  ＃２」のファイルの実データはＩＣカード２内に格納していない）と判定する。
【００４４】
読取対象ファイルのデータエリアがＮＶＭ２４のユーザ領域にないと判定すると、ＣＰＵ２１は、「ＥＦ  ＃２」のファイルをＩＣカード処理端末１から取得するため、プロアクティブセッションを開始する。ＣＰＵ２１は、プロアクティブセッションによって、ＩＣカード２の「ＥＦ  ＃２」のファイルに対応するＩＣカード処理端末１の「ＥＦ  ＃１０２」のファイルから暗号データを取得する処理を行う。
【００４５】
すなわち、読取対象ファイルのデータエリアがＮＶＭ２４のユーザ領域にないと判定すると、ＣＰＵ２１は、プロアクティブコマンドを生成する（ステップＳ２）。プロアクティブコマンドとは、ＩＣカード２がＩＣカード処理端末１へ処理を要求するコマンドである。たとえば、ＩＣカード２は、プロアクティブコマンドをＩＣカード処理端末１へ送信することにより、ＩＣカード処理端末１から必要なファイルを取得することができる。ただし、ＩＣカード２は、上位装置としてのＩＣカード処理端末１からのコマンドを受けて動作するため、プロアクティブコマンドをＩＣカード２から一方的に任意のタイミングで送信することはできない。このため、ＩＣカード２は、リードコマンドに対するレスポンスとしてプロアクティブコマンドの取出しを要求した後、ＩＣカード処理端末１からのプロアクティブコマンドの送信要求コマンドに応じて当該プロアクティブコマンドを送信する。
【００４６】
図４に示す処理例では、読取対象ファイルのファイルＩＤ「ＥＦ  ＃２」に対応する端末側ファイルＩＤが「０ｘ０１０２」であるため、ＣＰＵ２１は、「ＥＦ  ＃１０２」（即ち、ファイルＩＤ「ＥＦ  ＃２」の実データを暗号化した暗号データ）の取得（読取）をＩＣカード処理端末１に要求するプロアクティブコマンド（ＲＥＡＤ  ＥＦ  ＃１０２）を生成する。
【００４７】
図５は、本実施形態に係るＩＣカード２で生成されるプロアクティブコマンドの例を示す図である。  
図５に示すように、プロアクティブコマンドは、識別子（Ｔａｇ）、データ長（Ｌｅｎｇｔｈ）、値（Ｖａｌｕｅ）により構成されるＴＬＶ形式のデータ（ＴＬＶデータ）である。また、図５に示す例では、プロアクティブコマンドは、入れ子構造（親のＴＬＶデータの値（Ｖａｌｕｅ）の中に、１又は複数のＴＬＶデータが含まれる構造）になっている。プロアクティブコマンドの値（Ｖａｌｕｅ）は、「Ｃｏｍｍａｎｄ  ｄｅｔａｉｌ  ＴＬＶ」、「Ｄｅｖｉｃｅ  ｉｄｅｎｔｉｔｉｅｓ  ＴＬＶ」及び「Ｃ−ＡＰＤＵ  ＴＬＶ」を格納する。
【００４８】
「Ｃｏｍｍａｎｄ  ｄｅｔａｉｌ  ＴＬＶ」は、プロアクティブコマンドの種類がＰＥＲＦＯＲＭ  ＣＡＲＤ  ＡＰＤＵであることを示している。「Ｄｅｖｉｃｅ  ｉｄｅｎｔｉｔｉｅｓ  ＴＬＶ」は、ＩＣカード２からＩＣカード処理端末１に向けてプロアクティブコマンドが送信されていることを示している。「Ｃ−ＡＰＤＵ  ＴＬＶ」は、ＩＣカード処理端末１から取得するファイルを示す情報が格納されている。
【００４９】
なお、プロアクティブコマンドの構成は、特定の構成に限定されるものではない。また、プロアクティブコマンドは、複数個生成されてもよい。たとえば、リードコマンドで指定されるファイルが複数個であり、それらのファイルがＩＣカード２内に存在しない場合、ＣＰＵ２１は、それらの各ファイルを読み出すための複数のプロアクティブコマンドを生成しても良い。さらには、１つのプロアクティブコマンド中に複数の読み出し命令を格納するようにしても良い。これは、たとえば、図５に示す構成例において、C-APDU TLVを複数含め、その中に読み出し対象を格納することにより実現できる。
【００５０】
また、コマンドで指定された１つのファイルがＩＣカード２内に存在しない場合であっても、当該ファイルの実データに関連する関連データ（暗号データ）が複数のファイルに分割されてＩＣカード処理端末１に保存されていることもありうる。このような場合、ファイルテーブル２４ａは、１つのファイルに対して複数個の端末側ファイルＩＤを格納するようにすれば良い。この場合、ＣＰＵ２１は、ＩＣカード処理端末１内の複数のファイルをそれぞれ読み出すためのプロアクティブコマンドを複数個生成するようにしても良い。
【００５１】
上記のようなプロアクティブコマンドを生成すると、ＣＰＵ２１は、生成したプロアクティブコマンドをＲＡＭ２３に格納する。なお、ＣＰＵ２１は、生成したプロアクティブコマンドをＮＶＭ２４に格納してもよい。  
生成したプロアクティブコマンドをＲＡＭ２３に格納すると、ＣＰＵ２１は、ＩＣカード２が「Ｑ２」の状態であることを示す情報（０ｘ２４）を状態テーブル２３ａにセットし、プロアクティブセッションを開始すること（あるいは、プロアクティブコマンドが存在すること）を示すレスポンスデータ（たとえば、ステータスワード（ＳＷ）＝９１ｘｘ（ｘｘは、プロアクティブコマンドのバイト数））をＩＣカード処理端末１へ送信する（ステップＳ３）。プロアクティブセッションを開始することを示すレスポンスデータをＩＣカード処理端末１へ送信すると、ＣＰＵ２１は、ＩＣカード２が「Ｑ３」の状態であることを示す情報（０ｘ４８）をＲＡＭ２３の状態テーブル２３ａにセットする。
【００５２】
なお、プロアクティブセッションを開始することを示すレスポンスデータは、ＩＣカード処理端末１へのプロアクティブコマンドの取出し要求（ＦＥＴＣＨコマンドの送信要求）でもある。即ち、プロアクティブセッションを開始することを示すレスポンスデータを送信すると、ＣＰＵ２１は、ＩＣカード処理端末１へのプロアクティブコマンドの取出しを要求したこととなる。
【００５３】
ＩＣカード処理端末１は、通信部１３によりＩＣカード２からのプロアクティブセッションを開始することを示すレスポンスデータを受信する。プロアクティブセッションを開始することを示すレスポンスデータを受信すると、ＣＰＵ１１は、当該ＩＣカード２からのプロアクティブコマンドが受信（実行）可能な状態であるか否かを判断する。プロアクティブコマンドが受信（実行）可能な状態であれば、ＣＰＵ１１は、通信部１３によりＩＣカード２へプロアクティブコマンドの送信を要求する送信要求コマンド（ＦＥＴＣＨコマンド）を送信する（ステップＳ４）。  
ＩＣカード２は、ＵＡＲＴ２５を通じてコマンド送信要求コマンド（ＦＥＴＣＨコマンド）を受信する。ＦＥＴＣＨコマンドを受信すると、ＣＰＵ２１は、ＲＡＭ２３に格納されているプロアクティブコマンドをＵＡＲＴ２５によりＩＣカード処理端末１へ送信する（ステップＳ５）。ＲＡＭ２３に格納されているプロアクティブコマンドをＩＣカード処理端末１へ送信すると、ＣＰＵ２１は、ＩＣカード２が「Ｑ４」の状態であることを示す情報（０ｘ８１）をＲＡＭ２３の状態テーブル２３ａにセットする。
【００５４】
通信部１３によりＩＣカード２からのプロアクティブコマンドを受信すると、ＩＣカード処理端末１のＣＰＵ１１は、プロアクティブコマンドに応じた処理を実行する（ステップＳ６）。ここでは、ＩＣカード処理端末１は、ＩＣカード処理端末１が保存しているファイルＩＤ（ＥＦ  ＃１０２）のファイルのデータを読み出すことを要求するプロアクティブコマンドをＩＣカード２から受信する。
【００５５】
このようなプロアクティブコマンドを受信すると、ＣＰＵ１１は、受信したプロアクティブコマンドからファイルＩＤを抽出し、抽出したファイルＩＤ（ＥＦ  ＃１０２）のファイルのデータをメモリ１２から読み出す。ここでは、ファイルＩＤ「ＥＦ  ＃１０２」のデータは、ＩＣカード２内のファイルＩＤ「ＥＦ  ＃２」の実データを暗号化した暗号データである。ファイル（ＥＦ  ＃１０２）に格納されている暗号データをメモリ１２から読み出すと、ＣＰＵ１１は、当該暗号データを含む端末応答コマンドを生成し、生成した端末応答コマンドを通信部１３によりＩＣカード２へ送信する。
【００５６】
端末応答コマンドは、識別子（Ｔａｇ）、データ長（Ｌｅｎｇｔｈ）、値（Ｖａｌｕｅ）により構成されるＴＬＶ形式のデータ（ＴＬＶデータ）である。また、端末応答コマンドは、入れ子構造（親のＴＬＶデータの値（Ｖａｌｕｅ）の中に、１又は複数のＴＬＶデータが含まれる構造）になっている。
【００５７】
図６は、端末応答コマンドのＶａｌｕｅ部の例を示す図である。  
端末応答コマンドのＶａｌｕｅ部は、「Ｃｏｍｍａｎｄ  ｄｅｔａｉｌ  ＴＬＶ」、「Ｄｅｖｉｃｅ  ｉｄｅｎｔｉｔｉｅｓ  ＴＬＶ」、「Ｒｅｓｕｌｔ  ＴＬＶ」及び「Ｒ−ＡＰＤＵ  ＴＬＶ」を格納する。
【００５８】
「Ｃｏｍｍａｎｄ  ｄｅｔａｉｌ  ＴＬＶ」は、プロアクティブコマンドの種類がＰＥＲＦＯＲＭ  ＣＡＲＤ  ＡＰＤＵであることを示している。「Ｄｅｖｉｃｅ  ｉｄｅｎｔｉｔｉｅｓ  ＴＬＶ」は、ＩＣカード処理端末１からＩＣカード２に向けてレスポンスが送信されていることを示している。「Ｒｅｓｕｌｔ  ＴＬＶ」は、プロアクティブコマンドの実行が正常に終了したことを示している。「Ｒ−ＡＰＤＵ  ＴＬＶ」は、「ＥＦ  ＃１０２」（即ち、暗号データ）を格納する。「Ｒ−ＡＰＤＵ  ＴＬＶ」の末尾にある「９０００」は、コマンドが正常に処理されたことを示すＳＷである。
【００５９】
端末応答コマンドを受信すると、ＩＣカード２のＣＰＵ２１は、端末応答コマンドから「ＥＦ  ＃１０２」のデータ（即ち、リードコマンドで読取が要求された「ＥＦ  ＃２」のデータを暗号化した暗号データ）を抽出する。端末応答コマンドから「ＥＦ  ＃１０２」のデータ（即ち、暗号データ）を抽出すると、ＣＰＵ２１は、抽出した暗号データを、ＮＶＭ２４の記憶領域２４ｂに格納されている鍵を使用して復号化する。復号化の方法は、特定の方法に限定されるものではない。
【００６０】
端末応答コマンドに含まれる暗号データを復号化すると、ＣＰＵ２１は、復号化したデータ（即ち、リードコマンドで読取を要求した「ＥＦ  ＃２」のデータ）及びプロアクティブセッションが終了したことを示すステータスワード（ＳＷ）（たとえば、「ＳＷ＝９０００」）を含むレスポンスデータを生成する。当該レスポンスデータを生成すると、ＣＰＵ２１は、生成したレスポンスデータをＵＡＲＴ２５によりＩＣカード処理端末１へ送信する。生成したレスポンスデータをＩＣカード処理端末１へ送信すると、ＣＰＵ２１は、ＩＣカード２が「Ｑ１」の状態であることを示す情報（０ｘ１２）をＲＡＭ２３の状態テーブル２３ａにセットする。
【００６１】
当該レスポンスデータを受信すると、ＩＣカード処理端末１のＣＰＵ１１は、当該レスポンスデータから復号化されたデータ（即ち、ステップＳ１で送信したリードコマンドで読取を要求した「ＥＦ  ＃２」の実データ）を抽出する。当該レスポンスデータから復号化されたデータ（即ち、「ＥＦ  ＃２」の実データ）を抽出すると、ＣＰＵ２１は、リードコマンド処理を終了する。
【００６２】
なお、プロアクティブコマンドが複数個ある場合、ＩＣカード２のＣＰＵ２１は、ＩＣカード処理端末１から受信した暗号データを復号化し、復号化したデータとプロアクティブセッション中であることを示すステータスワード（たとえば、「ＳＷ＝９１ＸＸ」）とを含むレスポンスデータを生成する。ＩＣカード２のＣＰＵ２１は、プロアクティブセッション中であることを示すステータスワードを含むレスポンスデータをＩＣカード処理端末１へ送信する。これにより、ＩＣカード処理端末１は、再び送信要求コマンド（ＦＥＴＣＨコマンド）をＩＣカード２へ供給することが可能となる。
【００６３】
この場合、ＣＰＵ２１は、プロアクティブセッション中であることを示すステータスワードを含むレスポンスデータを送信するとともに、ＩＣカード２がＱ３の状態であることを示す情報（０ｘ４８）を状態テーブル２３ａにセットし、再度、送信要求コマンド（ＦＥＴＣＨコマンド）待ちの状態となる。ＩＣカード２のＣＰＵ２１は、全てのプロアクティブコマンドを送信するまで、上記の動作を繰り返す。
【００６４】
以上の処理によって、ＩＣカード２は、ＩＣカード２の外部装置であるＩＣカード処理端末１が保存している暗号データをＩＣカード処理端末１から取得し、取得した暗号データを復号化し、復号化したデータをＩＣカード処理端末１へ送信することができる。このように、データを外部装置に格納することにより、ＩＣカード２は、内部メモリのデータ容量を節約することができる。また、ＩＣカード２を紛失した場合であっても、データ本体は暗号化した状態でＩＣカード処理端末が保存しているため、紛失したＩＣカード２からデータが流出することが防止できる。
【００６５】
また、暗号データと鍵とをＩＣカード処理端末１とＩＣカード２とで別々に管理することにより、ＩＣカード処理端末１又はＩＣカード２のどちらか一方に不正にアクセスされた場合であっても、データを読み出すことがでないようにできる。また、ＩＣカード２が元のデータと当該データを暗号化した暗号データとを紐づけるファイルテーブルを管理することにより、ＩＣカード処理端末１に不正にアクセスされた場合であっても、ＩＣカード処理端末１内に格納されている暗号データがいかなるデータを暗号化したデータかを知ることが困難であるため、セキュリティ性を向上できる。
【００６６】
次に、ＩＣカード２におけるコマンド処理の動作について説明する。  
図７は、ＩＣカード２におけるコマンド処理の動作例について説明するためのフローチャートである。  
まず、ＩＣカード２のＣＰＵ２１は、ＵＡＲＴ２５によりＩＣカード処理端末１からのコマンドを受信する（ステップ１１）。ＵＡＲＴ２５によりコマンドを受信すると、ＣＰＵ２１は、受信したコマンドの内容を解析し、コマンドに応じた処理を行う。
【００６７】
たとえば、ＣＰＵ２１は、受信したコマンドがリードコマンドであると判定した場合（ステップ１２、ＹＥＳ）、ＣＰＵ２１は、指定されたファイルのデータを読み出すためのリードコマンド処理を行う（ステップ１３）。また、受信したコマンドがプロアクティブコマンドの送信を要求する送信要求コマンド（ＦＥＴＣＨコマンド）であるであると判定した場合（ステップ１４、ＹＥＳ）、ＣＰＵ２１は、プロアクティブコマンドを送信するための処理（プロアクティブコマンドの送信処理）を行う（ステップ１５）。また、受信したコマンドが端末応答コマンドであると判定した場合（ステップ１６、ＹＥＳ）、ＣＰＵ２１は、端末応答コマンド処理を行う（ステップ１７）。
【００６８】
なお、リードコマンド処理、プロアクティブコマンドの送信処理、および、端末応答コマンド処理については、後述する。  
また、受信したコマンドがリードコマンド、ＦＥＴＣＨコマンド或いは端末応答コマンドでないと判定した場合（ステップ１６、ＮＯ）、ＣＰＵ２１は、受信したコマンドに応じた処理を実行し、実行した処理結果を含む当該コマンドに対するレスポンスデータをＩＣカード処理端末１へ送信する（ステップ１８）。
【００６９】
次に、ＩＣカード２におけるリードコマンド処理について説明する。  
図８は、ＩＣカード２におけるリードコマンド処理の動作例を説明するためのフローチャートである。  
リードコマンドを受信すると、ＩＣカード２のＣＰＵ２１は、リードコマンド内に格納されている読取対象とするファイルを指定するファイルＩＤを抽出する（ステップ２１）。リードコマンド内に格納されている読取対象ファイルのファイルＩＤを抽出すると、ＣＰＵ２１は、ファイルテーブル２４ａから読取対象ファイルのファイルＩＤに対応するアドレス情報を取得する（ステップ２２）。ファイルテーブル２４ａから当該ファイルＩＤに対応するアドレス情報を取得すると、ＣＰＵ２１は、取得したアドレス情報の値が「０ｘＦＦＦＦ」であるか判定する（ステップ２３）。  
取得したアドレス情報が「０ｘＦＦＦＦ」であると判定した場合（ステップ２３、ＹＥＳ）、ＣＰＵ２１は、ＲＡＭ２３内の状態テーブル２３ａを参照して、ＩＣカード２が「Ｑ１」の状態であるか否かを判定する（ステップ２４）。例えば、ＣＰＵ２１は、図３の設定例に従えば、状態テーブル２３ａにおけるＩＣカードの状態を示す値が「０ｘ１２」であるか判定する。
【００７０】
ＩＣカード２が「Ｑ１」の状態であると判定すると（ステップ２４、ＹＥＳ）、ＣＰＵ２１は、ファイルテーブル２４ａから読取対象ファイルに対応する端末側ファイルＩＤを取得する。ファイルテーブル２４ａから読取対象ファイルに対応する端末側ファイルＩＤを取得すると、ＣＰＵ２１は、当該端末側ファイルＩＤのファイルをＩＣカード処理端末１から取得するためのプロアクティブコマンドを生成する（ステップ２５）。当該プロアクティブコマンドを生成すると、ＣＰＵ２１は、生成したプロアクティブコマンドをＲＡＭ２３（或いはＮＶＭ２４でも良い）に格納する。
【００７１】
生成したプロアクティブコマンドをＲＡＭ２３に格納すると、ＣＰＵ２１は、ＩＣカード２を「Ｑ２」の状態にセットする（ステップ２６）。例えば、ＣＰＵ２１は、状態テーブル２３ａの値を「０ｘ２４」に書き換える。  
ＩＣカード２を「Ｑ２」の状態にセットすると、ＣＰＵ２１は、プロアクティブセッションを開始することを示すレスポンスデータ（たとえば、ステータスワードとして「９１ｘｘ」をセットしたレスポンスデータ）を生成し、生成したレスポンスデータをＩＣカード処理端末１へ送信する（ステップ２７）。
【００７２】
生成したレスポンスデータをＩＣカード処理端末１へ送信すると、ＣＰＵ２１は、ＩＣカード２を「Ｑ３」の状態にセットする（ステップ２８）。例えば、ＣＰＵ２１は、状態テーブル２３ａの値を「０ｘ４８」に書き換える。  
ＩＣカード２を「Ｑ３」の状態にセットすると、ＣＰＵ２１は、リードコマンドの処理を終了し、ＩＣカード処理端末１からのコマンドを受け付ける状態となる。
【００７３】
ＩＣカード２が「Ｑ１」の状態でないと判定した場合（ステップ２４、ＮＯ）、ＣＰＵ２１は、ＩＣカード２の状態が適切でないことを示すエラーレスポンスを生成し、生成したエラーレスポンスをＩＣカード処理端末１へ送信する（ステップ２９）。生成したエラーレスポンスをＩＣカード処理端末１へ送信すると、ＣＰＵ２１は、ＩＣカード２を「Ｑ１」の状態にセットする（ステップ３０）。例えば、ＣＰＵ２１は、状態テーブル２３ａの値を「０ｘ１２」に書き換える。ＩＣカード２を「Ｑ１」の状態にセットすると、ＣＰＵ２１は、リードコマンドの処理を終了し、ＩＣカード処理端末１からのコマンドを受け付ける状態となる。
【００７４】
また、ファイルテーブル２４ａから取得したアドレス情報が「０ｘＦＦＦＦ」でないと判定した場合（ステップ２３、ＮＯ）、ＣＰＵ２１は、取得したアドレス情報とサイズ情報とが示すデータエリアに書き込まれているデータを読取る（ステップ３１）。取得したアドレス情報が示すデータエリアに書き込まれているデータを読取ると、ＣＰＵ２１は、読み取ったデータを含むレスポンスデータを生成し、生成したレスポンスデータをＩＣカード処理端末１へ送信する（ステップ３２）。生成したレスポンスデータをＩＣカード処理端末１へ送信すると、ＣＰＵ２１は、リードコマンドの処理を終了し、ＩＣカード処理端末１からのコマンドを受け付ける状態となる。
【００７５】
次に、ＩＣカード２におけるプロアクティブコマンドの送信要求コマンド（ＦＥＴＣＨコマンド）に対応するプロアクティブコマンドの送信処理の例について説明する。  
図９は、ＩＣカード２における送信要求コマンド（ＦＥＴＣＨコマンド）に対応する処理の動作例を説明するためのフローチャートである。  
プロアクティブコマンドの送信要求コマンド（ＦＥＴＣＨコマンド）を受信すると、ＣＰＵ２１は、ＩＣカード２が「Ｑ３」の状態であるか否かを判定する（ステップ４１）。例えば、図３の設定例に従えば、ＣＰＵ２１は、状態テーブル２３ａにおけるＩＣカード２の状態を示す値が「０ｘ４８」であるか否かを判定する。
【００７６】
ＩＣカード２が「Ｑ３」の状態であると判定した場合（ステップ４１、ＹＥＳ）、ＣＰＵ２１は、ＲＡＭ２３に格納されているプロアクティブコマンドをＩＣカード処理端末１へ送信する（ステップ４２）。なお、プロアクティブコマンドがＮＶＭ２４に格納されている場合、ＣＰＵ２１は、プロアクティブコマンドをＮＶＭ２４から読み出し、読み出したプロアクティブコマンドをＩＣカード処理端末１へ送信する。
【００７７】
プロアクティブコマンドをＩＣカード処理端末１へ送信すると、ＣＰＵ２１は、ＩＣカード２を「Ｑ４」の状態にセットする（ステップ４３）。例えば、ＣＰＵ２１は、状態テーブル２３ａの値を「０ｘ８１」に書き換える。ＩＣカード２を「Ｑ４」の状態にセットした場合、ＣＰＵ２１は、プロアクティブコマンドの送信処理を終了し、ＩＣカード処理端末１からのコマンドを受け付ける状態となる。
【００７８】
また、ＩＣカード２が「Ｑ３」の状態でないと判定した場合（ステップ４１、ＮＯ）、ＣＰＵ２１は、ＩＣカード２の状態が適切でないことを示すエラーレスポンスを生成し、生成したエラーレスポンスをＩＣカード処理端末１へ送信する（ステップ４４）。生成したエラーレスポンスをＩＣカード処理端末１へ返信すると、ＣＰＵ２１は、ＩＣカード２の状態をＱ１にセットする（ステップ４５）。例えば、ＣＰＵ２１は、状態テーブル２３ａにおけるＩＣカード２の状態を示す値を「０ｘ１２」に書き換える。ＩＣカード２を「Ｑ１」の状態にセットすると、ＣＰＵ２１は、コマンド送信要求コマンドの処理を終了し、ＩＣカード処理端末１からのコマンドを受け付ける状態となる。
【００７９】
次に、端末応答コマンドに対応する処理について説明する。  
図１０は、ＩＣカード２における端末応答コマンドに対応する処理の動作例を説明するためのフローチャートである。  
端末応答コマンドを受信すると、ＣＰＵ２１は、当該ＩＣカード２が「Ｑ４」の状態であるか否かを判定する（ステップ５１）。例えば、図３の設定例に従えば、ＣＰＵ２１は、状態テーブル２３ａにおけるＩＣカード２の状態を示す値が「０ｘ８１」であるか判定する。
【００８０】
ＩＣカード２が「Ｑ４」の状態であると判定した場合（ステップ５１、ＹＥＳ）、ＣＰＵ２１は、端末応答コマンドを確認する（ステップ５２）。たとえば、ＣＰＵ２１は、端末応答コマンドのデータ部に「Ｒｅｓｕｌｔ  ＴＬＶ」が存在するか、「Ｒｅｓｕｌｔ  ＴＬＶ」がプロアクティブコマンドの正常終了を示しているか（たとえば、「Ｒｅｓｕｌｔ  ＴＬＶ」のＶａｌｕｅ部の値が「００」であるか）、端末応答コマンドのデータ部に「Ｒ−ＡＰＤＵ  ＴＬＶ」が存在するか、「Ｒ−ＡＰＤＵ  ＴＬＶ」がコマンドの正常終了を示しているか（たとえば、「Ｒ−ＡＰＤＵ  ＴＬＶ」の末尾が「９０００」であるか）などを確認する。
【００８１】
端末応答コマンドの確認結果として端末応答コマンドが正常応答であると判定した場合（ステップ５３、ＹＥＳ）、ＣＰＵ２１は、端末応答コマンドから暗号データ（たとえば、「Ｒ−ＡＰＤＵ  ＴＬＶ」に格納されている暗号データ）を抽出する。端末応答コマンドから暗号データを抽出すると、ＣＰＵ２１は、ＮＶＭ２４の記憶領域２４ｂに格納されている鍵を用いて抽出した暗号データを復号する（ステップ５４）。
【００８２】
ＮＶＭ２４の記憶領域２４ｂに格納されている鍵を用いて抽出した暗号データを復号すると、ＣＰＵ２１は、暗号データの復号化に成功したか判定する（ステップ５５）。たとえば、ＣＰＵ２１は、復号化したデータが暗号ブロック長の倍数であるか、パッティング除去が正常に行われたかなどにより復号化の成否を判定する。
【００８３】
暗号データの復号化に成功したと判定すると（ステップ５５、ＹＥＳ）、ＣＰＵ２１は、全てのプロアクティブコマンドが送信済みであるか否かを判定する（ステップ５６）。例えば、ＣＰＵ２１が複数のプロアクティブコマンドを生成した場合、ＣＰＵ２１は、生成した複数のプロアクティブコマンドを全て送信したか判定する。
【００８４】
全てのプロアクティブコマンドが送信済みであると判定した場合（ステップ５６、ＹＥＳ）、ＣＰＵ２１は、復号化したデータ及びプロアクティブセッションが終了したことを示すステータスワード（たとえば、「ＳＷ＝９０００」）を含むレスポンスデータを生成し、生成したレスポンスデータをＩＣカード処理端末１へ送信する（ステップ５７）。
【００８５】
生成したレスポンスデータをＩＣカード処理端末１へ送信すると、ＣＰＵ２１は、ＩＣカード２を「Ｑ１」の状態にセットする（ステップ５８）。例えば、ＣＰＵ２１は、状態テーブル２３ａにおけるＩＣカード２の状態を示す値を「０ｘ１２」に書き換える。  
ＩＣカード２を「Ｑ１」の状態にセットすると、ＣＰＵ２１は、端末応答コマンドに対する処理を終了し、ＩＣカード処理端末１からのコマンドを受け付ける状態となる。
【００８６】
また、全てのプロアクティブコマンドを送信していないと判定した場合（ステップ５６、ＮＯ）、ＣＰＵ２１は、復号化したデータ及びプロアクティブセッション中であることを示すステータスワード（たとえば、「ＳＷ＝９１ｘｘ」）を含むレスポンスデータを生成し、生成したレスポンスデータをＩＣカード処理端末１へ送信する（ステップ５９）。
【００８７】
生成したレスポンスデータをＩＣカード処理端末１へ送信すると、ＣＰＵ２１は、ＩＣカード２を「Ｑ３」の状態にセットする（ステップ６０）。例えば、ＣＰＵ２１は、状態テーブル２３ａにおけるＩＣカード２の状態を示す値を「０ｘ４８」に書き換える。  
ＩＣカード２を「Ｑ３」の状態にセットすると、ＣＰＵ２１は、端末応答コマンドに対する処理を終了し、ＩＣカード処理端末１からのコマンドを受け付ける状態となる。
【００８８】
また、ＩＣカード２が「Ｑ４」の状態でないと判定した場合（ステップ５１、ＮＯ）、ＣＰＵ２１は、ＩＣカード２の状態が適切でないことを示すエラーレスポンスを生成し、生成したエラーレスポンスをＩＣカード処理端末１へ送信する（ステップ６１）。生成したエラーレスポンスをＩＣカード処理端末１へ送信すると、ＣＰＵ２１は、ＩＣカード２を「Ｑ１」の状態にセットする（ステップ５８）。例えば、ＣＰＵ２１は、状態テーブル２３ａにおけるＩＣカード２の状態を示す値を「０ｘ１２」に書き換える。ＩＣカード２を「Ｑ１」の状態にセットすると、ＣＰＵ２１は、端末応答コマンドに対する処理を終了し、ＩＣカード処理端末１からのコマンドを受け付ける状態となる。
【００８９】
また、端末応答コマンドの確認結果として端末応答コマンドが正常応答でないと判定した場合（ステップ５３、ＮＯ）、ＣＰＵ２１は、端末応答コマンドが正常応答でないことを示すエラーレスポンスを生成し、生成したエラーレスポンスをＩＣカード処理端末１へ送信する（ステップ６１）。生成したエラーレスポンスをＩＣカード処理端末１へ送信すると、ＣＰＵ２１は、ＩＣカード２を「Ｑ１」の状態にセットする（ステップ５８）。例えば、ＣＰＵ２１は、状態テーブル２３ａにおけるＩＣカード２の状態を示す値を「０ｘ１２」に書き換える。ＩＣカード２を「Ｑ１」の状態にセットすると、ＣＰＵ２１は、端末応答コマンドに対する処理を終了し、ＩＣカード処理端末１からのコマンドを受け付ける状態となる。
【００９０】
また、暗号データの復号化に失敗したと判定した場合（ステップ５５、ＮＯ）、ＣＰＵ２１は、暗号データの復号化に失敗したことを示すエラーレスポンスを生成し、生成したエラーレスポンスをＩＣカード処理端末１へ送信する（ステップ６１）。生成したエラーレスポンスをＩＣカード処理端末１へ送信すると、ＣＰＵ２１は、ＩＣカード２を「Ｑ１」の状態にセットする（ステップ５８）。例えば、ＣＰＵ２１は、状態テーブル２３ａにおけるＩＣカード２の状態を示す値を「０ｘ１２」に書き換える。ＩＣカード２を「Ｑ１」の状態にセットすると、ＣＰＵ２１は、端末応答コマンドに対する処理を終了し、ＩＣカード処理端末１からのコマンドを受け付ける状態となる。
【００９１】
以上の処理によれば、外部装置であるＩＣカード処理端末が暗号化した状態でデータを格納しておき、ＩＣカードは、必要に応じてプロアクティブセッションによりＩＣカード処理端末から暗号化したデータを取得することができる。また、ＩＣカードは、ＩＣカード処理端末から取得した暗号データを復号化することができ、復号化したデータをＩＣカード処理端末に送信することもできる。
【００９２】
なお、ＩＣカード２の各動作例において、ＣＰＵ２１はエラーレスポンスを送信すると、ＩＣカード２を「Ｑ１」の状態にセットしたが、ＣＰＵ２１がエラーレスポンスを送信した後もＩＣカード２の状態を変更しなくともよい。この場合、ＣＰＵ２１は、ＩＣカード処理端末１からエラーが発生したコマンドが送信されるのを待ってもよい。
【００９３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９４】
１…ＩＣカード処理端末（外部装置）、２…ＩＣカード（携帯可能電子装置）、１１…ＣＰＵ、１２…メモリ、１３…通信部、１４…システムバス、Ｃ…本体、Ｃａ…ＩＣチップ、Ｍ…モジュール、２１…ＣＰＵ、２２…ＲＯＭ、２３…ＲＡＭ、２４…ＮＶＭ、２５…ＵＡＲＴ、２６…システムバス。
【図１】
2014041552.tif 000003
【図２】
2014041552.tif 000004
【図３】
2014041552.tif 000005
【図４】
2014041552.tif 000006
【図５】
2014041552.tif 000007
【図６】
2014041552.tif 000008
【図７】
2014041552.tif 000009
【図８】
2014041552.tif 000010
【図９】
2014041552.tif 000011
【図１０】
2014041552.tif 000012