(57)【要約】【課題】乱数データを必要とする処理の効率化に優れた携帯可能電子装置を提供すること。【解決手段】携帯可能電子装置は、通信手段と、生成手段と、実行手段とを備える。前記通信手段は、外部装置と通信する。前記生成手段は、拡張乱数データを生成する。前記実行手段は、前記通信手段により受信された第１のコマンドに対応して、前記拡張乱数データの一部により構成される第１の乱数データに基づき第１の処理を実行し、前記通信手段により受信された第２のコマンドに対応して、前記拡張乱数データの一部により構成される第２の乱数データに基づき第２の処理を実行する。【選択図】図６
2012150708.tif 000002
【特許請求の範囲】
【請求項１】
外部装置と通信する通信手段と、
拡張乱数データを生成する生成手段と、
前記通信手段により受信された第１のコマンドに対応して、前記拡張乱数データの一部により構成される第１の乱数データに基づき第１の処理を実行し、前記通信手段により受信された第２のコマンドに対応して、前記拡張乱数データの一部により構成される第２の乱数データに基づき第２の処理を実行する実行手段と、
を備えた携帯可能電子装置。
【請求項２】
前記生成手段は、第１のデータ長の前記第１の乱数データと前記第１の乱数データの後続に位置する第２のデータ長の前記第２の乱数データとを含む前記拡張乱数データを生成する請求項１記載の携帯可能電子装置。
【請求項３】
前記生成手段は、前記第１の乱数データの第１のデータ長と前記第２の乱数データの第２のデータ長とを合わせた第３のデータ長以上の前記拡張乱数データを生成する請求項１又は２記載の携帯可能電子装置。
【請求項４】
前記生成手段は、前記通信手段により受信された乱数要求コマンドに対応して前記拡張乱数データを生成する請求項１乃至３の何れか１項記載の携帯可能電子装置。
【請求項５】
前記生成手段は、前記乱数要求コマンドにより要求される要求乱数データ長と異なるデータ長の前記拡張乱数データを生成する請求項４記載の携帯可能電子装置。
【請求項６】
前記実行手段は、前記拡張乱数データの不足により、前記拡張乱数データから、前記通信手段により受信された第３のコマンドに対応して実行される第３の処理のための第３の乱数データを取得できない場合、前記通信手段から乱数不足情報を送信するように制御する請求項１乃至５の何れか１項記載の携帯可能電子装置。
【請求項７】
前記実行手段は、前記第１のコマンドに対応して前記拡張乱数データに含まれた未使用乱数データで構成された前記第１の乱数データに基づき第１の処理を実行し、前記第２のコマンドに対応して前記拡張乱数データに含まれた未使用乱数データで構成された前記第２の乱数データに基づき第２の処理を実行し、前記第３のコマンドに対応して前記拡張乱数データに含まれた未使用乱数データの不足により前記第３の乱数データを構成不能な場合に、前記乱数不足情報を送信するように制御する請求項６記載の携帯可能電子装置。
【請求項８】
前記生成手段は、前記拡張乱数データの不足により、前記拡張乱数データから、前記通信手段により受信された第３のコマンドに対応して実行される第３の処理のための第３の乱数データを取得できない場合、追加乱数データを生成し、
前記実行手段は、前記追加乱数データに基づき前記第３の処理を実行する請求項１乃至５の何れか１項記載の携帯可能電子装置。
【請求項９】
前記実行手段は、前記第１のコマンドに対応して前記拡張乱数データに含まれた未使用乱数データで構成された前記第１の乱数データに基づき第１の処理を実行し、前記第２のコマンドに対応して前記拡張乱数データに含まれた未使用乱数データで構成された前記第２の乱数データに基づき第２の処理を実行し、
前記生成手段は、前記第３のコマンドに対応して前記拡張乱数データに含まれた未使用乱数データの不足により前記第３の乱数データを構成不能な場合に、前記追加乱数データを生成する請求項８記載の携帯可能電子装置。
【請求項１０】
前記生成手段は、前記拡張乱数データに含まれた未使用乱数データと前記追加乱数データとに基づき前記第３の乱数データを生成し、
前記実行手段は、前記第３の乱数データに基づき前記第３の処理を実行する請求項９記載の携帯可能電子装置。
【請求項１１】
前記実行手段は、前記第１のコマンドに対応して前記拡張乱数データに含まれた未使用乱数データで構成された前記第１の乱数データに基づき第１の処理を実行し、前記第２のコマンドに対応して前記拡張乱数データに含まれた未使用乱数データで構成された前記第２の乱数データに基づき第２の処理を実行し、
前記生成手段は、前記拡張乱数データに含まれた未使用乱数データのデータ長が閾値データ長より短くなった場合、追加乱数データを生成する請求項１乃至５の何れか１項記載の携帯可能電子装置。
【請求項１２】
拡張乱数データを生成し、
第１のコマンドの受信に対応して、前記拡張乱数データの一部により構成される第１の乱数データに基づき第１の処理を実行し、
第２のコマンドの受信に対応して、前記拡張乱数データの一部により構成される第２の乱数データに基づき第２の処理を実行する情報処理方法。
【請求項１３】
ＩＣモジュールが埋め込まれたカード本体により構成されるＩＣカードであって、
前記ＩＣモジュールは、
外部装置と通信する通信手段と、
拡張乱数データを生成する生成手段と、
前記通信手段により受信された第１のコマンドに対応して、前記拡張乱数データの一部により構成される第１の乱数データに基づき第１の処理を実行し、前記通信手段により受信された第２のコマンドに対応して、前記拡張乱数データの一部により構成される第２の乱数データに基づき第２の処理を実行する実行手段と、
を備えたＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、携帯可能電子装置、情報処理方法、及びＩＣカードに関する。
【背景技術】
【０００２】
近年、安全性に優れるＩＣカード（接触式カード及び非接触式ＩＣカード）の普及が目覚しい。ＩＣカード（携帯可能電子装置）は、リーダライタと通信するための通信Ｉ／Ｆを備え、さらに、通信Ｉ／Ｆと接続されたＩＣ（Integrated Circuit）チップを備えている。例えば、ＩＣチップは、電力供給が断たれてもデータを保持する事が可能なＥＥＰＲＯＭ、各種動作を実行するＣＰＵなどの制御素子、ＣＰＵの動作プログラム等を記憶するＲＯＭ、及びデータを一時的に記憶するＲＡＭを備えている。
【０００３】
ＩＣカードは、クレジットカード、定期券、その他の商取引の決済に使われるだけでなく、社員証、会員証、保険証などのＩＤカードとしても様々な分野で使われるようになっている。これは、従来の磁気カードに比べ、ＩＣカードが、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＥＥＰＲＯＭなどを有するＩＣチップを備えることにより、様々な機能が実現可能となったこと、さらには偽造が難しいためセキュリティの面でも大きく向上したことが要因である。
【０００４】
上記したＩＣカードは、リーダライタから送信される各種コマンドに基づき各種処理を実行する。また、各種処理の中には、乱数データを必要とする処理もある。例えば、乱数データを必要とする処理として、認証処理が挙げられる。
【０００５】
ＩＣカード及びリーダライタの間で認証処理が実行される場合、例えば、リーダライタは、ＩＣカードに対して、認証データの固定化を防ぐために乱数データの生成を要求する乱数要求コマンドを送信し、さらに、認証データに基づく認証処理を要求する認証コマンドを送信する。乱数要求コマンドは、ISO/IEC 7816-4において、例えば、GET CHALLENGEコマンドとして規定されている。また、認証コマンドは、ISO/IEC 7816-4において、例えば、MUTUAL AUTHENTICATEコマンドとして規定されている。ＩＣカードは、乱数要求コマンドの受信に対応して乱数データを生成し、認証コマンドの受信に対応して認証処理を実行する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−３２００３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記したように、各種処理の中には、乱数データを必要とする処理がある。乱数データを必要とする処理が複数回発生する場合、ＩＣカードは、乱数データを複数回生成することになり、非効率である。
【０００８】
本発明の目的は、乱数データを必要とする処理の効率化に優れた携帯可能電子装置、情報処理方法、及びＩＣカードを提供することにある。
【課題を解決するための手段】
【０００９】
実施形態によれば、携帯可能電子装置は、通信手段と、生成手段と、実行手段とを備える。前記通信手段は、外部装置と通信する。前記生成手段は、拡張乱数データを生成する。前記実行手段は、前記通信手段により受信された第１のコマンドに対応して、前記拡張乱数データの一部により構成される第１の乱数データに基づき第１の処理を実行し、前記通信手段により受信された第２のコマンドに対応して、前記拡張乱数データの一部により構成される第２の乱数データに基づき第２の処理を実行する。
【図面の簡単な説明】
【００１０】
【図１】第１〜第３の実施形態に共通のＩＣカードシステム（別称、スマートカードシステム）の概略構成を示すブロック図である。
【図２】第１〜第３の実施形態に共通のカードリーダ／ライタの概略構成を示すブロック図である。
【図３】第１〜第３の実施形態に共通のＩＣカードの概略構成を示すブロック図である。
【図４】乱数要求コマンド（GET CHALLENGEコマンド）のコマンドメッセージの一例を示す図である。
【図５】乱数を必要とする処理に関するコマンドメッセージの一例を示す図である。
【図６】第１の実施形態に係るコマンド処理の一例を示すフローチャートである。
【図７】第２の実施形態に係るコマンド処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、第１〜第３の実施形態について図面を参照して説明する。
【００１２】
図１は、第１〜第３の実施形態に共通のＩＣカードシステム（別称、スマートカードシステム）の概略構成を示すブロック図である。図１に示すように、ＩＣカードシステムは、端末１（通信装置）及びＩＣカード２（携帯可能電子装置）により構成される。端末１は、制御部１１、ディスプレイ１２、キーボード１３、カードリーダ／ライタ１４を備えている。端末１はＩＣカード２と通信可能に構成されており、端末１はＩＣカード２に対してデータを送信したり、ＩＣカード２からのデータを受信したりする。
【００１３】
制御部１１は、例えば、複数の通信方式及び複数のアプリケーションを選択的に実行することができる。ディスプレイ１２は、ＩＣカード２との通信結果及び認証結果等を表示する。キーボード１３は、制御部１１に対して文字や数字等を入力する。カードリーダ／ライタ１４は、ＩＣカード２と通信する。
【００１４】
なお、ＩＣカード２は、接触式のカード、非接触式のカード（無線カード）、及び非接触式と接触式の両者をサポートするコンビ型のカードのいずれであってもよい。
【００１５】
図２は、第１〜第３の実施形態に共通のカードリーダ／ライタ１４の概略構成を示すブロック図である。図２に示すように、カードリーダ／ライタ１４は、通信Ｉ／Ｆ１４２、ＣＰＵ１４３、データメモリ（不揮発性メモリ）１４４、ＲＡＭ１４５、ＲＯＭ１４６を備えている。ＣＰＵ１４３は、ＩＣカード２に対してコマンド等の送信を制御したり、ＩＣカード２からの応答を検出したり、ＩＣカード２からの応答に基づきさらにＩＣカード２に対してコマンド等の送信を制御したりする。
【００１６】
図３は、第１〜第３の実施形態に共通のＩＣカードの概略構成を示すブロック図である。図３に示すように、ＩＣカード２は、例えばプラスティックカードであり、ＩＣモジュール２０（ＩＣチップ）を備え、ＩＣモジュール２０は、通信Ｉ／Ｆ２０１、ＣＰＵ２０４、データメモリ（ＥＥＰＲＯＭ、ＦＲＡＭ、ＦＬＡＳＨ等の不揮発性メモリ）２０５、ＲＡＭ２０６、ＲＯＭ２０７を備えている。なお、携帯可能電子装置の一例として、上記したようなＩＣカード２について説明するが、本実施形態はこれに限定されるものではない。例えば、携帯可能電子装置は、ＳＩＭ形状のＩＣカードであってもよい。
【００１７】
ＲＡＭ２０６は、ワーキングメモリとして機能する。ＲＯＭ２０７は、ＣＰＵ２０４により実行されるＩＣカードプログラムを保持する。ＣＰＵ２０４は、ＲＯＭ２０７に記憶されたＩＣカードプログラム等に基づき動作する。また、ＣＰＵ２０４は、データメモリ２０５又はＲＡＭ２０６に記憶されたデータを読み出したり、データメモリ２０５又はＲＡＭ２０６に対してデータを書き込んだり、さらには、通信Ｉ／Ｆ２０１を介して受信したコマンド（端末１から送信されたコマンド）を解釈し実行したり、通信Ｉ／Ｆ２０１を介して端末１に対してコマンド実行結果の返信を制御したりする。
【００１８】
上記説明したＩＣカード２（ＣＰＵ２０４）は、乱数データを必要とする複数の処理用の乱数データ（以下、説明を分かりやすくするために拡張乱数データと称する）を生成し、通信Ｉ／Ｆ２０１により受信された第１のコマンド（例えば認証処理コマンド）に対応して、拡張乱数データの一部により構成される第１の乱数データに基づき第１の処理（例えば認証処理）を実行し、通信Ｉ／Ｆ２０１により受信された第２のコマンド（例えば暗号化暗証番号照合コマンド）に対応して、拡張乱数データの一部により構成される第２の乱数データに基づき第２の処理（暗号化暗証番号照合処理）を実行する。例えば、拡張乱数データは、第１の処理で必要とされる第１の乱数データのデータ長と第２の処理で必要とされる第２の乱数データのデータ長との合計以上のデータ長となる。
【００１９】
例えば、カードリーダ／ライタ１４が、ＩＣカード２に対して、GET CHALLENGEコマンドを送信し、乱数データを要求した場合、ＩＣカード２は、GET CHALLENGEコマンドを受信し、拡張乱数データを生成し、拡張乱数データを複数の乱数データに分割し、夫々の分割乱数データを、乱数データを必要とする夫々の処理に使用する。これにより、カードリーダ／ライタ１４が、ＩＣカード２に対して、乱数データを必要とする複数処理を実行させる場合であっても、カードリーダ／ライタ１４は、ＩＣカード２に対して、GET CHALLENGEコマンドを複数回送信しなくて済む。例えば、カードリーダ／ライタ１４が、ＩＣカード２に対して、１回のGET CHALLENGEコマンドを送信するだけで、乱数データを必要とする複数の処理を実行させることが可能となる。つまり、乱数データ要求処理（GET CHALLENGEコマンド処理）の回数を減らすことができ、処理時間の短縮を図ることができる。
【００２０】
図４は、乱数要求コマンド（GET CHALLENGEコマンド）のコマンドメッセージの一例を示す図である。このコマンドメッセージのフォーマットは、ISO/IEC 7816-4によって規定されている。図４に示すように、乱数要求コマンド（GET CHALLENGEコマンド）のコマンドメッセージは、CLA（クラスバイト）、INS（インストラクションバイト）、P1（パラメータバイト）、P2（パラメータバイト）、Leによって構成されている。
【００２１】
Leは、Leフィールドと呼ばれる。一般的にLeフィールドで指定される値は、ＩＣカードから返信されるデータの最大長を表す。例えば、GET CHALLENGEコマンドを構成するLeフィールドには、要求する乱数データ長が設定される。つまり、Leフィールドに対して、GET CHALLENGEコマンド実行後に、乱数データを使用する一つのコマンド処理で必要とされる乱数データ長が設定される。或いは、このLeフィールドに対して、００ｈが設定される。この場合、乱数データ長は指定されず、暗黙的了解に従って乱数データ長が特定されることになる。つまり、事前に取り決められた乱数データ長が特定されることになる。
【００２２】
前者のケースでは、例えば、Leフィールドに対して18hが設定されると、カードリーダ／ライタ１４は、ＩＣカード２に対して、24byteの乱数データを要求することとなる。後者のケースでは、Leフィールドに対して00hが設定されると、カードリーダ／ライタ１４は、ＩＣカード２に対して、暗黙的了解に従った長さの乱数データを要求することとなる。
【００２３】
図５は、乱数を必要とする処理に関するコマンドメッセージの一例を示す図である。図５に示すコマンドメッセージは、例えば、認証処理コマンドのコマンドメッセージである。このコマンドメッセージのフォーマットは、ISO/IEC 7816-4によって規定され、CLA（クラスバイト）、INS（インストラクションバイト）、P1（パラメータバイト）、P2（パラメータバイト）、Lc、Dataによって構成されている。
【００２４】
LcはLcフィールド、DataはDataフィールドと呼ばれる。Dataフィールドに対して、処理に必要とするデータが設定される。Lcフィールドに対して、Dataフィールドの長さを示すデータ長が設定される。例えば、認証処理では、Dataフィールドに対して、処理にて必要とする認証データが設定され、Lcフィールドに対して、前記認証データの長さを示す認証データ長が設定される。
【００２５】
次に、上記した拡張乱数データの使用方法について述べる。
【００２６】
上記したＩＣカード２（ＣＰＵ２０４）は、拡張乱数データを生成し、さらに、拡張乱数データの一部により構成される第１の乱数データを使用した場合、第１の乱数データの第１のデータ長を使用済み乱数データ長として管理することができる。例えば、上記したＩＣカード２（ＣＰＵ２０４）は、データメモリ２０５又はＲＡＭ２０６に使用済乱数データ長を格納する変数（Length Of Used Dataと命名する。）を保存する。
【００２７】
例えば、上記したＩＣカード２（ＣＰＵ２０４）は、第１のデータ長の第１の乱数データを必要とする第１の処理を実行するために、初めて拡張乱数データを使用する場合、拡張乱数データを構成する一番端のデータから第１のデータ長分を第１の乱数データとして使用する。ＩＣカード２（ＣＰＵ２０４）は、第１の乱数データの使用に対応して、第１の乱数データの第１のデータ長をLength Of Used Dataに加算する。
【００２８】
次に、ＩＣカード２（ＣＰＵ２０４）が、第２のデータ長の第２の乱数データを必要とする第２の処理を実行する場合、Length Of Used Dataの値に基づき、拡張乱数データを構成する一番端のデータから第１のデータ長分は使用せず、拡張乱数データを構成する一番端のデータから第１のデータ長の次のデータから第２のデータ長分を第２の乱数データとして使用する。ＩＣカード２（ＣＰＵ２０４）は、第２の乱数データの使用後に、第２の乱数データの第２のデータ長をLength Of Used Dataに加算する。
【００２９】
例えば、第１の乱数データの第１のデータ長が８バイト長である場合、拡張乱数データの一番端（先頭バイト）から８バイト長が第１の乱数データとして使用され、Length Of Used Dataに８バイト長を示す情報が格納される。第２の乱数データの第２のデータ長が１６バイト長である場合、拡張乱数データの９バイト目から１６バイト長が第２の乱数データとして使用され、Length Of Used Dataに１６バイト長を示す情報が加算され、その結果、Length Of Used Dataには２４バイト長を示す情報が格納される。
【００３０】
また、ＩＣカード２（ＣＰＵ２０４）は、乱数データを必要とする処理の実行を指示するコマンドを受け取ると、処理に必要な乱数データのデータ長と、拡張乱数データを構成する未使用乱数データのデータ長とを比較する。未使用乱数データのデータ長が、処理に必要な乱数データのデータ長以上あれば、ＩＣカード２（ＣＰＵ２０４）は、未使用乱数データを使用し、乱数データを必要とする処理を実行する。未使用乱数データのデータ長が、処理に必要な乱数データのデータ長以上ない場合には、ＩＣカード２（ＣＰＵ２０４）は、乱数データ不足を示す乱数不足情報をカードリーダ／ライタ１４へ送信する（以下、第１の実施形態で詳細に説明する）。或いは、未使用乱数データのデータ長が、処理に必要な乱数データのデータ長以上ない場合には、ＩＣカード２（ＣＰＵ２０４）は、追加乱数を生成する（以下、第２の実施形態で詳細に説明する）。或いは、ＩＣカード２（ＣＰＵ２０４）は、未使用乱数データのデータ長が閾値データ長より短くなった場合、追加乱数を生成する（以下、第３の実施形態で詳細に説明する）。
【００３１】
（第１の実施形態）
図６は、第１の実施形態に係るコマンド処理の一例を示すフローチャートである。
【００３２】
例えば、端末１の制御部１１の指示に基づき、カードリーダ／ライタ１４（ＣＰＵ１４３）は、通信Ｉ／Ｆ１４２を介して、ＩＣカード２に対して、GET CHALLENGEコマンドを送信する（ＳＴ１０１１）。
【００３３】
ＩＣカード２（ＣＰＵ２０４）は、通信Ｉ／Ｆ２０１を介して、GET CHALLENGEコマンドを受信し、拡張乱数データを生成し、拡張乱数データをＲＡＭ２０６に保存する（ＳＴ２０１０）。
【００３４】
例えば、カードリーダ／ライタ１４が、GET CHALLENGEコマンドにより、３２バイト長の乱数を要求し、これに対応して、ＩＣカード２が、３２バイト長の拡張乱数データを生成してもよいし、カードリーダ／ライタ１４が、GET CHALLENGEコマンドにより、データ長を指定せずに乱数を要求し、これに対応して、ＩＣカード２が、３２バイト長（事前に定められたデータ長）の拡張乱数データを生成してもよい。或いは、カードリーダ／ライタ１４が、GET CHALLENGEコマンドにより、８バイト長の乱数を要求し、この要求に従わず、ＩＣカード２が、３２バイト長（事前に定められたデータ長）の拡張乱数データを生成してもよい。つまり、ＩＣカード２は、要求されたデータ長（例えば８バイト）と異なるデータ長（例えば３２バイト）の拡張乱数データを生成してもよい。
【００３５】
続いて、ＩＣカード２は、通信Ｉ／Ｆ２０１を介して、カードリーダ／ライタ１４に対して、拡張乱数データを送信する（ＳＴ２０１１）。
【００３６】
カードリーダ／ライタ１４は、通信Ｉ／Ｆ１４２を介して、拡張乱数データを受信し、拡張乱数データをＲＡＭ１４５に保存する。例えば、端末１の制御部１１から認証コマンドの送信が指示された場合、カードリーダ／ライタ１４は、拡張乱数データの一部により構成される第１の乱数データに基づき認証データを生成し、認証データを含む認証コマンドをＩＣカード２に対して送信する（ＳＴ１０２１）。例えば、カードリーダ／ライタ１４は、３２バイト長の拡張乱数データのうち、先頭から８バイトにより構成される８バイト長の第１の乱数データに基づき認証データを生成する。
【００３７】
ＩＣカード２（ＣＰＵ２０４）は、通信Ｉ／Ｆ２０１を介して、認証コマンドを受信する。認証コマンドに基づく認証処理は、例えば、８バイト長の乱数データを必要とする処理である。従って、認証コマンドを受信したＩＣカード２は、ＲＡＭ２０６に保存された拡張乱数データの一部により構成される８バイト長の第１の乱数データに基づき認証データを生成する。
【００３８】
例えば、ＩＣカード２は、Length Of Used Dataを確認し、Length Of Used Dataに０バイト長（初期値）を示す情報が格納されていれば、使用可能な残りの乱数データ長（未使用乱数データ長）は３２バイトと判断する。ＩＣカード２は、認証処理に必要な８バイト長の第１の乱数データを取得可能と判断する。これに対応して、ＩＣカード２は、３２バイト長の拡張乱数データのうち、先頭から８バイトまでの８バイト分のデータにより構成される８バイト長の第１の乱数データに基づき認証データを生成し、生成した認証データと受信した認証コマンドに含まれた認証データとを照合し、認証処理を実行する（ＳＴ２０２０）。つまり、ＩＣカード２は、使用済乱数データ長を格納する変数であるLength Of Used Dataを確認し、先頭から８バイトの未使用データを使用し、認証データを生成する。これに対応して、ＩＣカード２は、８バイト長（使用済みデータ長）を示す情報をLength Of Used Dataに格納する（ＳＴ２０２０）。
【００３９】
認証に成功したＩＣカード２は、通信Ｉ／Ｆ２０１を介して、カードリーダ／ライタ１４に対して、処理成功情報を送信する（ＳＴ２０２１）。
【００４０】
続いて、端末１の制御部１１から暗号化暗証番号照合コマンドの送信が指示された場合、カードリーダ／ライタ１４（ＣＰＵ１４３）は、通信Ｉ／Ｆ１４２を介して、ＩＣカード２に対して、暗号化暗証番号照合コマンドを送信する（ＳＴ１０３１）。
【００４１】
ＩＣカード２は、通信Ｉ／Ｆ２０１を介して、暗号化暗証番号照合コマンドを受信する。暗号化暗証番号照合コマンドに基づく暗号化暗証番号照合処理は、例えば、１６バイト長の乱数データを使用する処理である。従って、暗号化暗証番号照合コマンドを受信したＩＣカード２は、ＲＡＭ２０６に保存された拡張乱数データの一部により構成される１６バイト長の第２の乱数データに基づき照合データを生成する。
【００４２】
例えば、ＩＣカード２は、Length Of Used Dataを確認し、Length Of Used Dataに８バイト長を示す情報が格納されていれば、使用可能な残りの乱数データ長（未使用乱数データ長）は２４バイトと判断する。ＩＣカード２は、暗号化暗証番号照合処理に必要な１６バイト長の第２の乱数データを取得可能と判断する。これに対応して、ＩＣカード２は、３２バイト長の拡張乱数データのうち、９バイト目から２４バイト目までの１６バイト分のデータにより構成される１６バイト長の第２の乱数データに基づき照合データを生成し、生成した照合データと受信した暗号化暗証番号照合コマンドに含まれた照合データとを照合し、暗号化暗証番号照合処理を実行する（ＳＴ２０３０）。つまり、ＩＣカード２は、使用済乱数データ長を格納する変数であるLength Of Used Dataを確認し、９バイト目から２４バイト目までの未使用データを使用し、照合データを生成する。これに対応して、ＩＣカード２は、１６バイト長（使用済みデータ長）を示す情報をLength Of Used Dataに加算する（ＳＴ２０３０）。これにより、Length Of Used Dataには、２４バイト長（使用済みデータ長）を示す情報が格納されることになる。
【００４３】
照合に成功したＩＣカード２は、通信Ｉ／Ｆ２０１を介して、カードリーダ／ライタ１４に対して、処理成功情報を送信する（ＳＴ２０３１）。
【００４４】
続いて、端末１の制御部１１から署名生成コマンドの送信が指示された場合、カードリーダ／ライタ１４（ＣＰＵ１４３）は、通信Ｉ／Ｆ１４２を介して、ＩＣカード２に対して、署名生成コマンドを送信する（ＳＴ１０４１）。
【００４５】
ＩＣカード２は、通信Ｉ／Ｆ２０１を介して、署名生成コマンドを受信する。署名生成コマンドに基づく署名生成処理は、例えば、２４バイト長の第３の乱数データを使用する処理である。署名生成コマンドを受信したＩＣカード２は、Length Of Used Dataを確認し、Length Of Used Dataに２４バイト長を示す情報が格納されていれば、使用可能な残りの乱数データ長（未使用乱数データ長）は８バイトと判断する（ＳＴ２０４０）。ＩＣカード２は、署名生成処理で必要とされる第３の乱数データのバイト長と未使用乱数データ長とを比較し、署名生成処理に必要な２４バイト長の第３の乱数データを取得不能と判断する（ＳＴ２０４０）。つまり、ＩＣカード２は、拡張乱数データを構成する未使用データの不足により、拡張乱数データから、第３の乱数データを取得できないと判断する。これに対応して、ＩＣカード２は、通信Ｉ／Ｆ２０１を介して、カードリーダ／ライタ１４に対して、乱数データ不足情報を送信する（ＳＴ２０４１）。
【００４６】
上記説明したように、ＩＣカード２は、例えば、１回のGET CHALLENGEコマンドを受信するだけで、複数の処理用の拡張乱数データを生成し、拡張乱数データの一部により構成される複数の乱数データを使用し、複数の処理を実行することができる。つまり、カードリーダ／ライタ１４は、ＩＣカードに対して、乱数データを必要とする複数の処理（例えばＮ回の処理）を実行させる場合であっても、GET CHALLENGEコマンドをＮ回送信しなくて済み、例えば、GET CHALLENGEコマンドをＮ回より少ないＭ回だけ送信すれば、乱数データを必要とするＮ回の処理を実行させることができ、処理の効率化を図ることができる。また、ＩＣカードは、拡張乱数データを構成する未使用データが不足した場合には、カードリーダ／ライタ１４に対して、乱数データ不足情報を送信し、処理を滞らせないようにすることができる。
【００４７】
なお、上記説明では、ＩＣカード２が、拡張乱数データの未使用データから第１の乱数データ及び第２の乱数データを生成するものとして説明したが、本実施形態はこれに限定されるものではない。例えば、ＩＣカード２が、一部に共通データを含む第１の乱数データ及び第２の乱数データを生成するようにしてもよい。例えば、ＩＣカード２は、拡張乱数データの先頭から８バイトを使用して８バイト長の第１の乱数データを生成し、また、拡張乱数データの４バイト目から１９バイト目までの１６バイトを使用して１６バイト長の第２の乱数データを生成するようにしてもよい。
【００４８】
（第２の実施形態）
図７は、第２の実施形態に係るコマンド処理の一例を示すフローチャートである。
【００４９】
例えば、端末１の制御部１１の指示に基づき、カードリーダ／ライタ１４（ＣＰＵ１４３）は、通信Ｉ／Ｆ１４２を介して、ＩＣカード２に対して、GET CHALLENGEコマンドを送信する（ＳＴ１１１１）。
【００５０】
ＩＣカード２（ＣＰＵ２０４）は、通信Ｉ／Ｆ２０１を介して、GET CHALLENGEコマンドを受信し、拡張乱数データを生成し、拡張乱数データをＲＡＭ２０６に保存する（ＳＴ２１１０）。
【００５１】
例えば、カードリーダ／ライタ１４が、GET CHALLENGEコマンドにより、３２バイト長の乱数を要求し、これに対応して、ＩＣカード２が、３２バイト長の拡張乱数データを生成してもよいし、カードリーダ／ライタ１４が、GET CHALLENGEコマンドにより、データ長を指定せずに乱数を要求し、これに対応して、ＩＣカード２が、３２バイト長（事前に定められたデータ長）の拡張乱数データを生成してもよい。或いは、カードリーダ／ライタ１４が、GET CHALLENGEコマンドにより、８バイト長の乱数を要求し、この要求に従わず、ＩＣカード２が、３２バイト長（事前に定められたデータ長）の拡張乱数データを生成してもよい。つまり、ＩＣカード２は、要求されたデータ長（例えば８バイト）と異なるデータ長（例えば３２バイト）の拡張乱数データを生成してもよい。
【００５２】
続いて、ＩＣカード２は、通信Ｉ／Ｆ２０１を介して、カードリーダ／ライタ１４に対して、拡張乱数データを送信する（ＳＴ２１１１）。
【００５３】
その後、乱数を必要とする複数の処理により、３２バイト長の拡張乱数データのうちの、２８バイト長の乱数データが使用されたと仮定する。つまり、Length Of Used Dataには２８バイト長を示す情報が格納され、３２バイト長の拡張乱数データのうちの、使用可能な残りの乱数データ長（未使用乱数データ長）は４バイトである（ＳＴ２１２０）。
【００５４】
この状態で、例えば、カードリーダ／ライタ１４（ＣＰＵ１４３）が、認証コマンドをＩＣカード２に対して送信する（ＳＴ１１２１）。通信Ｉ／Ｆ２０１を介して、認証コマンドを受信する。認証コマンドに基づく認証処理は、例えば、８バイト長の第１の乱数データを必要とする処理である。
【００５５】
認証コマンドを受信したＩＣカード２は、Length Of Used Dataを確認し、Length Of Used Dataに格納された２８バイト長を示す情報から、使用可能な残りの乱数データ長（未使用乱数データ長）は４バイトと判断する。つまり、ＩＣカード２は、拡張乱数データを構成する未使用データの不足により、拡張乱数データから、認証処理のための８バイト長の第１の乱数データを取得できないと判断する（ＳＴ２１３０）。そこで、ＩＣカード２は、追加乱数データを生成し、ＲＡＭ２０６に追加乱数データを保存する。追加乱数データは、不足分のデータ長（例えば４バイト）であってもよいし、不足分のデータ長より長いデータ長（例えば５バイト以上）であってもよい。続いて、ＩＣカード２は、通信Ｉ／Ｆ２０１を介して、カードリーダ／ライタ１４に対して、追加乱数データを送信する（ＳＴ２１３１）。なお、ＩＣカード２は、拡張乱数データを構成する未使用データを今後使用しない場合には、Length Of Used Dataの情報をリセットし、Length Of Used Dataに０バイト長（初期値）を設定する。ＩＣカード２が、拡張乱数データを構成する未使用データを今後も使用する場合には、Length Of Used Dataの情報をリセットしない。
【００５６】
カードリーダ／ライタ１４は、通信Ｉ／Ｆ１４２を介して、追加乱数データを受信し、追加乱数データをＲＡＭ１４５に保存する。カードリーダ／ライタ１４は、追加乱数データにより構成される第１の乱数データに基づき認証データを生成し、認証データを含む認証コマンドをＩＣカード２に対して送信する（ＳＴ１１３１）。例えば、カードリーダ／ライタ１４は、追加乱数データ（例えば３２バイト）の一部（例えば８バイト）を第１の乱数データとして使用する（追加乱数データ使用方法１）。或いは、カードリーダ／ライタ１４は、追加乱数データ（例えば８バイト）をそのまま第１の乱数データとして使用する（追加乱数データ使用方法２）。或いは、カードリーダ／ライタ１４は、拡張乱数データのうちの未使用の乱数データ（例えば４バイト）と追加乱数データ（例えば３２バイト）の一部（例えば４バイト）とを組み合わせた第１の乱数データを使用する（追加乱数データ使用方法３）。或いは、カードリーダ／ライタ１４は、拡張乱数データのうちの未使用の乱数データ（例えば４バイト）と追加乱数データ（例えば４バイト）の全部とを組み合わせた第１の乱数データを使用する（追加乱数データ使用方法４）。
【００５７】
上記に対応して、ＩＣカード２（ＣＰＵ２０４）は、通信Ｉ／Ｆ２０１を介して、認証コマンドを受信する。ＩＣカード２は、Length Of Used Dataを確認し、Length Of Used Dataに０バイト長（初期値）を示す情報が格納されていれば、使用可能な残りの乱数データ長（未使用乱数データ長）は追加乱数データのデータ長（例えば３２バイト）と判断する。これにより、ＩＣカード２は、認証処理に必要な８バイト長の第１の乱数データを取得可能と判断する。これに対応して、ＩＣカード２は、追加乱数データ（例えば３２バイト）の一部（例えば８バイト）を第１の乱数データとして使用し（追加乱数データ使用方法１）、第１の乱数データに基づき認証データを生成し、生成した認証データと受信した認証コマンドに含まれた認証データとを照合し、認証処理を実行する（ＳＴ２１４０）。さらに、ＩＣカード２は、８バイト長（使用済みデータ長）を示す情報をLength Of Used Dataに加算する（ＳＴ２１４０）。
【００５８】
なお、カードリーダ／ライタ１４で追加乱数データ使用方法１が採用される場合には、上記したようにＩＣカード２でも追加乱数データ使用方法１が採用される。同様に、カードリーダ／ライタ１４で追加乱数データ使用方法２が採用される場合には、ＩＣカード２でも追加乱数データ使用方法２が採用される。同様に、カードリーダ／ライタ１４で追加乱数データ使用方法３が採用される場合には、ＩＣカード２でも追加乱数データ使用方法３が採用される。同様に、カードリーダ／ライタ１４で追加乱数データ使用方法４が採用される場合には、ＩＣカード２でも追加乱数データ使用方法４が採用される。
【００５９】
上記説明したように、ＩＣカード２は、例えば、１回のGET CHALLENGEコマンドを受信するだけで、複数の処理用の拡張乱数データを生成し、拡張乱数データの一部により構成される複数の乱数データを使用し、複数の処理を実行することができる。つまり、カードリーダ／ライタ１４は、ＩＣカードに対して、乱数データを必要とする複数の処理（例えばＮ回の処理）を実行させる場合であっても、GET CHALLENGEコマンドをＮ回送信しなくて済み、例えば、GET CHALLENGEコマンドをＮ回より少ないＭ回だけ送信すれば、乱数データを必要とするＮ回の処理を実行させることができ、処理の効率化を図ることができる。また、ＩＣカードは、拡張乱数データを構成する未使用データが不足した場合には、追加乱数データを生成し、カードリーダ／ライタ１４に対して、追加乱数データを送信し、処理を継続することができる。
【００６０】
なお、追加乱数データが、拡張乱数データの一種である場合には、追加乱数データから複数の乱数データを生成することができる。
【００６１】
（第３の実施形態）
上記第２の実施形態では、所定データ長の乱数データを必要する処理が発生してから、拡張乱数データを構成する未使用データの不足が判明した場合に、追加乱数データを生成するケースについて説明した。第３の実施形態では、ＩＣカード２が、拡張乱数データを構成する未使用データのデータ長を監視し、未使用データのデータ長が閾値データ長より短くなった場合に、追加乱数データを生成する。例えば、ＩＣカード２は、未使用データのデータ長が閾値データ長（例えば８バイト）より短くなった場合に、追加乱数データを生成する。これにより、より効率よく追加乱数データを生成することができ、処理効率が向上する。
【００６２】
以上説明した第１、第２、第３の実施形態により、乱数を必要とする処理の高速化を図ることができる。
【００６３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６４】
１…端末、２…ＩＣカード、３…ＩＣカードホルダ、１１…本体、１２…ディスプレイ、１３…キーボード、１４…カードリーダ／ライタ、２０…ＩＣモジュール、１４２…通信Ｉ／Ｆ、１４３…ＣＰＵ、１４４…データメモリ、１４５…ＲＡＭ、１４６…ＲＯＭ、２０１…通信Ｉ／Ｆ、２０４…ＣＰＵ、２０５…データメモリ、２０６…ＲＡＭ、２０７…ＲＯＭ
【図１】
2012150708.tif 000003
【図２】
2012150708.tif 000004
【図３】
2012150708.tif 000005
【図４】
2012150708.tif 000006
【図５】
2012150708.tif 000007
【図６】
2012150708.tif 000008
【図７】
2012150708.tif 000009