(57)【要約】【課題】簡単な構成で安全且つ利便性の高い情報通信を行うことができるようにする。【解決手段】リーダライタ１００の秘密鍵記憶部１０１には、複数の秘密鍵が記憶されており、それらの秘密鍵を特定する識別子が、ＩＣカード２００に送信される。ＩＣカード２００は、受信した識別子に対応する秘密鍵を読み出し、乱数生成部２０２により生成された乱数を暗号化し、リーダライタ１００に送信する。リーダライタ１００は、秘密鍵記憶部１０１に記憶され、先にＩＣカード２００に送信した識別子に対応する秘密鍵を読み出し、受信した暗号化された乱数を復号する。本発明は、例えば、NFCIP方式で通信を行う装置に適用できる。【選択図】図１
2008034971.tif 000002
【特許請求の範囲】
【請求項１】
通信を行う情報処理装置およびデバイスにより構成される通信システムであって、
前記情報処理装置は、
１つ以上の鍵を記憶する第１の記憶手段と、
前記鍵を識別する識別子を含めたポーリングリクエストを生成するポーリングリクエスト生成手段と、
前記識別子で識別される前記鍵を前記第１の記憶手段から読み出し、その鍵で、前記ポーリングリクエストに対応して前記デバイスから供給されたポーリングレスポンスに含まれる暗号化されたデータを復号し、乱数を取得する取得手段と
を備え、
前記デバイスは、
乱数を生成する乱数生成手段と、
１つ以上の鍵を記憶する第２の記憶手段と、
前記ポーリングリクエストに含まれる前記識別子に対応する鍵を、前記第２の記憶手段から読み出す読み出し手段と、
前記読み出し手段により読み出された前記鍵で、前記乱数生成手段により生成された乱数を暗号化する暗号化手段と、
前記暗号化手段により暗号化された前記乱数のデータを含む前記ポーリングレスポンスを生成するポーリングレスポンス生成手段と
を備える
通信システム。
【請求項２】
前記鍵は、第１の識別子と、前記第１の識別子に従属する第２の識別子により一意に識別され、
前記第１の記憶手段と前記第２の記憶手段のそれぞれは、前記第１の識別子、前記第２の識別子、および前記鍵をそれぞれ関連付けて記憶する
請求項１に記載の通信システム。
【請求項３】
前記ポーリングリクエスト生成手段は、前記ポーリングリクエストに、前記識別子として、前記第１の識別子を含ませ、
前記ポーリングレスポンス生成手段は、前記ポーリングレスポンスに、前記第２の識別子をさらに含ませ、
前記取得手段は、前記ポーリングリクエストに含まれた第１の識別子と前記ポーリングレスポンスに含まれる前記第２の識別子から、前記鍵を特定し、前記第１の記憶手段から読み出す
請求項２に記載の通信システム。
【請求項４】
前記デバイスは、
前記乱数生成手段により生成された前記乱数にハッシュ関数を適用した演算を行う第１のハッシュ演算手段をさらに備え、
前記ポーリングレスポンス生成手段は、前記第１のハッシュ演算手段により演算された第１のハッシュ値を前記ポーリングレスポンスにさらに含ませ、
前記情報処理装置は、
前記取得手段により取得された前記乱数にハッシュ関数を適用した演算を行う第２のハッシュ演算手段と、
前記第２のハッシュ演算手段により演算された第２のハッシュ値と、前記ポーリングレスポンスに含まれる第１のハッシュ値を照合する照合手段と
をさらに備える
請求項１に記載の通信システム。
【請求項５】
通信を行う情報処理装置およびデバイスにより構成される通信システムの通信方法であって、
前記情報処理装置は、
１つ以上の鍵を記憶し、
前記鍵を識別する識別子を含めたポーリングリクエストを生成するポーリングリクエスト生成し、
前記識別子で識別される前記鍵を読み出し、その鍵で、前記ポーリングリクエストに対応して前記デバイスから供給されたポーリングレスポンスに含まれる暗号化されたデータを復号し、乱数を取得する取得する
ステップを含み、
前記デバイスは、
乱数を生成し、
１つ以上の鍵を記憶し、
前記ポーリングリクエストに含まれる前記識別子に対応する鍵を読み出し、
読み出された前記鍵で、生成された乱数を暗号化し、
暗号化された前記乱数のデータを含む前記ポーリングレスポンスを生成する
ステップを含む
通信方法。
【請求項６】
デバイスと通信を行う情報処理装置であって、
１つ以上の鍵を記憶する記憶手段と、
前記鍵を識別する識別子を含めたポーリングリクエストを生成するポーリングリクエスト生成手段と、
前記識別子で識別される前記鍵を前記記憶手段から読み出し、その鍵で、前記ポーリングリクエストに対応して前記デバイスから供給されたポーリングレスポンスに含まれる暗号化されたデータを復号し、乱数を取得する取得手段と
を備える情報処理装置。
【請求項７】
前記鍵は、第１の識別子と、前記第１の識別子に従属する第２の識別子により一意に識別され、
前記記憶手段は、前記第１の識別子、前記第２の識別子、および前記鍵をそれぞれ関連付けて記憶する
請求項６に記載の情報処理装置。
【請求項８】
前記ポーリングリクエスト生成手段は、前記ポーリングリクエストに、前記識別子として、前記第１の識別子を含ませ、
前記ポーリングレスポンスは、前記第２の識別子をさらに含み、
前記取得手段は、前記ポーリングリクエストに含まれた第１の識別子と前記ポーリングレスポンスに含まれる前記第２の識別子から、前記鍵を特定し、前記記憶手段から読み出す
請求項７に記載の情報処理装置。
【請求項９】
前記取得手段により取得された前記乱数にハッシュ関数を適用した演算を行うハッシュ演算手段と、
前記ハッシュ演算手段により演算されたハッシュ値と、前記ポーリングレスポンスに含まれるハッシュ値を照合する照合手段と
をさらに備える
請求項６に記載の情報処理装置。
【請求項１０】
デバイスと通信を行う情報処理装置の通信方法であって、
記憶手段に記憶されている１つ以上の鍵のうちから１つの鍵の読み出しを制御する読み出し制御ステップと
前記鍵を識別する識別子を含めたポーリングリクエストを生成するポーリングリクエスト生成ステップと、
前記識別子で識別される前記鍵を前記記憶手段から、前記読み出し制御ステップの制御により読み出し、その鍵で、前記ポーリングリクエストに対応して前記デバイスから供給されたポーリングレスポンスに含まれる暗号化されたデータを復号し、乱数を取得する取得ステップと
を含む通信方法。
【請求項１１】
デバイスと通信を行う情報処理装置を制御するコンピュータのプログラムであって、
記憶手段に記憶されている１つ以上の鍵のうちから１つの鍵の読み出しを制御する読み出し制御ステップと
前記鍵を識別する識別子を含めたポーリングリクエストを生成するポーリングリクエスト生成ステップと、
前記識別子で識別される前記鍵を前記記憶手段から、前記読み出し制御ステップの制御により読み出し、その鍵で、前記ポーリングリクエストに対応して前記デバイスから供給されたポーリングレスポンスに含まれる暗号化されたデータを復号し、乱数を取得する取得ステップと
を含むプログラム。
【請求項１２】
デバイスと通信を行う情報処理装置を制御するコンピュータに、
記憶手段に記憶されている１つ以上の鍵のうちから１つの鍵の読み出しを制御する読み出し制御ステップと
前記鍵を識別する識別子を含めたポーリングリクエストを生成するポーリングリクエスト生成ステップと、
前記識別子で識別される前記鍵を前記記憶手段から、前記読み出し制御ステップの制御により読み出し、その鍵で、前記ポーリングリクエストに対応して前記デバイスから供給されたポーリングレスポンスに含まれる暗号化されたデータを復号し、乱数を取得する取得ステップと
を含む処理を実行させるプログラムを記録している記録媒体。
【請求項１３】
情報処理装置と通信を行うデバイスであって、
乱数を生成する乱数生成手段と、
１つ以上の鍵を記憶する記憶手段と、
前記情報処理装置からのポーリングリクエストに含まれる前記鍵を識別するための識別子に対応する鍵を、前記記憶手段から読み出す読み出し手段と、
前記読み出し手段により読み出された前記鍵で、前記乱数生成手段により生成された乱数を暗号化する暗号化手段と、
前記暗号化手段により暗号化された前記乱数のデータを含む前記ポーリングレスポンスを生成するポーリングレスポンス生成手段と
を備えるデバイス。
【請求項１４】
前記鍵は、第１の識別子と、前記第１の識別子に従属する第２の識別子により一意に識別され、
前記記憶手段は、前記第１の識別子、前記第２の識別子、および前記鍵をそれぞれ関連付けて記憶する
請求項１３に記載のデバイス。
【請求項１５】
前記ポーリングレスポンス生成手段は、前記ポーリングレスポンスに、前記第２の識別子をさらに含ませる
請求項１４に記載のデバイス。
【請求項１６】
前記乱数生成手段により生成された前記乱数にハッシュ関数を適用した演算を行うハッシュ演算手段をさらに備え、
前記ポーリングレスポンス生成手段は、前記ハッシュ演算手段により演算されたハッシュ値を前記ポーリングレスポンスにさらに含ませる
請求項１３に記載のデバイス。
【請求項１７】
情報処理装置と通信を行うデバイスの通信方法であって、
乱数を生成する乱数生成ステップと、
前記情報処理装置からのポーリングリクエストに含まれる前記鍵を識別するための識別子に対応する鍵を、１つ以上の鍵が記憶されている記憶手段から読み出すための処理を制御する読み出し制御ステップと、
前記読み出し制御ステップの処理により読み出しが制御された前記鍵で、前記乱数生成ステップの処理で生成された乱数を暗号化する暗号化ステップと、
前記暗号化ステップの処理により暗号化された前記乱数のデータを含む前記ポーリングレスポンスを生成するポーリングレスポンス生成ステップと
を含む通信方法。
【請求項１８】
情報処理装置と通信を行うデバイスを制御するコンピュータのプログラムであって、
乱数を生成する乱数生成ステップと、
前記情報処理装置からのポーリングリクエストに含まれる前記鍵を識別するための識別子に対応する鍵を、１つ以上の鍵が記憶されている記憶手段から読み出すための処理を制御する読み出し制御ステップと、
前記読み出し制御ステップの処理により読み出しが制御された前記鍵で、前記乱数生成ステップの処理で生成された乱数を暗号化する暗号化ステップと、
前記暗号化ステップの処理により暗号化された前記乱数のデータを含む前記ポーリングレスポンスを生成するポーリングレスポンス生成ステップと
を含むプログラム。
【請求項１９】
情報処理装置と通信を行うデバイスを制御するコンピュータに、
乱数を生成する乱数生成ステップと、
前記情報処理装置からのポーリングリクエストに含まれる前記鍵を識別するための識別子に対応する鍵を、１つ以上の鍵が記憶されている記憶手段から読み出すための処理を制御する読み出し制御ステップと、
前記読み出し制御ステップの処理により読み出しが制御された前記鍵で、前記乱数生成ステップの処理で生成された乱数を暗号化する暗号化ステップと、
前記暗号化ステップの処理により暗号化された前記乱数のデータを含む前記ポーリングレスポンスを生成するポーリングレスポンス生成ステップと
を含む処理を実行させるプログラムが記録されている記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムおよび通信方法、デバイス、情報処理装置および方法、プログラム、並びに記録媒体関し、特に、簡単な構成で安全かつ利便性の高い情報通信を行うことができるようにする通信システムおよび通信方法、デバイス、情報処理装置および方法、プログラム、並びに記録媒体に関する。
【背景技術】
【０００２】
近接通信を行うシステムとしては、例えば、ＩＣ(Integrated Circuit)カードシステムが広く知られている。ＩＣカードシステムにおいては、リーダライタが電磁波を発生することにより、いわゆるＲＦ(Radio Frequency)フィールド（磁界）を形成する。そして、リーダライタに、ＩＣカードが近づくと、ＩＣカードは、電磁誘導によって、電源の供給を受けるとともに、リーダライタとの間でデータ伝送を行う。
【０００３】
ＩＣカードシステムにおいて、１つのリーダライタに対して、複数のＩＣカードが接近してきた場合には、リーダライタが、その複数のＩＣカードそれぞれを識別し、通信相手を特定して、通信を行う必要がある。
【０００４】
複数のＩＣカードを識別する方法としては、ＩＣカードにユニークな識別番号としてのＩＤを割り当て、そのＩＤを、ＩＣカードからリーダライタに報告させる方法が提案されている。このように、ＩＣカードにユニークなＩＤを割り当てる場合には、ＩＣカード同士でＩＤが重複することはない。
【０００５】
またＩＣカードにおいて、乱数を発生し、その乱数を、自身のＩＤとして、一時的に使用する方法も提案されている。乱数をＩＤとして用いる場合には、複数のＩＣカードにおいて、同一の乱数が、ＩＤとして用いられることが生じうる。この場合、リーダライタが、そのＩＤ宛にデータを送信すると、複数のＩＣカードが同時に応答することによって混信（コリジョン）が生じ、リーダライタが、ＩＣカードからの応答を正常に取得することができないことになる。
【０００６】
そのようなことを防ぎつつも、複数の通信相手それぞれを確実に識別して、２以上の通信相手から同時に応答が返ってくることを防止することができるようにする提案もされている（例えば、特許文献１参照）。
【特許文献１】特許第３６９５４６４号
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、１枚のＩＣカードに１つのＩＤを割り当てるような場合、そのＩＣカードを識別することは可能である。しかしながら、例えば、１枚のＩＣカードを複数のサービスに用いることができるようにし、それらのサービス毎にＩＤを割り当てたいような場合には、ＩＤの数が増大し、最適な方法であるとはいえない。
【０００８】
また、ＩＣカードにＩＤを割り当てる場合、ＩＤは、どのリーダライタでも読み出すことが可能となるので、例えば、ＩＣカードを持っていると、そのＩＤによりカードの持ち主が特定され、その人のプライバシーが侵害されるといったようなプライバシーやセキュリティの問題があった。
【０００９】
リーダライタと通信可能な範囲にあるＩＣカードやRFIDを識別するための方式であるNFCIP（Near Field Communication - Interface and Protocol）-1を標準化した規格としてISO/IEC18092 (NFCIP-1)が規定されている。この規格によれば、ＩＣカードやRFIDに固有のＩＤがリーダライタに送信されることなく、衝突を防止することが可能となる。
【００１０】
しかしながら、NFCIP-1においては、ＩＣカードやRFIDに固有のＩＤが送信されないので、このままでは個々のＩＣカードやRFIDそのものを識別することができない。このため、個々のＩＣカードやRFIDを個々に識別する必要がある場合、チップのデータ領域にＩＣカードやRFIDに固有のＩＤを記憶させておき、必要に応じて固有のＩＤをリーダライタに送信することも考えられるが、この方式では、ＩＣカードやRFIDに固有のＩＤを暗号化して安全に送信する必要がある。
【００１１】
本発明はこのような状況に鑑みてなされたものであり、簡単な構成で安全かつ利便性の高い情報通信を行うことができるようにするものである。
【課題を解決するための手段】
【００１２】
本発明の一側面の通信システムは、通信を行う情報処理装置およびデバイスにより構成される通信システムであって、前記情報処理装置は、１つ以上の鍵を記憶する第１の記憶手段と、前記鍵を識別する識別子を含めたポーリングリクエストを生成するポーリングリクエスト生成手段と、前記識別子で識別される前記鍵を前記第１の記憶手段から読み出し、その鍵で、前記ポーリングリクエストに対応して前記デバイスから供給されたポーリングレスポンスに含まれる暗号化されたデータを復号し、乱数を取得する取得手段とを備え、前記デバイスは、乱数を生成する乱数生成手段と、１つ以上の鍵を記憶する第２の記憶手段と、前記ポーリングリクエストに含まれる前記識別子に対応する鍵を、前記第２の記憶手段から読み出す読み出し手段と、前記読み出し手段により読み出された前記鍵で、前記乱数生成手段により生成された乱数を暗号化する暗号化手段と、前記暗号化手段により暗号化された前記乱数のデータを含む前記ポーリングレスポンスを生成するポーリングレスポンス生成手段とを備える。
【００１３】
前記鍵は、第１の識別子と、前記第１の識別子に従属する第２の識別子により一意に識別され、前記第１の記憶手段と前記第２の記憶手段のそれぞれは、前記第１の識別子、前記第２の識別子、および前記鍵をそれぞれ関連付けて記憶するようにすることができる。
【００１４】
前記ポーリングリクエスト生成手段は、前記ポーリングリクエストに、前記識別子として、前記第１の識別子を含ませ、前記ポーリングレスポンス生成手段は、前記ポーリングレスポンスに、前記第２の識別子をさらに含ませ、前記取得手段は、前記ポーリングリクエストに含まれた第１の識別子と前記ポーリングレスポンスに含まれる前記第２の識別子から、前記鍵を特定し、前記第１の記憶手段から読み出すようにすることができる。
【００１５】
前記デバイスは、前記乱数生成手段により生成された前記乱数にハッシュ関数を適用した演算を行う第１のハッシュ演算手段をさらに備え、前記ポーリングレスポンス生成手段は、前記第１のハッシュ演算手段により演算された第１のハッシュ値を前記ポーリングレスポンスにさらに含ませ、前記情報処理装置は、前記取得手段により取得された前記乱数にハッシュ関数を適用した演算を行う第２のハッシュ演算手段と、前記第２のハッシュ演算手段により演算された第２のハッシュ値と、前記ポーリングレスポンスに含まれる第１のハッシュ値を照合する照合手段とをさらに備えるようにすることができる。
【００１６】
本発明の通信システムの一側面の通信方法は、通信を行う情報処理装置およびデバイスにより構成される通信システムの通信方法であって、前記情報処理装置は、１つ以上の鍵を記憶し、前記鍵を識別する識別子を含めたポーリングリクエストを生成するポーリングリクエスト生成し、前記識別子で識別される前記鍵を読み出し、その鍵で、前記ポーリングリクエストに対応して前記デバイスから供給されたポーリングレスポンスに含まれる暗号化されたデータを復号し、乱数を取得する取得するステップを含み、前記デバイスは、乱数を生成し、１つ以上の鍵を記憶し、前記ポーリングリクエストに含まれる前記識別子に対応する鍵を読み出し、読み出された前記鍵で、生成された乱数を暗号化し、暗号化された前記乱数のデータを含む前記ポーリングレスポンスを生成するステップを含む。
【００１７】
本発明の一側面の通信システムおよび通信方法においては、通信を行う双方が、それぞれ１つ以上の鍵を記憶し、一方から、他方に、記憶されている１つ以上の鍵のうちのどの鍵を用いるかを示す識別子のデータを送信し、そのようなデータを受信した側は、その識別子に応じた鍵を用いて生成した乱数を暗号化し、データを送信してきた相手に返す。
【００１８】
本発明の一側面の情報処理装置は、デバイスと通信を行う情報処理装置であって、１つ以上の鍵を記憶する記憶手段と、前記鍵を識別する識別子を含めたポーリングリクエストを生成するポーリングリクエスト生成手段と、前記識別子で識別される前記鍵を前記記憶手段から読み出し、その鍵で、前記ポーリングリクエストに対応して前記デバイスから供給されたポーリングレスポンスに含まれる暗号化されたデータを復号し、乱数を取得する取得手段とを備える。
【００１９】
前記鍵は、第１の識別子と、前記第１の識別子に従属する第２の識別子により一意に識別され、前記記憶手段は、前記第１の識別子、前記第２の識別子、および前記鍵をそれぞれ関連付けて記憶するようにすることができる。
【００２０】
前記ポーリングリクエスト生成手段は、前記ポーリングリクエストに、前記識別子として、前記第１の識別子を含ませ、前記ポーリングレスポンスは、前記第２の識別子をさらに含み、前記取得手段は、前記ポーリングリクエストに含まれた第１の識別子と前記ポーリングレスポンスに含まれる前記第２の識別子から、前記鍵を特定し、前記記憶手段から読み出すようにすることができる。
【００２１】
前記取得手段により取得された前記乱数にハッシュ関数を適用した演算を行うハッシュ演算手段と、前記ハッシュ演算手段により演算されたハッシュ値と、前記ポーリングレスポンスに含まれるハッシュ値を照合する照合手段とをさらに備えるようにすることができる。
【００２２】
本発明の情報処理装置の一側面の通信方法は、デバイスと通信を行う情報処理装置の通信方法であって、記憶手段に記憶されている１つ以上の鍵のうちの１つの鍵の読み出しを制御する読み出し制御ステップと前記鍵を識別する識別子を含めたポーリングリクエストを生成するポーリングリクエスト生成ステップと、前記識別子で識別される前記鍵を前記記憶手段から、前記読み出し制御ステップの制御により読み出し、その鍵で、前記ポーリングリクエストに対応して前記デバイスから供給されたポーリングレスポンスに含まれる暗号化されたデータを復号し、乱数を取得する取得ステップとを含む。
【００２３】
本発明の情報処理装置を制御するコンピュータの一側面のプログラムは、デバイスと通信を行う情報処理装置を制御するコンピュータのプログラムであって、記憶手段に記憶されている１つ以上の鍵の１つの鍵の読み出しを制御する読み出し制御ステップと前記鍵を識別する識別子を含めたポーリングリクエストを生成するポーリングリクエスト生成ステップと、前記識別子で識別される前記鍵を前記記憶手段から、前記読み出し制御ステップの制御により読み出し、その鍵で、前記ポーリングリクエストに対応して前記デバイスから供給されたポーリングレスポンスに含まれる暗号化されたデータを復号し、乱数を取得する取得ステップとを含む。
【００２４】
本発明の情報処理装置を制御するコンピュータの一側面の記録媒体は、デバイスと通信を行う情報処理装置を制御するコンピュータに、記憶手段に記憶されている１つ以上の鍵の１つの鍵の読み出しを制御する読み出し制御ステップと前記鍵を識別する識別子を含めたポーリングリクエストを生成するポーリングリクエスト生成ステップと、前記識別子で識別される前記鍵を前記記憶手段から、前記読み出し制御ステップの制御により読み出し、その鍵で、前記ポーリングリクエストに対応して前記デバイスから供給されたポーリングレスポンスに含まれる暗号化されたデータを復号し、乱数を取得する取得ステップとを含む処理を実行させるプログラムを記録している。
【００２５】
本発明の一側面の情報処理装置および通信方法、並びにプログラムにおいては、１つ以上の鍵が記憶され、他の装置と通信を行うときに生成されるポーリングリクエストに、記憶している鍵を一意に識別するための情報が含まれる。
【００２６】
本発明の一側面のデバイスは、情報処理装置と通信を行うデバイスであって、乱数を生成する乱数生成手段と、１つ以上の鍵を記憶する記憶手段と、前記情報処理装置からのポーリングリクエストに含まれる前記鍵を識別するための識別子に対応する鍵を、前記記憶手段から読み出す読み出し手段と、前記読み出し手段により読み出された前記鍵で、前記乱数生成手段により生成された乱数を暗号化する暗号化手段と、前記暗号化手段により暗号化された前記乱数のデータを含む前記ポーリングレスポンスを生成するポーリングレスポンス生成手段とを備える。
【００２７】
前記鍵は、第１の識別子と、前記第１の識別子に従属する第２の識別子により一意に識別され、前記記憶手段は、前記第１の識別子、前記第２の識別子、および前記鍵をそれぞれ関連付けて記憶するようにすることができる。
【００２８】
前記ポーリングレスポンス生成手段は、前記ポーリングレスポンスに、前記第２の識別子をさらに含ませるようにすることができる。
【００２９】
前記乱数生成手段により生成された前記乱数にハッシュ関数を適用した演算を行うハッシュ演算手段をさらに備え、前記ポーリングレスポンス生成手段は、前記ハッシュ演算手段により演算されたハッシュ値を前記ポーリングレスポンスにさらに含ませるようにすることができる。
【００３０】
本発明のデバイスの一側面の通信方法は、情報処理装置と通信を行うデバイスの通信方法であって、乱数を生成する乱数生成ステップと、前記情報処理装置からのポーリングリクエストに含まれる前記鍵を識別するための識別子に対応する鍵を、１つ以上の鍵が記憶されている記憶手段から読み出すための処理を制御する読み出し制御ステップと、前記読み出し制御ステップの処理により読み出しが制御された前記鍵で、前記乱数生成ステップの処理で生成された乱数を暗号化する暗号化ステップと、前記暗号化ステップの処理により暗号化された前記乱数のデータを含む前記ポーリングレスポンスを生成するポーリングレスポンス生成ステップとを含む。
【００３１】
本発明のデバイスの一側面のプログラムは、情報処理装置と通信を行うデバイスを制御するコンピュータのプログラムであって、乱数を生成する乱数生成ステップと、前記情報処理装置からのポーリングリクエストに含まれる前記鍵を識別するための識別子に対応する鍵を、１つ以上の鍵が記憶されている記憶手段から読み出すための処理を制御する読み出し制御ステップと、前記読み出し制御ステップの処理により読み出しが制御された前記鍵で、前記乱数生成ステップの処理で生成された乱数を暗号化する暗号化ステップと、前記暗号化ステップの処理により暗号化された前記乱数のデータを含む前記ポーリングレスポンスを生成するポーリングレスポンス生成ステップとを含む。
【００３２】
本発明のデバイスの一側面の記録媒体は、情報処理装置と通信を行うデバイスを制御するコンピュータに、乱数を生成する乱数生成ステップと、前記情報処理装置からのポーリングリクエストに含まれる前記鍵を識別するための識別子に対応する鍵を、１つ以上の鍵が記憶されている記憶手段から読み出すための処理を制御する読み出し制御ステップと、前記読み出し制御ステップの処理により読み出しが制御された前記鍵で、前記乱数生成ステップの処理で生成された乱数を暗号化する暗号化ステップと、前記暗号化ステップの処理により暗号化された前記乱数のデータを含む前記ポーリングレスポンスを生成するポーリングレスポンス生成ステップとを含む処理を実行させるプログラムが記録されている。
【００３３】
本発明の一側面のデバイスおよび通信方法、並びにプログラムにおいては、他の装置から送信されてきたポーリングリクエストに含まれる１つ以上の鍵のうちから１つの鍵を識別するための情報から、自己が記憶している１つ以上の鍵のうち１つの鍵が読み出され、その鍵で、生成された乱数が暗号化される。
【発明の効果】
【００３４】
本発明の一側面によれば、複数の情報を取り扱い、それらの情報を通信するときに、安全性の高い状態で通信を行うことが可能となる。
【発明を実施するための最良の形態】
【００３５】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００３６】
本発明の一側面の通信システム（例えば、図１に示す通信システム５０）は、通信を行う情報処理装置（例えば、図１のリーダライタ１００）およびデバイス（例えば、ＩＣカード２００）により構成される通信システムであって、前記情報処理装置は、１つ以上の鍵を記憶する第１の記憶手段（例えば、図１の秘密鍵記憶部１０１）と、前記鍵を識別する識別子を含めたポーリングリクエストを生成するポーリングリクエスト生成手段（例えば、図２のステップＳ１０１の処理を実行する図１のＣＰＵ１０５）と、前記識別子で識別される前記鍵を前記第１の記憶手段から読み出し、その鍵で、前記ポーリングリクエストに対応して前記デバイスから供給されたポーリングレスポンスに含まれる暗号化されたデータを復号し、乱数を取得する取得手段（例えば、図２のステップＳ１０３の処理を実行する図１の暗号演算部１０６）とを備え、前記デバイスは、乱数を生成する乱数生成手段（例えば、図１の乱数生成部２０２）と、１つ以上の鍵を記憶する第２の記憶手段（例えば、図１の秘密鍵記憶部２０３）と、前記ポーリングリクエストに含まれる前記識別子に対応する鍵を、前記第２の記憶手段から読み出す読み出し手段（例えば、図４のステップＳ２３３の処理を実行する図１のＣＰＵ２０７）と、前記読み出し手段により読み出された前記鍵で、前記乱数生成手段により生成された乱数を暗号化する暗号化手段（例えば、図４のステップＳ２３４の処理を実行する図１の暗号演算部２０８）と、前記暗号化手段により暗号化された前記乱数のデータを含む前記ポーリングレスポンスを生成するポーリングレスポンス生成手段（例えば、図４のステップＳ２３６の処理を実行する図１のＣＰＵ２０７）とを備える。
【００３７】
本発明の一側面の情報処理装置（例えば、図１のリーダライタ１００）は、デバイスと通信を行う情報処理装置であって、１つ以上の鍵を記憶する記憶手段（例えば、図１の秘密鍵記憶部１０１）と、前記鍵を識別する識別子を含めたポーリングリクエストを生成するポーリングリクエスト生成手段（例えば、図２のステップＳ１０１の処理を実行する図１のＣＰＵ１０５）と、前記識別子で識別される前記鍵を前記記憶手段から読み出し、その鍵で、前記ポーリングリクエストに対応して前記デバイスから供給されたポーリングレスポンスに含まれる暗号化されたデータを復号し、乱数を取得する取得手段（例えば、図２のステップＳ１０３の処理を実行する図１の暗号演算部１０６）とを備える。
【００３８】
本発明の一側面のデバイス（例えば、ＩＣカード２００）は、情報処理装置と通信を行うデバイスであって、乱数を生成する乱数生成手段（例えば、図１の乱数生成部２０２）と、１つ以上の鍵を記憶する記憶手段（例えば、図１の秘密鍵記憶部２０３）と、前記情報処理装置からのポーリングリクエストに含まれる前記鍵を識別するための識別子に対応する鍵を、前記記憶手段から読み出す読み出し手段（例えば、図４のステップＳ２３３の処理を実行する図１のＣＰＵ２０７）と、前記読み出し手段により読み出された前記鍵で、前記乱数生成手段により生成された乱数を暗号化する暗号化手段（例えば、図４のステップＳ２３４の処理を実行する図１の暗号演算部２０８）と、前記暗号化手段により暗号化された前記乱数のデータを含む前記ポーリングレスポンスを生成するポーリングレスポンス生成手段（例えば、図４のステップＳ２３６の処理を実行する図１のＣＰＵ２０７）とを備える。
【００３９】
以下に、本発明の実施の形態について図面を参照して説明する。
【００４０】
［システムの構成例］
図１は、本発明を適用した通信システム５０の一実施形態における構成例を示すブロック図である。通信システム５０は、リーダライタ１００とＩＣカード２００により構成されており、リーダライタ１００とＩＣカード２００は、例えば、それぞれが有するアンテナなどを介して無線による通信を行う。
【００４１】
リーダライタ１００は、秘密鍵記憶部１０１、入出力部１０２、ＲＡＭ（Random Access Memory）１０３、ＲＯＭ（Read Only Memory）１０４、ＣＰＵ（Central Processing Unit）１０５、および暗号演算部１０６を含む構成とされている。
【００４２】
ＩＣカード２００は、入出力部２０１、乱数生成部２０２、秘密鍵記憶部２０３、ＩＤ記憶部２０４、データ記憶部２０５、ＲＯＭ２０６、ＣＰＵ２０７、および、暗号演算部２０８を含む構成とされている。
【００４３】
リーダライタ１００の入出力部１０２は、所定の電磁波を輻射し、それに対する負荷の変化に基づいて、ＩＣカード２００が近接されたか否かを検出するとともに、例えば、ＩＣカード２００が近接されたとき、ＩＣカード２００と各種のデータを送受信するアンテナ（不図示）を有する構成とされる。
【００４４】
入出力部１０２は、例えば、発振回路（OSC）から供給される所定の周波数の搬送波を、ＣＰＵ１０５から供給されるデータに基づいて、ASK（Amplitude Shift Keying）変調し、生成された変調波を、電磁波としてアンテナから出力する。また、入出力部１０２は、アンテナを介して取得した変調波（ASK変調波）を復調し、復調したデータをＣＰＵ１０５に供給する。
【００４５】
リーダライタ１００のＣＰＵ１０５は、ＲＯＭ１０４に記憶されているプログラムを、ＲＡＭ１０３にロードするなどして各種の処理を実行する。ＲＡＭ１０３にはまた、ＣＰＵ１０１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【００４６】
ＣＰＵ１０５は、暗号演算部１０６を制御することにより、予め定められた暗号アルゴリズムに基づく、データの暗号化と復号を行うことができるように構成されている。ここで、暗号演算部１０６の暗号アルゴリズムは、ＤＥＳ（Data Encryption Standard）、トリプルＤＥＳ、AES（Advanced Encryption Standard）などの暗号アルゴリズムであって、いわゆる秘密鍵（共通鍵）暗号方式の暗号アルゴリズムを適用することができる。
【００４７】
リーダライタ１００がデータの暗号化または復号を行う場合、例えば、ＣＰＵ１０５が秘密鍵記憶部１０１に記憶された秘密鍵を、暗号化または復号すべきデータとともに、暗号演算部１０６に供給することにより、暗号演算部１０６による、供給された秘密鍵を用いた、供給されたデータの暗号化または復号が実行される。
【００４８】
後述するように、リーダライタ１００とＩＣカード２００でそれぞれ記憶される秘密鍵は、基本的に同じ鍵であるが、本実施の形態においては、１つ以上の鍵を記憶することが可能とされており、記憶されている全ての鍵が、同じ鍵である必要はない。
【００４９】
ＩＣカード２００の入出力部２０１は、例えば、コイル状のアンテナとコンデンサにより構成されるＬＣ回路を有する構成とされ、ＬＣ回路が近傍に配置されたリーダライタ１００から輻射される所定の周波数の電磁波と共振するようになされている。また、入出力部２０１は、アンテナにおいて励起された交流磁界をASK復調により整流し、それを安定化し、各部に直流電源として供給する。リーダライタ１００から輻射される電磁波の電力は、ＩＣカード２００に必要な電力をまかなう磁界を発生させるように調整されている。
【００５０】
また、入出力２０１は、アンテナを介して受信した変調波（ASK変調波）を包絡線検波して復調し、復調後のデータをBPSK（Binary Phase Shift Keying）復調してＣＰＵ２０７に供給するとともに、受信信号のクロック周波数と同一の周波数のクロック信号を発生してＣＰＵ２０７に供給する。
【００５１】
さらに、入出力部２０１は、所定の情報をリーダライタ１００に送信する場合、ＣＰＵ２０７から供給されBPSK変調されたデータを、例えばアンテナの負荷の変動に基づいてASK変調し、その変調成分を、アンテナを介してリーダライタ１００に送信する。
【００５２】
ＩＣカード２００のＣＰＵ２０７は、ＲＯＭ２０４に記憶されているプログラムを実行するなどして各種の処理を実行する。秘密鍵記憶部２０３、ＩＤ記憶部２０４、データ記憶部２０５は、例えば、EEPROM（Electrically Erasable Programmable Read-Only Memory）などで構成され、それぞれがEEPROMの記憶領域の一部とされる。
【００５３】
ＣＰＵ２０７は、暗号演算部２０８を制御することにより、予め定められた暗号アルゴリズムに基づく、データの暗号化と復号を行うことができるように構成されている。ここで、暗号演算部２０８の暗号アルゴリズムは、リーダライタ１００側の暗号演算部１０６の暗号アルゴリズムと同じアルゴリズムとされる。
【００５４】
ＩＣカード２００においてデータの暗号化または復号を行う場合、例えば、ＣＰＵ２０７が秘密鍵記憶部２０３に記憶されている秘密鍵を、暗号化または復号すべきデータとともに、暗号演算部２０８に供給することにより、暗号演算部２０８による、供給された秘密鍵を用いた、供給されたデータの暗号化または復号が実行される。
【００５５】
乱数生成部２０２は、必要に応じて所定のけた数の乱数を発生する。詳細については後述するが、この乱数は、ＩＣカード２００とリーダライタ１００との間で行われる通信において、両者が通信相手を相互に識別しあうためのセッションＩＤ、およびそのセッションにおいて送受信されるデータの暗号化または復号に用いられるセッション鍵（Session Key）として利用される。
【００５６】
ＩＤ記憶部２０４は、ＩＣカード２００に固有の識別情報であるカードＩＤを記憶する。
【００５７】
データ記憶部２０５は、ＩＣカード２００を用いて行われる各種サービスなどを提供するためのアプリケーションデータなどが必要に応じて記憶される。
【００５８】
なお、暗号演算部１０６と暗号演算部２０８は、それぞれソフトウェアとして構成されるようにすることも可能である。
【００５９】
上述したように、リーダライタ１００とＩＣカード２００は、無線による通信を行うので、同時に二つ以上のＩＣカードまたはリーダライタが電波を送出し、その結果、ＩＣカードまたはリーダライタがどの対象から電波が発せられたものであるかを区別できなくなるという、いわゆる衝突が懸念されるが、通信システム５０におけるリーダライタ１００とＩＣカード２００のそれぞれは、リーダライタと通信可能な範囲にあるＩＣカードやRFIDを識別することが可能な通信方式であるNFCIP（Near Field Communication - Interface and Protocol）-1に適合する通信を行う。
【００６０】
NFCIP-1には、他のNFCIP-1デバイスの通信ならびに同帯域で通信している他の装置による通信との両立を図るため、ＲＦ検知と衝突回避の仕組が盛り込まれており、NFC識別子（NFCID（NFC Identifier））と呼ばれるＲＦ衝突回避の際及び単一デバイス探知処理に用いられる乱数を利用したNFCデバイスの識別子が用いられる。例えば、従来の通信システムにおいては、ＩＣカードの固有のＩＤをリーダライタに送信し、リーダライタがそのＩＤに基づいて個々のＩＣカードを識別することで衝突の防止を図るものも多いが、NFCIP-1ではＩＣカードに固有のＩＤをリーダライタに送信する必要はない。
【００６１】
従って、通信システム５０においては、ＩＣカード２００に固有のカードＩＤをリーダライタ１００に送信しなくも、リーダライタ１００とＩＣカード２００がそれぞれ通信相手を一意に識別し、衝突を防止することが可能となる。
【００６２】
なお、NFCIP-1については、ISO/IEC18092にその詳細が記述されている。
【００６３】
以降においては、リーダライタ１００がNFCIP-1に規定されるイニシエータ（Initiator）として動作し、ＩＣカード２００がNFCIP-1に規定されるターゲット（Target）として動作する場合を例として説明する。
【００６４】
［システムの動作について］
次に、図１に示した通信システム５０の動作について図２乃至図５のフローチャートを参照して説明する。
【００６５】
なお、以下の説明においては、例えば、リーダライタ１００またはＩＣカード２００に記憶されているデータを、一方から他方にコピーするといったデータの授受が行われる前の段階（サービスが行われる前の段階）における情報の授受に関する処理について説明する。換言すれば、データの授受を行う前の段階で行われるセッションの確立時の処理について説明する。
【００６６】
また、図２のフローチャートを参照し、通信システム５０の全体の動作の概略を説明し、その後、図３乃至図５を参照し、各ステップにおける処理の詳細を説明する。
【００６７】
リーダライタ１００は、ステップＳ１０１において、ポーリングリクエスト（Polling Request）を生成し、ＩＣカード２００に送信する。ＩＣカード２００が、リーダライタ１００の通信可能な距離内に位置していれば、ステップＳ１２１において、ＩＣカード２００は、リーダライタ１００からのポーリングリクエストを受信する。
【００６８】
ＩＣカード２００は、ステップＳ１２２において、乱数を暗号化したセッション鍵を生成し、そのセッション鍵を含むポーリングレスポンス（Polling Response）をリーダライタ１００に対して送信する。ステップＳ１０２において、リーダライタ１００は、ＩＣカード２００からのポーリングレスポンスを受信し、ステップＳ１０３において、ＩＣカード２００側で暗号化された乱数を取得するための乱数取得処理を実行する。
【００６９】
このような処理がリーダライタ１００とＩＣカード２００側との間で行われることにより、通信できる状態が確立された場合には、例えば、一方から他方へのデータの授受といった処理が、確立されたセッションにおいてセキュリティが保たれる状態で行われる。
【００７０】
また、例えば、ＩＣカード２００側で暗号化した乱数とリーダライタ１００側で取得された乱数が一致しないような場合、通信できる状態が確率されていないので、その後の通信は行われないなどの処理が行われる。
【００７１】
次に、図２に示した各ステップで行われる処理の詳細について説明する。まず、図３のフローチャートを参照し、ステップＳ１０１において、リーダライタ１００で行われるポーリングリクエストの生成、送信処理について説明する。
【００７２】
ステップＳ２１１において、リーダライタ１００のＣＰＵ１０５（図１）は、秘密鍵記憶部１０１に記憶されている複数の秘密鍵（１つ以上の秘密鍵）から１つの秘密鍵を選択する。
【００７３】
ここで、図６を参照して、秘密鍵記憶部１０１に記憶されている秘密鍵について説明を加える。図６に示した例において秘密鍵記憶部１０１には、秘密鍵ｐｋ００乃至ｐｋＮというＮ個の秘密鍵が記憶されている。また、それぞれの秘密鍵を識別するために、識別子ｐｋｓｎ０乃至ｐｋｓｎＮというＮ個の識別子が、それぞれｐｋ００乃至ｐｋＮと関連付けられて記憶されている。
【００７４】
ここで、ｐｋとは、Pre-shared Keyの略であるとし、リーダライタ１００とＩＣカード２００（イニシエータとターゲット）の両方で、事前に共有される秘密鍵を表すとする。ｐｋｓｎは、Pre-shared Key Slot Numberの略であるとし、Pre-shared Keyをそれぞれ識別するための番号を表すとする。
【００７５】
なお、以下の説明において、秘密鍵ｐｋ００乃至ｐｋＮを個々に区別する必要がない場合、単に秘密鍵ｐｋと記述する。他の鍵や識別子などについても同様に記述する。
【００７６】
ステップＳ２１１においては、秘密鍵記憶部１０１に記憶されている秘密鍵ｐｋ００乃至ｐｋＮのうちの１つの秘密鍵ｐｋが選択され、その選択された秘密鍵ｐｋを識別するための識別子ｐｋｓｎが読み出される。なお、この段階では、秘密鍵ｐｋを用いた処理は行われないため、秘密鍵ｐｋが選択された後、その選択された秘密鍵ｐｋに対応する識別子ｐｋｓｎが読み出されるのではなく、識別子ｐｋｓｎ選択され、読み出されるようにしても良い。ここでは、秘密鍵ｐｋ００が選択され、その秘密鍵ｐｋ００に対応する識別子ｐｋｓｎ０が読み出される（識別子ｐｋｓｎ０が選択され、読み出される）として説明を続ける。
【００７７】
複数の秘密鍵ｐｋのうち、どの秘密鍵ｐｋを選択するかは、例えば、その時点で他のＩＣカード２００との通信で使われていない秘密鍵を選択する、通信相手となるＩＣカード２００に応じて選択するなど、所定の条件に基づいて選択される。
【００７８】
ステップＳ２１２において、ポーリングリクエストが生成される。生成されるポーリングリクエストには、ステップＳ２１１の処理で読み出された識別子ｐｋｓｎが含まれる。例えば図６に示したように、識別子ｐｋｓｎ０が格納されたポーリングリクエストが生成される。
【００７９】
図７は、生成されるポーリングリクエストのデータ構成を示す図である。図７に示したポーリングリクエストは、リーダライタ１００とＩＣカード２００が、NFCIP（Near Field Communication - Interface and Protocol）-1で規定される方式に基づいて通信を行う場合のデータ構成を示している。
【００８０】
Preamble（プリアンブル）は、６バイトで構成されるフィールドであり、全て論理“0”のデータが格納される。Syncは、２バイトで構成されるフィールドであり、同期用のデータであり、イニシエータとターゲットとの間の通信の同期に用いられるデータが格納される。CRC（Cyclic Redundancy Check）は、２バイトで構成されるフィールドであり、誤り検出に用いられるデータであって、予め定められた方式で計算されたデータが格納される。
【００８１】
ＴＳＮは、Time Slot Numberの略である。ＴＳＮ（Time Slot Number）は、NECIP-1規格において、ポーリングリクエストを受信した側が、ポーリングレスポンスを送信する時間範囲を指定する番号を示すデータである。このＴＳＮは、８ビットのフィールドである。
【００８２】
ＴＳＮは、８ビットのフィールドであるが、Time Slot Numberを表すだけなら、８ビットのうちの４ビットを用いることで表現することも可能である。そこで、本実施の形態においては、ＴＳＮの８ビットのフィールドのうちの４ビットをTime Slot Numberを表すデータに割り当て（図７においては、tsnと表記）、残りの４ビットを識別子ｐｋｓｎを表すデータに割り当てる（図７においては、ｐｋｓｎと表記）。
【００８３】
ステップＳ２１２においては、図７に示したようなデータ構造を有するポーリングリクエストが生成される。ポーリングリクエストが生成される際、秘密鍵記憶部１０１から読み出された識別子ｐｋｓｎが、ポーリングリクエストに格納されるが、識別子ｐｋｓｎは、ポーリングリクエストを構成するＴＳＮのフィールドの４ビットの領域に格納される。
【００８４】
生成されたポーリングリクエストは、ステップＳ２１３において、ＩＣカード２００に対して送信される。
【００８５】
ＣＰＵ１０５（図１）は、秘密鍵記憶部１０１から秘密鍵ｐｋを識別する識別子ｐｋｓｎを読み出し、その識別子ｐｋｓｎを含むポーリングリクエストを生成し、入出力部１０２を制御することにより、ＩＣカード２００に送信する。また、ＣＰＵ１０５は、適宜、ポーリングリクエストに含ませた識別子ｐｋｓｎを、ＲＡＭ１０３に記憶させる。
【００８６】
このようにしてリーダライタ１００により生成されたポーリングリクエストは、ステップＳ１２１（図２）において、通信範囲内にあるＩＣカード２００に受信される。ポーリングリクエストを受信したＩＣカード２００は、ステップＳ１２２において、ポーリングレスポンスの生成と送信処理を実行する。このステップＳ１２２において実行されるポーリングレスポンスの生成と送信処理について、図５のフローチャートを参照して説明する。
【００８７】
ステップＳ２３１において、乱数生成部２０２は、乱数Ａを生成（発生）する。
【００８８】
ステップＳ２３２において、ＣＰＵ２０７は、生成された乱数Ａを、例えば、データ記憶部２０５の中の予め定められた所定の領域に記憶する。
【００８９】
ステップＳ２３３において、ＣＰＵ２０７は、入出力部２０１により受信されたポーリングリクエストに含まれる識別子ｐｋｓｎを読み出し、その読み出した識別子ｐｋｓｎに対応する秘密鍵ｐｋを、秘密鍵記憶部２０３から読み出す。
【００９０】
ここで、図８を参照して、秘密鍵記憶部２０３に記憶されている秘密鍵について説明を加える。図８に示した例において秘密鍵記憶部２０３には、秘密鍵ｐｋ００’乃至ｐｋＮ’というＮ個の秘密鍵が記憶されている。また、それぞれの秘密鍵を識別するために、識別子ｐｋｓｎ０’乃至ｐｋｓｎＮ’というＮ個の識別子が、それぞれｐｋ００’乃至ｐｋＮ’と関連付けられて記憶されている。
【００９１】
このように、ＩＣカード２００の秘密鍵記憶部２０３と、リーダライタ１００の秘密鍵記憶部１０１には、基本的に、同じ秘密鍵と識別子の対が記憶されている。ここでは、ＩＣカード２００の秘密鍵記憶部２０３と、リーダライタ１００の秘密鍵記憶部１０１に、それぞれ記憶されている秘密鍵および識別子を区別するために、ＩＣカード２００の秘密鍵記憶部２０３に記憶されている秘密鍵および識別子には、ダッシュ（’）を付して記述する。
【００９２】
なお、ＩＣカード２００の秘密鍵記憶部２０３と、リーダライタ１００の秘密鍵記憶部１０１には、それぞれ同じ秘密鍵と識別子の対が記憶されているとしたが、記憶されている全ての秘密鍵や識別子が、同一である必要はない。換言すれば、どちらか一方にのみ記憶されている秘密鍵や識別子があっても良い。
【００９３】
どちらか一方にのみ記憶されている秘密鍵や識別子があり、そのような秘密鍵が用いられた場合、通信が確立することができなくなる。このことを利用すれば、秘密鍵を選択することにより通信相手を選択することができるようになる。すなわち、例えば、上記したように、リーダライタ１００側の処理で、ステップ２１１（図３）で、秘密鍵の選択が行われるが、このとき、通信したい相手が記憶しているであろう秘密鍵を選択するようにすれば、通信相手を選択することが可能となる。
【００９４】
図４のフローチャートの説明に戻り、ステップＳ２３３において、受信したポーリングリクエストに含まれる識別子ｐｋｓｎが読み出され、その識別子ｐｋｓｎに対応する秘密鍵ｐｋ’が秘密鍵記憶部２０３から読み出されると、ステップＳ２３４において、読み出された秘密鍵ｐｋ’で、乱数Ａが暗号化される。
【００９５】
図８を再度参照して説明するに、入出力部２０１（図１）により、識別子ｐｋｓｎ０を含むポーリングリクエストが受信された場合、ＣＰＵ２０７は、識別子ｐｋｓｎ０’に関連付けられている秘密鍵ｐｋ００’を、秘密鍵記憶部２０３から読み出す。この読み出された秘密鍵ｐｋ００’を鍵とし、乱数生成部２０２により生成された乱数Ａが暗号化される。
【００９６】
ＣＰＵ２０７は、秘密鍵記憶部２０３から読み出した秘密鍵ｐｋ’を暗号演算部２０８に供給するとともに、乱数生成部２０２で生成された乱数Ａも暗号演算部２０８に供給する。暗号演算部２０８は、供給された乱数Ａを、秘密鍵ｐｋ’を鍵として暗号化する。暗号化された乱数Ａをここでは、セッション鍵ＥＳＫと記述する。ＥＳＫとはここでは、Encrypted Session Keyの略であるとする。
【００９７】
ステップＳ２３５において、ＣＰＵ２０７は、ステップＳ２３４の処理結果のデータ（すなわち、暗号化された乱数Ａであるセッション鍵ＥＳＫ）を、例えば、データ記憶部２０５の中の予め定められた所定の領域に記憶する。
【００９８】
ステップＳ２３６において、ポーリングレスポンスが生成される。生成されるポーリングレスポンスには、図８に示すように、ステップＳ２３４で生成されたセッション鍵ＥＳＫが含まれる。
【００９９】
図９は、生成されるポーリングリクエストのデータ構成を示す図である。図９に示したポーリングレスポンスは、リーダライタ１００とＩＣカード２００が、NFCIP（Near Field Communication - Interface and Protocol）-1で規定される方式に基づいて通信を行う場合のデータ構成を示している。
【０１００】
Preamble（プリアンブル）は、６バイトで構成されるフィールドであり、全て論理“0”のデータが格納される。Syncは、２バイトで構成されるフィールドであり、同期用のデータであり、イニシエータとターゲットとの間の通信の同期に用いられるデータが格納される。CRC（Cyclic Redundancy Check）は、２バイトで構成されるフィールドであり、誤り検出に用いられるデータであって、予め定められた方式で計算されたデータが格納される。
【０１０１】
ペイロードは、開始バイトが“０１”とされ、８バイトのNFCID2および８バイトのＰＡＤを含んだデータが格納される。セッション鍵ＥＳＫ（暗号化された乱数Ａ）は、ＥＳＫ１とＥＳＫ２という２つのデータに分けられ、それぞれNFCID2のフィールドとＰＡＤのフィールドに格納される。
【０１０２】
ここでは、セッション鍵ＥＳＫは、８バイトで構成されるとし、ＥＳＫ１は６バイト、ＥＳＫ２は２バイトであるとする。８バイトのセッション鍵ＥＳＫのうち、先頭の６バイトがＥＳＫ１とされ、残りの２バイトがＥＳＫ２とされる。
【０１０３】
ステップＳ２３６において、図９に示したようなデータ構造を有するポーリングレスポンスが生成される。また、生成されるポーリングレスポンスには、上記したように、セッション鍵ＥＳＫが２つのデータに分けられ、ペイロードのそれぞれ異なる部分に格納される。
【０１０４】
生成されたポーリングレスポンスは、ステップＳ２３７において、リーダライタ１００に対して送信される。ＣＰＵ２０７（図１）は、生成したポーリングレスポンスを、入出力部２０１を制御することにより、リーダライタ１００に送信する。
【０１０５】
このようにしてＩＣカード２００により生成されたポーリングレスポンスは、ステップＳ１０２（図２）において受信される。ポーリングレスポンスを受信したリーダライタ１００は、ステップＳ１０３において、乱数取得処理を実行する。このステップＳ１０３において実行される乱数取得処理について、図５のフローチャートを参照して説明する。
【０１０６】
ステップＳ２５１において、ＣＰＵ１０５は、ＩＣカード２００からのポーリングレスポンスに含まれるセッション鍵ＥＳＫ、すなわち、暗号化された乱数Ａを取得する。
【０１０７】
ステップＳ２５２において、ＣＰＵ１０５は、例えば、ＲＡＭ１０３の所定の領域に、ステップＳ２５１の処理で取得されたセッション鍵ＥＳＫを記憶する。
【０１０８】
ステップＳ２５３において、暗号演算部１０６は、ステップＳ２５１の処理で取得されたセッション鍵ＥＳＫであって、暗号化された乱数Ａを、秘密鍵記憶部１０１に記憶されている秘密鍵ｐｋを用いて復号する。用いられる秘密鍵ｐｋは、ポーリングリクエストに含ませた識別子ｐｋｓｎに対応する秘密鍵ｐｋである。ここで、復号の結果取得される乱数は乱数Ｂと記述する。
【０１０９】
ステップＳ２５４において、ＣＰＵ１０５は、復号された乱数Ｂを、例えば、ＲＡＭ１０３の所定の領域に記憶する。
【０１１０】
図１０を参照して図５のフローチャートの処理について再度説明する。リーダライタ１００の入出力部１０１により、セッション鍵ＥＳＫを含むポーリングレスポンスが受信されると、ＣＰＵ１０５は、そのポーリングリクエストに含まれるセッション鍵ＥＳＫを取得し、暗号演算部１０６に供給する。
【０１１１】
ＣＰＵ１０１は、秘密鍵記憶部１０１から、ポーリングリクエストに含めた識別子ｐｋｓｎ００に対応する秘密鍵ｐｋ００を読み出し、暗号演算部１０６に供給する。このようにして、暗号演算部１０６には、セッション鍵ＥＳＫと秘密鍵ｐｋ００が供給される、暗号演算部１０６は、秘密鍵ｐｋ００を鍵として、セッション鍵ＥＳＫを復号し、乱数Ｂを取得する。
【０１１２】
このようにしてリーダライタ１００側で取得された乱数Ｂと、ＩＣカード２００側で生成された乱数Ａが一致していれば、乱数Ａ（乱数Ｂ）を用いた通信を行うことができる。例えば、リーダライタ１００と、ＩＣカード２００は、乱数Ａ（乱数Ｂ）を用いて生成されるセッション鍵ＥＳＫに基づいて互いを一意に識別し、また、乱数Ａを鍵として必要に応じてデータの暗号化または復号を行うことが可能となる。
【０１１３】
乱数Ａと乱数Ｂが一致しなれば、乱数Ａを用いて生成されるセッション鍵ＥＳＫと乱数Ｂを用いて生成されるセッション鍵ＥＳＫは、異なるセッション鍵ＥＳＫとなるため、互いに一意に識別することができないため、通信を行うことができない。
【０１１４】
［システムの他の構成］
上記した実施の形態においては、例えば、図７を参照して説明したように、ポーリングリクエストのデータに含まれる識別子ｐｋｓｎのデータには、４ビットが割り当てられている。識別子ｐｋｓｎを４ビットで表した場合、１６個の識別子を表現できることになる。よって、１６個の秘密鍵ｐｋと識別子ｐｋｓｎの対を、リーダライタ１００やＩＣカード２００で、それぞれ取り扱うことが可能となる。
【０１１５】
例えば、１つの秘密鍵ｐｋを１つのサービスと関連付けて用いるようにした場合、１６個のサービスを取り扱うことが可能となる。
【０１１６】
しかしながら、１６個以上の秘密鍵ｐｋを取り扱いたい場合には、対応できないことになる。そこで、１６個以上の秘密鍵ｐｋを取り扱えるようにする場合の、通信システム５０の構成について説明する。
【０１１７】
なお、ここでは、ポーリングリクエストに含ませる識別子ｐｋｓｎを、４ビットで表現するとしたため、１６個の秘密鍵ｐｋを取り扱えるとして説明したが、本発明は、４ビットに限定されるわけではなく、４ビット以外でも勿論本発明を適用することは可能である。４ビット以外で表現するように設定した場合、その設定されたビット数に依存して、取り扱える秘密鍵ｐｋの個数が決定される。
【０１１８】
よって、例えば、４ビット以上のビット数で、識別子ｐｋｓｎを表現するようにした場合、１６個以上のサービスを扱えることになり、そのようにして、扱える識別子ｐｋｓｎや秘密鍵ｐｋを増やすようにしても良い。ここでは、ビット数を増やすことなく、扱える秘密鍵ｐｋの個数を多くする方法について説明する。
【０１１９】
図１１は、通信システム５０の他の構成を示す図である。図１１に示した通信システム５０と、図１に示した通信システム５０の構成で、同一の部分には、同一の符号を付し、適宜、その説明を省略する。
【０１２０】
上記したように、図１１に示した通信システム５０は、リーダライタ３００とＩＣカード４００とから構成されている。リーダライタ３００は、後述するような階層構造を有する秘密鍵ｐｋを記憶している秘密鍵記憶部３０１を有する。同様に、ＩＣカード４００は、階層構造を有する秘密鍵ｐｋ’を記憶している秘密鍵記憶部４０１を有している。
【０１２１】
リーダライタ３００は、ハッシュ演算部３０２を有している構成とされている。また、ＩＣカード４００も、ハッシュ演算部４０２を有している構成とされている。詳細は後述するが、ハッシュ演算部３０２とハッシュ演算部４０２は、それぞれハッシュ関数を適用した演算を行う。その結果演算されたハッシュ値を照合することにより、データの信頼性、ここでは、後述するように、秘密鍵ｐｋの確認が行われる。
【０１２２】
その他の構成は、図１と同様であるので、その説明は省略する。
【０１２３】
図１２は、秘密鍵記憶部３０１に記憶されている秘密鍵ｐｋについて説明するための図である。図１２に示した例においては、識別子ｐｋｓｎ０乃至ｐｋｓｎＮというＮ個の識別子が記憶されている。識別子ｐｋｓｎ０には、サブ識別子ＳＳＮ０乃至ＳＳＮ２という３個の識別子が関連付けられている。さらに、各サブ識別子ＳＳＮ０乃至ＳＳＮ２には、それぞれ秘密鍵ｐｋ００乃至ｐｋ０２が関連付けられている。
【０１２４】
すなわちこの場合、１つの識別子ｐｋｓｎ０には、３個の秘密鍵ｐｋ００乃至０２が関連付けられている。なおここでＳＳＮは、Sub Slot Numberの略であるとする。
【０１２５】
他の識別子ｐｋｓｎも同様に、１つの識別子ｐｋｓｎには、複数のサブ識別子ＳＳＮが従属して関連付けられ、１つのサブ識別子ＳＳＮには、１つの秘密鍵ｐｋが関連付けられている。すなわち、１つの識別子ｐｋｓｎには、複数のサブ識別子ＳＳＮと複数の秘密鍵ｐｋが関連付けられている。
【０１２６】
なお、１つの識別子ｐｋｓｎに、幾つのサブ識別子ＳＳＮ（秘密鍵ｐｋ）を関連付けるかの限定はない。図１２に示した例は一例であり、例えば、識別子ｐｋｓｎ０に３つのサブ識別子ＳＳＮ０乃至２が関連付けられるといったことに限定されるわけではない。
【０１２７】
このように、秘密鍵記憶部３０１には、１つの識別子ｐｋｓｎ０に、複数の秘密鍵ｐｋが関連付けられている。このように、サブ識別子ＳＳＮを設けることで、複数の秘密鍵ｐｋを記憶（取り扱う）ことを可能とする。
【０１２８】
ここでは、リーダライタ１００の秘密鍵記憶部３０１に記憶されている階層構造の鍵の例しか示さないが、ＩＣカード４００の秘密鍵記憶部４０１も、同様の階層構造の鍵を記憶している。
【０１２９】
次に、図１１に示した通信システム５０の動作について説明する。通信システム５０の動作の概略は、図２に示したフローチャートを参照して説明した場合と同様であるのでその説明は省略する。
【０１３０】
また、リーダライタ３００の動作として、ステップＳ１０１（図２）で行われる、ポーリングリクエストの生成、送信処理は、図３に示したフローチャートを参照して説明した場合と同様に行われるため、その詳細な説明は省略するが、図１３を参照して、簡便な説明を加える。
【０１３１】
図１３に示すように、リーダライタ３００の秘密鍵記憶部３０１には、階層構造とされた秘密鍵ｐｋが記憶されている。ＣＰＵ１０５（図１１）は、秘密鍵記憶部３０１から、例えば、識別子ｐｋｓｎ０を読み出し、ポーリングリクエストに格納する。識別子ｐｋｓｎ０が格納されたポーリングリクエストは、入出力部１０２によりＩＣカード４００に送信される。
【０１３２】
この送信されるポーリングリクエストは、図７を参照して説明したデータ構成を有する。すなわち、秘密鍵記憶部３０１に記憶されている秘密鍵を、階層構造にした場合であっても、ポーリングリクエストに含まれるのは、識別子ｐｋｓｎである。
【０１３３】
次に、ポーリングリクエストを受信したＩＣカード４００の処理について説明する。ＩＣカード４００は、ステップＳ１２２（図２）において、ポーリングレスポンスの生成、送信処理を実行する。このＩＣカード４００で実行されるポーリングレスポンスを生成、送信処理について、図１４のフローチャートを参照して説明する。
【０１３４】
ステップＳ３３１乃至Ｓ３３５で実行される各処理は、図４のステップＳ２３１乃至Ｓ２３５と同様であり、その説明は既にしたので、ここでは省略する。
【０１３５】
ただし、ステップＳ３３３において秘密鍵記憶部４０１から秘密鍵ｐｋを読み出す際の処理が異なるので、ここで説明を加える。上記したように、秘密鍵記憶部４０１には、１つの識別子ｐｋｓｎ’に対して、複数の秘密鍵ｐｋ’が関連付けられている。ＩＣカード４００のＣＰＵ２０７は、受信したポーリングリクエストに含まれる識別子ｐｋｓｎと同一の識別子ｐｋｓｎ’に関連付けられている１つの秘密鍵ｐｋ’を読み出す。
【０１３６】
例えば、図１５を参照して説明するに、受信されたポーリングリクエストに含まれる識別子ｐｋｓｎが、識別子ｐｋｓｎ０であった場合、識別子ｐｋｓｎ０’に関連付けられている秘密鍵ｐｋ００’乃至０２’のうちの１つの秘密鍵ｐｋ’が読み出される。ここでは、秘密鍵ｐｋ００’が読み出されるとして説明を続ける。
【０１３７】
例えば、１つの識別子ｐｋｓｎ’に関連付けられている複数の秘密鍵ｐｋ’を、それぞれ異なるセキュリティレベルの鍵とし、通信するデータや通信相手により、適切な秘密鍵ｐｋ’が読み出されるようにすることが可能である。
【０１３８】
また、例えば、１つの識別子ｐｋｓｎ’に関連付けられている複数の秘密鍵ｐｋ’を、それぞれ異なるサービスに対応させ、実行するサービスに適した秘密鍵ｐｋ’が読み出されるようにすることが可能である。
【０１３９】
この読み出された秘密鍵ｐｋ００’で、乱数生成部２０２により生成された乱数Ａが暗号化され、セッション鍵ＥＳＫが生成される。
【０１４０】
図１４のフローチャートの説明に戻り、ステップＳ３３６において、サブ識別子ＳＳＮが読み出される。読み出されるサブ識別子ＳＳＮは、ステップＳ３３４において読み出された秘密鍵ｐｋに関連付けられているサブ識別子ＳＳＮである。
【０１４１】
なおここでは、秘密鍵ｐｋ’が読み出された後、その読み出された秘密鍵ｐｋ’を識別するサブ識別子ＳＳＮ’が読み出されるとしたが、サブ識別子ＳＳＮ’が読み出されてから、そのサブ識別子ＳＳＮ’に対応する秘密鍵ｐｋ’が読み出されるようにしても良いし、同時に読み出されるようにしても良い。他のステップにおける処理も同様であるが、実行される順番は、適宜変更可能であり、本実施の形態に示した順番に限定されるわけではない。
【０１４２】
ステップＳ３３７において、ハッシュ演算部４０２は、乱数生成部２０２により生成された乱数Ａに対してハッシュ関数による演算を行う。ハッシュ関数は、送信するデータを入力とし、その入力されたデータを、所定のビット長のデータに圧縮し、ハッシュ値として出力する関数である。ハッシュ関数は、出力であるハッシュ値から入力データを復元することが難しく、また、同一の出力結果のハッシュ値を持つ入力データを探し出すことが困難である（一方向である）特徴を有する。
【０１４３】
このようなハッシュ関数の特徴を利用し、送受信されたデータの信憑性などを確認することが行われる。ここでは、ＩＣカード４００側とリーダライタ３００側で、それぞれ読み出した秘密鍵ｐｋ’（秘密鍵ｐｋ）が、一致しているか否かを確認するために、ハッシュ演算を行う。
【０１４４】
ステップＳ３３７において、乱数Ａに対してハッシュ関数が適用され、ハッシュ値Ａが生成されると、ステップＳ３３８においてポーリングレスポンスが生成される。生成されるポーリングレスポンスは、図１５に示すように、ハッシュ値Ａ、セッション鍵ＥＳＫ、および、サブ識別子ＳＳＮ’を含む構成とされる。
【０１４５】
すなわち、秘密鍵記憶部４０１に記憶されている鍵を階層構造にした場合、ポーリングレスポンスには、ハッシュ値Ａ、セッション鍵ＥＳＫ、および、サブ識別子ＳＳＮを含む構成とされる。
【０１４６】
ポーリングレスポンスについてさらに図１６を参照して説明する。図１６に示したポーリングリクエストのデータ構成のうち、図９に示したポーリングリクエストのデータ構成と一致する部分に関する説明は省略する。
【０１４７】
図１６に示したポーリングリクエストのデータ構成においては、ペイロードのＰＡＤの領域に、ハッシュ値Ａを格納する領域（図１６においては、ＨＳＫと記載してある領域）と、サブ識別子ＳＳＮ’を格納する領域（図１６においては、ＳＳＮと記載してある領域）が設けられている。ハッシュ値Ａを格納する領域は、２バイトで構成される。サブ識別子ＳＳＮ’を格納する領域は、２バイトで構成される。
【０１４８】
ステップＳ２２８においては、図１６に示したようなデータ構成を有するポーリングレスポンスが生成される。そして、ステップＳ３３９において、生成されたポーリングレスポンスは、リーダライタ３００に対して送信される。
【０１４９】
次に、ポーリングレスポンスを受信したリーダライタ３００の処理について説明する。リーダライタ３００は、ステップＳ１０３（図２）において、乱数取得処理を実行する。このリーダライタ３００で実行される乱数取得処理について、図１７のフローチャートを参照して説明する。
【０１５０】
ステップＳ３５１乃至Ｓ３５４で実行される各処理は、図５のステップＳ２５１乃至Ｓ２５４と同様であり、その説明は既にしたので、ここでは省略する。
【０１５１】
ただし、ステップＳ３５３において秘密鍵記憶部３０１から秘密鍵ｐｋを読み出す際の処理が異なるので、ここで説明を加える。リーダライタ３００は、ＩＣカード４００に送信したポーリングリクエストに含めた識別子ｐｋｓｎから、識別子ｐｋｓｎを特定する。また、リーダライタ３００は、ＩＣカード４００から受信したポーリングレスポンスに含まれるサブ識別子ＳＳＮ’から、サブ識別子ＳＳＮを特定する。識別子ｐｋｓｎとサブ識別子ＳＳＮが特定されれば、１つの秘密鍵ｐｋを特定することができる。
【０１５２】
図１８を参照してさらに説明を加える。図１８に示した例では、ＩＣカード４００から受信されたポーリングレスポンスには、サブ識別子ＳＳＮ’として、サブ識別子ＳＳＮ０’が格納されているため、サブ識別子ＳＳＮ０’からサブ識別子ＳＳＮ０が特定される。
【０１５３】
またリーダライタ３００は、ＩＣカード４００に送信したポーリングリクエストに、識別子ｐｋｓｎとして識別子ｐｋｓｎ０のデータを格納したことを記憶している。よって、識別子ｐｋｓｎ０という情報と、サブ識別子ＳＳＮ０という情報から、秘密鍵ｐｋ００が特定される。よってこの場合、秘密鍵ｐｋとして、秘密鍵ｐｋ００が読み出される。
【０１５４】
この読み出された秘密鍵ｐｋ００を鍵とし、ポーリングリクエストに含まれるセッション鍵ＥＳＫを復号することで、乱数Ｂが取得される。
【０１５５】
図１７のフローチャートの説明に戻り、ステップＳ３５１乃至Ｓ３５４の処理が行われることにより乱数Ｂが取得されると、ステップＳ３５５において、ハッシュ演算部３０２（図１１）は、乱数Ｂに対してハッシュ関数を適用し、ハッシュ値Ｂを生成する。
【０１５６】
ステップＳ３５６において、ＣＰＵ１０５は、入出力部１０２により入力されたポーリングレスポンスに含まれるハッシュ値Ａと、ハッシュ演算部３０２により生成されたハッシュ値Ｂを照合する。
【０１５７】
図１８を参照し、ハッシュ値Ａとハッシュ値Ｂを照合する必要性について説明を加える。図１８を参照した説明においては、上述したように、識別子ｐｋｓｎ０という情報と、サブ識別子ＳＳＮ０という情報から、秘密鍵ｐｋ００が特定された。仮に、この秘密鍵の特定が間違って行われた場合、ハッシュ値Ａとハッシュ値Ｂは一致しないことになる。
【０１５８】
識別子ｐｋｓｎは、リーダライタ３００側で選択し、サブ識別子ＳＳＮは、ＩＣカード４００側で選択された。リーダライタ３００に記憶されている識別子ｐｋｓｎ、サブ識別子ＳＳＮ、および秘密鍵ｐｋとの関係が、ＩＣカード４００に記憶されている識別子ｐｋｓｎ’、サブ識別子ＳＳＮ’、および秘密鍵ｐｋ’との関係と同一であれば、間違って秘密鍵ｐｋが特定される可能性は低いと考えられるが、同一でなければ、間違って秘密鍵ｐｋが特定される可能性がある。
【０１５９】
また、例えば、ＩＣカード４００側で選択したサブ識別子ＳＳＮ’に対応する秘密鍵ｐｋを、リーダライタ３００側で保持していなかったような場合（例えば、リーダライタ３００側とＩＣカード４００側で異なる秘密鍵を保持していたような場合）、一意に秘密鍵ｐｋを特定することができないため、ハッシュ値Ａとハッシュ値Ｂは一致しないことになる。
【０１６０】
このようなことを考慮し、ハッシュ値の照合を行い、リーダライタ３００側とＩＣカード４００側で選択した秘密鍵ｐｋ（暗号化や復号に用いる秘密鍵ｐｋ）が一致しているか否かを確認できる構成とする。
【０１６１】
このように、ハッシュ値をポーリングレスポンスに格納することで、セッション鍵の正当性をリーダライタ３００側で確認することが可能となる。
【０１６２】
なお、図１に示した通信システム５０では、換言すれば、階層構造とされていない秘密鍵の場合には、ハッシュ値の照合などの処理を行い、リーダライタ３００側とＩＣカード４００側で選択した秘密鍵ｐｋが一致しているか否かを確認するといった処理を行わない構成としたが、勿論、図１に示した通信システム５０において、ハッシュ値の照合を行うなどの処理を実行し、秘密鍵ｐｋを確認する構成とすることも可能である。
【０１６３】
このように、リーダライタ３００とＩＣカード４００で、複数の秘密鍵ｐｋを管理することにより、複数のサービスを、異なる秘密鍵ｐｋで暗号化、復号することができ、複数のサービスを扱うような場合であっても、サービス毎に秘密鍵ｐｋを用いることが可能となる。また、このように通信のセッションを確立することで、通信の安全性を高めることが可能となる。
【０１６４】
なお、上述した実施の形態においては、無線通信を例に挙げて説明したが、有線による通信に本発明を適用することは可能である。また、本発明は上記した実施の形態に限定されるわけではなく、２つの装置間で、何らかのデータを交換する際、互いの装置が保持する複数の鍵を用いた通信に適用することができる。
【０１６５】
本明細書における情報処理装置、デバイスとの用語は、例えば、NFCIP-1の規格においては、イニシエータとターゲット、すなわち、それぞれ、ＲＦフィールドを発生し、NFCIP-1通信を開始する装置と負荷変調または自ら発生したＲＦフィールドの変調を利用してイニシエータからの命令に応答する装置に対応する。また、これら装置は、それぞれの機能を有する１つ以上のＩＣチップを搭載した通信装置であって、他の機能等を有した装置であっても良い。
【０１６６】
［記録媒体について］
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、図１のＣＰＵ１０５またはＣＰＵ２０７により実行され、それらのプログラムは、リーダライタ１００（３００）またはＩＣカード２００（４００）が読み取り可能な記録媒体などから読み込まれる。
【０１６７】
本明細書において上述した一連の処理を実行するステップは、記載された順序に沿って時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【０１６８】
【図１】本発明を適用した通信システムの一実施の形態の構成を示す図である。
【図２】図１に示した通信システムの動作について説明するフローチャートである。
【図３】ステップＳ１０１において実行されるポーリングリクエスト生成、送信処理の詳細について説明するフローチャートである。
【図４】ステップＳ１２２において実行されるポーリングレスポンス生成、送信処理の詳細について説明するフローチャートである。
【図５】ステップＳ１０３において実行される乱数取得処理の詳細について説明するフローチャートである。
【図６】ポーリングリクエストの生成について説明するための図である。
【図７】ポーリングリクエストのデータ構成について説明するための図である。
【図８】ポーリングレスポンスの生成について説明するための図である。
【図９】ポーリングレスポンスのデータ構成について説明するための図である。
【図１０】ポーリングレスポンスから乱数Ｂを取得する際の処理について説明するための図である。
【図１１】本発明を適用した通信システムの他の構成を示す図である。
【図１２】秘密鍵記憶部３０１に記憶されている秘密鍵について説明するための図である。
【図１３】ポーリングリクエストの生成について説明するための図である。
【図１４】ステップＳ１２２において実行されるポーリングレスポンス生成、送信に係わる他の処理の詳細について説明するフローチャートである。
【図１５】ポーリングレスポンスの生成について説明するための図である。
【図１６】ポーリングレスポンスのデータ構成について説明するための図である。
【図１７】ステップＳ１０３において実行される乱数取得に係わる他の処理の詳細について説明するフローチャートである。
【図１８】ポーリングレスポンスから乱数Ｂを取得する際の処理について説明するための図である。
【符号の説明】
【０１６９】
５０  通信システム，  １００  リーダライタ，  １０１  秘密鍵記憶部，  １０２  入出力部，  １０３  ＲＡＭ，  １０４  ＲＯＭ，  １０５  ＣＰＵ，  １０６  暗号演算部，  ２００  ＩＣカード，  ２０１  入出力部，  ２０２  乱数生成部，  ２０３  秘密鍵記憶部，  ２０４  ＩＤ記憶部，  ２０５  データ記憶部，  ２０６  ＲＯＭ，  ２０７  ＣＰＵ，  ２０８  暗号演算部，  ３００  リーダライタ，  ３０１  秘密鍵記憶部，  ３０２  ハッシュ演算部，  ４００  ＩＣカード，  ４０１  秘密鍵記憶部，  ４０２  ハッシュ演算部
【図１】
2008034971.tif 000003
【図２】
2008034971.tif 000004
【図３】
2008034971.tif 000005
【図４】
2008034971.tif 000006
【図５】
2008034971.tif 000007
【図６】
2008034971.tif 000008
【図７】
2008034971.tif 000009
【図８】
2008034971.tif 000010
【図９】
2008034971.tif 000011
【図１０】
2008034971.tif 000012
【図１１】
2008034971.tif 000013
【図１２】
2008034971.tif 000014
【図１３】
2008034971.tif 000015
【図１４】
2008034971.tif 000016
【図１５】
2008034971.tif 000017
【図１６】
2008034971.tif 000018
【図１７】
2008034971.tif 000019
【図１８】
2008034971.tif 000020