(57)【要約】      （修正有）【課題】ＩＣカード処理装置との通信手続きを簡略化できるＩＣカードを提供する。【解決手段】ＩＣカード２は、受信手段と、実行手段と、返信手段とを有する。受信手段は、ＩＣカード処理装置１からのコマンドデータを受信する。実行手段は、受信手段により受信した１つのコマンドデータに複数の命令が含まれる場合、受信したコマンドデータに含まれる複数の命令を実行する。返信手段は、実行手段により実行した複数の命令の実行結果を格納した１つの応答データを当該コマンドの送信元となるＩＣカード処理装置１に返信する。【選択図】図３
2013164686.tif 000002
【特許請求の範囲】
【請求項１】
外部装置から与えられる命令を実行するＩＣカードであって、
前記外部装置からのコマンドデータを受信する受信手段と、
前記受信手段により受信した１つのコマンドデータに複数の命令が含まれる場合、前記受信したコマンドデータに含まれる前記複数の命令を実行する実行手段と、
前記実行手段により実行した複数の命令の実行結果を格納した１つの応答データを当該コマンドの送信元となる前記外部装置に返信する返信手段と、
を具備するＩＣカード。
【請求項２】
前記実行手段は、前記受信手段により受信した１つのコマンドデータに格納されている順番で前記複数の命令を順に実行する、
前記請求項１に記載のＩＣカード。
【請求項３】
前記返信手段は、前記実行手段により実行した各命令の実行結果を示す情報を前記コマンドデータに対応する各命令が格納されていた順番に並べたデータを含む応答データを前記外部装置に返信する、
前記請求項１又は２の何れかに記載のＩＣカード。
【請求項４】
前記実行手段は、前記複数の命令のうち何れかの命令を実行中にエラーが発生した場合、当該コマンドデータに含まれる複数の命令に対する処理を停止する、
前記請求項１乃至３の何れか1項に記載のＩＣカード。
【請求項５】
前記返信手段は、前記エラーが発生するまでに前記実行手段が実行した各命令の実行結果を示す情報に続けて前記エラーが発生したことを示す情報を並べたデータを含む応答データを前記外部装置に返信する、
前記請求項１乃至４の何れか1項に記載のＩＣカード。
【請求項６】
前記実行手段は、前記複数の命令のうち何れかの命令を実行中にエラーが発生した場合であっても、継続して前記コマンドデータに含まれる全ての命令を順番に実行する、
前記請求項１乃至３の何れか１項に記載のＩＣカード。
【請求項７】
前記返信手段は、正常終了した命令の実行結果を示す情報とエラーが発生した命令のエラーを示す情報とを各命令の実行順番に並べたデータを含む応答データを前記外部装置に返信する、
前記請求項１、２、３もしくは６の何れか1項に記載のＩＣカード。
【請求項８】
外部装置から与えられる命令を実行するＩＣカードであって、
前記外部装置からのコマンドデータを受信する受信手段と、前記受信手段により受信した１つのコマンドデータに複数の命令が含まれる場合、前記受信したコマンドデータに含まれる前記複数の命令を実行する実行手段と、前記実行手段により実行した複数の命令の実行結果を格納した１つの応答データを当該コマンドの送信元となる前記外部装置に返信する返信手段とを有するＩＣモジュールと、
前記ＩＣモジュールを収納した本体と、
を具備するＩＣカード。
【請求項９】
外部装置から与えられる命令を実行する携帯可能電子装置であって、
前記外部装置からのコマンドデータを受信する受信手段と、
前記受信手段により受信した１つのコマンドデータに複数の命令が含まれる場合、前記受信したコマンドデータに含まれる前記複数の命令を実行する実行手段と、
前記実行手段により実行した複数の命令の実行結果を格納した１つの応答データを当該コマンドの送信元となる前記外部装置に返信する返信手段と、
を具備する携帯可能電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ＩＣカードおよび携帯可能電子装置に関する。
【背景技術】
【０００２】
従来、ＩＣカード処理装置は、ＩＣカードへ命令を実行させる際、１つの命令をコマンドの情報フィールドに格納したコマンドをＩＣカードに送信する。コマンドを受信したＩＣカードは、当該コマンドの情報フィールドに格納されている１つの命令を実行する。実行が終了すると、ＩＣカードは、実行結果を情報フィールドに格納した応答データをＩＣカード処理装置へ返信する。即ち、従来のＩＣカードは、１つのコマンドでは１つの命令しか受け付けられない。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】ＩＳＯ／ＩＥＣ  １４４４３
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＩＣカード処理装置は１つずつしか命令を送信できずＩＣカードも１つずつしか実行結果を返信することができない。ＩＣカード処理装置がＩＣカードに多くの命令を要求する場合、ＩＣカードとＩＣカード処理装置との間では、通信手続きが多くなってしまうという問題がある。これらの課題を解決するため、多く命令が要求される場合であっても通信手続きなどが効率的に行えるＩＣカードおよび携帯可能電子装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によれば、ＩＣカードは、受信手段と、実行手段と、返信手段とを有する。受信手段は、外部装置からのコマンドデータを受信する。実行手段は、受信手段により受信した１つのコマンドデータに複数の命令が含まれる場合、受信したコマンドデータに含まれる複数の命令を実行する。返信手段は、実行手段により実行した複数の命令の実行結果を格納した１つの応答データを当該コマンドの送信元となる外部装置に返信する。
【図面の簡単な説明】
【０００６】
【図１】本実施形態に係るＩＣカードとＩＣカード処理装置の構成について説明するためのブロック図である。
【図２】本実施形態に係るＩＣカード内のＩＣモジュールの構成について説明するためのブロック図である。
【図３】本実施形態に係るＩＣカード処理装置とＩＣカード間でのコマンドの送受信を説明するための図である。
【図４】本実施形態に係るＩＣカードが第１の処理例において送受信するコマンドデータおよびレスポンスデータの例を示す図である。
【図５】本実施形態に係るＩＣカードにおける第１の処理例を説明するためのフローチャートである。
【図６】本実施形態に係るＩＣカードが第２の処理例において送受信するコマンドデータおよびレスポンスデータの例を示す図である。
【図７】本実施形態に係るＩＣカードにおける第２の処理例を説明するためのフローチャートである。
【発明を実施するための形態】
【０００７】
以下、実施形態について、図面を参照して説明する。  
図１は、本実施形態に係る携帯可能電子装置としてのＩＣカード２と通信を行う外部装置としてのＩＣカード処理装置１の構成について説明するためのブロック図である。  
まず、上記ＩＣカード処理装置１の構成について説明する。  
上記ＩＣカード処理装置１は、図１に示すように、制御部１１、ディスプレイ１２、キーボード１３、及び、カードリーダライタ１４などを有する。
【０００８】
上記制御部１１は、ＩＣカード処理装置１全体の動作を制御するものである。上記制御部１１は、ＣＰＵ、種々のメモリ及び各種インターフェースなどにより構成される。たとえば、上記制御部１１は、パーソナルコンピュータ（ＰＣ）により構成される。  
上記制御部１１は、上記カードリーダライタ１４によりＩＣカード２へコマンドを送信する機能、ＩＣカード２から受信したデータを基に種々の処理を行う機能などを有する。たとえば、上記制御部１１は、カードリーダライタ１４を介してＩＣカード２にデータの書き込みコマンドを送信することによりＩＣカード２内の不揮発性メモリにデータを書き込む制御を行う。また、上記制御部１１は、ＩＣカード２に読み取りコマンドを送信することによりＩＣカード２からデータを読み出す制御を行う。
【０００９】
上記ディスプレイ１２は、上記制御部１１の制御により種々の情報を表示する表示装置である。上記キーボード１３は、当該ＩＣカード処理装置１の操作員が操作する操作部として機能し、操作員により種々の操作指示やデータなどが入力される。
【００１０】
上記カードリーダライタ１４は、上記ＩＣカード２との通信を行うためのインターフェース装置である。上記カードリーダライタ１４は、上記ＩＣカード２の通信方式に応じたインターフェースにより構成される。たとえば、上記ＩＣカード２が接触型のＩＣカードである場合、上記カードリーダライタ１４は、ＩＣカード２のコンタクト部と物理的かつ電気的に接続するための接触部などにより構成される。
【００１１】
また、上記ＩＣカード２が非接触型のＩＣカードである場合、上記カードリーダライタ１４は、ＩＣカード２との無線通信を行うためのアンテナおよび通信制御などにより構成される。上記カードリーダライタ１４では、上記ＩＣカード２に対する電源供給、クロック供給、リセット制御、データの送受信が行われるようになっている。このような機能によってカードリーダライタ１４は、上記制御部１１による制御に基づいて上記ＩＣカード２の活性化（起動）、種々のコマンドの送信、及び送信したコマンドに対する応答の受信などを行なう。
【００１２】
次に、上記ＩＣカード２について説明する。  
本実施形態においては、携帯可能電子装置の一例としてのＩＣカード２について説明するものとする。  
上記ＩＣカード２は、上記ＩＣカード処理装置１などの上位機器から電力などの供給を受けた際、活性化される（動作可能な状態になる）ようになっている。例えば、上記ＩＣカード２が接触型の通信によりＩＣカード処理装置１と接続される場合、つまり、ＩＣカード２が接触型のＩＣカードで構成される場合、上記ＩＣカード２は、通信インターフェースとしてのコンタクト部を介してＩＣカード処理装置１からの動作電源及び動作クロックの供給を受けて活性化される。
【００１３】
また、上記ＩＣカード２が非接触型の通信方式によりＩＣカード処理装置１と接続される場合、つまり、上記ＩＣカード２が非接触式のＩＣカードで構成される場合、上記ＩＣカード２は、通信インターフェースとしてのアンテナ及び変復調回路などを介してＩＣカード処理装置１からの電波を受信し、その電波から図示しない電源部により動作電源及び動作クロックを生成して活性化するようになっている。
【００１４】
なお、以下の実施形態の説明においては、主として、ＩＣカード２が非接触式のＩＣカードであることを想定して説明する。ただし、非接触式のＩＣカードと接触式のＩＣカードとは、ＩＣカード処理装置としての外部装置との通信方式が異なるだけであるため、以下に説明する実施形態は、接触式のＩＣカードにも同様に適用できるものである。
【００１５】
次に、上記ＩＣカード２の構成例について説明する。  
図２は、本実施の形態に係るＩＣカード２の構成例を概略的に示すブロック図である。上記ＩＣカード２は、プラスチックなどで形成されたカード状の本体Ｃを有する。ＩＣカード２は、本体Ｃ内にモジュールＭが内蔵されている。上記モジュールＭは、１つまたは複数のＩＣチップＣａと外部通信用の通信インターフェース（図２に示す構成例ではアンテナ）が接続された状態で一体的に形成され、ＩＣカード２の本体Ｃ内に埋設されている。また、上記ＩＣカード２のモジュールＭは、図２に示すように、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、ＥＥＰＲＯＭ２４、乱数発生回路２５、変復調部２６、および、アンテナ２７を備えている。
【００１６】
ＩＣカード２は、ＩＣカード処理装置１などの上位機器から電力の供給を受けた場合、動作可能な状態になる。例えば、ＩＣカード２が非接触式のＩＣカードとして構成される場合、ＩＣカード２は、ＩＣカード処理装置１からの電波をアンテナにより受信し、その受信した電波から図示しない電源部により動作電源用の電圧及び動作クロックを生成して活性化する。この活性化処理において、ＣＰＵ２１は、ＩＣカード処理装置１とデータ通信を行うための設定なども行う。
【００１７】
ＣＰＵ２１は、ＩＣモジュールＭ全体の制御を司る制御部として機能する。ＣＰＵ２１は、ＲＯＭ２２あるいはＥＥＰＲＯＭ２４に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。たとえば、ＣＰＵ２１は、オペレーティングシステムのプログラムを実行することにより、当該ＩＣカード２の基本的な動作制御を行う。また、ＣＰＵ２１は、アプリケーションプログラムを実行することにより、当該ＩＣカード２の運用形態に応じた種々の動作制御を行う。なお、各種の機能のうちの一部は、ハードウエア回路により実現されるものであっても良い。この場合、ＣＰＵ２１は、ハードウエア回路により実行される機能を制御する。
【００１８】
ＲＯＭ２２は、予め制御用のプログラム及び制御データなどを記憶する不揮発性のメモリである。ＲＯＭ２２は、製造段階で制御プログラム及び制御データなどを記憶した状態でＩＣモジュールＭ内に組み込まれる。即ち、ＲＯＭ２２に記憶される制御プログラム及び制御データは、予めＩＣモジュールＭの仕様に応じて組み込まれる。
【００１９】
ＲＡＭ２３は、揮発性のメモリである。ＲＡＭ２３は、ＣＰＵ２１が処理中のデータなどを一時的に格納する。ＲＡＭ２３は、たとえば、ＩＣカード処理装置１から受信するコマンドデータなどの受信データを保持する受信用バッファ２７、演算処理中のデータを保持する計算用バッファ２８、コマンドデータに対する応答（レスポンス）としてのレスポンス（応答）データなどの送信用のデータを保持する送信用バッファ２９を備えていても良い。
【００２０】
ＥＥＰＲＯＭ２４は、データの書き込み及び書換えが可能な不揮発性のメモリである。ＥＥＰＲＯＭ２４の代わりに、例えば、フラッシュＲＯＭなどの書換え可能な不揮発性メモリにより構成される。ＥＥＰＲＯＭ２４は、ＩＣカード２の運用用途に応じて制御プログラム、アプリケーション、及び種々のデータを格納する。例えば、ＥＥＰＲＯＭ２４では、プログラムファイル及びデータファイルなどが作成される。作成された各ファイルは、制御プログラム及び種々のデータなどが書き込まれる。
【００２１】
乱数発生回路２５は、乱数を発生させる。乱数発生回路２５は、ＣＰＵ２１からの指示に応じて乱数を生成する。たとえば、ＣＰＵ２１は、ＩＣカード処理装置１から乱数の生成を要求するコマンドを受信した場合に乱数発生回路２５に乱数の生成を指示する。乱数は、認証処理などに用いられる。
【００２２】
変復調部２６とアンテナ２７とは、当該ＩＣカード２が非接触型のＩＣカードとしてＩＣカード処理装置１のカードリーダライタ１４との無線通信を行うための通信インターフェースとして機能する。  
アンテナ２７は、ＩＣカード処理装置２のカードリーダライタ１４との通信を行うためのアンテナである。アンテナ２７は、ＩＣチップＣａ内の変復調部２６に接続される。アンテナ２７は、カードリーダライタ１４から受信した搬送波を変復調部２６へ供給し、変復調部２６から供給された搬送波を電波として送信する。
【００２３】
変復調部２６は、アンテナ２７がＩＣカード処理装置１から受信した搬送波を受け取り、当該搬送波を復調することにより元のデータに戻す。また、変復調部２６は、ＩＣカード２からＩＣカード処理装置１へ送信するデータをＣＰＵ２１から受け取り、当該データを電波で送信する搬送波へ変調する。変復調部２６は、生成した搬送波をアンテナ２７を介してＩＣカード処理装置１へ送信する。
【００２４】
なお、当該ＩＣカード２が接触型のＩＣカードとして実現される場合、ＩＣカード処理装置１と通信を行うための通信インターフェースは、変復調部とアンテナとに変えて、ＩＣカード処理装置１のカードリーダライタ１４と物理的かつ電気的に接触して信号の送受信を行うための通信制御部とコンタクト部とにより構成すれば良い。
【００２５】
次に、ＩＣカード２におけるコマンド処理について説明する。  
本実施形態のＩＣカード２は、ＩＣカード処理装置１から１回に受信する１つのコマンドデータに含まれる複数の命令を順に実行する機能、および、それらの命令の実行結果を１つのレスポンスデータでＩＣカード処理装置１へ返信する機能を有する。このようなＩＣカード２の機能に対応して、ＩＣカード処理装置１は、ＩＣカード２に実行させる複数の命令を含めた１つのコマンドデータを生成する機能を有する。
【００２６】
また、ＩＣカード処理装置１は、１つのコマンドデータで複数の命令をＩＣカードに実行させる場合、当該ＩＣカード２との通信設定において、通信フレームの最大長を２つ以上の命令若しくは応答を格納できる長さに設定する。１つのコマンドデータに１つの命令（コマンド）を格納する形態においては、コマンドデータ全体のフォーマットが規定の長さとなるため、通信フレームの最大長は、規定の長さに設定すれば良い。これに対して、１つのコマンドデータに複数の命令（コマンド）を格納する場合、コマンドデータ全体のフォーマットも長くする必要が生じる。このため、ＩＣカード処理装置１は、１つのコマンドデータで複数の命令をＩＣカードに実行させる場合、当該ＩＣカード２との通信設定において、通信フレームの最大長を２つ以上の命令若しくは応答を格納できる長さに設定する。
【００２７】
たとえば、ＩＣカード処理装置１は、ＩＣカード２を活性化させる活性化処理において通信フレームの最大長の設定を含む通信設定を行う。このＩＣカード２の活性化処理において、ＩＣカード処理装置１は、カードリーダライタ１４を介して、ＡＴＴＲＩＢコマンドをＩＣカード２に送信することで、ＩＣカード処理装置１とＩＣカード２との間における通信フレームの最大長を設定する。この場合、ＩＣカード処理装置１は、通信フレームの最大長として、２つ以上の命令もしくは応答を格納したデータ（コマンドデータもしくはレスポンスデータ）を送受信することができる長さを設定する。
【００２８】
次に、ＩＣカード処理装置１とＩＣカード２とが送受信するコマンドデータとレスポンスデータとの例について説明する。  
図３は、２つの命令を含むコマンドデータとそれら２つの命令に対する２つの応答を含むレスポンスデータとの構成例を示す図である。図３に示す例では、ＩＣカード処理装置１が２つの命令を含むコマンドデータをＩＣカード２へ送信し、ＩＣカード２が２つの命令に対するレスポンスデータをＩＣカード処理装置１へ送信するまでの過程を概略的に示している。なお、図３に示すレスポンスデータは、コマンドデータに含まれる２つの命令を正常に実行できた場合のものを想定している。
【００２９】
ＩＣカード２に２つの命令を実行させる場合、ＩＣカード処理装置１の制御部１１は、ＩＣカード２へ供給するコマンドデータの情報フィールド（ＩＮＦ）に２つの命令を格納する。ここでは、図３に示すように、ＩＣカード２に実行させる２つの命令(コマンド)が「Command APUD 1」、「Command APUD 2」であるものとする。制御部１１は、２つの命令を格納したＩＮＦの前にプロローグフィールドである「ＰＣＢ」、「ＣＩＤ」、および「ＮＡＤ」を付加し、当該ＩＮＦの後にエピローグフィールドである「ＣＲＣ」を付加することにより、図３に示すような１つのコマンドデータを生成する。２つの命令を格納した１つのコマンドデータを作成すると、制御部１１は、カードリーダライタ１４により当該コマンドデータを搬送波へ変調してＩＣカード２へ送信する。
【００３０】
なお、コマンドデータでは、情報フィールド（ＩＮＦ）に幾つの命令を格納したかを示す情報を含めるようにしても良い。たとえば、プロローグフィールドの「ＰＣＢ」における何れかのビットがＩＮＦに格納した命令の数を示す情報としても良い。また、ＩＮＦの先頭に、当該ＩＮＦ内に格納した命令数を示す情報を格納するようにしても良い。同様に、レスポンスデータにおいても、情報フィールド（ＩＮＦ）に幾つの命令に対するレスポンス（処理結果）を格納したかを示す情報を含めるようにしても良い。たとえば、プロローグフィールドの「ＰＣＢ」における何れかのビットがＩＮＦに格納したレスポンスの数を示す情報としても良い。また、ＩＮＦの先頭に、当該ＩＮＦ内に格納したレスポンスの数を示す情報を格納するようにしても良い。
【００３１】
ＩＣカード２は、アンテナ２７によりＩＣカード処理装置１から送信されたコマンドデータを受信する。変復調部２６は、アンテナ２７によりＩＣカード処理装置１から受信した電波を復調し、当該コマンドデータを得る。変復調部２６は、ＩＣカード処理装置１から受信した電波から得られたコマンドデータをＣＰＵ２１へ送る。ＣＰＵ２１は、当該コマンドデータの情報フィールド（ＩＮＦ）内にある全ての命令を抽出する。ＣＰＵ２１は、抽出した全ての命令をＲＡＭ２３内に設けた受信バッファに格納する。たとえば、ＣＰＵ２１は、コマンドデータのＩＮＦ内の全命令を、格納されていた順にならべてＲＡＭ２３内に格納する。ＣＰＵ２１は、ＲＡＭ２３内に格納した受信したコマンドデータにおける各命令をＩＮＦ内に並べられた順番で実行する。図３に示す例では、ＣＰＵ２１は、「Command APUD 1」および「Command APUD 2」の順番で各命令をそれぞれ実行する。
【００３２】
ＣＰＵ２１は、各命令の実行結果を示す情報を、当該コマンドデータに対するレスポンスデータの情報フィールド（ＩＮＦ）に格納するデータとしてＲＡＭ２３内に設けた計算用バッファに格納する。この場合、ＣＰＵ２１は、コマンドデータの情報フィールドに格納された各命令の順番と同一になるように、各命令の実行結果を示す情報を順番に計算用バッファに格納する。図３に示す例では、ＣＰＵ２１は、「Command APUD 1」の実行結果としての「Response APDU 1」、および、「Command APUD 1」の実行結果としての「Response APDU 2」を順番に計算用バッファに格納する。
【００３３】
受信したコマンドデータに含まれる全ての命令を実行し終えると、ＣＰＵ２１は、ＲＡＭ２３内の計算用バッファに格納した各命令の実行結果を示す情報を並べたデータ（ＩＮＦ）の前にプロローグフィールドである「ＰＣＢ」、「ＣＩＤ」、および「ＮＡＤ」を付加し、各命令の実行結果を示す情報を並べたデータ（ＩＮＦ）の後にエピローグフィールドである「ＣＲＣ」を付加して、１つのレスポンスデータを完成させる。ＣＰＵ２１は、完成したレスポンスデータをＩＣカード処理装置１へ送信するため、ＲＡＭ２３内に設けた送信バッファに格納する。すると、変復調部２６は、ＲＡＭ２３の送信バッファに格納されているレスポンスデータを搬送波に変調し、アンテナ２７を介して、ＩＣカード処理装置１に送信する。
【００３４】
図３に示す例によれば、ＩＣカード処理装置１は、２つの命令をＩＮＦに格納した１つのコマンドデータをＩＣカード２に送信する。ＩＣカード２は、１つのコマンドデータのＩＮＦに格納された２つの命令を格納されている順番に実行する。ＩＣカード２は、２つの命令の実行結果を実行した順番でＩＮＦに格納した１つのレスポンスデータをＩＣカード処理装置２へ返信する。これにより、送受信するコマンドデータとレスポンスデータとがそれぞれ１回のみであっても、ＩＣカードは、複数の命令を実行できる。
【００３５】
次に、１つのコマンドデータに含まれる複数の命令を順番に実行している間にエラーが発生した場合の処理例について説明する。本実施形態においては、複数の命令を実行中にエラーが発生した場合の処理として第１の処理例と第２の処理例とを説明する。なお、エラーが発生しない場合、第１の処理例であっても第２の処理例であっても、図３に示すように、複数の命令の実行結果を順番にＩＮＦに格納したレスポンスデータを返信するものとする。
【００３６】
まず、ＩＣカード２が受信したコマンドデータに含まれる複数の命令を順に実行中にエラーが発生した場合の一動作例として第１の処理例について説明する。  
第１の処理例では、エラーが発生した場合、複数の命令に対する処理を終了し、それまでに実行した処理結果とエラーに関する情報とをレスポンスデータとして返信する。すなわち、第１の処理例では、エラーが発生した命令以降の命令を中止し、直ちにそれまでの処理結果を示すレスポンスデータを送信する。
【００３７】
図４は、第１の処理例を説明するための図である。  
図４に示す例では、３つの命令を含むコマンドデータを受信したＩＣカード２が２つ目の命令を実行中にエラーが発生した場合の例を示している。すなわち、図４に示す例において、ＩＣカード処理装置１は、３つの命令（「Command APDU 1」、「Command APDU 2」及び「Command APDU 3」）を格納したＩＮＦを有する１つのコマンドデータをＩＣカード２へ送信する。
【００３８】
ＩＣカード２は、受信したコマンドデータに含まれる３つの命令を順番に実行する。1つ目の命令が正常終了すると、ＩＣカード２は、１つ目の命令の実行結果を示す情報をバッファ（例えば、ＲＡＭ２３内の計算用バッファ）に保持し、２つ目の命令を実行する。２つ目の命令を実行中にエラーした場合、ＩＣカード２は、２つ目以降の命令の実行を停止し、２つ目の命令がエラーであることを示す情報（たとえば、エラーコード等）を１つ目の命令の実行結果を示す情報に続けてバッファに保持する。つまり、２つ目の命令がエラーであることを示す情報（たとえば、エラーコード等）は、エラーが生じなければ２つ目の命令の実行結果を格納するはずだった場所に格納される。
【００３９】
命令の実行を停止すると、ＣＰＵ２１は、ＲＡＭ２３内の計算用バッファに格納された一連の実行結果を示す情報とエラーを示す情報とを並べたデータをＩＮＦとして、当該ＩＮＦの前にプロローグフィールドである「ＰＣＢ」、「ＣＩＤ」および「ＮＡＤ」を付加し、当該ＩＮＦ（エラーを示す情報）の後にエピローグフィールドである「ＣＲＣ」を付したレスポンスデータを完成させる。ＣＰＵ２１は、完成したレスポンスデータをＲＡＭ２３内に設けた送信バッファに格納する。ＩＣカード２は、変復調部２６により送信バッファに格納したレスポンスデータを搬送波に変調し、アンテナ２７を介してＩＣカード処理装置１に送信する。
【００４０】
なお、図４に示す例では、「Command APDU 2」という実行順番が２番目の命令でエラーが発生した場合を示しているが、「Command APDU 1」（実行順番が１番目）でエラーが発生した場合は実行順番が２番目以降の各命令（「Command APDU 2」「Command APDU 3」）は実行されない。この場合、ＣＰＵ２１は、「Command APDU 1」でエラーが生じたことを示す情報をレスポンスコマンドの情報フィールドに格納する。
【００４１】
ＩＣカード処理装置１は、ＩＣカード２からのレスポンスデータを受信する。ＩＣカード処理装置１の制御部１１は、受信したレスポンスデータからコマンドデータに含めた複数の命令の実行時にエラーが生じたこと及びエラーが生じた命令を認識する。図４に示す例では、ＩＣカード処理装置１は、先に送ったコマンドデータに含めた３つの命令のうち、１つ目の命令が正常に実行されたこと、２つ目の命令の実行時にエラーが生じたこと、３つ目の命令が実行されていないことを認識する。
【００４２】
ＩＣカード処理装置１の制御部１１は、エラーが生じた命令（図４に示す例では、「Command APDU 2」）と未実施となった命令（図４に示す例では、「Command APDU 3」）とを再度ＩＣカード２に実行させるため、エラーが生じた命令及びそれ以後の命令（図４では、「Command APDU 2」及び「Command APDU 3」）を情報フィールド（ＩＮＦ）に格納したコマンドデータをＩＣカード２へ送信する。
【００４３】
ＩＣカード２は、エラーが生じた命令及びそれ以後の命令（図４では、「Command APDU 2」及び「Command APDU 3」）をＩＮＦに格納したコマンドデータを受信する。ＩＣカード２は、当該コマンドデータに格納された各命令を順に実行し、各命令の実行結果を示す情報を順にＩＮＦに格納したレスポンスデータをＩＣカード処理装置１へ返信する。  
これにより、ＩＣカードは、エラーが生じた命令とエラーが生じた命令以降の各命令を再度、順番に実行することが可能となる。
【００４４】
なお、ＩＣカード処理装置１の制御部１１は、エラーを含むレスポンスデータを受信した場合、エラーが生じた命令をＩＣカード２に再度実行させることなく、ＩＣカード２との通信を終了するようにしてもよい。
【００４５】
次に、ＩＣカード２における第１の処理例の流れについて説明する。  
図５は、ＩＣカード２における第１の処理例を説明するためのフローチャートである。  
まず、ＩＣカード２は、ＩＣカード処理装置１から供給される電力によって起動し、活性化処理を実行する（ステップＳ１０）。この活性化処理において、ＩＣカード２のＣＰＵ２１は、ＩＣカード処理装置１から設定に応じて通信フレームの最大長を設定する。ここで、１つのコマンドデータに複数の命令を格納する場合、ＩＣカード処理装置１は、ＩＣカード２に対して、通信フレームの最大長が一定長さ（情報フィールドに２つ以上の命令を格納できる長さ）以上になるように設定する。
【００４６】
活性化処理が完了すると、ＩＣカード２は、ＩＣカード処理装置１からのコマンド受信待ち状態となる。たとえば、通信フレームの最大長が所定長さ以上に設定されていない場合（ステップＳ１１、ＮＯ）、ＩＣカード２のＣＰＵ２１は、１つのコマンドデータに１つの命令を格納する運用によってＩＣカード処理装置１からのコマンドに対する処理が実行される（ステップＳ１２）。
【００４７】
これに対して、通信フレームの最大長が所定長さ以上に設定されている場合（ステップＳ１１、ＹＥＳ）、ＩＣカード２のＣＰＵ２１は、複数の命令を許容する長さのコマンドデータの受信待ち状態となる（ステップＳ１３）。この状態でコマンドデータを受信した場合（ステップＳ１４、ＹＥＳ）、ＩＣカード２は、受信したコマンドデータをＲＡＭ２３内の受信バッファに格納する。当該コマンドデータの受信が完了すると、ＩＣカード２のＣＰＵ２１は、受信したコマンドデータから情報フィールド（ＩＮＦ）に格納されている命令を順番に実行する（ステップＳ１５）。たとえば、ＣＰＵ２１は、バッファに格納したコマンドデータのＩＮＦから1つずつ順番に命令を抽出する。ＣＰＵ２１は、順番に抽出した１つの命令を実行する。
【００４８】
１つの命令を実行するごとに、ＣＰＵ２１は、当該命令の実行中にエラーが生じたか判定する（ステップＳ１６）。当該命令の実行中にエラーが生じなかった場合、つまり、当該命令が正常終了した場合（ステップＳ１６、ＮＯ）、ＣＰＵ２１は、当該命令の実行結果を示す情報をＲＡＭ２３に設けた計算バッファに格納する（ステップＳ１７）。この場合、ＣＰＵ２１は、既に計算バッファに格納されている直前の命令の実行結果を示す情報に続けて、当該命令の実行結果を示す情報を記録する。この結果として、図３或いは図４に示すレスポンスデータにおけるＩＮＦのように、複数の命令の実行結果を示す情報が並べられたデータが形成される。
【００４９】
命令の実行結果を示す情報を計算バッファに格納すると、ＣＰＵ２１は、未だ実行していない次の命令が受信したコマンドデータにあるか否かを判断する（ステップＳ１８）。未だ実行していない命令があると判断した場合（ステップＳ１８、ＹＥＳ）、ＣＰＵ２１は、上記ステップＳ１５へ戻り、次の命令を受信したコマンドデータのＩＮＦから抽出し、実行する。
【００５０】
また、実行していない命令が無くなった場合（ステップＳ１８、ＮＯ）、ＣＰＵ２１は、計算バッファに格納した各命令の実行結果を示す情報を並べたデータを情報フィールド（ＩＮＦ）とするレスポンスデータを生成する。すなわち、ＣＰＵ２１は、各命令の実行結果を示す情報を並べたデータの前にプロローグフィールドである「ＰＣＢ」、「ＣＩＤ」、および「ＮＡＤ」を付加し、各命令の実行結果を示す情報を並べたデータの後にエピローグフィールドである「ＣＲＣ」を付加することにより、複数の命令の実行結果を順番に並べたデータを格納したＩＮＦを有するレスポンスデータを生成する（ステップＳ１９）。ＣＰＵ２１は、生成したレスポンスデータを送信バッファに格納する。ＣＰＵ２１は、変復調部２６及びアンテナ２７を介して送信バッファに格納したレスポンスデータをＩＣカード処理装置１へ送信する（ステップＳ２０）。
【００５１】
また、ある命令の実行中にエラーが生じた場合（ステップＳ１６、ＹＥＳ）、ＣＰＵ２１は、当該命令の実行結果がエラーであったことを示す情報（例えば、エラー内容に応じたエラーコード）をＲＡＭ２３に設けた計算バッファに格納する（ステップＳ１７）。この場合、ＣＰＵ２１は、既に計算バッファに格納されている直前の命令の実行結果を示す情報に続けて、当該命令の実行エラーを示す情報を記録する。この結果として、図４に示すレスポンスデータにおけるＩＮＦのように、命令の実行結果を示す情報に続けてエラーを示す情報が並べられたデータが形成される。
【００５２】
命令の実行エラーを示す情報を計算バッファに格納すると、ＣＰＵ２１は、ＲＡＭ２３の計算バッファに格納した各命令の実行結果を示す情報に続けてエラーを示す情報を並べたデータを情報フィールド（ＩＮＦ）とするレスポンスデータを生成する。すなわち、ＣＰＵ２１は、各命令の実行結果を示す情報に続けてエラーを示す情報を並べたデータの前にプロローグフィールドである「ＰＣＢ」、「ＣＩＤ」、および「ＮＡＤ」を付加し、各命令の実行結果を示す情報に続けてエラーを示す情報を並べたデータの後にエピローグフィールドである「ＣＲＣ」を付加することにより、実行した命令の実行結果に続けてエラーを示す情報を順番に並べたデータを格納したＩＮＦを有するレスポンスデータを生成する（ステップＳ１９）。ＣＰＵ２１は、生成したレスポンスデータを送信バッファに格納する。ＣＰＵ２１は、変復調部２６及びアンテナ２７を介して送信バッファに格納したレスポンスデータをＩＣカード処理装置１へ送信する（ステップＳ２０）。
【００５３】
ＩＣカード２のＣＰＵ２１は、当該ＩＣカード処理装置１との通信状態が維持されている間（ステップＳ２１、ＮＯ）、上記ステップＳ１１〜２０の処理を繰り返し実行することにより、ＩＣカード処理装置１からのコマンドに対する処理が可能となる。なお、通信フレームの最大長の設定は、活性化後にＩＣカード処理装置１の指示に応じて設定できるようにしても良い。また、ＩＣカード２のＣＰＵ２１は、当該ＩＣカード処理装置１との通信が切断された場合、あるいは、ＩＣカード処理装置１からの電力供給が遮断された場合、動作を終了する（ステップＳ２１、ＹＥＳ）。
【００５４】
以上の処理によれば、ＩＣカードは、１つのコマンドデータに格納された複数の命令を解釈して順に実行することができ、それらの各命令の実行結果を順に並べた１つのレスポンスデータを当該コマンドデータに対する応答として出力することができる。これにより、ＩＣカード処理装置とＩＣカードとは、通信手続きが簡略化でき、処理速度の向上及び効率化を図ることができる。
【００５５】
次に、ＩＣカード２が受信したコマンドデータに含まれる複数の命令を順に実行中にエラーが発生した場合の一動作例として第２の処理例について説明する。  
第２の処理例では、エラーが発生した場合であっても、可能であれば、継続的にエラーが発生した命令以外の命令を実行し、実行した処理結果とエラーに関する情報とをレスポンスデータとして返信する。すなわち、第２の処理例では、１つの命令でエラーが発生しても処理自体を中止することなく各命令を順番に実行し、コマンドデータに含まれる全ての命令に対する処理結果（正常な実行結果又はエラーを示す情報）をレスポンスデータにより送信する。
【００５６】
図６は、第２の処理例を実施した場合におけるコマンドデータとレスポンスデータとの構成例を示す図である。  
図６に示す例では、３つの命令を含むコマンドデータを受信したＩＣカード２が２つ目の命令を実行中にエラーが発生した場合の例を示している。すなわち、図６に示す例において、ＩＣカード処理装置１は、３つの命令（「Command APDU 1」、「Command APDU 2」及び「Command APDU 3」）を格納したＩＮＦを有する１つのコマンドデータをＩＣカード２へ送信する。
【００５７】
ＩＣカード２は、受信したコマンドデータに含まれる３つの命令を順番に実行する。1つ目の命令が正常終了すると、ＩＣカード２は、１つ目の命令の実行結果を示す情報をバッファ（例えば、ＲＡＭ２３内の計算用バッファ）に保持し、２つ目の命令を実行する。２つ目の命令を実行中にエラーした場合、ＩＣカード２は、２つ目の命令が実行エラーであることを示す情報（たとえば、エラーコード等）を１つ目の命令の実行結果を示す情報に続けてバッファに保持する。２つ目の命令がエラーであることを示す情報（たとえば、エラーコード等）は、エラーが生じなければ２つ目の命令の実行結果を格納するはずだった場所に格納される。
【００５８】
また、２つ目の命令がエラーとなった場合であっても、図６に示す第２の処理例では、ＩＣカード２は、２つ目の命令が実行エラーであることを示す情報をバッファ（例えば、ＲＡＭ２３内の計算用バッファ）に保持し、３つ目の命令を実行する。３つ目の命令が正常終了すると、ＩＣカード２は、３つ目の命令の実行結果を示す情報をバッファに保持する。この場合、ＩＣカード２は、３つ目の命令の実行結果を示す情報を２つ目の命令の実行エラーを示す情報に続けてバッファに保持する。なお、３つ目の命令が実行エラーとなった場合には、ＩＣカード２は、２つ目の命令の実行エラーを示す情報に続けて３つ目の命令の実行エラーを示す情報をバッファに保持するようにすれば良い。
【００５９】
３つの命令を実行すると、ＣＰＵ２１は、ＲＡＭ２３内の計算用バッファに格納された３つの命令に対する処理結果を示す情報（１つ目の命令の実行結果を示す情報、２つ目の命令の実行エラーを示す情報、及び、３つ目の命令の実行結果を示す情報）を並べたデータをＩＮＦとして、当該ＩＮＦの前にプロローグフィールドである「ＰＣＢ」、「ＣＩＤ」および「ＮＡＤ」を付加し、当該ＩＮＦ（エラーを示す情報）の後にエピローグフィールドである「ＣＲＣ」を付したレスポンスデータを完成させる。ＣＰＵ２１は、完成したレスポンスデータをＲＡＭ２３内に設けた送信バッファに格納する。ＩＣカード２は、変復調部２６により送信バッファに格納したレスポンスデータを搬送波に変調し、アンテナ２７を介してＩＣカード処理装置１に送信する。
【００６０】
なお、図６に示すレスポンスデータのＩＮＦでは、１つ目の命令の実行結果を示す情報「Command APDU 1」、２つ目の命令の実行エラーを示す情報「Error information」、及び、３つ目の命令の実行結果を示す情報「Command APDU 3」を並べたデータを格納している。「Command APDU 1」（実行順番が１番目の命令）でエラーが発生した場合は、図６に示す「Command APDU 1」が「Error information」に置き換えた形態となり、「Command APDU 3」（実行順番が３番目の命令）でエラーが発生した場合は、図６に示す「Command APDU 3」が「Error information」に置き換えた形態となる。ただし、どの命令でエラーが起きた場合であっても、ＩＣカードが動作可能であれば、他の命令も実行される。
【００６１】
ＩＣカード処理装置１は、ＩＣカード２からのレスポンスデータを受信する。ＩＣカード処理装置１の制御部１１は、エラーを示す情報を含むレスポンスデータを受信した場合、先に送ったコマンドデータに含めた複数の命令のうちエラーが生じた命令を認識する。図６に示す例では、ＩＣカード処理装置１は、先に送ったコマンドデータに含めた３つの命令のうち、１つ目の命令が正常に実行されたこと、２つ目の命令の実行時にエラーが生じたこと、３つ目の命令が正常に実行されたことを認識する。
【００６２】
ＩＣカード処理装置１の制御部１１は、エラーが生じた命令（図６に示す例では、「Command APDU 2」）を再度ＩＣカード２に実行させるため、エラーが生じた命令（図６では、「Command APDU 2」を情報フィールド（ＩＮＦ）に格納したコマンドデータをＩＣカード２へ送信する。  
ＩＣカード２は、エラーが生じた命令（図６では、「Command APDU 2」）をＩＮＦに格納したコマンドデータを受信する。ＩＣカード２は、当該コマンドデータに格納された各命令を順に実行し、各命令の実行結果を示す情報を順にＩＮＦに格納したレスポンスデータをＩＣカード処理装置１へ返信する。これにより、ＩＣカードは、エラーが生じた命令を再度、順番に実行することが可能となる。
【００６３】
次に、ＩＣカード２における第２の処理例の流れについて説明する。  
図７は、ＩＣカード２における第２の処理例を説明するためのフローチャートである。  
ＩＣカード２は、ＩＣカード処理装置１から供給される電力によって起動し、活性化処理を実行する（ステップＳ３０）。この活性化処理において、ＩＣカード２のＣＰＵ２１は、ＩＣカード処理装置１から設定に応じて通信フレームの最大長を設定する。ここで、１つのコマンドデータに複数の命令を格納する場合、ＩＣカード処理装置１は、ＩＣカード２に対して、通信フレームの最大長が一定長さ（情報フィールドに２つ以上の命令を格納できる長さ）以上になるように設定する。
【００６４】
活性化処理が完了する後、通信フレームの最大長が所定長さ以上に設定されていない場合（ステップＳ３１、ＮＯ）、ＩＣカード２のＣＰＵ２１は、１つのコマンドデータに１つの命令を格納する運用によってＩＣカード処理装置１からのコマンドに対する処理が実行される（ステップＳ３２）。また、通信フレームの最大長が所定長さ以上に設定されている場合（ステップＳ３１、ＹＥＳ）、ＩＣカード２のＣＰＵ２１は、複数の命令を許容する長さのコマンドデータの受信待ち状態となる（ステップＳ３３）。
【００６５】
この状態でコマンドデータを受信した場合（ステップＳ３４、ＹＥＳ）、ＩＣカード２は、受信したコマンドデータをＲＡＭ２３内の受信バッファに格納する。当該コマンドデータの受信が完了すると、ＩＣカード２のＣＰＵ２１は、受信したコマンドデータの情報フィールド（ＩＮＦ）に格納されている命令を順番に実行する（ステップＳ３５）。たとえば、ＣＰＵ２１は、受信バッファに格納したコマンドデータのＩＮＦから1つずつ順番に命令を抽出し、抽出した１つの命令を実行する。
【００６６】
当該命令の実行中にエラーが生じなかった場合、つまり、当該命令が正常終了した場合（ステップＳ３６、ＮＯ）、ＣＰＵ２１は、当該命令の実行結果を示す情報をＲＡＭ２３に設けた計算バッファに格納する（ステップＳ３７）。この場合、ＣＰＵ２１は、既に計算バッファに格納されている直前の命令の実行結果を示す情報に続けて、当該命令の実行結果を示す情報を記録する。この結果として、複数の命令の実行結果を示す情報が並べられたデータが形成される。
【００６７】
命令の実行結果を示す情報をバッファに格納すると、ＣＰＵ２１は、受信したコマンドデータに未だ実行していない次の命令があるか否かを判断する（ステップＳ３８）。未だ実行していない命令があると判断した場合（ステップＳ３８、ＹＥＳ）、ＣＰＵ２１は、上記ステップＳ３５へ戻り、受信したコマンドデータのＩＮＦから次の命令を抽出し、実行する。
【００６８】
また、実行していない命令が無くなった場合（ステップＳ３８、ＮＯ）、ＣＰＵ２１は、計算バッファに格納した各命令の実行結果を示す情報を並べたデータを情報フィールド（ＩＮＦ）とするレスポンスデータを生成する（ステップＳ１９）。ＣＰＵ２１は、各命令の実行結果を示す情報を並べたデータの前にプロローグフィールドである「ＰＣＢ」、「ＣＩＤ」、および「ＮＡＤ」を付加し、各命令の実行結果を示す情報を並べたデータの後にエピローグフィールドである「ＣＲＣ」を付加することにより、複数の命令の実行結果を順番に並べたデータを格納したＩＮＦを有するレスポンスデータを生成する。ＣＰＵ２１は、生成したレスポンスデータを送信バッファに格納し、変復調部２６及びアンテナ２７を介して送信バッファに格納したレスポンスデータをＩＣカード処理装置１へ送信する（ステップＳ４０）。
【００６９】
また、ある命令の実行中にエラーが生じた場合（ステップＳ３６、ＹＥＳ）、ＣＰＵ２１は、当該命令の実行結果がエラーであったことを示す情報（例えば、エラー内容に応じたエラーコード）をＲＡＭ２３に設けた計算バッファに格納する（ステップＳ３７）。この場合、ＣＰＵ２１は、既に計算バッファに格納されている直前の命令の実行結果を示す情報に続けて、当該命令の実行エラーを示す情報を記録する。この結果として、直前の命令の実行結果を示す情報に続けてエラーを示す情報が並べられたデータが形成される。
【００７０】
命令の実行エラーを示す情報を計算バッファに格納すると、ＣＰＵ２１は、上記ステップＳ３８へ進み、受信したコマンドデータに未だ実行していない次の命令があるか否かを判断する。未だ実行（トライ）していない命令があると判断した場合（ステップＳ３８、ＹＥＳ）、ＣＰＵ２１は、上記ステップＳ３５へ戻り、受信したコマンドデータのＩＮＦから次の命令を抽出して実行する。また、実行（トライ）していない命令が無くなった場合（ステップＳ３８、ＮＯ）、ＣＰＵ２１は、計算バッファに格納した各命令の実行結果を示す情報および実行エラーを示す情報を並べたデータを情報フィールド（ＩＮＦ）とするレスポンスデータを生成し（ステップＳ３９）、ＩＣカード処理装置１へ送信する（ステップＳ４０）。
【００７１】
ＩＣカード２のＣＰＵ２１は、当該ＩＣカード処理装置１との通信状態が維持されている間（ステップＳ４１、ＮＯ）、上記ステップＳ３１〜４０の処理を繰り返し実行することにより、ＩＣカード処理装置１からのコマンドに対する処理が可能となる。なお、通信フレームの最大長の設定は、活性化後にＩＣカード処理装置１の指示に応じて適宜設定できるようにしても良い。また、ＩＣカード２のＣＰＵ２１は、当該ＩＣカード処理装置１との通信が切断された場合、あるいは、ＩＣカード処理装置１からの電力供給が遮断された場合、動作を終了する（ステップＳ２１、ＹＥＳ）。
【００７２】
以上の処理によれば、ＩＣカードは、１つのコマンドデータに格納された複数の命令を解釈して順に実行することができ、それらの各命令の実行結果あるいは実行エラーに関する情報を順に並べた１つのレスポンスデータを当該コマンドデータに対する応答として出力することができる。これにより、ＩＣカード処理装置とＩＣカードとは、通信手続きが簡略化でき、処理速度の向上及び効率化を図ることができる。
【００７３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７４】
１…ＩＣカード処理装置、２…ＩＣカード、１４…カードリーダライタ、Ｍ…ＩＣモジュール、Ｃａ…ＩＣチップ、Ｃ…ＩＣカード本体、２１…ＣＰＵ、２２…ＲＯＭ、２３…ＲＡＭ、２４…ＥＥＰＲＯＭ、２６…変復調部、２７…アンテナ。
【図１】
2013164686.tif 000003
【図２】
2013164686.tif 000004
【図３】
2013164686.tif 000005
【図４】
2013164686.tif 000006
【図５】
2013164686.tif 000007
【図６】
2013164686.tif 000008
【図７】
2013164686.tif 000009