(57)【要約】      （修正有）【課題】乱数の生成処理を効率的に実施することができる携帯可能電子装置、ＩＣカードおよび携帯可能電子装置に用いられる通信方法を提供する。【解決手段】携帯可能電子装置１は、乱数生成手段１１ａと、記憶手段１３ａと、通信手段１５と、乱数コマンド処理手段１１とを有する。乱数生成手段１１ａは、乱数を生成する。記憶手段１３ａは、乱数生成手段１１ａで生成した乱数を保存する。通信手段１５は、外部装置２とデータ通信する。乱数コマンド処理手段１１は、通信手段１５により外部装置２から乱数を要求するコマンドを受信した場合、記憶手段１３ａに記憶した乱数を当該コマンドに対する応答として通信手段１５により外部装置２へ送信する。【選択図】図１
2012194903.tif 000002
【特許請求の範囲】
【請求項１】
携帯可能電子装置であって、
乱数を生成する乱数生成手段と、
前記乱数生成手段で生成した乱数を保存する記憶手段と、
外部装置とデータ通信する通信手段と、
前記通信手段により前記外部装置から乱数を要求するコマンドを受信した場合、前記記憶手段に記憶した乱数を当該コマンドに対する応答として前記通信手段により前記外部装置へ送信する乱数コマンド処理手段と、
を有することを特徴とする携帯可能電子装置。
【請求項２】
前記記憶手段は、先入れ先出し方式のメモリであり、
前記乱数コマンド処理手段は、前記通信手段により受信したコマンドで要求された桁数の乱数を前記記憶手段から取り出して送信する。
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項３】
前記乱数生成手段は、前記通信手段により前記外部装置から受信したコマンドに対応する処理とは別の処理として乱数を生成する、
ことを特徴とする前記請求項１又は２の何れかに記載の携帯可能電子装置。
【請求項４】
前記乱数生成手段は、前記外部装置からのコマンド受信待ち状態の場合に乱数を生成する、
ことを特徴とする前記請求項３に記載の携帯可能電子装置。
【請求項５】
前記乱数生成手段は、前記外部装置からのコマンドに対するレスポンスデータを送信する間に乱数を生成する、
ことを特徴とする前記請求項３に記載の携帯可能電子装置。
【請求項６】
前記乱数コマンド処理手段は、前記外部装置から受信した乱数を要求するコマンドが要求する桁数の乱数を前記記憶手段に記憶しているか否かを判断し、当該コマンドで要求する桁数の乱数が前記記憶手段に記憶していない場合、前記乱数生成手段により乱数を生成する、
ことを特徴とする前記請求項４又は５の何れかに記載の携帯可能電子装置。
【請求項７】
ＩＣカードであって、
乱数を生成する乱数生成手段と、前記乱数生成手段で生成した乱数を保存する記憶手段と、外部装置とデータ通信する通信手段と、前記通信手段により前記外部装置から乱数を要求するコマンドを受信した場合、前記記憶手段に記憶した乱数を当該コマンドに対する応答として前記通信手段により前記外部装置へ送信する乱数コマンド処理手段と、を具備するモジュールと、
前記モジュールを具備する本体と、
を有することを特徴とするＩＣカード。
【請求項８】
携帯可能電子装置におけるデータ処理方法であって、
外部装置から受信するコマンドに対する処理とは異なるタイミングで乱数を生成し、
前記生成した乱数を記憶手段に保存し、
外部装置から乱数を要求するコマンドを受信した場合、前記記憶手段に記憶した乱数を当該コマンドに対する応答として前記外部装置へ送信する、
ことを特徴とする携帯可能電子装置におけるデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、携帯可能電子装置、ＩＣカード、および携帯可能電子装置におけるデータ処理方法に関する。
【背景技術】
【０００２】
ＩＣカードでは、使用者若しくは接続中の装置を正当な相手か否かを確認するため、乱数と鍵データ等とを基に認証処理を行うことが多くなってきている。たとえば、近年では、ＩＣカードに対して送信する命令毎に、乱数を用いた認証情報を実行することも多くなってきている。ＩＣカードでは、乱数を生成する場合、計算によって擬似乱数を導出するのが一般的である。しかしながら、実用的な乱数性を持つ擬似乱数の計算には、複雑な計算が必要であり、長い処理時間が必要となる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】ＩＳＯ／ＩＥＣ７８１６−４
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施の形態では、乱数の生成処理を効率的に実施することができる携帯可能電子装置、ＩＣカードおよび携帯可能電子装置に用いられる通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によれば、携帯可能電子装置は、乱数生成手段と、記憶手段と、通信手段と、乱数コマンド処理手段とを有する。乱数生成手段は、乱数を生成する、記憶手段は、乱数生成手段で生成した乱数を保存する。通信手段は、外部装置とデータ通信する。乱数コマンド処理手段は、通信手段により外部装置から乱数を要求するコマンドを受信した場合、記憶手段に記憶した乱数を当該コマンドに対する応答として通信手段により外部装置へ送信する。
【図面の簡単な説明】
【０００６】
【図１】図１は、携帯可能電子装置としてのＩＣカードおよびＩＣカードシステムの構成例を示すブロック図である。
【図２】図２は、非接触式ＩＣカード全体の構成例を示す図である。
【図３】図３は、擬似乱数の生成処理をコマンド待ち時間に実行する第１の処理例を概略的に示す図である。
【図４】図４は、ＩＣカードにおける第１の処理例の処理手順を説明するためのフローチャートである。
【図５】図５は、擬似乱数の生成処理をレスポンスデータの送信中に実行する第２の処理例を概略的に示す図である。
【図６】図６は、ＩＣカードにおける第２の処理例の処理手順を説明するためのフローチャートである。
【発明を実施するための形態】
【０００７】
以下、実施の形態について、図面を参照して説明する。
【０００８】
以下、この発明の実施の形態について図面を参照して詳細に説明する。  
図１は、この発明の実施の形態に係る携帯可能電子装置としてのＩＣカード１およびＩＣカード１を含むＩＣカードシステムの構成例を示すブロック図である。  
上記ＩＣカード１は、外部装置あるいは上位装置としてのＩＣカード処理装置２からの電源供給により動作可能な状態となる。動作可能となったＩＣカード１は、上記ＩＣカード処理装置２からのコマンドに応じて種々の処理を行う。上記ＩＣカード処理装置２は、ＩＣカード１を動作させるための電源を供給するとともに、当該ＩＣカード１に対して種々の処理を要求するコマンドを供給する。上記ＩＣカード処理装置２がＩＣカード１に対して供給するコマンドは、用途あるいは運用形態などに応じた処理を要求するものである。
【０００９】
また、上記ＩＣカード１は、アンテナあるいは無線通信部等により上記ＩＣカード処理装置２と非接触の状態で無線通信を行う非接触式の携帯可能電子装置（非接触式ＩＣカード）であっても良し、上記ＩＣカード処理装置２と物理的に接触して通信を行う接触式の携帯可能電子装置（接触式ＩＣカード）であっても良い。さらには、上記ＩＣカード１は、非接触式ＩＣカードとしての通信機能と接触式ＩＣカードとしての通信機能とを有する複合型のＩＣカード（デュアルインターフェースＩＣカード）であっても良い。なお、この実施の形態では、主に、非接触式ＩＣカードを想定して説明する。非接触式ＩＣカードと接触式ＩＣカードとはＩＣカード処理装置２との通信方式等が異なるだけである。このため、以下に説明する実施の形態は、接触式ＩＣカードにも同様に適用できる。
【００１０】
上記ＩＣカード１の構成例について説明する。  
図１に示すように、上記ＩＣカード１は、ＣＰＵ１１、プログラムメモリ１２、ワーキングメモリ１３、データメモリ１４、通信制御部１５、電源部１６、および、インターフェース（アンテナあるいはコンタクト部）１７などを有している。  
また、上記ＩＣカード１は、カード状の本体Ｃにより構成される。上記ＩＣカード１を形成するカード状の本体Ｃには、１つ（あるいは複数）のＩＣチップ１ａとインターフェース１７とが埋設される。上記ＩＣチップ１ａは、ＣＰＵ１１、プログラムメモリ１２、ワーキングメモリ１３、データメモリ１４、通信制御部１５および電源部１６などを有している。上記ＩＣチップ１ａは、上記インターフェース１７に接続された状態でモジュール化され、当該ＩＣカード１を形成するカード状の本体Ｃ内に埋設される。たとえば、図２は、非接触式ＩＣカード全体の構成例を示す図である。図２に示す非接触式ＩＣカードは、カード状の本体Ｃを有している。この本体Ｃ内には、図２に点線で示すように、１つ（あるいは複数）のＩＣチップ１ａとインターフェース１７としてのアンテナとを有するモジュールＭが埋め込まれている。
【００１１】
上記ＣＰＵ１１は、ＩＣカード１全体の制御を司るものである。上記ＣＰＵ１１は、上記プログラムメモリ１２あるいはデータメモリ１４に記憶されている制御プログラムおよび制御データなどに基づいて動作する。たとえば、上記ＣＰＵ１１は、上記プログラムメモリ１２に記憶されている基本的な動作を司る制御プログラムを実行することにより、外部装置から与えられるコマンドに応じた処理を実行する。
【００１２】
たとえば、外部装置から上記データメモリ１４へのデータの書込みを要求するコマンドが与えられれば、上記ＣＰＵ１１は、上記データメモリ１４へのデータの書き込み処理を実行する。また、外部装置から上記データメモリ１４に記憶されているデータの読み出しを要求するコマンドが与えられれば、上記ＣＰＵ１１は、上記データメモリ１４からのデータの読み出し処理を実行する。さらに、上記ＣＰＵ１１は、当該ＩＣカード１の用途などに応じてインストールされる処理プログラムを実行することにより、用途に応じた処理を実現するようになっている。本ＩＣカード１において、ＣＰＵ１１は、プログラムメモリ１２に記憶されたプログラムを実行することにより擬似乱数を生成する乱数生成機能１１ａを有する。
【００１３】
上記プログラムメモリ１２は、読み出し専用のメモリ（ＲＯＭ：リードオンリーメモリ）により構成される。上記プログラムメモリ１２には、予め基本動作を司る制御プログラムおよび制御データなどが記憶されている。上記プログラムメモリ１２には、予め当該ＩＣカード１の仕様に応じた制御プログラム及び制御データが記憶される。たとえば、上記ＣＰＵ１１は、上記プログラムメモリ１２に記憶される制御プログラムにより外部から与えられるコマンドに応じた処理を実現する。
【００１４】
上記ワーキングメモリ１３は、揮発性のメモリ（ＲＡＭ；ランダムアクセスメモリ）により構成される。上記ワーキングメモリ１３は、データを一時保管するバッファメモリとして機能する。例えば、上記ワーキングメモリ１３には、ＩＣカード処理装置（外部装置）２との通信処理において、送受信されるデータが一時的に保管される。また、上記ワーキングメモリ１３には、種々の書込みデータなどを一時的に保持するメモリとしても利用される。
【００１５】
また、ワーキングメモリ１３は、乱数生成機能により生成した乱数を記憶するための専用のメモリ領域１３ａを有する。メモリ領域１３ａは、擬似乱数の生成処理により生成した擬似乱数をセキュアに保存する。また、メモリ領域１３ａは、先入れ先出し（First In First Out: FIFO）のメモリであるものとする。すなわち、擬似乱数の生成処理により生成された擬似乱数は、メモリ領域１３ａに蓄積され、先に保存した順番にメモリ領域１３ａから取り出される。また、取り出された擬似乱数としてのデータは、メモリ領域１３ａから削除される。
【００１６】
上記データメモリ（不揮発性メモリ）１４は、データの書き込みが可能な不揮発性のメモリである。上記データメモリ１４は、例えば、ＥＥＰＲＯＭあるいはフラッシュメモリなどにより構成される。上記データメモリ１４には、当該ＩＣカード１の使用目的に応じた種々の情報が記憶される。たとえば、当該ＩＣカードの使用目的に応じたアプリケーション（処理プログラムおよび運用データなど）は、上記データメモリ１４に書込まれる。当該ＩＣカード１が複数の使用目的に使用される場合、上記データメモリ１４には、各使用目的に応じた複数のアプリケーションが記憶される。
【００１７】
また、当該ＩＣカード１の使用目的に応じたアプリケーションは、上記データメモリ１４上に定義された使用目的ごとのプログラムファイル（ＤＦ；Ｄｅｄｉｃａｔｅｄ  Ｆｉｌｅ）およびデータファイル（ＥＦ；Ｅｌｅｍｅｎｔａｒｙ  Ｆｉｌｅ）などの各ファイルに記憶される。このようなファイル構成は、たとえば、ＩＳＯ／ＩＥＣ７８１６−４に基づくものである。
【００１８】
また、上記データファイル自体の構造としては、レコード型のファイルあるいは透過型のファイルがある。レコード型のファイルは、複数のレコード単位のデータが格納される。なお、レコード型のファイルにおける各レコードの構造としては、たとえば、識別子（タグ：Ｔａｇ）、データ長（レングス：Ｌｅｎｇｔｈ）、データ値（バリュー：Ｖａｌｕｅ）により構成されるＴＬＶ構造などがある。このようなレコード型のファイルには、ファイル内のレコードごとにアクセスすることが可能である。たとえば、ファイル内の各レコードには、各レコードに付与されるレコード番号によりアクセスできる。また、上記透過型のファイル内のデータには、当該ファイル内のデータ位置を表すオフセット値を指定してアクセスすることも可能である。
【００１９】
上記通信制御部１５は、上記インターフェース１７を介して外部装置（たとえば、ＩＣカード処理装置２）とのデータ通信を制御するものである。たとえば、当該ＩＣカードが非接触型のＩＣカードであれば、外部装置からデータを受信する場合、上記通信制御部１５は、インターフェース１７としてのアンテナにより受信した電波としての送信データを復調し、復調した信号を上記ＣＰＵ１１に供給する。また、外部装置へデータを送信する場合、上記通信制御部１５は、上記ＣＰＵ１１から与えられるデータを変調し、変調したデータを上記インターフェース１７としてのアンテナにより電波として発信する。なお、接触式ＩＣカードでは、インターフェース１７として、アンテナの代わりに、外部装置の接触端子部と物理的・電気的に接触するコンタクト部を介して外部装置とのデータ通信を行う。
【００２０】
上記電源部１６は、当該ＩＣカード１の各部を動作させるための上記インターフェース１７を介して受信する電力およびクロックパルスを供給する。たとえば、当該ＩＣカードが非接触型のＩＣカードであれば、上記電源部１６は、上記インターフェース１７としてのアンテナにより受信した電波から電力およびクロックパルスを生成し、当該ＩＣカード内の各部に供給するようになっている。また、上記電源部１６からの電力供給により起動した場合、上記ＣＰＵ１１は、当該ＩＣカード１の処理状態をリセットする処理を行うようになっている。なお、当該ＩＣカード１が接触型のＩＣカードであれば、上記電源部１６はインターフェース１７を介して外部装置から直接的に供給される電力およびクロックパルスにより各部へ供給するようになっている。
【００２１】
次に、上記ＩＣカード処理装置２について説明する。  
上記ＩＣカード処理装置２は、図１に示すように、制御装置２１およびカードリーダライタ２２を有している。上記制御装置２１は、パーソナルコンピュータ（ＰＣ）などにより構成される。上記制御装置２１は、ＣＰＵなどの演算処理部、ＲＡＭ、ＲＯＭ、不揮発性メモリおよびハードディスクドライブなどの各種メモリ、通信インターフェースなどの各種インターフェースなどにより構成される。上記制御装置２１では、上記演算処理部がメモリに記憶されている各種の制御プログラムを実行することにより各種の処理を実現している。また、上記制御装置２１は、ＩＣカード１とのデータ通信を行う上記カードリーダライタ２２とのデータの入出力を行うようになっている。
【００２２】
たとえば、上記制御装置２１には、上記ＩＣカード１を用いた各種の処理に応じた制御プログラムが予め記憶されている。上記制御装置２１では、上記のような制御プログラムを実行することにより上記ＩＣカード１を用いた各種の処理を実行する。たとえば、上記ＩＣカード１を用いた各種の処理において、上記制御装置２１は、所定のコマンドを所定の手順で供給する。上記制御装置２１では、上記のような各コマンドに対するＩＣカード１からの各レスポンス（コマンドに対する処理結果等を示す情報）に基づいて各種の処理を行うようになっている。
【００２３】
上記カードリーダライタ２２は、上記ＩＣカード１とのデータ通信を行う通信手段として機能する。上記カードリーダライタ２２は、上記ＩＣカード１の通信方式に応じた通信方式によるデータ通信を行うためのものである。つまり、上記カードリーダライタ２２を介して制御装置２１は、上記ＩＣカード１とのデータ通信を実現している。
【００２４】
上記ＩＣカード１が非接触型のＩＣカードである場合、上記カードリーダライタ２２は、上記ＩＣカード１との無線によるデータ通信を行うためのアンテナおよび通信制御部（変復調回路等）などにより構成される。非接触型のＩＣカード１へデータを送信する場合、上記カードリーダライタ２２では、通信制御部により上記制御装置２１から与えられる送信データを変調し、変調した信号を電波としてアンテナにより発信する。また、非接触型のＩＣカード１からデータを受信する場合、上記カードリーダライタ２２では、アンテナにより受信した電波としての信号を通信制御部により復調し、復調したデータを受信データとして上記制御装置２１へ供給する。また、上記カードリーダライタ２２では、上記のようなデータの送受信とともに、上記ＩＣカード１を動作させるための電源およびクロックパルスとなる電波をアンテナにより発信するようになっている。
【００２５】
また、上記ＩＣカード１が接触型のＩＣカードである場合、上記カードリーダライタ２２は、ＩＣカード１と物理的に接触してデータ通信を行うためのコンタクト部および通信制御部などにより構成される。接触型のＩＣカードとのデータの送受信を行う場合、上記カードリーダライタ２２では、上記コンタクト部がＩＣカード１側に設けられているコンタクト部と物理的に接触して各種のデータ通信を行う。また、上記カードリーダライタ２２では、ＩＣカード１に物理的に接触しているコンタクト部を介して当該ＩＣカード１に対して電力およびクロックパルスを供給するようになっている。
【００２６】
次に、ＩＣカード１における各処理について説明する。  
本実施の形態において、ＩＣカード１のＣＰＵ１１は、乱数を要求するコマンドに対応する処理とは別に擬似乱数生成処理を実行しておき、メモリ領域１３ａに擬似乱数生成処理により生成した擬似乱数を記憶（蓄積）しておく。乱数を要求するコマンドを受信した場合、ＩＣカード１のＣＰＵ１１は、メモリ領域１３ａに蓄積している擬似乱数から当該コマンドが要求する桁数の乱数データを取り出し、取り出した乱数データを当該コマンドに対するレスポンスデータとして送信する。  
本実施の形態においては、擬似乱数の生成処理をコマンド待ち時間に実行する第１の処理例と、擬似乱数の生成処理をレスポンスデータの送信中に実行する第２の処理例とを説明する。
【００２７】
まず、第１の処理例について説明する。  
図３は、擬似乱数の生成処理をコマンド待ち時間に実行する第１の処理例を概略的に示す図である。  
ＩＣカード１は、コマンドの実行結果としてのレスポンスデータを送信してから次のコマンドの受信をするまでの間、コマンドの受信待ち状態となっている。コマンド受信待ち状態において、ＩＣカードは、待機中か、あるいは、次のコマンドに対する処理準備などの負荷の少ない処理を実行する。つまり、コマンドの受信待ち状態の間、ＩＣカード１のＣＰＵ１１は、負荷の大きい処理を実施することがなく、処理能力に余力がある。
【００２８】
図３に示すように、コマンド受信待ち状態において、ＩＣカード１のＣＰＵ１１は、乱数生成機能１１ａにより擬似乱数の生成する。また、ＣＰＵ１１は、乱数生成機能１１ａにより生成した擬似乱数をワーキングメモリ１３に設けた乱数蓄積用のメモリ領域１３ａに蓄積する。メモリ領域１３ａには、データ量が所定の許容量に達するまで乱数生成機能１１ａにより生成した乱数を蓄積する。
【００２９】
図３に示すように、メモリ領域１３ａに擬似乱数が蓄積されると、ＩＣカード１のＣＰＵ１１は、上位装置（ＩＣカード処理装置）２からGET CHALLENGEコマンド等の乱数生成命令を受信した場合に、メモリ領域１３ａに蓄積している乱数から当該コマンドで要求される必要なサイズだけ乱数データを取り出す。取り出した乱数は、メモリ領域１３ａから削除される。ＩＣカード１のＣＰＵ１１は、メモリ領域１３ａから取り出した乱数を、受信したGET CHALLENGEコマンド等のコマンドに対するレスポンスデータとして上位装置２へ送信する。
【００３０】
このような第１の処理例による処理手順によれば、ＩＣカード１では、実際にGET CHALLENGEコマンドを受信したときに、メモリ領域１３ａから読み出した乱数をレスポンスデータとして送信するだけで良い。すなわち、第１の処理例では、図３に示すように、GET CHALLENGEコマンドを受信したときの擬似乱数の生成処理が不要となり、GET CHALLENGEコマンド受信後の擬似乱数の生成処理に要する時間を短縮できる。
【００３１】
次に、ＩＣカード１における第１の処理例としての処理手順について説明する。  
図４は、第１の処理例による処理手順を説明するためのフローチャートである。  
まず、ＩＣカード１が上位装置（ＩＣカード処理装置）２からコマンドを受信したものとする（ステップＳ１０）。コマンドを受信すると、ＩＣカード１のＣＰＵ１１は、受信したコマンドが乱数を要求するコマンド（ここでは、GET CHALLENGEコマンドとする）であるか否かを判断する（ステップＳ１１）。受信したコマンドが乱数を要求するコマンドでないと判断した場合（ステップＳ１１、ＮＯ）、ＣＰＵ１１は、受信したコマンドに応じた処理を実行する（ステップＳ１２）。
【００３２】
また、受信したコマンドが乱数を要求するコマンドであると判断した場合（ステップＳ１１、ＹＥＳ）、ＣＰＵ１１は、乱数蓄積用のメモリ領域１３ａから当該コマンドで要求された桁数の擬似乱数を取り出す（ステップＳ１３）。ここで、ＣＰＵ１１は、当該コマンドで要求された桁数の擬似乱数がメモリ領域１３ａから取り出せたか否かを確認する（ステップＳ１４）。所望の桁数の擬似乱数がメモリ領域１３ａから取り出せなかった場合（ステップＳ１４、ＮＯ）、ＣＰＵ１１は、乱数生成機能１１ａにより不足分の桁数の擬似乱数を生成する処理を実行する（ステップＳ１５）。
【００３３】
当該コマンドで要求される桁数の擬似乱数をメモリ領域１３ａから取り出した場合（ステップＳ１４、ＹＥＳ）、ＣＰＵ１１は、メモリ領域１３ａから取り出した擬似乱数を含むレスポンスデータを上位装置２へ送信する（ステップＳ１６）。また、不足分の擬似乱数を生成した場合、ＣＰＵ１１は、メモリ領域１３ａから取り出した擬似乱数と生成した不足分の擬似乱数とを含むレスポンスデータを上位装置２へ送信する（ステップＳ１６）。また、GET CHALLENGEコマンド以外のコマンドに対するコマンド処理を実行した場合も、ＣＰＵ１１は、実行したコマンド処理の実行結果を示すレスポンスデータを上位装置２へ送信する（ステップＳ１６）。
【００３４】
レスポンスデータの送信が完了すると、ＣＰＵ１１は、コマンド待ち状態となる。コマンド待ち状態となると、ＣＰＵ１１は、乱数を生成すべきか否かを判断する（ステップＳ１７）。たとえば、ＣＰＵ１１は、メモリ領域１３ａに新たな擬似乱数を保存する空き領域があれば、乱数を生成すべきと判断する。つまり、ＣＰＵ１１は、メモリ領域１３ａ全体に擬似乱数が格納されていれば、乱数の生成を行わないと判断する。
【００３５】
乱数を生成すべきと判断した場合（ステップＳ１７、ＹＥＳ）、ＣＰＵ１１は、乱数生成機能１１ａにより擬似乱数の生成処理を実行する（ステップＳ１８）。ＣＰＵ１１は、擬似乱数の生成処理により生成した擬似乱数をメモリ領域１３ａに蓄積する（ステップＳ１９）。ＣＰＵ１１は、次のコマンドを受信するまで（ステップＳ２０、ＮＯ）、上記ステップＳ１７〜Ｓ１９の処理を繰り返し実行する。また、上記ステップＳ１７〜Ｓ１９の処理を実行中にコマンドを受信した場合（ステップＳ２０、ＹＥＳ）、ＣＰＵ１１は、上記ステップＳ１０へ戻り、上述した処理を実行する。
【００３６】
上述した第１の処理例によれば、ＩＣカード１は、コマンド受信待ち状態の間に、乱数を生成し、生成した乱数をメモリに蓄積保存しておく。ＩＣカード１は、実際に乱数を要求するコマンドを受信した場合に乱数の生成処理を実行することなく、メモリに蓄積した乱数をレスポンスとして送信する。これにより、コマンド受信後に乱数の生成処理を実施するのに要する時間を短縮することができ、処理全体として処理時間を削減することが可能となる。
【００３７】
次に、第２の処理例について説明する。  
図５は、擬似乱数の生成処理をレスポンスデータの送信中に実行する第２の処理例を概略的に示す図である。  
ＩＣカード１は、コマンドの実行結果としてのレスポンスデータを送信している間、ＣＰＵ１１にかかる処理の負荷が少ない。従って、レスポンスデータを送信している間、ＩＣカード１のＣＰＵ１１は、乱数生成機能１１ａにより擬似乱数の生成処理を実行する余力があるものと考えられる。
【００３８】
第２の処理例では、図５に示すように、レスポンスデータの送信中において、ＩＣカード１のＣＰＵ１１は、乱数生成機能１１ａにより擬似乱数の生成処理を行う。また、ＣＰＵ１１は、乱数生成機能１１ａにより生成した擬似乱数をワーキングメモリ１３に設けた乱数蓄積用のメモリ領域１３ａに蓄積する。メモリ領域１３ａには、データ量が所定の許容量に達するまで乱数生成機能１１ａにより生成した乱数を蓄積する。
【００３９】
図５に示すように、メモリ領域１３ａに擬似乱数が蓄積されると、ＩＣカード１のＣＰＵ１１は、上位装置（ＩＣカード処理装置）２からGET CHALLENGEコマンド等の乱数生成命令を受信した場合に、メモリ領域１３ａに蓄積している乱数から当該コマンドで要求される必要なサイズだけ乱数データを取り出す。取り出した乱数は、メモリ領域１３ａから削除される。ＩＣカード１のＣＰＵ１１は、メモリ領域１３ａから取り出した乱数を、受信したGET CHALLENGEコマンド等のコマンドに対するレスポンスデータとして上位装置２へ送信する。
【００４０】
このような第２の処理例による処理手順によれば、ＩＣカード１では、実際にGET CHALLENGEコマンドを受信したときに、メモリ領域１３ａから読み出した乱数をレスポンスデータとして送信するだけで良い。すなわち、第２の処理例では、図５に示すように、GET CHALLENGEコマンドを受信したときの擬似乱数の生成処理が不要となり、GET CHALLENGEコマンド受信後の擬似乱数の生成処理に要する時間を短縮できる。
【００４１】
次に、ＩＣカード１における第２の処理例としての処理手順について説明する。  
図６は、第２の処理例による処理手順を説明するためのフローチャートである。  
まず、ＩＣカード１が上位装置（ＩＣカード処理装置）２からコマンドを受信したものとする（ステップＳ３０）。コマンドを受信すると、ＩＣカード１のＣＰＵ１１は、受信したコマンドが乱数を要求するコマンド（ここでは、GET CHALLENGEコマンドとする）であるか否かを判断する（ステップＳ３１）。受信したコマンドが乱数を要求するコマンドでないと判断した場合（ステップＳ３１、ＮＯ）、ＣＰＵ１１は、受信したコマンドに応じた処理を実行する（ステップＳ３２）。
【００４２】
また、受信したコマンドが乱数を要求するコマンドであると判断した場合（ステップＳ３１、ＹＥＳ）、ＣＰＵ１１は、乱数蓄積用のメモリ領域１３ａから当該コマンドで要求された桁数の擬似乱数を取り出す（ステップＳ３３）。ここで、ＣＰＵ１１は、当該コマンドで要求された桁数の擬似乱数がメモリ領域１３ａから取り出せたか否かを確認する（ステップＳ３４）。所望の桁数の擬似乱数がメモリ領域１３ａから取り出せなかった場合（ステップＳ３４、ＮＯ）、ＣＰＵ１１は、乱数生成機能１１ａにより不足分の桁数の擬似乱数を生成する処理を実行する（ステップＳ３５）。
【００４３】
当該コマンドで要求された桁数の擬似乱数をメモリ領域１３ａから取り出した場合（ステップＳ３４、ＹＥＳ）、ＣＰＵ１１は、メモリ領域１３ａから取り出した擬似乱数を含むレスポンスデータを上位装置２へ送信する処理を開始する（ステップＳ３６）。また、不足分の擬似乱数を生成した場合、ＣＰＵ１１は、メモリ領域１３ａから取り出した擬似乱数と生成した不足分の擬似乱数とを含むレスポンスデータを上位装置２へ送信する処理を開始する（ステップＳ３６）。また、GET CHALLENGEコマンド以外のコマンドに対するコマンド処理を実行した場合も、ＣＰＵ１１は、実行したコマンド処理の実行結果を示すレスポンスデータを上位装置２へ送信する処理を開始する（ステップＳ３６）。
【００４４】
レスポンスデータの送信を開始すると、ＣＰＵ１１は、乱数を生成すべきか否かを判断する（ステップＳ３７）。たとえば、ＣＰＵ１１は、メモリ領域１３ａに新たな擬似乱数を保存する空き領域があれば、乱数を生成すべきと判断する。言い換えれば、ＣＰＵ１１は、メモリ領域１３ａに所定量以上の擬似乱数が格納されていれば、十分な量の擬似乱数を蓄積しているため、乱数を生成しないと判断するようにしても良い。
【００４５】
乱数を生成すべきであると判断した場合（ステップＳ３７、ＹＥＳ）、ＣＰＵ１１は、乱数生成機能１１ａにより擬似乱数の生成処理を実行する（ステップＳ３８）。ＣＰＵ１１は、擬似乱数の生成処理により生成した擬似乱数をメモリ領域１３ａに蓄積する（ステップＳ３９）。ＣＰＵ１１は、レスポンスデータの送信が完了するまで（ステップＳ４０、ＮＯ）、上記ステップＳ３７〜Ｓ３９の処理を繰り返し実行することにより、メモリ領域１３ａに擬似乱数を蓄積する。また、レスポンスデータの送信が完了した場合（ステップＳ４０、ＹＥＳ）、ＣＰＵ１１は、次のコマンドの受信待ち状態となる（ステップＳ４１）。この状態において次のコマンドを受信すると（ステップＳ４１、ＹＥＳ）、ＣＰＵ１１は、上記ステップＳ３０へ戻り、上述した処理を実行する。
【００４６】
上述した第２の処理例によれば、ＩＣカード１は、受信したコマンドに対するレスポンスデータの送信中に、乱数を生成し、生成した乱数をメモリに蓄積保存しておく。ＩＣカード１は、実際に乱数を要求するコマンドを受信した場合、乱数の生成処理を実行することなく、メモリに蓄積した乱数をレスポンスとして送信する。これにより、コマンド受信後に乱数の生成処理を実施するのに要する時間を短縮することができ、処理全体として処理時間を削減することが可能となる。
【００４７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４８】
Ｃ…本体、Ｍ…モジュール、１…ＩＣカード、１ａ…ＩＣチップ、２…ＩＣカード処理装置（上位装置）、１１…ＣＰＵ、１１ａ…乱数生成機能、１２…プログラムメモリ、１３…ワーキングメモリ、１３ａ…メモリ領域、１４…データメモリ、１５…通信制御部、１６…電源部、１７…インターフェース。
【図１】
2012194903.tif 000003
【図２】
2012194903.tif 000004
【図３】
2012194903.tif 000005
【図４】
2012194903.tif 000006
【図５】
2012194903.tif 000007
【図６】
2012194903.tif 000008