(57)【特許請求の範囲】
【請求項１】
リーダライタより送信されるリクエストに対して乱数を用いて応答する非接触ＩＣカードにおいて、
上記リーダライタよりリクエストを受信する前に乱数の発生に用いる演算のうち一部の演算によって得られる仮乱数を生成する仮乱数生成手段と、
上記リーダライタより上記リクエストを受信した際に、上記リクエストに含まれるスロット数と、上記仮乱数生成手段により生成された仮乱数とを用いて算出される応答タイミングである乱数を生成する乱数生成手段と、
自らが応答すべきタイミングまでに所定の時間があるか否かを判定する自己送信タイミング判定手段とを備え、
上記仮乱数生成手段は、上記自己応答タイミング判定手段により、応答タイミングまでに所定の時間があると判定された場合に上記仮乱数を生成する非接触ＩＣカード。
【請求項２】
上記仮乱数の生成のための演算は、上記リクエストに関連しない演算であると共に、
上記乱数の生成のための演算は、上記リクエストに基づいて決定される演算である請求項１に記載の非接触ＩＣカード。
【請求項３】
さらに上記仮乱数生成手段により生成された仮乱数を記憶する複数の仮乱数記憶手段を備え、
上記リーダライタからのリクエストに対して記憶した複数の仮乱数を順次用いて上記応答を行う請求項１に記載の非接触ＩＣカード。
【請求項４】
さらに不揮発性である上記仮乱数記憶手段を備え、
上記仮乱数生成手段は、通信終了時に上記仮乱数を生成して上記不揮発性の仮乱数記憶手段に記憶し、
上記乱数生成手段は、上記リクエストを受信した際に上記不揮発性の仮乱数記憶手段に記憶された仮乱数から乱数を生成する請求項１に記載の非接触ＩＣカード。
【請求項５】
さらに仮乱数の生成中に上記リーダライタからのリクエストを受信した際に当該仮乱数の生成を中断することを示す仮乱数中断フラグと、
上記リクエストに対する応答が終了した後に上記仮乱数の生成を開始すべき箇所を示す仮乱数処理中フラグを備え、
上記仮乱数中断フラグ及び仮乱数処理中フラグに基づいて、仮乱数の生成の中断・開始を行う請求項１に記載の非接触ＩＣカード。
【請求項６】
さらに所定の値を保持する特定スロット番号保持手段を備え、
上記仮乱数の生成中に上記リクエストを受信した際に、当該仮乱数の生成を中断し、上記特定スロット番号保持手段が保持している値を用いて応答する請求項５に記載の非接触ＩＣカード。
【請求項７】
リーダライタより送信されるリクエストに対して乱数を用いて応答する非接触ＩＣカードの応答方法であって、
上記リーダライタよりリクエストを受信する前に乱数の発生に用いる演算のうち一部の演算によって得られる仮乱数を生成する仮乱数生成ステップと、
上記リーダライタより上記リクエストを受信した際に、上記リクエストに含まれるスロット数と、上記仮乱数生成手段により生成された仮乱数とを用いて算出される応答タイミングである乱数を生成する乱数生成ステップと、
自らが応答すべきタイミングまでに所定の時間があるか否かを判定する自己送信タイミング判定ステップとを備え、
上記仮乱数生成ステップは、上記自己応答タイミング判定ステップにより、応答タイミングまでに所定の時間があると判定された場合に上記仮乱数を生成する非接触ＩＣカードの応答方法。
【請求項８】
リーダライタより送信されるリクエストに対して乱数を用いて応答する非接触ＩＣカードに、
上記リーダライタよりリクエストを受信する前に乱数の発生に用いる演算のうち一部の演算によって得られる仮乱数を生成する仮乱数生成ステップと、
上記リーダライタより上記リクエストを受信した際に、上記リクエストに含まれるスロット数と、上記仮乱数生成手段により生成された仮乱数とを用いて算出される応答タイミングである乱数を生成する乱数生成ステップと、
自らが応答すべきタイミングまでに所定の時間があるか否かを判定する自己送信タイミング判定ステップとを備え、
上記仮乱数生成ステップは、上記自己応答タイミング判定ステップにより、応答タイミングまでに所定の時間があると判定された場合に上記仮乱数を生成するように実行させることを特徴とするプログラム。
【請求項９】
リーダライタより送信されるリクエストに対して乱数を用いて応答する非接触ＩＣカードに、
上記リーダライタよりリクエストを受信する前に乱数の発生に用いる演算のうち一部の演算によって得られる仮乱数を生成する仮乱数生成ステップと、
上記リーダライタより上記リクエストを受信した際に、上記リクエストに含まれるスロット数と、上記仮乱数生成手段により生成された仮乱数とを用いて算出される応答タイミングである乱数を生成する乱数生成ステップと、
自らが応答すべきタイミングまでに所定の時間があるか否かを判定する自己送信タイミング判定ステップとを備え、
上記仮乱数生成ステップは、上記自己応答タイミング判定ステップにより、応答タイミングまでに所定の時間があると判定された場合に上記仮乱数を生成するように実行させるプログラムを記憶したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、非接触ＩＣカード、応答方法、及びそのプログラムに関し、詳しくは、リーダライタより送信されるリクエストに対して乱数に基づいて算出される値を用いて応答する非接触ＩＣカード、応答方法、及びそのプログラムに関する。
【０００２】
【従来の技術】
従来、電磁誘導方式等を用いてデータの授受を行なう非接触ＩＣカードと当該非接触ＩＣカードを認識するリーダライタとの間の通信には、タイムスロット方式が採用されている。これは、複数の非接触ＩＣカードが同時にリーダライタの通信可能エリア内に存在し、リーダライタからのポーリングに対して複数の非接触ＩＣカードが同時に応答した場合、当該応答に用いられる各レスポンス信号が衝突して何れの非接触ＩＣカードもリーダライタと正常に通信することができなくなるためである。
【０００３】
上記タイムスロット方式の通信方法を以下に説明する。
【０００４】
（１）まずリーダライタは非接触ＩＣカードの存在を確認するために、リクエストとして初期応答リクエストコマンドを非接触ＩＣカードに送信する。上記初期応答リクエストコマンドには、非接触ＩＣカードが行なう初期応答のタイミングの制御に必要な「スロット数」、又は「スロット数」を計算する為に必要な値が含まれる。
【０００５】
（２）上記非接触ＩＣカードは、上記初期応答リクエストコマンドを受信後、特定時間から設けられるタイムスロット（１〜「スロット数」）へ上記初期応答を返す。応答に用いるタイムスロット、即ちタイミングは、非接触ＩＣカード自身が乱数で決定する。
【０００６】
（３）上記リーダライタは、複数の非接触ＩＣカードが同一のタイムスロットを選択した際に起こる初期応答の衝突を検出した場合、再度上記初期応答リクエストを送信する。ここで通常、再度送信された初期応答リクエストに設けられるタイムスロットの数は、先に設けられたタイムスロットの数よりも多数である。
【０００７】
（４）上記リーダライタは、すべての非接触ＩＣカードからの初期応答を正常に受信することですべての非接触ＩＣカードの認識をし、当該カードの識別のためのシーケンスを完了する。
【０００８】
このようなシステムとして、無線式識別装置（特開平９−６９３４号公報）が開示されている。
【０００９】
尚、上記タイムスロット方式に類似の方法として、スロットマーカ方式がある。当該スロットマーカ方式では、リーダライタが上記タイムスロット方式における初期応答リクエストを送信後、さらに当該リーダライタが各スロット開始のタイミング毎にスロットの開始を示すスロットマーカコマンドを送信する方式である。
【００１０】
【発明が解決しようとする課題】
上記無線式識別装置（特開平９−６９３４号公報）では、識別カード（非接触ＩＣカード）が送受信デコーダ（リーダライタ）よりポーリングを受けてからレスポンス信号（応答）を送信するまでの遅延時間を、上述したように乱数で決定する必要がある。
【００１１】
ここで、上記乱数に質の悪い乱数、即ち複数回乱数を発生した際に偏った乱数を発生させるシステムにより生成された乱数、を用いた場合には、複数の非接触ＩＣカードで同じ乱数を発生させることが多くなる。このため、上記初期応答の衝突が多発し、リーダライタによるカード識別のシーケンス終了が遅れるばかりか、最悪、非接触ＩＣカードが同じ乱数を発生し続けると、カード識別のシーケンスが終了しないといった問題を有する。特に電車の改札機等のように、立ち止まることなく利用者が非接触ＩＣカードをリーダライタに認識させる必要があるシステムにて利用した場合、上記カード識別が遅れることにより当該システムの利用に障害が生じることになる。
【００１２】
従って、上記質の悪い乱数の使用を避け、良質の乱数、即ち複数回乱数を発生した際に偏らない乱数を発生させるシステムにより生成された乱数、を使用する必要がある。
【００１３】
しかしながら、上記良質の乱数を得る為には、上記質の悪い乱数を得るよりも複雑な計算を行なう必要がある。このため、上記良質の乱数をソフトウェアにて生成する場合には、高速処理が可能なＣＰＵ（Central Processing Unit）を用いる必要があるが、当該高速処理が可能なＣＰＵを利用するには大量の電力を必要とする。ここで、一般的に非接触ＩＣカードのような電磁誘導方式の給電方式では、ＣＰＵで単位時間当りに使用できる電力は小さく、良質の乱数を生成するための十分な電力を給電することができない。従って、利用可能な電力で良質な乱数を得る為の計算を行なうと長時間かかってしまい、乱数の計算が終了する前にタイムスロットが終了するため初期応答ができないといった問題が起こる。
【００１４】
又、上記良質の乱数をハードウェアにて生成することにより、ソフトウェアにて生成するよりも一般的に短時間で提供可能であるが、この場合には乱数発生のためだけに特別な回路を必要とし、装置が複雑化してコストが高くなるといった問題が生じる。特に非接触ＩＣカードはサイズに制限があると共に、ある程度柔軟性が必要なために、上記ハードウェアでの乱数の提供は障害が大きいといえる。
【００１５】
本発明は、良質な乱数を簡単な構成にて提供することにより、初期応答の衝突を最小限にとどめる非接触ＩＣカード、応答方法、及びそのプログラムを提供することを目的とする。
【００１６】
【課題を解決するための手段】
本発明は、上記目的を達成するために以下の手段を採用している。即ち、本発明はリーダライタより送信されるリクエストに対して乱数を用いて応答する非接触ＩＣカードを前提としている。ここで、仮乱数生成手段は、上記リーダライタよりリクエストを受信する前に乱数の発生に用いる演算のうち一部の演算によって得られる仮乱数を生成する。乱数生成手段により上記リクエストに含まれるスロット数と、上記仮乱数生成手段により生成された仮乱数とを用いて算出される応答タイミングである乱数が生成される。また、自己送信タイミング判定手段は、自らが応答すべきタイミングまでに所定の時間があるか否かを判定する。上記仮乱数生成手段は、上記自己応答タイミング判定手段により、応答タイミングまでに所定の時間があると判定された場合に上記仮乱数を生成する。
【００１７】
以上のように、自らが応答すべきタイミングまでに所定の時間があるか否かを判定することで、自らには関係ない、実質的に待ち時間であるスロットにて仮乱数を生成することが可能となる。
【００１８】
又、乱数発生用のハードウェアを用いることなく、ソフトウェアにて良質の乱数を得ることが可能となるため非接触ＩＣカードのコストを下げることが可能となる。さらにハードウェアを用いることにより生じる設計、強度等の問題も発生しない。
【００１９】
尚、上記仮乱数の生成ための演算は、上記リクエストに関連しない演算とし、上記乱数の生成のための演算は、上記リクエストに基づいて決定される演算とすることができる。
【００２０】
さらに、上記構成に加え上記仮乱数記憶手段を備えると共に、リーダライタからのリクエストに対して記憶した複数の仮乱数を順次用いて応答を行なう構成がある。
【００２１】
この構成では、一度生成した仮乱数を再度最初から順次使用することが可能となり、リーダライタからリクエストが連続してきた場合にも即座に乱数を生成できるため、常に良質の乱数を用いて初期応答を行なうことが可能となる。
【００２２】
さらに上記仮乱数記憶手段を不揮発性とし、上記仮乱数生成手段は、通信処理終了時に上記仮乱数を生成して上記不揮発性の仮乱数記憶手段に記憶し、上記乱数生成手段は、上記リクエストを受信した際に上記不揮発性の仮乱数記憶手段に記憶された仮乱数から乱数を生成する構成がある。
【００２３】
この構成では、非接触ＩＣカードがリーダライタと通信を終了した後であって、上記リーダライタとの通信可能範囲内にある場合には電力の供給を受けることが可能であるため、予め仮乱数を生成することが可能となる。また、当該生成された仮乱数は不揮発性の仮乱数記憶手段に記憶されるため、次にリーダライタとの通信可能範囲に入った場合には即時良質の乱数を発生することが可能となる。
【００２４】
さらに仮乱数の生成中に上記リーダライタからのリクエストを受信した際に当該仮乱数の生成を中断することを示す仮乱数中断フラグと、リクエストに対する応答が終了した後に上記仮乱数の生成を開始すべき個所を示す仮乱数処理中フラグを備え、上記仮乱数中断フラグ及び仮乱数処理中フラグに基づいて、仮乱数の生成の中断・開始を行なう構成がある。
【００２５】
この構成では、仮乱数生成中にリーダライタからの初期応答リクエストが行なわれた場合でも、仮乱数の生成を途中で中断することにより、初期応答を行なうことができ、その後、仮乱数の生成を再開することができる。これにより、例えばプログラム起動時等の処理を軽減することができる。
【００２６】
さらに特定スロット番号保持手段が所定の値を保持し、上記仮乱数の生成中に上記リクエストを受信した際に当該仮乱数の生成を中断し、上記特定スロット番号保持手段が保持している値を用いて応答する構成がある。
【００２７】
この構成では、仮乱数記憶手段に有効な仮乱数が記憶されていない場合であってもリクエストに対して所定の時間内に応答を返すことが可能になる。
【００２８】
【発明の実施の形態】
以下、添付図面を参照して、本発明の実施の形態につき説明し、本発明の理解に供する。尚、以下の実施の形態は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格のものではない。
【００２９】
まず、図１〜図３を用いて、近接型非接触ＩＣカードの国際規格ＩＳＯ／ＩＥＣ１４４４３に適応した場合の非接触ＩＣカードの処理について簡単に説明する。
【００３０】
ＩＳＯ／ＩＥＣ１４４４３は例えば、非接触テレホンカードなどに適応できる。さらに具体的に、図１に示すように、公衆電話として機能するリーダライタ１００にテレホンカードとしての機能を有する非接触ＩＣカード２００、３００を同時に差し込んだ（近接させた）場合を想定する。
【００３１】
ＩＳＯ／ＩＥＣ１４４４３の非接触ＩＣカードの認識システムにおいては、以下の手順で非接触ＩＣカードの認識が行われる。
【００３２】
まず、公衆電話であるリーダライタ１００が初期応答リクエスト（リクエスト）を送信する。当該初期応答リクエストは、図３に示されるフォーマットになっており、初期応答リクエスト３０１を構成するＰＡＲＡＭ３０２内の８ｂｉｔのうち、ｂｉｔ１〜ｂｉｔ３の３ｂｉｔ３０３を用いてタイムスロット数（Ｎ）を非接触ＩＣカードに通知する。尚、ＡＰｆ３０４は、初期要求コマンドを示すヘッダであり、ＡＦＩ３０５は非接触ＩＣカードの適応クラスを示す。又、ＣＲＣ（Cyclic Redundancy Check）３０６はＡＰｆ〜ＰＡＲＡＭまでのＣＲＣである。
【００３３】
尚、非接触ＩＣカードは１〜ＮまでのＮ個のスロットで応答するが、今回の説明ではタイムスロット数（Ｎ）を４として説明を行なう。即ち、初期応答リクエストに対して非接触ＩＣカード２００及び３００は、１〜４までのタイムスロットのうち一つを選択し、初期応答を行なう。
【００３４】
図２で示す一回目のカード識別処理２０１において、まずリーダライタ１００から初期応答リクエストＲ１〔ＲＥＱＢ〕（２０２）を送信する。当該初期応答リクエストＲ１（２０２）に対して非接触ＩＣカード２００及び３００が、乱数としてそれぞれ「１」を生成したときには、タイムスロット１（２０４）内の初期応答〔ＡＴＱＢ〕Ａ２１、Ａ３１でそれぞれ応答する。この場合、上記非接触ＩＣカード２００、３００共同一のタイミングで初期応答を応答するため、リーダライタ１００は、非接触ＩＣカードの衝突を検出する。したがって、再度、識別処理を再開する。
【００３５】
二回目の識別処理２０７において、リーダライタ１００から初期応答リクエストＲ２（２０３）を送信する。初期応答リクエストに対して非接触ＩＣカード２００及び３００が、乱数として「３」、および「２」を生成したときには、タイムスロット３（２０５）内のパケットＡ２２、およびタイムスロット２（２０６）内のパケットＡ３２で応答する。この場合、リーダライタ１００は衝突を検出しないため、すべての非接触ＩＣカードの識別を行なうことができ、識別処理を完了する。以上がＩＳＯ／ＩＥＣ１４４４３の規定に従った、非接触ＩＣカードのカード識別処理である。尚、ＩＳＯ／ＩＥＣ１４４４３の規定では、初期応答リクエストコマンドを受け取ってから、非接触ＩＣカードがタイムスロット１で応答する場合の時間を３０２μｓｅｃと規定し、また、１つのタイムスロットの期間（時間）は２２６６μｓｅｃと規定している。リーダライタ１００から初期応答リクエストを受信して、初期応答を送信するまでのタイミング（μｓｅｃ）は、以下の計算式（式１）により与えられる。
【００３６】
タイミング（μｓｅｃ）＝３０２μｓｅｃ＋２２６６μｓｅｃ×（スロット数（Ｎ）−１）  ：（式１）
（実施の形態１）
以下、本発明にかかる実施の形態１におけるリーダライタ１００及び、複数の非接触ＩＣカード２００、３００、…よりなる非接触ＩＣカードシステムについて説明する。なお、非接触ＩＣカード２００，３００の構成は同一であるため、以下、主に非接触ＩＣカード２００を用いて説明する。
【００３７】
図４（ａ）は、実施の形態１におけるリーダライタ１００の構成を示す図である。リーダライタ１００は、アンテナ４０１、送受信回路４０２、ＣＰＵ４０３、リーダライタを制御するためのプログラムが格納されているＲＯＭ（Read Only Memory）４０４、プログラム実行時に例えばワークエリアとして使用されるＲＡＭ（Random Access Memory）４０５より構成されている。
【００３８】
又、図４（ｂ）に示すのは非接触ＩＣカード２００の構成を示す機能ブロック図である。上記非接触ＩＣカード２００は、アンテナ４０６、送受信回路４０７、各プログラムを実行するＣＰＵ４０８、リーダライタ１００からのコマンドを処理するための制御プログラム等が格納されるＲＯＭ４０９、プログラム実行時に例えばワークエリアとして使用されるＲＡＭ４１０より構成される。ここで上記非接触ＩＣカード２００は、上記リーダライタ１００等の通信可能エリアに入ると、上記リーダライタ１００からの電磁波より誘導される電力にて動作する。このため、大量の電力の供給を受けることができないのは上述したとおりである。
【００３９】
次に、上記図４（ｂ）における非接触ＩＣカード２００を機能ブロック図として示したのが図５である。即ち、上記非接触ＩＣカード２００は、アンテナ手段５０１、送受信手段５０２、制御手段５０３、良質の乱数を生成するための仮乱数生成手段５０４、仮乱数を記憶する仮乱数記憶手段５０５、受信した初期要求コマンドからスロット数を取得するスロット数取得手段５０６、仮乱数記憶手段５０５に記憶される仮乱数から乱数を生成する乱数生成手段５０７を備える。尚、例えば上記仮乱数生成手段５０４、スロット数取得手段５０６、乱数生成手段５０７は、図４（ｂ）に示したＲＯＭ４０９に格納され、必要に応じてＣＰＵ４０８に読み出されて実行される。
【００４０】
次に、図６を用いて本実施の形態１に係る非接触ＩＣカードの処理について説明する。尚、図６は非接触ＩＣカード２００の実行する通信処理のフローチャートである。
【００４１】
まず、非接触ＩＣカード２００を構成する仮乱数生成手段５０４は、例えばプログラム起動時等の所定のタイミングで、良質の乱数を生成する為の仮乱数（ｒ）を予め生成しておく（図６：Ｓ６０１）。ここで上記仮乱数とは、乱数の生成に必要な複数ステップの演算のうち、所定のステップ数の演算にて得られる値を指す。例えば上記乱数の生成に必要なステップが１００ステップである場合に、当該必要ステップの前段９０ステップにて導き出される値等が仮乱数である。言い換えれば、後述するステップ数（Ｎ）（リクエスト）に関連しない演算を仮乱数の生成ステップとすることができる。また、上記プログラム起動時とは、上記リーダライタ１００等の通信可能エリアに入ることで、上記リーダライタ１００からの電磁波より電力を誘導した場合等である。
【００４２】
尚、上記乱数は充分に良質の乱数とするための方法を用いるのが好ましく、例えば乱数生成方法（特願平１１−１７７９１３号公報）等にその具体例が示されている。但し、良質の乱数発生のためのアルゴリズムは当該発明には直接関係しないため詳細は省略する。
【００４３】
上記仮乱数生成手段５０４にて生成された仮乱数（ｒ）は、例えばＲＡＭ４１０内に設けられた仮乱数記憶手段５０５に記憶される（図６：Ｓ６０２）。
【００４４】
次に、リーダライタ１００から初期応答リクエスト（リクエスト）が送信されてくるのを待機する（図６：Ｓ６０３ＮＯ）。上記アンテナ手段５０１が上記リーダライタ１００からの電磁波を受信し、当該電磁波に上記初期応答リクエストが含まれていた場合、当該初期応答リクエストは送受信手段５０２を会して制御手段５０３にて受信される。続いて、制御手段５０３は上記初期応答リクエストをスロット数取得手段５０６に送信し、当該スロット数取得手段５０６は初期応答リクエストの中からスロット数を取得する（図６：Ｓ６０３ＹＥＳ−Ｓ６０４）。上記スロット数は、図３に示したＰＡＲＡＭ３０２のＢｉｔ１〜Ｂｉｔ３で指定されており、数値２を、このｂｉｔに指定される値回数乗じた値となる。以下にスロット数の計算式（式２）を示す。
【００４５】
スロット数（Ｎ）＝２＾ｎ：（式２）
（ｎはＢｉｔ１〜Ｂｉｔ３であらわされる０から４までの値）
上記スロット数取得手段５０６にて取得（計算）されたスロット数（Ｎ）は、上記制御手段５０３に送信される。
【００４６】
続いて上記制御手段５０３がスロット数（Ｎ）を取得すると、当該スロット数（Ｎ）と共に上記仮乱数記憶手段５０５に記憶した仮乱数（ｒ）を乱数生成手段５０７に送信する。
【００４７】
上記スロット数（Ｎ）、及び仮乱数（ｒ）を受信した乱数生成手段５０７は、当該２つの値に基づいて乱数（本乱数）（Ｒ）を生成する（図６：Ｓ６０５）。ここで、仮乱数（ｒ）から乱数を生成する処理は、上記乱数の生成に必要な複数ステップの演算のうち、仮乱数の生成時に処理された所定のステップ以外の、残りのステップを実行（演算）するのみである。ここで、当該残りのステップは、上記スロット数（Ｎ）がわからないと処理できない、即ち上記スロット数（Ｎ）（リクエスト）が関連するステップとすることができる。
【００４８】
以下に乱数（Ｒ）の計算式の一例（式３）を示す。
【００４９】
乱数（Ｒ）＝仮乱数（ｒ）％スロット数（Ｎ）＋１  ：（式３）
（％は剰余演算）
上記計算式（式３）は、タイムスロットの応答時間の規定を満たすものであれば他の演算式を用いてもかまわない。
【００５０】
上記乱数生成手段５０７にて生成された乱数は、上記制御手段５０３に送信される。
【００５１】
以上により、非接触ＩＣカード２００は、所望の乱数（１〜スロット数（Ｎ））を得ることができる。以後、上記乱数に基づいたタイミング（スロット）を利用して、上記リーダライタ１００に対して初期応答を行なう（図６：Ｓ６０６）。上記初期応答完了後、再度、仮乱数（ｒ）を生成するステップＳ６０１へもどり、一連の初期応答を完了する。
【００５２】
以上のように、乱数の生成処理を分割し、初期応答リクエストを受信した後に乱数（Ｒ）を生成するための演算の負荷が小さい演算とすることで、ＩＳＯ／ＩＥＣ１４４４３におけるタイムスロットの時間的規定を満たす事が可能である。しかも、乱数の生成には、演算量の多大な、即ち良質の乱数を生成可能な処理を適用することが可能である為、質の悪い乱数により生じる問題を解決することが可能となる。
【００５３】
又、良質の乱数を生成するための単位時間当り十分な電力を給電することができない非接触ＩＣカードにおいても、乱数発生用のハードウェアを用いることなく、ソフトウェアにて良質の乱数を得ることが可能となるため非接触ＩＣカードのコストを下げることが可能となる。さらにハードウェアを用いることにより生じる設計、強度等の問題も発生しない。
【００５４】
尚、本実施の形態１では、乱数の生成にソフトウェアを利用しているが、ハードウェアにより良質の乱数を生成してもよい。ソフトウェアよりも高速に乱数を生成することが可能であるハードウェアを利用する為、さらに多大なステップを必要とする、良質の乱数の生成方法を利用する事が可能になる。この場合、非接触ＩＣカード２００は、仮乱数発生手段にハードウェア回路を適用した構成となる。
【００５５】
（実施の形態２）
続いて、本発明に係る実施の形態２について説明する。尚、図７は、請求項２の非接触ＩＣカード２００が実行する通信処理のフローチャートである。
【００５６】
上記実施の形態１における非接触ＩＣカードでは、初期応答リクエストに対する応答が完了してすぐに再度リーダライタから初期応答リクエストが送信された際に、当該非接触ＩＣカードが仮乱数生成中であった場合には、初期応答ができない問題点がある。本実施の形態２では、この問題を解決するための手段を提供する。尚、本実施の形態２における非接触ＩＣカードは、上記実施の形態１における非接触ＩＣカードとほぼ同様の構成を有する為、異なる点のみ説明を行なう。
【００５７】
まず、上記非接触ＩＣカード２００を構成する仮乱数生成手段５０４は例えばプログラム起動時等の所定のタイミングで、仮乱数（ｒ（ｎ））を生成する（図７：Ｓ７０１）。ここで（ｒ（ｎ））は、ｎ番目に生成された仮乱数を意味し、１から仮乱数生成規定回数までの値をとる。尚、仮乱数規定回数とは、仮乱数をいくつ生成するかを決定する値であり、例えばプログラム的に決定される定数や、ＲＡＭ４１０やＲＯＭ４０９に格納される変数等で与えられる。
【００５８】
また、仮乱数の生成は、良質の乱数とするための方法を用いるのは上記実施の形態１と同様である。
【００５９】
上記仮乱数生成手段５０４にて生成された仮乱数（ｒ（ｎ））は、制御手段５０３を介して仮乱数記憶手段５０５に記憶される（図７：Ｓ７０２）。尚、この際に、本実施の形態２における非接触ＩＣカード２００は、上記仮乱数記憶手段５０５を複数備えており、例えば上記生成された仮乱数（ｒ（ｎ））は仮乱数記憶手段５０５（ｎ）に記憶されるものとする。
【００６０】
上記仮乱数記憶手段５０５（ｎ）に仮乱数が記憶された後、上記制御手段５０３は、乱数生成カウンタを用いて仮乱数の生成回数を確認する（図７：Ｓ７０３）。ここに乱数生成カウンタは、生成した仮乱数（ｒ（ｎ））の番号を記憶するための変数で、非接触ＩＣカード２００のＲＡＭ４１０に実装される。
【００６１】
ここで、仮乱数の生成回数が上記仮乱数生成規定回数に達しなかった場合、上記仮乱数生成手段５０４は、上記制御手段５０３からの指示に基づいて再度仮乱数を生成する（図７：Ｓ７０３ＮＯ−Ｓ７０１）。
【００６２】
尚、仮乱数の生成回数が上記仮乱数生成規定回数に達した場合、乱数使用カウンタを１で初期化する（図７：Ｓ７０３ＹＥＳ−Ｓ７０４）。ここに乱数使用カウンタは、次回の乱数生成時に使用する仮乱数（ｒ（ｎ））の番号を記憶するための変数で、非接触ＩＣカード２００のＲＡＭ４１０に実装される。
【００６３】
以上の処理により、複数の仮乱数が生成され、仮乱数記憶手段５０５にそれぞれ格納される。
【００６４】
次に、上記非接触ＩＣカード２００は、リーダライタ１００から初期応答リクエストが送信されてくるのを待機する（図７：Ｓ７０５ＮＯ）。上記アンテナ手段５０１が上記リーダライタ１００からの電磁波を受信し、当該電磁波に上記初期応答リクエストが含まれていた場合、当該初期応答リクエストは送受信手段５０２を介して制御手段５０３にて受信され、制御手段５０３は上記初期応答リクエストをスロット数取得手段５０６に送信し、当該スロット数取得手段５０６が初期応答リクエストの中からスロット数を取得するのは上記実施の形態１と同様である（図７：Ｓ７０５ＹＥＳ−Ｓ７０６）。
【００６５】
続いて、上記制御手段５０３がスロット数（Ｎ）を取得すると、当該スロット数（Ｎ）と共に上記仮乱数記憶手段５０５に記憶した仮乱数（ｒ（ｎ））を乱数生成手段に送信する。但し、ここで使用される仮乱数（ｒ（ｎ））は、上記乱数使用カウンタに基づく仮乱数であって、ここでは仮乱数（ｒ（１））となる。
【００６６】
上記スロット数（Ｎ）、及び仮乱数（ｒ（１））を受信した乱数生成手段５０７は、当該２つの値に基づいて乱数（本乱数）（Ｒ）を生成する（図７：Ｓ７０８）。
【００６７】
以下に乱数（Ｒ）の計算式の一例（式４）を示す。
【００６８】
本乱数（Ｒ）＝仮乱数（ｒ（ｎ））％スロット数（Ｎ）＋１：（式４）
（％は剰余演算、ｎは仮乱数使用カウンタの値）
上記計算式（式４）は、タイムスロットの応答時間の規定を満たすものであれば他の演算式を用いてもかまわない。
【００６９】
以上により、非接触ＩＣカード２００は、所望の乱数（１〜スロット数（Ｎ））を得ることができる。以後、上記乱数に基づいたタイミング（スロット）を利用して、上記リーダライタ１００に対して初期応答を行なう（図７：Ｓ７０９）。
【００７０】
上記初期応答の完了後上記制御手段５０３は、乱数使用カウンタの値をインクリメント（＋１）する（図７：Ｓ７１０）。
【００７１】
ここで、上記乱数使用カウンタの値が乱数生成規定回数に達しない場合、再度リーダライタ１００から初期応答リクエストが送信されてくるのを待機する（図７：Ｓ７１１ＮＯ−Ｓ７０５）。
【００７２】
尚、上記乱数使用カウンタの値が上記乱数生成規定回数に達した場合、乱数使用カウンタを１に初期化し、再度初期応答リクエスト待ちのステップＳ５０４へ戻る（図７：Ｓ７１１ＹＥＳ−Ｓ７１２−Ｓ７０５）。
【００７３】
以上の動作により、一度生成した仮乱数を再度最初から順次使用することが可能となり、リーダライタ１００から初期応答リクエストが連続してきた場合にも即座に乱数を生成できる為、常に良質の乱数を用いて初期応答を行なうことが可能となる。
【００７４】
（実施の形態３）
続いて、本発明に係る実施の形態３について説明する。
【００７５】
図８は、実施の形態３における、非接触ＩＣカード２００の実行する通信処理のフローチャートである。
【００７６】
上記実施の形態１における非接触ＩＣカードでは、初期応答リクエストに対する応答が完了してすぐに再度リーダライタから初期応答リクエストが送信された際に、当該非接触ＩＣカードが仮乱数生成中であった場合には、初期応答ができない問題点がある点は既に述べたとおりである。又、上記実施の形態２では、仮乱数を複数生成するための処理時間が必要で、初期応答リクエストを受けつけるまでの時間がかかるという問題がある。本実施の形態３では、この問題を解決するために、さらに自己応答タイミング判定手段５２０を備える。尚、本実施の形態３における非接触ＩＣカードは、上記実施の形態１、２における非接触ＩＣカードとほぼ同様の構成を有する為、異なる点のみ説明を行なう。
【００７７】
まず、非接触ＩＣカード２００を構成する仮乱数生成手段５０４は、例えばプログラム起動時等の所定のタイミングで、仮乱数（ｒ）を生成する（図８：Ｓ８０１）。
【００７８】
上記仮乱数生成手段５０４において生成された仮乱数（ｒ）は、仮乱数記憶手段５０５に記憶される（図８：Ｓ８０２）。
【００７９】
次に、リーダライタ１００から初期応答リクエストが送信されてくるのを待機する（図８：Ｓ８０３ＮＯ）。
【００８０】
ここで、上記初期応答リクエストを受信した場合、スロット数取得手段５０６にて当該初期応答リクエストの中からスロット数を取得する（図８：Ｓ８０３ＹＥＳ−Ｓ８０４）。
【００８１】
次に、乱数生成手段５０７は、上記スロット数（Ｎ）と仮乱数記憶手段にて記憶している仮乱数（ｒ）から乱数（Ｒ）を生成する（図８：Ｓ８０５）。
【００８２】
以上により、非接触ＩＣカード２００は、所望の乱数（１〜スロット数（Ｎ））を得ることができる。以上の処理は実施の形態１とほぼ同様である。
【００８３】
続いて、非接触ＩＣカード２００は、自己応答タイミング判定手段５２０により応答のタイミング（スロット）を判定する。即ち上記自己応答タイミング判定手段５２０は、当該非接触ＩＣカード２００が応答すべきタイミングを、初期応答リクエストを受信した時刻と上記生成された乱数（Ｒ）とに基づいて算出し、上記非接触ＩＣカード２００が応答すべきタイミングまでに十分な時間（所定の時間）があるか否かを判定する（図８：Ｓ８０６）。尚、上記十分な時間とは、上記仮乱数の生成及び記憶に必要な時間である。
【００８４】
ここで、上記判定にて十分な時間があると判定された場合、上記制御手段５０３は仮乱数生成手段５０４に対し仮乱数（ｒ）を生成する指示を出すと共に、生成された仮乱数を仮乱数記憶手段５０５に記憶する（図８：Ｓ８０６ＮＯ−Ｓ８０７−Ｓ８０８）。
【００８５】
尚、上記判定にて十分な時間が無いと判定された場合、上記制御手段５０３は上記生成された乱数（Ｒ）に基づくスロットを利用して初期応答を行なう（図８：Ｓ８０６ＹＥＳ−Ｓ８０９）。
【００８６】
上記初期応答完了、または仮乱数生成完了後、上記制御手段５０３はタイムスロット期間の終了判定を行なう。ここにタイムスロット期間とは、最初のタイムスロットが開始され、最後のタイムスロットが終了するまでの期間であり、上記リーダライタ１００から与えられたスロット数により決定する期間である。
【００８７】
ここでタイムスロット期間内であれば、上記自己応答タイミング判定手段５２０による判定から繰り返す（図８：Ｓ８１０ＹＥＳ−Ｓ８０６）。
【００８８】
尚、タイムスロット期間内ではない場合、初期応答リクエスト待ち処理に戻り初期応答リクエストにそなえる（図８：Ｓ８１０ＮＯ−Ｓ８０３）。
【００８９】
以上のように、自らが応答すべきタイミングまでに所定の時間があるか否かを判定することで、自らには関係ない、実質的に待ち時間であるスロットにて仮乱数を生成することが可能となる。
【００９０】
又、上記仮乱数記憶手段に不揮発性メモリを利用することで、例えば上記プログラム起動時から初期応答要求リクエストを受信するまでに仮乱数を生成する時間的な余裕がない場合であっても、既に仮乱数は準備されているので良質の乱数を用いて応答することが可能となる。
【００９１】
尚、本実施の形態３における技術は、上記実施の形態２における、複数の仮乱数記憶手段を設けた場合にも適用できることは言うまでもない。
【００９２】
（実施の形態４）
続いて、本発明に係る実施の形態４について説明する。
【００９３】
図９は、実施の形態４における、非接触ＩＣカード２００の実行する通信処理のフローチャートである。
【００９４】
上記実施の形態１における非接触ＩＣカードでは、初期応答リクエストに対する応答が完了してすぐに再度リーダライタから初期応答リクエストが送信された際に、当該非接触ＩＣカードが仮乱数生成中であった場合には、初期応答ができない問題点がある点は既に述べたとおりである。又、上記実施の形態２では、仮乱数を複数生成するための処理時間が必要で、初期応答リクエストを受けつけるまでに時間がかかるという問題がある。本実施の形態４では、この問題を解決するために、不揮発性メモリにより構成される仮乱数記憶手段５０５を備える。尚、本実施の形態４における非接触ＩＣカードは、上記実施の形態１、２、３における非接触ＩＣカードとほぼ同様の構成を有する為、異なる点のみ説明を行なう。
【００９５】
まず、制御手段５０３は、乱数使用カウンタを１に初期化する（図９：Ｓ９０１）。
【００９６】
次に、初期応答リクエストを受信した場合、上記スロット番号演算手段５０８は、当該初期応答リクエストの中からスロット数を取得する（図９：Ｓ９０２ＹＥＳ−Ｓ９０３）。
【００９７】
続いて上記制御手段５０３は、不揮発性の仮乱数記憶手段５０５に記憶される乱数使用カウンタ番目の仮乱数（ｒ（ｎ））を取り出し、乱数生成手段５０７が当該仮乱数（ｒ（ｎ））と上記スロット数（Ｎ）から乱数（Ｒ）を生成する（図９：Ｓ９０４−Ｓ９０５）。尚、上記仮乱数（ｒ（ｎ））を格納する手順は後述する。
【００９８】
以上により、非接触ＩＣカード２００は、所望の乱数（１〜スロット数（Ｎ））を得ることができる。以後、上記乱数に基づいたタイミング（スロット）を利用して上記リーダライタ１００に対して初期応答を行なう（図９：Ｓ９０６）。
【００９９】
上記初期応答の完了後、上記制御手段５０３は、乱数使用カウンタの値をインクリメント（＋１）する（図９：Ｓ９０７）。
【０１００】
ここで、上記乱数使用カウンタの値が乱数生成規定回数以下の場合、再度初期応答リクエスト受信の為待機する（図９：Ｓ９０８ＮＯ−Ｓ９０２）。
【０１０１】
尚、上記乱数使用カウンタの値が乱数生成規定回数になった場合、乱数使用カウンタを１に初期化し、再度初期応答リクエスト受信の為待機する（図９：Ｓ９０８ＹＥＳ−Ｓ９０９−Ｓ９０２）。
【０１０２】
上述した処理は、上記実施の形態２におけるＳ７０４〜Ｓ７０２の処理と同様である。
【０１０３】
さて、上記制御手段５０３が、乱数使用カウンタを１に初期化した後、初期応答リクエストを受信しなかった場合、通信終了リクエスト１００１を受信したかを判定する（図９：Ｓ９０２ＮＯ−Ｓ９１０）。ここに、通信終了リクエスト１００１とは、図１０に示されるフォーマットを有し、リーダライタ１００と非接触ＩＣカード２００との通信の終了時に上記リーダライタ１００より送信される情報である。上記通信終了リクエスト１００１は、Ｓ−ＢＬＯＣＫ１００２、ＣＩＤ（カードＩＤ）１００３、ＣＲＣ１００４の各フィールドを有し、上記Ｓ−ＢＬＯＣＫ１００２にはシステムコマンドの（通信終了）が、ＣＩＤ１００３には、当該非接触ＩＣカード２００のカードＩＤが、ＣＲＣ１００４にはＳ−ＢＬＯＣＫ１００２とＣＩＤ１００３のＣＲＣが格納されている。
【０１０４】
ここで、上記リーダライタ１００から上記通信終了リクエストを受信しなかった場合、初期応答リクエスト、（又はその他のリクエスト：図９に示さず）の受信待ちを行なう（図９：Ｓ９１０ＮＯ−Ｓ９０２）。
【０１０５】
但し、通信終了リクエストを受信した場合、上記リーダライタ１００と非接触ＩＣカード２００との通信が終了したことを示すため、仮乱数生成手段５０４は、上記仮乱数（ｒ（ｎ））を生成する（図９：Ｓ９１１）。ここで、“ｎ”はｎ番目の仮乱数生成回数を示し、１から仮乱数生成規定回数までの値をとるのは上記実施の形態２と同様である。上記仮乱数生成手段５０４にて生成された仮乱数（ｒ（ｎ））は、不揮発性の仮乱数記憶手段５０５に記憶される（図９：Ｓ９１２）。
【０１０６】
次に、制御手段５０３は、仮乱数の生成回数が仮乱数生成規定回数に達しているか否かを判定する。
【０１０７】
ここで仮乱数の生成回数が仮乱数生成規定回数に達していない場合、再度仮乱数生成手段５０４により、仮乱数の生成を行なう（図９：Ｓ９１３ＮＯ−Ｓ９１１）。
【０１０８】
尚、仮乱数の生成回数が仮乱数生成規定回数に達した場合、システムの停止を行なう（処理を終了する）。
【０１０９】
以上のように、非接触ＩＣカードがリーダライタと通信を終了した後であって、上記リーダライタとの通信可能範囲内にある場合には電力の供給を受けることが可能であるため、予め仮乱数を生成することが可能となる。また、当該生成された仮乱数は不揮発性記憶手段に記憶されるため、次にリーダライタとの通信可能範囲に入った場合には即時良質の乱数を発生することが可能となる。よって、例えばプログラム起動時等の処理を軽減することができる。これにより、初期応答リクエスト待ちになるまでの時間をさらに短縮することができる。
【０１１０】
（実施の形態５）
続いて、本発明に係る実施の形態５について説明する。
【０１１１】
ここに、図１１（ａ）は非接触ＩＣカード２００の初期化時の処理、図１１（ｂ）は非接触ＩＣカード２００の割り込み時の処理、図１２は仮乱数生成処理を示す。
【０１１２】
実施の形態５に係る非接触ＩＣカードは、初期応答方法に関しては上記実施の形態１〜４と同様の処理を行なうが、ここでは、仮乱数生成の中断を可能とする。言い換えれば、当該実施の形態５に示した技術を上記実施の形態１〜４と組み合わせることで、仮乱数生成の中断、開始を自由に行なうことが可能となる。
【０１１３】
まず、制御手段５０３は、例えばプログラム起動時等の所定のタイミングで非接触ＩＣカード２００の初期化処理を行なう。当該初期化処理とは、仮乱数処理中Ｆｌａｇに“１”を設定する処理、及び仮乱数中断Ｆｌａｇに“０”を設定する処理である（図１１（ａ）：Ｓ１１０１−Ｓ１１０２）。
【０１１４】
上記仮乱数処理中Ｆｌａｇとは、仮乱数の生成中の状態を示す変数で、３段階ある生成演算（生成演算１、生成演算２、生成演算３）の生成過程の状態を示している。即ち、仮乱数処理中Ｆｌａｇが１の場合は生成演算１、仮乱数処理中Ｆｌａｇが２の場合は生成演算２、仮乱数処理中Ｆｌａｇが３の場合は生成演算３を行なうことを示す。尚、上記生成演算１〜３とは、仮乱数（ｒ）の生成に必要な処理を、中断可能な３つの処理に分割したものであり、ここでは３つとしたが、２以上であればいくつでもよい。
【０１１５】
また、上記仮乱数中断Ｆｌａｇとは、制御手段５０３への割り込みにより変更される変数で、“０”の場合は、仮乱数の生成を中断する必要がない状態で、“０”以外の場合は、仮乱数の生成を中断する必要があることを示す。上記仮乱数処理中Ｆｌａｇ、仮乱数中断Ｆｌａｇともに非接触ＩＣカード２００のＲＡＭ５０５内に設けられる。
【０１１６】
以上が仮乱数の生成処理の中断に必要な準備である。
【０１１７】
続いて、上記リーダライタから要求（命令）が送信された場合、上記制御手段５０３は当該要求（命令）の内容を判定する（図１１（ｂ）：Ｓ１１１０）。尚、通常、上記要求は随時送信されるため、割込処理にて処理される。
【０１１８】
ここで上記要求（命令）が、初期応答リクエストである場合、上記制御手段５０３は仮乱数中断Ｆｌａｇに１を設定する（図１１（ｂ）：Ｓ１１１０ＹＥＳ−Ｓ１１１１）。
【０１１９】
また、上記要求（命令）が、初期応答リクエストでない場合、仮乱数中断Ｆｌａｇに０を設定する（図１１（ｂ）：Ｓ１１１０ＮＯ−Ｓ１１１２）。
【０１２０】
以上が、割り込みがあった際に行なわれる処理である。
【０１２１】
続いて、例えば上記実施の形態１〜４での仮乱数生成手段５０４による仮乱数の生成時における処理を説明する。
【０１２２】
まず、仮乱数生成手段５０４による仮乱数の生成時に、当該処理の中断を行なうかを仮乱数中断Ｆｌａｇにより判定する（図１２：Ｓ１２０１）。
【０１２３】
ここで、上記仮乱数中断Ｆｌａｇが“１”の場合、初期応答リクエストを受信した後の処理であるため仮乱数の生成処理を中断する（図１２：１２０１ＹＥＳ−仮乱数生成終了）。
【０１２４】
ここで、仮乱数中断Ｆｌａｇが“０”の場合、初期応答リクエストを受信しておらず、仮乱数生成手段５０４が仮乱数の生成処理を行なう（図１２：１２０１ＮＯ−Ｓ１２０２）。
【０１２５】
次に、仮乱数生成処理の演算は３つの演算に分かれており、上記制御手段５０３は、仮乱数処理中Ｆｌａｇに基づいて当該３つの演算のどの演算を行なうかを判定する（図１２：１２０２）。
【０１２６】
ここで、仮乱数処理中Ｆｌａｇが“１”の場合、１番目の仮乱数生成演算１を行ない、演算終了後、２番目の仮乱数演算を行なうことを記憶するため仮乱数処理中Ｆｌａｇの値をインクリメント（＋１）する（図１２：１２０２（１）−Ｓ１２０３−Ｓ１２０４）。以下同様に、仮乱数生成演算２（図１２：１２０２（２）−Ｓ１２０５−Ｓ１２０６）、仮乱数生成演算３（図１２：１２０２（３）−Ｓ１２０７）を行ない、仮乱数生成演算３終了後、仮乱数処理中Ｆｌａｇの値を初期化、即ち、仮乱数処理中Ｆｌａｇに１を代入し、仮乱数の生成を完了する（図１２：Ｓ１２０８）。
【０１２７】
以上のように、仮乱数生成手段による仮乱数生成処理を複数の中断可能な演算に分割し、仮乱数中断Ｆｌａｇ及び仮乱数処理中Ｆｌａｇに基づいて上記仮乱数の生成処理を中断・開始することで、仮乱数生成中にリーダライタからの初期応答リクエストが行なわれた場合でも、仮乱数の生成を途中で中断することにより、初期応答を行なうことができ、その後、仮乱数の生成を再開することができる。これにより、例えばプログラム起動時等の処理を軽減することができる。
【０１２８】
また、リーダライタから電力を供給されており、且つ他の処理を行なう必要がない即ち待ち時間には、常時仮乱数生成処理を行なうことも可能になる。
【０１２９】
尚、上記実施の形態１〜５に記載した技術であって、予め仮乱数を生成して不揮発性メモリに記憶しておくケースでは、当該非接触ＩＣカード２００を最初に使用した場合には、上記仮乱数が無い状態が起こりうる。また、初期応答リクエストまでに上記仮乱数を生成する場合であって、リーダライタの通信可能範囲に入った直後に上記初期応答リクエストを受信する場合もある。このような場合には、最初の初期応答リクエストに応答することができない。
【０１３０】
そこで、以下のような対応が考えられる。即ち、上述したような場合に対応するために予め上記ＲＯＭ４０９又はＲＡＭ４１０内に、特定スロット番号保持手段を設け、当該特定スロット番号保持手段内に所定のスロット番号を記憶しておく。当該スロット番号は、何ら計算を必要としない値でよい。
【０１３１】
次に、上記仮乱数を生成中にリーダライタからの初期応答リクエストを受信した場合であって、仮乱数記憶手段５０５に有効な仮乱数が何ら記憶されていないと上記制御手段５０３が判断した場合、当該制御手段５０３は、上記特定スロット番号保持手段に格納されている値のスロットを用いて応答する。
【０１３２】
以上により、仮乱数記憶手段に有効な仮乱数が記憶されていない場合であっても初期応答リクエストに対して所定の時間内に応答を返すことが可能になる。尚、上記初期応答リクエストを受信した場合に上記仮乱数生成手段が仮乱数生成の処理を中断できるように、上記仮乱数中断Ｆｌａｇ及び仮乱数処理中Ｆｌａｇを用いて仮乱数生成の処理を中断することが望ましい。
【０１３３】
またさらに、上記特定スロット番号保持手段に記憶する値を“１”とすることで、Ｓｌｏｔ１にて初期応答を行なうため、残りのスロット（例えばＳｌｏｔ２〜４）を仮乱数の計算に使用することが可能となる。このため、初回の初期応答リクエストにて他の非接触ＩＣカードのレスポンス信号が衝突した場合であっても、２回目の初期応答リクエストに対して十分に応答できるだけの仮乱数生成時間を確保することが可能となる。
【０１３４】
尚、上述した実施の形態１〜５は、タイムスロット方式を採用した場合を仮定して説明を行ったが、前記スロットマーカ方式に対して適用することも可能である。
【発明の効果】
【０１３５】
以上のように、乱数の生成処理を分割し、リクエストを受信した後に乱数を生成するための演算の負荷を小さい演算とすることで、タイムスロットの時間的規定を満たす事が可能である。しかも、乱数の生成には、演算量の多大な、即ち良質の乱数を生成可能な処理を適用することが可能であるため、質の悪い乱数により生じる問題を解決することが可能となる。
【０１３６】
又、乱数発生用のハードウェアを用いることなく、ソフトウェアにて良質の乱数を得ることが可能となるため非接触ＩＣカードのコストを下げることが可能となる。さらにハードウェアを用いることにより生じる設計、強度等の問題も発生しない。
【図面の簡単な説明】
【図１】  本発明の非接触ＩＣカードの使用形態例を示す図
【図２】  非接触ＩＣカードのリーダライタ及び非接触ＩＣカードの通信状態を示すタイムチャート
【図３】  本実施の形態における初期応答リクエストのフォーマット図
【図４】  非接触ＩＣカードの認識システムを構成するリーダライタ及び非接触ＩＣカードの構成を示す図
【図５】  非接触ＩＣカードの構成を示す機能ブロック図
【図６】  実施の形態１における非接触ＩＣカードの実行する初期応答処理のフローチャート
【図７】  実施の形態２における非接触ＩＣカードの実行する初期応答処理のフローチャート
【図８】  実施の形態３における非接触ＩＣカードの実行する初期応答処理のフローチャート
【図９】  実施の形態４における非接触ＩＣカードの実行する初期応答処理のフローチャート
【図１０】  通信終了リクエストのフォーマット図
【図１１】  実施の形態５における非接触ＩＣカードの初期化の処理、及び割り込み処理のフローチャート
【図１２】  実施の形態５における仮乱数生成処理処理のフローチャート
【符号の説明】
２００  非接触ＩＣカード
４０９  ＲＯＭ
４１０  ＲＡＭ
５０１  アンテナ手段
５０２  送受信手段
５０３  制御手段
５０４  仮乱数生成手段
５０５  仮乱数記憶手段
５０６  スロット数取得手段
５０７  乱数生成手段
５２０  自己応答タイミング判定手段
【図１】
0003901976.tif 000002
【図２】
0003901976.tif 000003
【図３】
0003901976.tif 000004
【図４】
0003901976.tif 000005
【図５】
0003901976.tif 000006
【図６】
0003901976.tif 000007
【図７】
0003901976.tif 000008
【図８】
0003901976.tif 000009
【図９】
0003901976.tif 000010
【図１０】
0003901976.tif 000011
【図１１】
0003901976.tif 000012
【図１２】
0003901976.tif 000013