(57)【特許請求の範囲】
【請求項１】
所定の距離の範囲内において無線通信を行うデバイスおよび情報処理装置により構成される通信システムであって、
前記デバイスは、
乱数を生成する乱数生成手段と、
与えられた鍵に基づいて情報を暗号化または復号するデバイス暗号化手段と、
前記デバイス暗号化手段による暗号化または復号に用いられ、前記情報処理装置との間で事前に共有されている秘密鍵を記憶するデバイス秘密鍵記憶手段と、
前記乱数生成手段により生成された乱数を、前記秘密鍵を用いて前記デバイス暗号化手段により暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDを、前記情報処理装置に送信する通信ID送信手段と、
前記デバイスに固有の固有IDを記憶するID記憶手段と、
前記乱数生成手段により生成された乱数を前記情報処理装置との通信における鍵として用い、前記デバイス暗号化手段を制御して情報を暗号化し、前記情報処理装置へ送信するデバイス送信処理手段とを備え、
前記デバイス送信処理手段は、前記通信ID送信手段が前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から前記固有IDの読出し要求を受信した場合、前記ID記憶手段に記憶されている前記固有IDを、前記乱数生成手段により生成された前記乱数を鍵として用いて前記デバイス暗号化手段で暗号化して前記情報処理装置に送信し、
前記情報処理装置は、
与えられた鍵に基づいて情報を暗号化または復号する装置暗号化手段と、
前記装置暗号化手段による暗号化または復号に用いられ、前記デバイスとの間で事前に共有されている秘密鍵を記憶する装置秘密鍵記憶手段と、
前記デバイスから受信した前記通信IDを、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶する通信ID記憶手段と、
前記通信IDを、前記秘密鍵を用い、前記装置暗号化手段を制御して復号することで前記乱数を取得する乱数取得手段と、
前記乱数取得手段により取得された乱数を前記デバイスとの通信における鍵として用い、前記装置暗号化手段を制御して情報を暗号化し、前記デバイスへ送信する装置送信処理手段とを備え、
前記装置送信処理手段は、前記デバイスから前記通信IDを受信した後、前記デバイスの前記固有IDを読み出す必要がある場合、前記固有IDの読出し要求を前記デバイスに送信し、
前記情報処理装置において、前記読出し要求に応じて前記デバイスから受信した、前記固有IDが前記乱数で暗号化された情報を、前記装置暗号化手段を制御して復号することで、前記デバイスの前記固有IDが取得される
通信システム。
【請求項２】
前記通信ID送信手段は、前記情報処理装置からポーリングを受信したとき、前記通信IDを、前記情報処理装置に送信する
請求項１に記載の通信システム。
【請求項３】
所定の距離の範囲内において無線通信を行うデバイスおよび情報処理装置により構成される通信システムの通信方法であって、
前記デバイスは、
乱数を生成し、
前記乱数を、前記情報処理装置との間で事前に共有されている秘密鍵を用いて暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDを、前記情報処理装置に送信し、
前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から固有IDの読出し要求を受信した場合、ID記憶手段に記憶されている前記デバイスに固有の前記固有IDを、前記乱数を鍵として用いて暗号化して前記情報処理装置へ送信するステップを含み、
前記情報処理装置は、
前記デバイスから受信した前記通信IDを、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶し、
前記通信IDを、前記デバイスとの間で事前に共有されている秘密鍵を用い復号することで前記乱数を取得し、
前記デバイスから前記通信IDを受信した後、前記デバイスに固有の固有IDを読み出す必要がある場合、前記固有IDの読出し要求を前記デバイスに送信し、前記読出し要求に応じて前記デバイスから受信した、前記固有IDが前記乱数で暗号化された情報を復号することで、前記デバイスの前記固有IDを取得し、
前記取得された乱数を前記デバイスとの通信における鍵として用い、情報を暗号化し、前記デバイスへ送信するステップを含む
通信方法。
【請求項４】
所定の距離の範囲内において、情報処理装置と無線通信を行うデバイスであって、
第１の乱数を生成する乱数生成手段と、
与えられた鍵に基づいて情報を暗号化または復号するデバイス暗号化手段と、
前記デバイス暗号化手段による暗号化または復号に用いられ、前記情報処理装置との間で事前に共有されている秘密鍵を記憶するデバイス秘密鍵記憶手段と、
前記乱数生成手段により生成された前記第１の乱数を、前記秘密鍵を用いて前記デバイス暗号化手段により暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDを、前記情報処理装置に送信する通信ID送信手段と、
前記デバイスに固有の固有IDを記憶するID記憶手段と、
前記乱数生成手段により生成された前記第１の乱数を前記情報処理装置との通信における鍵として用い、前記デバイス暗号化手段を制御して情報を暗号化し、前記情報処理装置へ送信するデバイス送信処理手段と
を備え、
前記デバイス送信処理手段は、前記通信ID送信手段が前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から前記固有IDの読出し要求を受信した場合、前記ID記憶手段に記憶されている前記固有IDを、前記乱数生成手段により生成された前記第１の乱数を鍵として用いて前記デバイス暗号化手段で暗号化して前記情報処理装置に送信する
デバイス。
【請求項５】
前記通信の方式は、ISO/IEC 18092として規定されるNFCIP（Near Field Communication - Interface and Protocol）-1であり、
前記通信ID送信手段が送信する前記通信IDは、NFCIP-1において、RF衝突回避の際及び単一デバイス探知処理に用いられるNFC識別子として機能する
請求項４に記載のデバイス。
【請求項６】
前記情報処理装置との通信において、前記情報処理装置に前記固有IDを暗号化して送信したか否かを判定する判定手段をさらに備え、
前記判定手段により、前記情報処理装置に前記固有IDを暗号化して送信したと判定された場合、前記デバイス送信処理手段は、前記情報処理装置へ送信する情報を前記第１の乱数で暗号化する
請求項４に記載のデバイス。
【請求項７】
前記デバイス送信処理手段は、前記乱数生成手段により生成された前記第１の乱数に加えて、前記情報処理装置から送信されるポーリングか、または、前記ポーリングの次の送信のときに前記情報処理装置から前記秘密鍵で暗号化されて送信されてくる第２の乱数も鍵として用い、前記デバイス暗号化手段を制御して情報を暗号化し、前記情報処理装置へ送信する
請求項４乃至６のいずれかに記載のデバイス。
【請求項８】
所定の距離の範囲内において、無線通信を行うデバイスおよび情報処理装置により構成される通信システムのデバイスのCPUに通信処理を実行させるプログラムであって、
乱数の生成を制御し、
前記乱数を、前記情報処理装置との間で事前に共有されて前記デバイスの記憶部に記憶されている秘密鍵を用いて暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDを、前記情報処理装置へ送信する制御をし、
前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から固有IDの読出し要求を受信した場合、前記記憶部に記憶されている前記デバイスに固有の前記固有IDを、前記乱数を鍵として用いて暗号化して前記情報処理装置へ送信する制御をするステップ
を含むコンピュータが読み取り可能なプログラム。
【請求項９】
所定の距離の範囲内においてデバイスと無線通信を行う情報処理装置であって、
与えられた鍵に基づいて情報を暗号化または復号する装置暗号化手段と、
前記装置暗号化手段による暗号化または復号に用いられ、前記デバイスとの間で事前に共有されている秘密鍵を記憶する装置秘密鍵記憶手段と、
前記デバイスから受信した、前記デバイスが第１の乱数を前記秘密鍵を用い暗号化し生成した通信IDを、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶する通信ID記憶手段と、
前記通信IDを、前記秘密鍵を用い、前記装置暗号化手段を制御して復号することで前記第１の乱数を取得する乱数取得手段と、
前記乱数取得手段により取得された前記第１の乱数を前記デバイスとの通信における鍵として用い、前記装置暗号化手段を制御して情報を暗号化し、前記デバイスへ送信する装置送信処理手段と
を備え、
前記デバイスから前記通信IDを受信した後、前記デバイスに固有の固有IDを読み出す必要がある場合、前記固有IDの読出し要求を前記デバイスに送信し、前記読出し要求に応じて前記デバイスから受信した、前記固有IDが前記乱数で暗号化された情報を、前記装置暗号化手段を制御して復号することで、前記デバイスの前記固有IDが取得される
情報処理装置。
【請求項１０】
前記通信の方式は、ISO/IEC 18092として規定されるNFCIP（Near Field Communication - Interface and Protocol）-1であり、
前記通信ID記憶手段は、前記通信IDを、NFCIP-1において、RF衝突回避の際及び単一デバイス探知処理に用いられるNFC識別子として記憶する
請求項９に記載の情報処理装置。
【請求項１１】
第２の乱数を生成する乱数生成手段をさらに備え、
前記装置送信処理手段は、ポーリングか、または、前記ポーリングの次の送信のときに前記第２の乱数を前記秘密鍵で暗号化して前記デバイスに送信するとともに、前記乱数取得手段により取得された前記第１の乱数に加えて前記第２の乱数も鍵として用い、前記装置暗号化手段を制御して情報を暗号化し、前記デバイスへ送信する
請求項９または１０に記載の情報処理装置。
【請求項１２】
所定の距離の範囲内において無線通信を行うデバイスおよび情報処理装置により構成される通信システムの情報処理装置のCPUに情報処理を実行させるプログラムであって、
前記デバイスから受信した、前記デバイスとの間で事前に共有されている秘密鍵を用い前記デバイスが乱数を暗号化し生成した通信IDを、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶するように制御し、
前記通信IDを、前記情報処理装置の記憶部に記憶されている前記秘密鍵を用い復号することで前記乱数の取得を制御し、
前記デバイスから前記通信IDを受信した後、前記デバイスに固有の固有IDを読み出す必要がある場合、前記固有IDの読出し要求を前記デバイスに送信し、前記デバイスから受信した、前記固有IDが前記乱数で暗号化された情報を復号することで、前記デバイスの前記固有IDが取得され、
取得された前記乱数を前記デバイスとの通信における鍵として用い、情報を暗号化し、前記デバイスへ送信する制御を行うステップ
を含むコンピュータが読み取り可能なプログラム。
【請求項１３】
所定の距離の範囲内において無線通信を行うデバイスおよび情報処理装置により構成される通信システムであって、
前記デバイスは、
第１の乱数を生成するデバイス乱数生成手段と、
与えられた鍵に基づいて情報を暗号化または復号するデバイス暗号化手段と、
前記デバイス暗号化手段による暗号化または復号に用いられ、前記情報処理装置との間で事前に共有されている秘密鍵を記憶するデバイス秘密鍵記憶手段と、
前記デバイス乱数生成手段により生成された前記第１の乱数を、前記秘密鍵を用いて前記デバイス暗号化手段により暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDを、前記情報処理装置に送信する通信ID送信手段と、
前記デバイスに固有の固有IDを記憶するID記憶手段と、
前記情報処理装置から前記秘密鍵で暗号化されて送信されてくる第２の乱数と、前記デバイス乱数生成手段により生成された前記第１の乱数とを前記情報処理装置との通信における鍵として用い、前記デバイス暗号化手段を制御して情報を暗号化し、前記情報処理装置へ送信するデバイス送信処理手段とを備え、
前記デバイス送信処理手段は、前記通信ID送信手段が前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から前記固有IDの読出し要求を受信した場合、前記ID記憶手段に記憶されている前記固有IDを、前記第１の乱数及び前記第２の乱数を鍵として用いて前記デバイス暗号化手段で暗号化して前記情報処理装置に送信し、
前記情報処理装置は、
前記第２の乱数を生成する装置乱数生成手段と、
与えられた鍵に基づいて情報を暗号化または復号する装置暗号化手段と、
前記装置暗号化手段による暗号化または復号に用いられ、前記デバイスとの間で事前に共有されている秘密鍵を記憶する装置秘密鍵記憶手段と、
前記デバイスから受信した前記通信IDを、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶する通信ID記憶手段と、
前記通信IDを、前記秘密鍵を用い、前記装置暗号化手段を制御して復号することで前記第１の乱数を取得する乱数取得手段と、
前記第２の乱数を前記秘密鍵で暗号化して前記デバイスに送信するとともに、前記乱数取得手段により取得された前記第１の乱数と前記第２の乱数を前記デバイスとの通信における鍵として用い、前記装置暗号化手段を制御して情報を暗号化し、前記デバイスへ送信する装置送信処理手段と
を備え、
前記装置送信処理手段は、前記デバイスから前記通信IDを受信した後、前記デバイスの前記固有IDを読み出す必要がある場合、前記固有IDの読出し要求を前記デバイスに送信し、
前記情報処理装置において、前記読出し要求に応じて前記デバイスから受信した、前記固有IDが前記第１の乱数及び前記第２の乱数で暗号化された情報を、前記装置暗号化手段を制御して復号することで、前記デバイスの前記固有IDが取得される
通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムおよび通信方法、デバイス、情報処理装置、並びにプログラムに関し、特に、簡単な構成で安全かつ利便性の高い情報通信を行うことができるようにする通信システムおよび通信方法、デバイス、情報処理装置、並びにプログラムに関する。
【背景技術】
【０００２】
近年、非接触型ICカードやRFIDなどの普及が目覚しい。例えば、従来の非接触型ICカードなどでは、ICカードとリーダライタとの間で行われる通信において、同時に二つ以上のICカード又はリーダライタが電波を送出し、その結果、ICカード又はリーダライタがどの対象から電波が発せられたものであるかを区別できなくなるという、いわゆる衝突を防止するために、カードに固有のＩＤ（カードＩＤ）を用いるものが多い。
【０００３】
このように衝突防止のためにカードＩＤが用いられる場合、カードＩＤは、どのリーダライタでも読み出すことが可能となるので、ICカードを持っていると、そのカードＩＤによりカードの持ち主が特定され、その人のプライバシーが侵害される問題があった。
【０００４】
また、例えば、希少な商品などの真贋性を確認するために商品にRFIDが取り付けられることもある。このような場合、商品に取り付けられるRFIDが固有のIDを有することになり、RFIDと通信可能なリーダライタがあれば、その商品を購入したユーザの行動を監視することも可能となってしまう。
【０００５】
一方、リーダライタと通信可能な範囲にあるICカードやRFIDを識別するための方式であるNFCIP（Near Field Communication - Interface and Protocol）-1を標準化した規格としてISO/IEC18092 (NFCIP-1)が規定されている。この規格によれば、ICカードやRFIDに固有のIDがリーダライタに送信されることなく、衝突を防止することが可能となる。
【０００６】
また、リーダライタとＲＦＩＤなどの電子タグの双方で秘密共有鍵情報を設定し、同情報を有するリーダライタのみが暗号化された発信情報を復号可能とすることで、不正な同定追跡の防止をはかり、プライバシーを保護することも提案されている（例えば、特許文献１参照）。
【特許文献１】特開2005-348306号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、NFCIP-1においては、ICカードやRFIDに固有のIDが送信されないので、このままでは個々のICカードやRFIDそのものを識別することができない。このため、個々のICカードやRFIDを個々に識別する必要がある場合、チップのデータ領域にICカードやRFIDに固有のＩＤを記憶させておき、必要に応じて固有のＩＤをリーダライタに送信することも考えられるが、この方式では、ICカードやRFIDに固有のＩＤを暗号化して安全に送信するために、セッション鍵を交換するための認証シーケンスが新たに必要となってしまう。
【０００８】
また、特許文献１の技術では、電子タグの固有のIDを秘匿することが可能となるが、一方向通信に関してのみの提案であり相互通信するRFIDに必要な識別番号を秘匿状態にしなければならず通信する相手を特定することができないという問題があった。
【０００９】
本発明はこのような状況に鑑みてなされたものであり、簡単な構成で安全かつ利便性の高い情報通信を行うことができるようにするものである。
【課題を解決するための手段】
【００１０】
本発明の第１の側面の通信システムは、所定の距離の範囲内において無線通信を行うデバイスおよび情報処理装置により構成される通信システムであって、前記デバイスは、乱数を生成する乱数生成手段と、与えられた鍵に基づいて情報を暗号化または復号するデバイス暗号化手段と、前記デバイス暗号化手段による暗号化または復号に用いられ、前記情報処理装置との間で事前に共有されている秘密鍵を記憶するデバイス秘密鍵記憶手段と、前記乱数生成手段により生成された乱数を、前記秘密鍵を用いて前記デバイス暗号化手段により暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDを、前記情報処理装置に送信する通信ID送信手段と、前記デバイスに固有の固有IDを記憶するID記憶手段と、前記乱数生成手段により生成された乱数を前記情報処理装置との通信における鍵として用い、前記デバイス暗号化手段を制御して情報を暗号化し、前記情報処理装置へ送信するデバイス送信処理手段とを備え、前記デバイス送信処理手段は、前記通信ID送信手段が前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から前記固有IDの読出し要求を受信した場合、前記ID記憶手段に記憶されている前記固有IDを、前記乱数生成手段により生成された前記乱数を鍵として用いて前記デバイス暗号化手段で暗号化して前記情報処理装置に送信し、前記情報処理装置は、与えられた鍵に基づいて情報を暗号化または復号する装置暗号化手段と、前記装置暗号化手段による暗号化または復号に用いられ、前記デバイスとの間で事前に共有されている秘密鍵を記憶する装置秘密鍵記憶手段と、前記デバイスから受信した前記通信IDを、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶する通信ID記憶手段と、前記通信IDを、前記秘密鍵を用い、前記装置暗号化手段を制御して復号することで前記乱数を取得する乱数取得手段と、前記乱数取得手段により取得された乱数を前記デバイスとの通信における鍵として用い、前記装置暗号化手段を制御して情報を暗号化し、前記デバイスへ送信する装置送信処理手段とを備え、前記装置送信処理手段は、前記デバイスから前記通信IDを受信した後、前記デバイスの前記固有IDを読み出す必要がある場合、前記固有IDの読出し要求を前記デバイスに送信し、前記情報処理装置において、前記読出し要求に応じて前記デバイスから受信した、前記固有IDが前記乱数で暗号化された情報を、前記装置暗号化手段を制御して復号することで、前記デバイスの前記固有IDが取得される通信システムである。
【００１１】
本発明の第１の側面の通信方法は、所定の距離の範囲内において無線通信を行うデバイスおよび情報処理装置により構成される通信システムの通信方法であって、前記デバイスは、乱数を生成し、前記乱数を、前記情報処理装置との間で事前に共有されている秘密鍵を用いて暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDを、前記情報処理装置に送信し、前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から固有IDの読出し要求を受信した場合、ID記憶手段に記憶されている前記デバイスに固有の前記固有IDを、前記乱数を鍵として用いて暗号化して前記情報処理装置へ送信するステップを含み、前記情報処理装置は、前記デバイスから受信した前記通信IDを、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶し、前記通信IDを、前記デバイスとの間で事前に共有されている秘密鍵を用い復号することで前記乱数を取得し、前記デバイスから前記通信IDを受信した後、前記デバイスに固有の固有IDを読み出す必要がある場合、前記固有IDの読出し要求を前記デバイスに送信し、前記読出し要求に応じて前記デバイスから受信した、前記固有IDが前記乱数で暗号化された情報を復号することで、前記デバイスの前記固有IDを取得し、前記取得された乱数を前記デバイスとの通信における鍵として用い、情報を暗号化し、前記デバイスへ送信するステップを含む通信方法である。
【００１２】
本発明の第１の側面においては、デバイスにより、乱数が生成され、生成された前記乱数を、情報処理装置との間で事前に共有されている秘密鍵を用いて暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDが、前記情報処理装置に送信され、前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から固有IDの読出し要求を受信した場合、ID記憶手段に記憶されている前記デバイスに固有の前記固有IDが、前記乱数を鍵として用いて暗号化されて、前記情報処理装置へ送信される。また、前記デバイスから受信した通信IDが、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶され、前記通信IDを、前記デバイスとの間で事前に共有されている秘密鍵を用い復号することで前記乱数が取得され、前記デバイスから前記通信IDを受信した後、前記デバイスに固有の固有IDを読み出す必要がある場合、前記固有IDの読出し要求が前記デバイスに送信され、前記読出し要求に応じて前記デバイスから受信した、前記固有IDが前記乱数で暗号化された情報を復号することで、前記デバイスの前記固有IDが取得され、前記取得された乱数が前記デバイスとの通信における鍵として用いて、情報が暗号化され、前記デバイスへ送信される。
【００１３】
本発明の第２の側面のデバイスは、所定の距離の範囲内において、情報処理装置と無線通信を行うデバイスであって、第１の乱数を生成する乱数生成手段と、与えられた鍵に基づいて情報を暗号化または復号するデバイス暗号化手段と、前記デバイス暗号化手段による暗号化または復号に用いられ、前記情報処理装置との間で事前に共有されている秘密鍵を記憶するデバイス秘密鍵記憶手段と、前記乱数生成手段により生成された前記第１の乱数を、前記秘密鍵を用いて前記デバイス暗号化手段により暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDを、前記情報処理装置に送信する通信ID送信手段と、前記デバイスに固有の固有IDを記憶するID記憶手段と、前記乱数生成手段により生成された前記第１の乱数を前記情報処理装置との通信における鍵として用い、前記デバイス暗号化手段を制御して情報を暗号化し、前記情報処理装置へ送信するデバイス送信処理手段とを備え、前記デバイス送信処理手段は、前記通信ID送信手段が前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から前記固有IDの読出し要求を受信した場合、前記ID記憶手段に記憶されている前記固有IDを、前記乱数生成手段により生成された前記第１の乱数を鍵として用いて前記デバイス暗号化手段で暗号化して前記情報処理装置に送信するデバイスである。
【００１４】
前記通信の方式は、ISO/IEC 18092として規定されるNFCIP（Near Field Communication - Interface and Protocol）-1であり、前記通信ID送信手段が送信する前記通信IDは、NFCIP-1において、RF衝突回避の際及び単一デバイス探知処理に用いられるNFC識別子として機能させることができる。
【００１６】
前記情報処理装置との通信において、前記情報処理装置に前記固有IDを暗号化して送信したか否かを判定する判定手段をさらに備え、前記判定手段により、前記情報処理装置に前記固有IDを暗号化して送信したと判定された場合、前記デバイス送信処理手段は、前記情報処理装置へ送信する情報を前記第１の乱数で暗号化することができる。
【００１７】
前記デバイス送信処理手段は、前記乱数生成手段により生成された前記第１の乱数に加えて、前記情報処理装置から送信されるポーリングか、または、前記ポーリングの次の送信のときに前記情報処理装置から前記秘密鍵で暗号化されて送信されてくる第２の乱数も鍵として用い、前記デバイス暗号化手段を制御して情報を暗号化または復号し、前記情報処理装置へ送信することができる。
【００１９】
本発明の第２の側面のプログラムは、所定の距離の範囲内において、無線通信を行うデバイスおよび情報処理装置により構成される通信システムのデバイスのCPUに通信処理を実行させるプログラムであって、乱数の生成を制御し、前記乱数を、前記情報処理装置との間で事前に共有されて前記デバイスの記憶部に記憶されている秘密鍵を用いて暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDを、前記情報処理装置へ送信する制御をし、前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から固有IDの読出し要求を受信した場合、前記記憶部に記憶されている前記デバイスに固有の前記固有IDを、前記乱数を鍵として用いて暗号化して前記情報処理装置へ送信する制御をするステップを含むコンピュータが読み取り可能なプログラムである。
【００２０】
本発明の第２の側面においては、乱数が生成され、生成された前記乱数を、情報処理装置との間で事前に共有されている秘密鍵を用いて暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDが、前記情報処理装置に送信され、前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から固有IDの読出し要求を受信した場合、記憶されているデバイスに固有の前記固有IDが、前記乱数を鍵として用いて暗号化されて前記情報処理装置へ送信される。
【００２１】
本発明の第３の側面の情報処理装置は、所定の距離の範囲内においてデバイスと無線通信を行う情報処理装置であって、与えられた鍵に基づいて情報を暗号化または復号する装置暗号化手段と、前記装置暗号化手段による暗号化または復号に用いられ、前記デバイスとの間で事前に共有されている秘密鍵を記憶する装置秘密鍵記憶手段と、前記デバイスから受信した、前記デバイスが第１の乱数を前記秘密鍵を用い暗号化し生成した通信IDを、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶する通信ID記憶手段と、前記通信IDを、前記秘密鍵を用い、前記装置暗号化手段を制御して復号することで前記第１の乱数を取得する乱数取得手段と、前記乱数取得手段により取得された前記第１の乱数を前記デバイスとの通信における鍵として用い、前記装置暗号化手段を制御して情報を暗号化し、前記デバイスへ送信する装置送信処理手段とを備え、前記デバイスから前記通信IDを受信した後、前記デバイスに固有の固有IDを読み出す必要がある場合、前記固有IDの読出し要求を前記デバイスに送信し、前記読出し要求に応じて前記デバイスから受信した、前記固有IDが前記乱数で暗号化された情報を、前記装置暗号化手段を制御して復号することで、前記デバイスの前記固有IDが取得される情報処理装置である。
【００２２】
前記通信の方式は、ISO/IEC 18092として規定されるNFCIP（Near Field Communication - Interface and Protocol）-1であり、前記通信ID記憶手段は、前記通信IDを、NFCIP-1において、RF衝突回避の際及び単一デバイス探知処理に用いられるNFC識別子として記憶することができる。
【００２３】
第２の乱数を生成する乱数生成手段をさらに備え、前記装置送信処理手段は、ポーリングか、または、前記ポーリングの次の送信のときに前記第２の乱数を前記秘密鍵で暗号化して前記デバイスに送信するとともに、前記乱数取得手段により取得された前記第１の乱数に加えて前記第２の乱数も鍵として用い、前記装置暗号化手段を制御して情報を暗号化し、前記デバイスへ送信するようにすることができる。
【００２６】
本発明の第３の側面のプログラムは、所定の距離の範囲内において無線通信を行うデバイスおよび情報処理装置により構成される通信システムの情報処理装置のCPUに情報処理を実行させるプログラムであって、前記デバイスから受信した、前記デバイスとの間で事前に共有されている秘密鍵を用い前記デバイスが乱数を暗号化し生成した通信IDを、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶するように制御し、前記通信IDを、前記情報処理装置の記憶部に記憶されている前記秘密鍵を用い復号することで前記乱数の取得を制御し、前記デバイスから前記通信IDを受信した後、前記デバイスに固有の固有IDを読み出す必要がある場合、前記固有IDの読出し要求を前記デバイスに送信し、前記デバイスから受信した、前記固有IDが前記乱数で暗号化された情報を復号することで、前記デバイスの前記固有IDが取得され、取得された前記乱数を前記デバイスとの通信における鍵として用い、情報を暗号化し、前記デバイスへ送信する制御を行うステップを含むコンピュータが読み取り可能なプログラムである。
【００２７】
本発明の第３の側面においては、デバイスから受信した、前記デバイスとの間で事前に共有されている秘密鍵を用い前記デバイスが乱数を暗号化し生成した通信IDが、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶され、前記通信IDを、前記秘密鍵を用い復号することで前記乱数が取得され、前記デバイスから前記通信IDを受信した後、前記デバイスに固有の固有IDを読み出す必要がある場合、前記固有IDの読出し要求が前記デバイスに送信され、前記デバイスから受信した、前記固有IDが前記乱数で暗号化された情報を復号することで、前記デバイスの前記固有IDが取得され、前記取得された乱数を前記デバイスとの通信における鍵として用い、情報が暗号化され、前記デバイスへ送信される。
【００２８】
本発明の第４の側面の通信システムは、所定の距離の範囲内において無線通信を行うデバイスおよび情報処理装置により構成される通信システムであって、前記デバイスは、第１の乱数を生成するデバイス乱数生成手段と、与えられた鍵に基づいて情報を暗号化または復号するデバイス暗号化手段と、前記デバイス暗号化手段による暗号化または復号に用いられ、前記情報処理装置との間で事前に共有されている秘密鍵を記憶するデバイス秘密鍵記憶手段と、前記デバイス乱数生成手段により生成された前記第１の乱数を、前記秘密鍵を用いて前記デバイス暗号化手段により暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDを、前記情報処理装置に送信する通信ID送信手段と、前記デバイスに固有の固有IDを記憶するID記憶手段と、前記情報処理装置から前記秘密鍵で暗号化されて送信されてくる第２の乱数と、前記デバイス乱数生成手段により生成された前記第１の乱数とを前記情報処理装置との通信における鍵として用い、前記デバイス暗号化手段を制御して情報を暗号化し、前記情報処理装置へ送信するデバイス送信処理手段とを備え、前記デバイス送信処理手段は、前記通信ID送信手段が前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から前記固有IDの読出し要求を受信した場合、前記ID記憶手段に記憶されている前記固有IDを、前記第１の乱数及び前記第２の乱数を鍵として用いて前記デバイス暗号化手段で暗号化して前記情報処理装置に送信し、前記情報処理装置は、前記第２の乱数を生成する装置乱数生成手段と、与えられた鍵に基づいて情報を暗号化または復号する装置暗号化手段と、前記装置暗号化手段による暗号化または復号に用いられ、前記デバイスとの間で事前に共有されている秘密鍵を記憶する装置秘密鍵記憶手段と、前記デバイスから受信した前記通信IDを、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶する通信ID記憶手段と、前記通信IDを、前記秘密鍵を用い、前記装置暗号化手段を制御して復号することで前記第１の乱数を取得する乱数取得手段と、前記第２の乱数を前記秘密鍵で暗号化して前記デバイスに送信するとともに、前記乱数取得手段により取得された前記第１の乱数と前記第２の乱数を前記デバイスとの通信における鍵として用い、前記装置暗号化手段を制御して情報を暗号化し、前記デバイスへ送信する装置送信処理手段とを備え、前記装置送信処理手段は、前記デバイスから前記通信IDを受信した後、前記デバイスの前記固有IDを読み出す必要がある場合、前記固有IDの読出し要求を前記デバイスに送信し、前記情報処理装置において、前記読出し要求に応じて前記デバイスから受信した、前記固有IDが前記第１の乱数及び前記第２の乱数で暗号化された情報を、前記装置暗号化手段を制御して復号することで、前記デバイスの前記固有IDが取得される通信システムである。
【００３０】
本発明の第４の側面においては、デバイスにより、第１の乱数が生成され、生成された前記第１の乱数を、情報処理装置との間で事前に共有されている秘密鍵を用いて暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDが、前記情報処理装置に送信され、前記情報処理装置から前記秘密鍵で暗号化されて送信されてくる第２の乱数と、生成された前記第１の乱数とを前記情報処理装置との通信における鍵として用い、情報が暗号化され、前記情報処理装置へ送信される。また、前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から前記固有IDの読出し要求を受信した場合、ID記憶手段に記憶されている前記固有IDが、前記第１の乱数及び前記第２の乱数を鍵として用いて暗号化されて前記情報処理装置に送信される。また、前記情報処理装置により、前記第２の乱数が生成され、前記通信IDが、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶され、前記通信IDを、前記デバイスとの間で事前に共有されている秘密鍵を用い復号することで前記第１の乱数が取得され、前記第２の乱数が前記秘密鍵で暗号化されて前記デバイスに送信されるとともに、取得された前記第１の乱数と前記第２の乱数を前記デバイスとの通信における鍵として用い、情報が暗号化され、前記デバイスへ送信される。また、前記デバイスから前記通信IDを受信した後、前記デバイスの前記固有IDを読み出す必要がある場合、前記固有IDの読出し要求が前記デバイスに送信され、前記情報処理装置において、前記読出し要求に応じて前記デバイスから受信した、前記固有IDが前記第１の乱数及び前記第２の乱数で暗号化された情報を復号することで、前記デバイスの前記固有IDが取得される。
【発明の効果】
【００３１】
本発明によれば、簡単な構成で安全かつ利便性の高い情報通信を行うことができる。
【発明を実施するための最良の形態】
【００３２】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００３３】
本発明の第１の側面の通信システムは、所定の距離の範囲内において無線通信を行うデバイス（例えば、図１のICカード２００）および情報処理装置（例えば、図１のリーダライタ１００）により構成される通信システムであって、前記デバイスは、乱数を生成する乱数生成手段（例えば、図１の乱数生成部２０２）と、与えられた鍵に基づいて情報を暗号化または復号するデバイス暗号化手段（例えば、図１の暗号演算部２０８）と、前記デバイス暗号化手段による暗号化または復号に用いられ、前記情報処理装置との間で事前に共有されている秘密鍵を記憶するデバイス秘密鍵記憶手段（例えば、図１の秘密鍵記憶部２０３）と、前記乱数生成手段により生成された乱数を、前記秘密鍵を用いて前記デバイス暗号化手段により暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDを、前記情報処理装置に送信する通信ID送信手段（例えば、図４のステップＳ１０３の処理を実行する図１のCPU２０７）と、前記デバイスに固有の固有IDを記憶するID記憶手段（例えば、図１のＩＤ記憶部２０４）と、前記乱数生成手段により生成された乱数を前記情報処理装置との通信における鍵として用い、前記デバイス暗号化手段を制御して情報を暗号化し、前記情報処理装置へ送信するデバイス送信処理手段（例えば、図４のステップＳ１０８、またはステップＳ１１０の処理を実行する図１のCPU２０７）とを備え、前記デバイス送信処理手段は、前記通信ID送信手段が前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から前記固有IDの読出し要求を受信した場合、前記ID記憶手段に記憶されている前記固有IDを、前記乱数生成手段により生成された前記乱数を鍵として用いて前記デバイス暗号化手段で暗号化して前記情報処理装置に送信し、前記情報処理装置は、与えられた鍵に基づいて情報を暗号化または復号する装置暗号化手段（例えば、図１の暗号演算部２０８）と、前記装置暗号化手段による暗号化または復号に用いられ、前記デバイスとの間で事前に共有されている秘密鍵を記憶する装置秘密鍵記憶手段（例えば、図１の秘密鍵記憶部２０３）と、前記デバイスから受信した前記通信IDを、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶する通信ID記憶手段（例えば、図６のステップＳ３３２の処理を実行する図１のCPU１０５）と、前記通信IDを、前記秘密鍵を用い、前記装置暗号化手段を制御して復号することで前記乱数を取得する乱数取得手段（例えば、図６のステップＳ３３４の処理を実行する図１のCPU１０５）と、前記乱数取得手段により取得された乱数を前記デバイスとの通信における鍵として用い、前記装置暗号化手段を制御して情報を暗号化し、前記デバイスへ送信する装置送信処理手段（例えば、図４のステップＳ２０６、Ｓ２０９、またはＳ２１０の処理を実行する図１のCPU１０５）とを備え、前記装置送信処理手段は、前記デバイスから前記通信IDを受信した後、前記デバイスの前記固有IDを読み出す必要がある場合、前記固有IDの読出し要求を前記デバイスに送信し、前記情報処理装置において、前記読出し要求に応じて前記デバイスから受信した、前記固有IDが前記乱数で暗号化された情報を、前��装置暗号化手段を制御して復号することで、前記デバイスの前記固有IDが取得される。
【００３４】
本発明の第１の側面の通信方法は、所定の距離の範囲内において無線通信を行うデバイス（例えば、図１のICカード２００）および情報処理装置（例えば、図１のリーダライタ１００）により構成される通信システムの通信方法であって、前記デバイスは、乱数を生成し（例えば、図５のステップＳ３０１の処理）、前記乱数を、前記情報処理装置との間で事前に共有されている秘密鍵を用いて暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDを、前記情報処理装置に送信し（例えば、図４のステップＳ１０３の処理）、前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から固有IDの読出し要求を受信した場合、ID記憶手段に記憶されている前記デバイスに固有の前記固有IDを、前記乱数を鍵として用いて暗号化して前記情報処理装置へ送信する（例えば、図４のステップＳ１０６の処理）ステップを含み、前記情報処理装置は、前記デバイスから受信した前記通信IDを、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶し（例えば、図６のステップＳ３３２の処理）、前記通信IDを、前記デバイスとの間で事前に共有されている秘密鍵を用い復号することで前記乱数を取得し（例えば、図６のステップＳ３３４の処理）、前記デバイスから前記通信IDを受信した後、前記デバイスに固有の固有IDを読み出す必要がある場合、前記固有IDの読出し要求を前記デバイスに送信し、前記読出し要求に応じて前記デバイスから受信した、前記固有IDが前記乱数で暗号化された情報を復号することで、前記デバイスの前記固有IDを取得し（例えば、図４のステップＳ２０６の処理）、前記取得された乱数を前記デバイスとの通信における鍵として用い、情報を暗号化し、前記デバイスへ送信する（例えば、図４のステップＳ２１１の処理）ステップを含む。
【００３５】
本発明の第２の側面のデバイスは、所定の距離の範囲内において、情報処理装置（例えば、図１のリーダライタ１００）と無線通信を行うデバイス（例えば、図１のICカード２００）であって、第１の乱数を生成する乱数生成手段（例えば、図１の乱数生成部２０２）と、与えられた鍵に基づいて情報を暗号化または復号するデバイス暗号化手段（例えば、図１の暗号演算部２０８）と、前記デバイス暗号化手段による暗号化または復号に用いられ、前記情報処理装置との間で事前に共有されている秘密鍵を記憶するデバイス秘密鍵記憶手段（例えば、図１の秘密鍵記憶部２０３）と、前記乱数生成手段により生成された前記第１の乱数を、前記秘密鍵を用いて前記デバイス暗号化手段により暗号化し生成された、前記情報処理装置との通信において通信相手を一意に識別するために利用される通信IDを、前記情報処理装置に送信する通信ID送信手段（例えば、図４のステップＳ１０３の処理を実行する図１のCPU２０７）と、前記デバイスに固有の固有IDを記憶するID記憶手段（例えば、図１のＩＤ記憶部２０４）と、前記乱数生成手段により生成された前記第１の乱数を前記情報処理装置との通信における鍵として用い、前記デバイス暗号化手段を制御して情報を暗号化し、前記情報処理装置へ送信するデバイス送信処理手段（例えば、図４のステップＳ１０８、ステップＳ１０９の処理を実行する図１のCPU２０７）とを備え、前記デバイス送信処理手段は、前記通信ID送信手段が前記通信IDを前記情報処理装置に送信した後に前記情報処理装置から前記固有IDの読出し要求を受信した場合、前記ID記憶手段に記憶されている前記固有IDを、前記乱数生成手段により生成された前記第１の乱数を鍵として用いて前記デバイス暗号化手段で暗号化して前記情報処理装置に送信する。
【００３６】
このデバイスは、前記通信の方式が、ISO/IEC 18092として規定されるNFCIP（Near Field Communication - Interface and Protocol）-1であり、前記通信ID送信手段が送信する前記通信IDは、NFCIP-1において、RF衝突回避の際及び単一デバイス探知処理に用いられるNFC識別子（例えば、図３のNFCID２）として機能させることができる。
【００３８】
このデバイスは、前記情報処理装置との通信において、前記情報処理装置に前記固有IDを暗号化して送信したか否かを判定する判定手段（例えば、図２のステップＳ２９の処理を実行する図１のCPU２０７）をさらに備え、前記判定手段により、前記情報処理装置に前記固有IDを暗号化して送信したと判定された場合、前記デバイス送信処理手段は、前記情報処理装置へ送信する情報を、前記第１の乱数で暗号化することができる。
【００４０】
本発明の第３の側面の情報処理装置は、所定の距離の範囲内においてデバイス（例えば、図１のICカード２００）と無線通信を行う情報処理装置（例えば、図１のリーダライタ１００）であって、与えられた鍵に基づいて情報を暗号化または復号する装置暗号化手段（例えば、図１の暗号演算部２０８）と、前記装置暗号化手段による暗号化または復号に用いられ、前記デバイスとの間で事前に共有されている秘密鍵を記憶する装置秘密鍵記憶手段（例えば、図１の秘密鍵記憶部２０３）と、前記デバイスから受信した、前記デバイスが第１の乱数を前記秘密鍵を用い暗号化し生成した通信IDを、前記デバイスとの通信において通信相手を一意に識別するために利用される識別子として記憶する通信ID記憶手段（例えば、図６のステップＳ３３２の処理を実行する図１のCPU１０５）と、前記通信IDを、前記秘密鍵を用い、前記装置暗号化手段を制御して復号することで前記第１の乱数を取得する乱数取得手段（例えば、図６のステップＳ３３４の処理を実行する図１のCPU１０５）と、前記乱数取得手段により取得された前記第１の乱数を前記デバイスとの通信における鍵として用い、前記装置暗号化手段を制御して情報を暗号化し、前記デバイスへ送信する装置送信処理手段（例えば、図４のステップＳ２０６、Ｓ２０７の処理を実行する図１のCPU１０５）とを備え、前記デバイスから前記通信IDを受信した後、前記デバイスに固有の固有IDを読み出す必要がある場合、前記固有IDの読出し要求を前記デバイスに送信し、前記読出し要求に応じて前記デバイスから受信した、前記固有IDが前記乱数で暗号化された情報を、前記装置暗号化手段を制御して復号することで、前記デバイスの前記固有IDが取得される。
【００４１】
この情報処理装置は、前記通信の方式が、ISO/IEC 18092として規定されるNFCIP（Near Field Communication - Interface and Protocol）-1であり、前記通信ID記憶手段は、前記通信IDを、NFCIP-1において、RF衝突回避の際及び単一デバイス探知処理に用いられるNFC識別子（例えば、図３のNFCID２）として記憶することができる。
【００４３】
以下、図面を参照して、本発明の実施の形態について説明する。
【００４４】
図１は、本発明を適用した通信システム５０の一実施形態における構成例を示すブロック図である。同図において、通信システム５０は、リーダライタ１００と、ICカード２００とにより構成されており、リーダライタ１００と、ICカード２００とは、例えば、それぞれが有するアンテナなどを介して無線による通信を行う。
【００４５】
リーダライタ１００の入出力部１０２は、所定の電磁波を輻射し、それに対する負荷の変化に基づいて、ICカード２００が近接されたか否かを検出するとともに、例えば、ICカード２００が近接されたとき、ICカード２００と各種のデータを送受信するアンテナを有する構成とされる。入出力部１０２は、例えば、発振回路（OSC）から供給される所定の周波数の搬送波を、CPU１０５から供給されるデータに基づいて、ASK（Amplitude Shift Keying）変調し、生成された変調波を、電磁波としてアンテナから出力する。また、アンテナを介して取得した変調波（ASK変調波）を復調し、復調されたデータをCPU１０５に供給する。
【００４６】
リーダライタ１００のCPU（Central Processing Unit）１０５は、ROM（Read Only Memory）１０４に記憶されているプログラムを、RAM（Random Access Memory）１０３にロードするなどして各種の処理を実行する。RAM１０３にはまた、CPU１０５が各種の処理を実行する上において必要なデータなども適宜記憶される。
【００４７】
CPU１０５は、暗号演算部１０６を制御することにより、予め定められた暗号アルゴリズムに基づく、データの暗号化と復号を行うことができるように構成されている。ここで、暗号演算部１０６の暗号アルゴリズムは、ＤＥＳ（Data Encryption Standard）、トリプルＤＥＳ、AES（Advanced Encryption Standard）などの暗号アルゴリズムであって、いわゆる秘密鍵（共通鍵）暗号方式の暗号アルゴリズムとされる。
【００４８】
リーダライタ１００においてデータの暗号化または復号を行う場合、例えば、CPU１０５が秘密鍵記憶部１０１に記憶された秘密鍵を、暗号化または復号すべきデータとともに、暗号演算部１０６に供給することにより、暗号演算部１０６による、供給された秘密鍵を用いた、供給されたデータの暗号化または復号が実行される。
【００４９】
秘密鍵記憶部１０１に記憶される秘密鍵は、ICカード２００の秘密鍵記憶部２０３に記憶されている秘密鍵を同じものとされ、ICカード２００に対応するリーダライタ１００であって、ICカード２００に固有のＩＤであるカードＩＤの読み出しを許可されたリーダライタ１００のみに、予め秘密鍵が記憶されている。
【００５０】
ICカード２００の入出力部２０１は、例えば、コイル状のアンテナとコンデンサにより構成されるLC回路を有する構成とされ、ＬＣ回路が近傍に配置されたリーダライタ１００から輻射される所定の周波数の電磁波と共振するようになされている。また、入出力部２０１は、アンテナにおいて励起された交流磁界をASK復調により整流し、それを安定化し、各部に直流電源として供給する。リーダライタ１００から輻射される電磁波の電力は、ICカード２００に必要な電力を賄う磁界を発生させるように調整されている。
【００５１】
また、入出力部２０１は、アンテナを介して受信した変調波（ASK変調波）を包絡線検波して復調し、復調後のデータをBPSK（Binary Phase Shift Keying）復調してCPU２０７に供給するとともに、受信信号のクロック周波数と同一の周波数のクロック信号を発生してCPU２０７に供給する。
【００５２】
さらに、入出力部２０１は、所定の情報をリーダライタ１００に送信する場合、CPU２０７から供給されBPSK変調されたデータを、例えばアンテナの負荷の変動に基づいてASK変調し、その変調成分を、アンテナを介してリーダライタ１００に送信する。
【００５３】
ICカード２００のCPU２０７は、ROM２０６に記憶されているプログラムを実行するなどして各種の処理を実行する。秘密鍵記憶部２０３乃至データ記憶部２０５は、例えば、EEPROM（Electrically Erasable Programmable Read-Only Memory）などで構成され、それぞれがEEPROMの記憶領域の一部とされる。
【００５４】
CPU２０７は、暗号演算部２０８を制御することにより、予め定められた暗号アルゴリズムに基づく、データの暗号化と復号を行うことができるように構成されている。ここで、暗号演算部２０８の暗号アルゴリズムは、暗号演算部１０６の暗号アルゴリズムと同じアルゴリズムとされ、やはり秘密鍵（共通鍵）暗号方式の暗号アルゴリズムとされる。
【００５５】
ICカード２００においてデータの暗号化または復号を行う場合、例えば、CPU２０７が秘密鍵記憶部２０３に記憶された秘密鍵を、暗号化または復号すべきデータとともに、暗号演算部２０８に供給することにより、暗号演算部２０８による、供給された秘密鍵を用いた、供給されたデータの暗号化または復号が実行される。
【００５６】
乱数生成部２０２は、必要に応じて所定のけた数の乱数を発生する。詳細については後述するが、この乱数は、ICカード２００とリーダライタ１００との間で行われる通信において、両者が通信相手を相互に識別しあうためのセッションＩＤ、およびそのセッションにおいて送受信されるデータの暗号化または復号に用いられるセッション鍵として利用されることになる。
【００５７】
ＩＤ記憶部２０４は、ICカード２００に固有の識別情報であるカードＩＤを記憶する。
【００５８】
データ記憶部２０５は、ICカード２００を用いて行われる各種サービスなどを提供するためのアプリケーションデータなどが必要に応じて記憶される。
【００５９】
なお、暗号演算部１０６と暗号演算部２０８は、それぞれソフトウェアとして構成されるようにすることも可能である。
【００６０】
上述したように、リーダライタ１００とICカード２００は、無線による通信を行うので、同時に二つ以上のICカード又はリーダライタが電波を送出し、その結果、ICカード又はリーダライタがどの対象から電波が発せられたものであるかを区別できなくなるという、いわゆる衝突が懸念されるが、通信システム５０におけるリーダライタ１００とICカード２００のそれぞれは、リーダライタと通信可能な範囲にあるICカードやRFIDを識別することが可能な通信方式であるNFCIP（Near Field Communication - Interface and Protocol）-1に適合する通信を行う。
【００６１】
NFCIP-1には、他のNFCIP-1デバイスの通信ならびに同帯域で通信している他の装置による通信との両立を図るため、RF検知と衝突回避の仕組が盛り込まれており、NFC識別子（NFCID（NFC Identifier））と呼ばれるRF衝突回避の際及び単一デバイス探知処理に用いられる乱数を利用したNFCデバイスの識別子が用いられる。例えば、従来の通信システムにおいては、ICカードの固有のIDをリーダライタに送信し、リーダライタがそのIDに基づいて個々のICカードを識別することで衝突の防止を図るものも多いが、NFCIP-1ではICカードに固有のIDをリーダライタに送信する必要はない。
【００６２】
従って、通信システム５０においては、ICカード２００に固有のカードIDをリーダライタ１００に送信しなくも、リーダライタ１００とICカード２００がそれぞれ通信相手を一意に識別し、衝突を防止することが可能となる。
【００６３】
なお、NFCIP-1については、ISO/IEC18092にその詳細が記述されている。
【００６４】
以降においては、リーダライタ１００がNFCIP-1に規定されるイニシエータとして動作し、ICカード２００がNFCIP-1に規定されるターゲットとして動作する場合を例として説明する。また、NFCIP-1の受動通信モードにおいては、イニシエータとターゲットのそれぞれが106 kb/sの伝送速度に対応している場合と、212 kb/sまたは424 kb/sの伝送速度に対応している場合について規定されているが、ここでは主に、イニシエータとターゲットのそれぞれが212 kb/sまたは424 kb/sの伝送速度に対応している場合を想定して説明する。
【００６５】
ところで、上述したように、通信システム５０においては、NFCIP-1による無線通信が行われ、ICカード２００に固有のカードIDがリーダライタ１００に送信されず、ユーザのプライバシーを尊重した通信システムを提供することが可能となるが、ICカードを用いて提供されるサービスにおいては、やはり個々のICカードを一意に識別する仕組みが必要となる場合もある。このため、本発明のICカード２００においては、必要に応じてICカード２００に固有のカードIDをリーダライタ１００に送信する機能が実装されている。
【００６６】
図２は、図1のICカード２００による通信処理の例を説明するフローチャートである。この処理は、例えば、ICカード２００がリーダライタ１００のアンテナの近傍に位置し、入出力部２０１のアンテナにおいて励起された交流磁界により生成される電力がICカード２００の各部に供給されたとき実行される。
【００６７】
ステップＳ２１において、乱数生成部２０２は、乱数を生成する。ここで生成された乱数は、例えば、データ記憶部２０５の中の予め設定された所定の領域に記憶される。
【００６８】
ステップＳ２２において、暗号演算部２０８は、ステップＳ２１の処理で生成された乱数を、秘密鍵記憶部２０３に保持されている秘密鍵で暗号化し、通信IDを生成する。
【００６９】
ステップＳ２３において、CPU２０７は、リーダライタ１００からのポーリングを受信したか否かを判定し、ポーリングを受信したと判定されるまで待機する。ステップＳ２３において、リーダライタ１００からのポーリングを受信したと判定された場合、処理は、ステップＳ２４に進む。
【００７０】
ステップＳ２４において、CPU２０７は、ステップＳ２３で受信したと判定されたポーリングに対する応答であって、ステップＳ２２の処理で生成された通信IDを含む応答をリーダライタ１００に送信する。
【００７１】
図３は、このとき送信される応答のデータが格納されるフレームであって、NFCIP-1で規定される応答フレームのフォーマットを示す図である。なお、同図は、NFCIP-1において規定されるフレームであって、イニシエータとターゲットのそれぞれが212 kb/sまたは424 kb/sの伝送速度に対応している場合の、イニシエータからのポーリングに対応して送出されるターゲットからの応答フレームのフォーマット（構成）を示している。
【００７２】
同図に示されるフィールド「プリアンブル」には、すべて論理“0”で48 ビット以上のデータが格納される。フィールド「同期パターン」には、イニシエータとターゲットとの間の通信の同期に用いられる2バイト（１６ビット）のデータが格納される。フィールド「長さ」は、値として“12”を示す８ビットのデータが格納される。フィールド「ペイロード」は、開始バイトが“01”とされ、8バイトのNFCID2及び8バイトのPadを含んだデータが格納される。CRC（Cyclic Redundancy Check）は、誤り検出に用いられるデータであって、予め定められた方式で計算されたデータが格納される。
【００７３】
ステップＳ２４においては、上述した通信IDがフィールド「ペイロード」に含まれるNFCID２として格納され、応答フレームが送信されることになる。
【００７４】
また、上述したように通信IDは、暗号化された乱数であるが、ICカード２００に対応するリーダライタ１００であって、ICカード２００のカードＩＤを読み出すことを許可されたリーダライタ１００には、予め秘密鍵記憶部１０１に秘密鍵記憶部２０３に保持されている鍵と同じ鍵が保持されているので、リーダライタ１００では、ステップＳ２４の処理で送信された応答フレームのNFCID２の値（通信ID）を復号することで、ステップＳ２１の処理でICカード２００が生成した乱数を取得することができる。
【００７５】
図２に戻って、ステップＳ２４の処理の後、ステップＳ２５において、CPU２０７は、リーダライタ１００からコマンドを受信したか否かを判定し、コマンドを受信したと判定されるまで待機する。リーダライタ１００は、ICカード２００に記憶されているデータを読み出したり、ICカード２００にデータを書き込んだりするために、所定のコマンドをICカード２００に送信する。ステップＳ２５において、リーダライタ１００からのコマンドを受信したと判定された場合、処理は、ステップＳ２６に進む。
【００７６】
ステップＳ２６において、CPU２０７は、ステップＳ２５の処理で受信したと判定されたコマンドが、ICカード２００に固有のカードIDの送信を要求するコマンドであるか否かを判定する。ステップＳ２６において、当該コマンドが、カードIDの送信を要求するコマンドであると判定された場合、処理は、ステップＳ２７に進む。
【００７７】
ステップＳ２７において、CPU２０７は、暗号化フラグをＯＮに設定する。これにより、以降の処理では、送信されるデータの暗号化が行われることになる。なお、暗号化フラグは、例えば、データ記憶部２０５の中の予め設定された所定の領域のビットとされ、初期値は「０（OFF）」とされており、一度暗号化フラグがONに設定されると、ICカード２００の電力の供給が停止されるまで、すなわちICカード２００がリーダライタ１００と通信可能な範囲外に移動させられるまで、暗号化フラグONの状態が保持される。
【００７８】
ステップＳ２８において、CPU２０７は、ID記憶部２０４に記憶されているカードIDを読出し、暗号演算部２０８を制御してそのカードIDを、ステップＳ２１の処理で生成された乱数を鍵として暗号化させ、暗号化されたカードIDをリーダライタ１００に送信する。すなわち、リーダライタ１００からカードIDの送信要求があった場合、カードＩＤが乱数を鍵として暗号化されてリーダライタ１００に送信される。
【００７９】
なお、リーダライタ１００では、上述したように乱数を取得することが可能なので、ステップＳ２８の処理で送信されたデータを復号してカードＩＤを取得することができる。
【００８０】
ステップＳ２８の処理の後、処理は、ステップＳ２５に戻り、再びステップＳ２５とＳ２６の処理が実行される。ステップＳ２６の処理による判定結果として、当該コマンドが、カードIDの送信を要求するコマンドではないと判定された場合、処理は、ステップＳ２９に進む。いまの場合、例えば、リーダライタ１００から受信したコマンドがデータ記憶部２０５に記憶されている所定のデータの読出し要求であったものとする。
【００８１】
ステップＳ２９において、CPU２０７は、暗号化フラグがＯＮであるか否かを判定する。ステップＳ２９において、暗号化フラグはＯＮであると判定された場合、処理は、ステップＳ３０に進む。
【００８２】
ステップＳ３０において、CPU２０７は、ステップＳ２５の処理で受信したと判定されたコマンドを解析して、所定の処理を行い、その処理結果のデータを暗号化する。いまの場合、例えば、リーダライタ１００からのコマンドに対応してデータ記憶部２０５の所定の領域に記憶されたデータが読み出され、読み出されたデータが暗号演算部２０８により暗号化されることになる。なお、ここで暗号化に用いられる暗号鍵は、やはりステップＳ２１の処理で生成された乱数とされる。
【００８３】
ステップＳ３１において、CPU２０７は、ステップＳ３０の処理で暗号化されたデータをリーダライタ１００に送信する。ここで、送信されたデータが、リーダライタ１００により復号されることでICカード２００に記憶されていたデータがリーダライタ１００により読み出されたことになる。
【００８４】
一方、ステップＳ２９において、暗号化フラグがONではないと判定された場合、処理は、ステップＳ３２に進む。
【００８５】
ステップＳ３２において、CPU２０７は、ステップＳ２５の処理で受信したと判定されたコマンドを解析して、所定の処理を行い、その処理結果のデータを送信する。いまの場合、例えば、リーダライタ１００からのコマンドに対応してデータ記憶部２０５の所定の領域に記憶されたデータが読み出され、読み出されたデータがリーダライタ１００に対して送信される。
【００８６】
ここでは、リーダライタ１００からICカード２００に記憶されているデータを読み出すコマンドが受信された場合の例について説明したが、例えば、リーダライタ１００からICカード２００にデータを記憶させる（書き込む）コマンドが受信される場合、リーダライタ１００から、書き込むべきデータが送信され、ICカード２００においてそのデータを書き込むことになる。
【００８７】
ステップＳ３２の処理では、送信されるデータは暗号化されていないので、リーダライタは、受信したデータを復号する必要はない。すなわち、リーダライタ１００からカードIDの送信要求がない場合、暗号化フラグがONに設定されず、リーダライタ１００とICカード２００との間で送受信されるデータの暗号化は行われない。
【００８８】
ステップＳ３１またはＳ３２の処理の後、処理は、ステップＳ２５に戻り、それ以後の処理が、ICカード２００がリーダライタ１００と通信可能な範囲外に移動させられるまで繰り返し実行される。
【００８９】
このようにして、ICカードの通信処理が実行される。このようにすることで、リーダライタによりICカードを用いて提供されるサービスにおいて、個々のICカードを一意に識別する仕組みが必要となる場合、カードＩＤが暗号化されてリーダライタに送信されるので、予めICカードのカードＩＤを読み出すことが許可されているリーダライタ以外のリーダライタには、カードＩＤが取得できないようにすることができ、ユーザのプライバシーが尊重されたより安全な通信システムを提供することができる。
【００９０】
また、ICカードのカードＩＤを読み出すことが許可されていないリーダライタであっても、NFCIP-1の規定に適合する通信を行うリーダライタであれば、ICカードとの間でデータの送受信を行うことができ、リーダライタにより提供されるサービスにおいて個々のICカードを一意に識別する必要がない場合、問題なく処理を実行することが可能となる。
【００９１】
なお、図３の例では、イニシエータとターゲットのそれぞれが212 kb/sまたは424 kb/sの伝送速度に対応している場合であって、通信IDがNFCID2として用いられる例について説明したが、イニシエータとターゲットのそれぞれが106 kb/sの伝送速度に対応している場合は、通信IDがNFCIP-1に規定されるNFCID1として用いられることになる。
【００９２】
次に、図４のアローチャートを参照して、リーダライタ１００と、ICカード２００との間で行われる通信の詳細について説明する。ここでは、ICカード２００のカードIDの読出しを許可されているリーダライタ１００と、ICカード２００との間で、カードIDの読出しの後、データの読出しとデータの書込みが行われる例について説明する。
【００９３】
例えば、ICカード２００がリーダライタ１００のアンテナの近傍に位置し、入出力部２０１のアンテナにおいて励起された交流磁界により生成される電力がICカード２００の各部に供給されると、ICカード２００は、ステップＳ１０１の処理を実行し、乱数を生成する。
【００９４】
ここで、図５のフローチャートを参照して、図４のステップＳ１０１の処理である通信ID生成処理の詳細について説明する。
【００９５】
ステップＳ３０１において、乱数生成部２０２は、乱数Ａを生成（発生）する。
【００９６】
ステップＳ３０２において、CPU２０７は、ステップＳ３０１の処理で生成された乱数Ａを、例えば、データ記憶部２０５の中の予め定められた所定の領域に記憶する。
【００９７】
ステップＳ３０３において、暗号演算部２０８は、ステップＳ３０１の処理で生成された乱数Ａを、秘密鍵記憶部２０３に記憶されている鍵を用いて暗号化する。
【００９８】
ステップＳ３０４において、CPU２０７は、ステップＳ３０３の処理結果のデータ（すなわち、暗号化された乱数Ａ）を、通信IDとして、例えば、データ記憶部２０５の中の予め定められた所定の領域に記憶する。
【００９９】
なお、ステップＳ３０１乃至Ｓ３０４の処理は、図２のステップＳ２１とＳ２２に対応する（同等の）処理である。
【０１００】
図４に戻って、リーダライタ１００は、ステップＳ２０１において、自身が通信可能なICカード２００に対してポーリングを送信し、ステップＳ１０２でICカード２００により、これが受信される。
【０１０１】
ステップＳ１０３において、ICカード２００は、ステップＳ１０２の処理で受信されたポーリングに対する応答を、リーダライタ１００に送信する。このとき、図３を参照して上述したように、応答フレームの中の所定の領域に格納されるNFCID2としてステップＳ３０４の処理で記憶された通信IDがリーダライタ１００に送信される応答フレームの中に格納される。なお、ステップＳ１０２と１０３の処理は、図２のステップＳ２３とＳ２４に対応する（同等の）処理である。リーダライタ１００は、ステップＳ２０２で、この応答フレームを受信する。
【０１０２】
ステップＳ２０３において、リーダライタ１００は、ICカード２００から送信された応答フレームの通信IDを復号して乱数Aを取得する。
【０１０３】
ここで、図６のフローチャートを参照して、図４のステップＳ２０３の処理である乱数取得処理の詳細について説明する。
【０１０４】
ステップＳ３３１において、CPU１０５は、ステップＳ２０２の処理で受信したICカード２００からの応答フレームに含まれる通信ID（すなわち、暗号化された乱数A）を取得する。
【０１０５】
ステップＳ３３２において、CPU１０５は、例えば、RAM１０３の所定の領域に、ステップＳ３３１の処理で取得された通信IDを記憶する。
【０１０６】
ステップＳ３３３において、暗号演算部１０６は、ステップＳ３３１の処理で取得された通信IDであって、暗号化された乱数Aを、秘密鍵記憶部１０１に記憶されている鍵を用いて復号する。上述したように、暗号演算部１０６は、暗号演算部２０８と同じ暗号アルゴリズムで暗号または復号の処理を実行し、また、予めICカード２００のカードIDの読出しを許可されたリーダライタ１００の秘密鍵記憶部１０１には、秘密鍵記憶部２０３に記憶されている鍵と同じ鍵が記憶されている。したがって、ステップＳ３３３の処理により、ステップＳ３０１の処理でICカード２００が生成した乱数Aが復号されて取得されることになる。
【０１０７】
ステップＳ３３４において、CPU１０５は、ステップＳ３３３の処理により取得された乱数Aを、例えば、RAM１０３の所定の領域に記憶する。
【０１０８】
この後、リーダライタ１００と、ICカード２００は、通信IDに基づいて互いを一意に識別し、また、乱数Aを鍵として必要に応じてデータの暗号化または復号を行う。従って、ここまでの処理により、リーダライタ１００とICカード２００との間で、今回の通信（セッション）において必要となるセッションID（いまの場合、通信ID）と、セッション鍵（いまの場合、乱数A）を交換したことになる。
【０１０９】
図４に戻って、ステップＳ２０４において、リーダライタ１００は、ICカード２００に対してカードIDの読出しを要求するコマンドを含むフレームを送信する。このとき、ステップＳ３３２の処理で記憶されている通信IDが、ICカード２００がリーダライタ１００から送信されたフレームを一意に識別するための識別子として埋め込まれる。なお、NFCIP-1の規定に従い、通信IDは、NFCIP-1において規定される転送フレームの中のトランスポートデータフィールドの一部に埋め込まれることになる。そして、ステップＳ１０４で、ICカード２００により、このフレームが受信される。
【０１１０】
ステップＳ１０５において、ICカード２００は、リーダライタ１００から送信されたコマンドに対応する処理を実行する。いまの場合、カードIDの読出しコマンドに対応する処理が実行されることになる。
【０１１１】
ここで、図７のフローチャートを参照して、図４のステップＳ１０５の処理であるカードID送信処理の詳細について説明する。
【０１１２】
ステップＳ３６１において、CPU２０７は、ID記憶部２０４に記憶されているカードIDを読み出す。
【０１１３】
ステップＳ３６２において、暗号演算部２０８は、ステップＳ３６１の処理で読み出されたカードIDを、ステップＳ３０２の処理により記憶されている乱数Aを鍵として用い、暗号化する。
【０１１４】
ステップＳ３６３において、CPU２０７は、ステップＳ３６２の処理結果のデータ（暗号化されたカードID）を取得する。
【０１１５】
図４に戻って、ステップＳ１０５の処理の後、ステップＳ１０６において、ICカード２００は、ステップＳ３６３の処理で取得されたデータを含むフレームを、ステップＳ１０４で受信されたリーダライタ１００からのカードID読出しコマンドに対応する応答として送信する。このとき、やはりステップＳ３０４の処理で記憶されている通信IDが、リーダライタ１００がICカード２００から送信されたフレームを一意に識別するための識別子として埋め込まれることになる。なお、ステップＳ１０４乃至Ｓ１０６の処理は、図２のステップＳ２５乃至Ｓ２８に対応する（同等の）処理である。そして、図４のステップＳ２０５で、リーダライタ１００により、このフレームが受信される。
【０１１６】
また、ここでリーダライタ１００からのカードID読出し要求に対応してカードIDが読み出されたことで、ICカード２００において暗号化フラグがONとなり（図２のステップＳ２７の処理）、これ以後のデータの読出し、または書込みの処理においては、データが暗号化されて送受信されることになる。
【０１１７】
ステップＳ２０６において、リーダライタ１００は、暗号化されたカードIDを復号する。
【０１１８】
ここで、図８のフローチャートを参照して、図４のステップＳ２０６の処理であるカードID復号処理の詳細について説明する。
【０１１９】
ステップＳ３９１において、CPU１０５は、ステップＳ２０５で受信したフレームに含まれる暗号化されたデータを取得する。
【０１２０】
ステップＳ３９２において、暗号演算部１０６は、ステップＳ３９１の処理で取得されたデータを、ステップＳ３３４の処理で記憶されている乱数Aを鍵として用い、復号する。
【０１２１】
ステップＳ３９３において、CPU１０５は、ステップＳ３９２の処理結果のデータを、カードIDとして取得する。これにより、ICカード２００に固有のカードIDがリーダライタ１００により取得されたことになる。この後、リーダライタ１００は、必要に応じてカードIDを用いたサービスの提供に伴う処理を実行する。
【０１２２】
図４に戻って、ステップＳ２０６の処理の後、ステップＳ２０７においてリーダライタ１００は、ICカード２００に記憶されているデータ（例えば、リーダライタ１００により提供されるサービスの処理の中で必要となるデータなど）を読み出すコマンドを含んだフレームを、ICカード２００に対して送信する。このとき、やはりステップＳ３３２の処理で記憶されている通信IDが、ICカード２００がリーダライタ１００から送信されたフレームを一意に識別するための識別子として埋め込まれる。ステップＳ１０７において、ICカード２００によりこのフレームが受信される。
【０１２３】
ステップＳ１０８において、ICカード２００は、リーダライタ１００から送信されたコマンドに対応する処理を実行する。いまの場合、データの読出しコマンドに対応する処理が実行されることになる。
【０１２４】
ここで、図９のフローチャートを参照して、図４のステップＳ１０８の処理である読出しデータ送信処理の詳細について説明する。
【０１２５】
ステップＳ４２１において、CPU２０７は、データ記憶部２０５に記憶されているデータの中のうち、リーダライタ１００から要求のあったデータを読み出す。
【０１２６】
ステップＳ４２２において、暗号演算部２０８は、ステップＳ４２１の処理で読み出されたデータを、ステップＳ３０２の処理により記憶されている乱数Aを鍵として用い、暗号化する。
【０１２７】
ステップＳ４２３において、CPU２０７は、ステップＳ４２２の処理結果のデータ（暗号化されたデータ）を取得する。
【０１２８】
図４に戻って、ステップＳ１０９において、CPU２０７は、ステップＳ４２３の処理により取得されたデータを含むフレームを、ステップＳ１０７で受信されたリーダライタ１００からのデータ読出しコマンドに対応する応答として送信する。このとき、やはりステップＳ３０４の処理で記憶されている通信IDが、リーダライタ１００がICカード２００から送信されたフレームを一意に識別するための識別子として埋め込まれることになる。なお、ステップＳ１０７乃至Ｓ１０８の処理は、図２のステップＳ２５、Ｓ２６、Ｓ２９乃至Ｓ３１に対応する（同等の）処理である。そして、図４のステップＳ２０８で、リーダライタ１００により、このフレームが受信される。
【０１２９】
ステップＳ２０９において、リーダライタ１００は、ICカード２００から受信したデータの復号を行う。この処理は、図８を参照して上述した処理と同様なので、詳細な説明は省略するが、いまの場合、カードIDではなく、例えば、リーダライタ１００により提供されるサービスの処理の中で必要となるデータが乱数Aを鍵として復号されて取得されることになる。
【０１３０】
ステップＳ２１０において、リーダライタ１００は、ICカード２００にデータを記憶させる（書き込む）ための処理を行う。
【０１３１】
ここで、図１０のフローチャートを参照して、図４のステップＳ２１０の処理である書込要求送信処理の詳細について説明する。
【０１３２】
ステップＳ４５１において、CPU１０５は、例えば、自身が実行したアプリケーションプログラムの処理結果などのデータであって、ICカード２００に記憶させる（書き込む）べきデータを取得する。
【０１３３】
ステップＳ４５２において、暗号演算部１０６は、ステップＳ４５１の処理で取得されたデータを、ステップＳ３３４の処理により記憶されている乱数Aを鍵として用い、暗号化する。
【０１３４】
ステップＳ４５３において、CPU１０５は、ステップＳ４５２の処理結果のデータ（暗号化されたデータ）を書込み要求のコマンドとともにフレームに格納する。
【０１３５】
図４に戻って、ステップＳ２１０の処理の後、ステップＳ２１１において、リーダライタ１００は、ステップＳ４５３の処理により暗号化されたデータが格納された書込み要求のフレームをICカード２００に対して送信する。このとき、やはりステップＳ３３２の処理で記憶されている通信IDが、ICカード２００がリーダライタ１００から送信されたフレームを一意に識別するための識別子として埋め込まれることになる。そして、ステップＳ１１０で、ICカード２００によりこのフレームが受信される。
【０１３６】
ステップＳ１１１において、ICカード２００は、リーダライタ１００から送信されたコマンドに対応する処理を実行する。いまの場合、データの書込みコマンドに対応する処理が実行されることになる。
【０１３７】
ここで、図１１のフローチャートを参照して、図４のステップＳ１１１の処理であるデータ書込み処理の詳細について説明する。
【０１３８】
ステップＳ４８１において、CPU２０７は、ステップＳ１１０で受信したフレームに含まれる暗号化されたデータを取得する。
【０１３９】
ステップＳ４８２において、暗号演算部２０８は、ステップＳ４８１の処理で取得されたデータを、ステップＳ３０２の処理により記憶されている乱数Aを鍵として用い、復号する。
【０１４０】
ステップＳ４８３において、CPU２０７は、ステップＳ４８２の処理結果のデータ（復号されたデータ）を、データ記憶部２０５の中の所定の領域に記憶することで、データの書込みを実行する。
【０１４１】
図４に戻って、ステップＳ１１１の処理の後、ステップＳ１１２において、ICカード２００は、ステップＳ４８３の処理結果を表すデータを含むフレームをリーダライタ１００に対して送信する。これにより、例えば、データの書込みに成功したまたは失敗したことを表すデータを含むフレームが送信される。このとき、やはりステップＳ３０４の処理で記憶されている通信IDが、リーダライタ１００がICカード２００から送信されたフレームを一意に識別するための識別子として埋め込まれることになる。そして、ステップＳ２１２において、リーダライタ１００によりこのフレームが受信される。
【０１４２】
なお、ここでは、カードID読出しの後、データの読出しが行われ、さらにデータの書込みが行われる例について説明したが、データの読出し、データの書込みが行われる順序や回数は、これに限られるものではなく、必要に応じて変更してもよい。
【０１４３】
このようにして、リーダライタ１００とICカード２００との間で通信が行われる。ICカード２００のカードIDの読出しを許可されているリーダライタ１００と、ICカード２００との間では、カードIDが暗号化されてリーダライタ１００に送信されるとともに、カードIDの読出しの後行われる、データの読出しとデータの書込みについても全てデータが暗号化されて送受信される。従って、ユーザのプライバシーが侵害されることのない安全な通信システムを提供することが可能となる。
【０１４４】
また、例えば、秘密鍵記憶部１０１と秘密鍵記憶部２０３に記憶されている鍵により、送受信されるデータが暗号化されるようにしてもよいが、このような場合、データを安全に送受信するためには、それぞれのICカードが異なる秘密鍵を有する必要があり、その結果、リーダライタに、個々のICカードのそれぞれに対応する膨大な量の鍵を記憶させなければならず、鍵の管理が困難になる。
【０１４５】
本発明においては、リーダライタ１００とICカード２００との間で通信IDをセッションID（識別子）として交換するだけでなく、通信IDを秘密鍵で復号して得られる乱数Aも、リーダライタ１００とICカード２００との間で、第３者に知られることなく共有することができる。乱数Aは、ICカード２００がリーダライタ１００と通信を行う都度生成されるので、その後の通信において乱数Aが暗号化または復号のための鍵として利用されることを事前に取り決めておけば、通信が行われる都度異なるセッション鍵（すなわち乱数A）を利用した暗号化通信を行うこともできる。従って、リーダライタに、個々のICカードに対応する膨大な量の鍵を記憶させなくても、セッション鍵による暗号化を実現することができ、簡単な構成で安全な通信システムを提供することが可能となる。
【０１４６】
勿論、ICカードのカードIDの読出しを許可されていないリーダライタは、ICカードの秘密鍵記憶部に記憶されている鍵と同じ鍵を記憶していないことになるので、仮にカードIDの送信要求を行ったとしても、通信IDから乱数を復号することができず、乱数を鍵として暗号化されて送信されてくるカードIDも復号して取得することはできない。
【０１４７】
さらに、本発明においては、リーダライタ（イニシエータ）とICカード（ターゲット）は、それぞれNFCIP-1の規定に適合する通信を行うだけで、セッション鍵を交換するためのハンドシェイクプロトコルなどの付加的な処理は一切行う必要がない。
【０１４８】
NFCIP-1においては、衝突回避の際及び単一デバイス探知処理に用いられる乱数を利用したNFCデバイスの識別子であるNFC識別子（例えば、図３に示されるNFCID２）の利用が規定されており、NFCIP-1に対応するICカードにはもともと乱数生成部２０２（または同等の機能）が設けられていることになる。本発明で用いられる通信IDは、ターゲットで生成された乱数を暗号化したものにすぎず、ICカードに暗号演算部を新たに設けるだけで、セッションIDである通信IDの交換に伴う付加的な処理は何ら発生しない。
【０１４９】
また、本発明においては、通信IDを復号することによって得られる乱数を、セッション鍵として利用する。従って、NFCIP-1に規定されるイニシエータからのポーリングと、ターゲットからの応答が完了すれば、通信IDとともにセッション鍵の交換も完了したことになり、やはり付加的な処理は何ら発生しない。
【０１５０】
すなわち、本発明においては、ICカードは、通信相手のリーダライタが、ICカードのカードIDの読出しを許可され、データを暗号化して送受信を行う特定のリーダライタであるのか、または、ICカードのカードIDの読出しを許可されておらず、データを暗号化せずに送受信する一般的なリーダライタであるのかを意識（区別）することなく処理を実行することができる。したがって、本発明のICカードは、通信相手のリーダライタがNFCIP-1に規定されるイニシエータとして動作するリーダライタであれば、問題なく通信を行うことが可能であり、装置の互換性が保たれることになる。
【０１５１】
次に、図１２のアローチャートを参照して、本発明を適用したICカード２００と、ICカード２００のカードIDの読出しを許可されておらず、データを暗号化せずに送受信する一般的なリーダライタ（図示せず）との間で行われる通信の詳細について説明する。
【０１５２】
ステップＳ１２１乃至Ｓ１２３の処理と、ステップＳ２２１及びＳ２２２の処理は、それぞれ図４を参照して上述したステップＳ１０１乃至Ｓ１０３の処理と、ステップＳ２０１及びＳ２０２の処理と同様の処理である。
【０１５３】
図１２の例の場合、図４の場合と異なり、ステップＳ２２２で受信したICカード２００からの応答に含まれる通信IDを、リーダライタが復号する処理は、実行されない。また、リーダライタからICカード２００に対してカードIDの読出し要求が送信されず、それに対するICカードからの応答も送信されない。すなわち、図１２の場合、図４のステップＳ２０３乃至２０５と、ステップＳ１０４乃至Ｓ１０６に対応する処理は実行されないことになる。
【０１５４】
また、リーダライタからのカードID読出し要求がないので、ICカード２００においては、暗号化フラグがONとされず（図２のステップＳ２７の処理は実行されておらず）、これ以後のデータの読出し、または書込みの処理においても、データが暗号化されずに送受信されることになる。
【０１５５】
従って、図１２の場合、図４のＳ１０８、Ｓ２０９、Ｓ２１０、およびＳ１１１に対応する処理は実行されず、ステップＳ１２９とＳ２３１では、それぞれ読み出されたデータと、書き込むべきデータが暗号化されずそのまま送信され、ステップＳ２２８とＳ１３０では、受信したフレームのデータを復号せずにそのまま取得または記憶することになる。なお、ステップＳ１２９とＳ１３１の処理は、図２のステップＳ３２に対応する（同等の）処理である。
【０１５６】
また、図１２の例の場合も、ステップＳ２２７、Ｓ１２９、Ｓ２３１、またはＳ１３１の処理で送信されるフレームに、やはりステップＳ１２１の処理で生成された通信IDが識別子として埋め込まれることになる。
【０１５７】
このように、本発明のICカード２００は、一般的なリーダライタとの間でも問題なく通信を行うことが可能であり、その結果装置の互換性が保たれ、通信システムのコストを抑制することが可能となる。
【０１５８】
さて、上述した実施の形態では、ICカード２００が生成した乱数Aを秘密鍵記憶部２０３に記憶されている秘密鍵で暗号化したものを、通信IDとしてリーダライタ１００に送信することにより、リーダライタ１００とICカード２００が互いを一意に識別することができる他、乱数Aによるデータの暗号化通信を可能としていた。
【０１５９】
この通信IDは、図２を参照して説明したように、NFCIP-1で規定される応答フレームの中のNFCID2を格納する８バイトのフィールドに格納される。従って、通信IDおよび乱数Aは、最大で８バイト（すなわち、６４ビット）長のデータに制限される。
【０１６０】
しかしながら、例えば、暗号アルゴリズムとして2-Key Triple-DESを使用する場合の鍵のデータ長は１１２ビットであり、１１２ビットの鍵に関する情報を伝送するためには、１１２ビット以上のデータ長が必要となる。また、暗号アルゴリズムしてAES（Advanced Encryption Standard）を使用する場合の鍵のデータ長は最小で１２８ビットであり、１２８ビットの鍵に関する情報を伝送するためには、１２８ビット以上のデータ長が必要となる。
【０１６１】
従って、暗号アルゴリズムとして、2-Key Triple-DESまたはAESなどを採用した場合には、ポーリングに対する１回の返信だけでは、暗号化通信に必要な鍵を生成するための全ての情報を送信することができず、リーダライタ１００は、不足分の情報を問い合わせるコマンドを含むフレームをICカード２００に対して送信し、これに対し、ICカード２００が返信するやりとりが必要となる。即ち、図４に示した処理より、リーダライタ１００とICカード２００との間で、鍵情報の不足分をやりとりする通信が余分に発生する。
【０１６２】
そこで、図１３に示す通信システムでは、所定の暗号アルゴリズムで使用される鍵のデータ長が１２８ビットであっても、リーダライタとICカードとの間で鍵情報の不足分をやりとりする通信が発生しないようにするシステムを実現する。
【０１６３】
即ち、図１３は、本発明を適用した通信システムのその他の実施の形態としての、通信システム５００の構成例を示すブロック図である。同図において、上述した実施の形態と対応する部分については同一の符号を付してあり、その説明は適宜省略する。
【０１６４】
図１３の通信システム５００は、リーダライタ６００とICカード２００とにより構成されている。通信システム５００では、上述した通信システム５０で用いられていたものと同様のICカード２００が、リーダライタ６００と無線による通信を行うように構成されている。
【０１６５】
リーダライタ６００は、図１のリーダライタ１００が有する秘密鍵記憶部１０１、入出力部１０２、RAM１０３、ROM１０４、CPU１０５、および暗号演算部１０６と同様の、秘密鍵記憶部６０１、入出力部６０２、RAM６０３、ROM６０４、CPU６０５、および暗号演算部６０６を有し、さらに、乱数生成部６０７およびデータ記憶部６０８を備える。
【０１６６】
乱数生成部６０７は、ICカード２００の乱数生成部２０２と同様に、必要に応じて所定のけた数の乱数を発生する。例えば、乱数生成部６０７は、８バイト長の乱数Bを生成する。データ記憶部６０８は、ICカード２００との通信において記憶することが必要となったデータを適宜記憶する。例えば、データ記憶部６０８は、乱数生成部６０７で生成された乱数Bを記憶する。
【０１６７】
通信システム５００では、ICカード２００は、上述した通信システム５０における場合と同様に、例えば、８バイトの乱数Aを生成し、秘密鍵で暗号化したものを通信IDとしてリーダライタ６００に送信する。また、リーダライタ６００も、８バイトの乱数Bを生成し、秘密鍵で暗号化したものをICカード２００に送信する。その結果、リーダライタ６００およびICカード２００のそれぞれは、自分自身で生成した８バイトの乱数と、通信相手から受け取った８バイトの乱数とを合わせた１６バイトの乱数を共有することができる。そして、リーダライタ６００およびICカード２００は、１６バイト（１２８ビット）の乱数をセッション鍵として使用する。
【０１６８】
以下では、図４に示した通信処理と同様の、リーダライタ６００がICカード２００に対してデータの読出しとデータの書込みを行う処理において、ポーリングの付加情報として、暗号化された乱数Bをリーダライタ６００からICカード２００へ伝送する場合と、ポーリングの次に送信するフレームの付加情報として、暗号化された乱数Ｂをリーダライタ６００からICカード２００へ伝送する場合のそれぞれについて説明する。なお、ポーリングのフレーム、および、ポーリングの次に送信するフレーム（本実施の形態では、カードID読み出し要求のコマンドを含むフレーム）には、少なくとも８バイト長のデータを格納する空き領域（または拡張可能な領域）がある。
【０１６９】
最初に、図１４のアローチャートを参照して、ポーリングの付加情報として、暗号化された乱数Bをリーダライタ６００からICカード２００へ伝送する場合の、リーダライタ６００とICカード２００との間で行われる通信の詳細について説明する。
【０１７０】
例えば、ICカード２００がリーダライタ６００のアンテナの近傍に位置し、入出力部２０１のアンテナにおいて励起された交流磁界により生成される電力がICカード２００の各部に供給されると、ICカード２００は、ステップＳ６０１の処理を実行し、８バイトの乱数Ａを生成する。ステップＳ６０１の処理の詳細は、図５を参照して上述した通信ID生成処理と同様であるので、その説明は省略する。
【０１７１】
リーダライタ６００は、ステップＳ５０１の処理を実行し、付加情報付きのポーリングのフレームを生成する。
【０１７２】
ここで、図１５のフローチャートを参照して、図１４のステップＳ５０１の処理であるポーリング生成処理の詳細について説明する。
【０１７３】
ステップＳ７０１において、乱数生成部６０７は、８バイトの乱数Ｂを生成（発生）する。
【０１７４】
ステップＳ７０２において、CPU６０５は、ステップＳ７０１の処理で生成された乱数Ｂを、例えば、データ記憶部６０８の中の予め定められた所定の領域に記憶する。
【０１７５】
ステップＳ７０３において、暗号演算部６０６は、ステップＳ７０１の処理で生成された乱数Ｂを、秘密鍵記憶部６０１に記憶されている鍵を用いて暗号化する。
【０１７６】
ステップＳ７０４において、CPU６０５は、ステップＳ７０３の処理結果のデータ（すなわち、暗号化された乱数Ｂ）を、ポーリングの付加情報として、例えば、データ記憶部６０８の中の予め定められた所定の領域に記憶する。
【０１７７】
図１４に戻り、リーダライタ６００は、ステップＳ５０２において、ICカード２００に対して付加情報付きのポーリングを送信し、ステップＳ６０２でICカード２００により、これが受信される。
【０１７８】
ステップＳ６０３において、ICカード２００は、リーダライタ６００から送信されたポーリングの付加情報を復号して乱数Ｂを取得する。
【０１７９】
ここで、図１６のフローチャートを参照して、図１４のステップＳ６０３の処理である乱数Ｂ取得処理の詳細について説明する。
【０１８０】
ステップＳ７３１において、CPU２０７は、ステップＳ６０２の処理で受信したリーダライタ６００からのポーリングに含まれる付加情報（すなわち、暗号化された乱数Ｂ）を取得する。
【０１８１】
ステップＳ７３２において、CPU２０７は、例えば、データ記憶部２０５の所定の領域に、ステップＳ７３１の処理で取得された付加情報を記憶する。
【０１８２】
ステップＳ７３３において、暗号演算部２０８は、ステップＳ７３１の処理で取得されたポーリングに含まれる付加情報であって、暗号化された乱数Ｂを、秘密鍵記憶部２０３に記憶されている鍵を用いて復号する。これにより乱数Bが取得される。
【０１８３】
ステップＳ７３４において、CPU２０７は、ステップＳ７３３の処理により取得された乱数Ｂを、例えば、データ記憶部２０５の所定の領域に記憶する。
【０１８４】
図１４に戻り、ステップＳ６０４において、ICカード２００は、ステップＳ６０２の処理で受信されたポーリングに対する応答を、リーダライタ６００に送信する。このとき、応答フレームの中の所定の領域に格納されるNFCID2（図３参照）として、ステップＳ６０１の処理で生成された通信ID（即ち、暗号化された乱数Ａ）が格納される。リーダライタ６００は、ステップＳ５０３で、この応答フレームを受信する。
【０１８５】
ステップＳ５０４において、リーダライタ６００は、ICカード２００から送信された応答フレームの通信IDを復号して乱数Aを取得する。このステップＳ５０４の処理の詳細は、図６を参照して説明した乱数取得処理と同様であるので、その説明は省略する。
【０１８６】
以上の処理により、リーダライタ６００とICカード２００は、今回の通信（セッション）において必要となるセッションID（いまの場合、通信ID）と、セッション鍵（いまの場合、８バイトの乱数Aおよび乱数B）を交換したことになる。
【０１８７】
従って、このステップＳ５０４の処理以降、リーダライタ６００とICカード２００との間で送受信されるフレームには、通信相手であるリーダライタ６００またはICカード２００を一意に識別するための識別子として、通信IDが埋め込まれる。また、リーダライタ６００とICカード２００との間で送受信されるフレームには、８バイトの乱数Ａおよび乱数Ｂをあわせた１６バイトのセッション鍵で暗号化されたデータが含まれる。
【０１８８】
ステップＳ５０４の処理以降の、リーダライタ６００によるカードIDの読み出し要求、データ読み出し要求、およびデータ書込み要求のコマンドを含むフレームの送信と、それに応答するICカード２００の返信処理は、図４を参照して説明したリーダライタ１００とICカード２００との間で行われる処理と同様であるので、その説明は省略する。即ち、図１４のステップＳ５０５乃至５１３の処理は、図４のステップＳ２０４乃至Ｓ２１２の処理とそれぞれ同様であり、図１４のステップＳ６０５乃至Ｓ６１３の処理は、図４のステップＳ１０４乃至Ｓ１１２の処理とそれぞれ同様である。但し、上述したように、リーダライタ６００とICカード２００との間で送受信されるフレームに含まれるデータが、乱数A（８バイトのセッション鍵）で暗号化されたものではなくて、乱数Aと乱数Bを合わせたもの（１６バイトのセッション鍵）で暗号化されている点だけが異なる。
【０１８９】
次に、図１７のアローチャートを参照して、ポーリングの次に送信するフレームの付加情報として、暗号化された乱数Ｂをリーダライタ６００からICカード２００へ伝送する場合の、リーダライタ６００とICカード２００との間で行われる通信の詳細について説明する。
【０１９０】
図１７において、ICカード２００が８バイトの乱数Aを生成し、リーダライタ６００のポーリングに応答して、通信IDとしての、暗号化された乱数Aをリーダライタ６００に送信するとともに、リーダライタ６００が、それを受信して秘密鍵で復号し、８バイトの乱数Aを取得するまでの処理は、図４を参照して説明したリーダライタ１００とICカード２００との間で行われる処理と同様である。即ち、リーダライタ６００が行う図１７のステップＳ５３１乃至Ｓ５３３の処理は、図４のステップＳ２０１乃至Ｓ２０３の処理とそれぞれ同様であり、ICカード２００が行う図１７のステップＳ６４１乃至Ｓ６４３の処理は、図４のステップＳ１０１乃至Ｓ１０３の処理とそれぞれ同様である。
【０１９１】
そして、これ以降のリーダライタ６００とICカード２００との間で送受信されるフレームには、通信相手であるリーダライタ６００またはICカード２００を一意に識別するための識別子として、通信IDが埋め込まれる。
【０１９２】
リーダライタ６００は、ステップＳ５３３において、通信IDをRAM１０３の所定の領域に記憶するとともに、通信IDを復号し、乱数Aを取得した後、ステップＳ５３４の処理を実行し、付加情報付きのカードID読み出し要求を生成する。
【０１９３】
ここで、図１８のフローチャートを参照して、図１７のステップＳ５３４の処理であるカードID読み出し要求生成処理の詳細について説明する。
【０１９４】
ステップＳ７６１において、乱数生成部６０７は、乱数Ｂを生成（発生）する。
【０１９５】
ステップＳ７６２において、CPU６０５は、ステップＳ７６１の処理で生成された乱数Ｂを、例えば、データ記憶部６０８の中の予め定められた所定の領域に記憶する。
【０１９６】
ステップＳ７６３において、暗号演算部６０６は、ステップＳ７６１の処理で生成された乱数Ｂを、秘密鍵記憶部６０１に記憶されている鍵を用いて暗号化する。
【０１９７】
ステップＳ７６４において、CPU６０５は、ステップＳ７６３の処理結果のデータ（すなわち、暗号化された乱数Ｂ）を、ID読み出し要求の付加情報として、例えば、データ記憶部６０８の中の予め定められた所定の領域に記憶する。
【０１９８】
図１７に戻り、リーダライタ６００は、ステップＳ５３５において、付加情報付きの、カードIDの読み出しを要求するコマンドを含むフレームをICカード２００に送信する。ステップＳ６４４において、ICカード２００により、このフレームが受信される。
【０１９９】
ステップＳ６４５において、リーダライタ６００は、ICカード２００から送信されたIDカード読み出し要求の付加情報を復号して乱数Ｂを取得する。
【０２００】
ここで、図１９のフローチャートを参照して、図１７のステップＳ６４５の処理である乱数Ｂ取得処理の詳細について説明する。
【０２０１】
ステップＳ７９１において、CPU２０７は、ステップＳ６４４の処理で受信したリーダライタ６００からのカードID読み出し要求に含まれる付加情報（すなわち、暗号化された乱数Ｂ）を取得する。
【０２０２】
ステップＳ７９２において、CPU２０７は、例えば、データ記憶部２０５の所定の領域に、ステップＳ７９１の処理で取得された付加情報を記憶する。
【０２０３】
ステップＳ７９３において、暗号演算部２０８は、ステップＳ７９１の処理で取得されたカードID読み出し要求に含まれる付加情報であって、暗号化された乱数Ｂを、秘密鍵記憶部２０３に記憶されている鍵を用いて復号する。これにより乱数Bが取得される。
【０２０４】
ステップＳ７９４において、CPU２０７は、ステップＳ７９３の処理により取得された乱数Ｂを、例えば、データ記憶部２０５の所定の領域に記憶する。
【０２０５】
以上の処理により、リーダライタ６００とICカード２００は、今回の通信（セッション）において必要となるセッションID（いまの場合、通信ID）と、セッション鍵（いまの場合、８バイトの乱数Aおよび乱数B）を交換したことになる。
【０２０６】
図１７におけるICカード２００のステップＳ６４６乃至Ｓ６５３の処理とリーダライタ６００のステップＳ５３６乃至Ｓ５４２の処理は、リーダライタ６００とICカード２００との間で送受信されるフレームに含まれるデータが、乱数A（８バイトのセッション鍵）で暗号化されたものではなくて、乱数Aと乱数Bを合わせたもの（１６バイトのセッション鍵）で暗号化されている点を除いて、図４のステップＳ１０５乃至Ｓ１１２の処理とステップＳ２０５乃至Ｓ２１２の処理と、それぞれ同様である。
【０２０７】
以上のように、通信システム５００においては、リーダライタ６００が、乱数生成部６０７によって生成された８バイトの乱数Bを秘密鍵で暗号化したものを、付加情報として、ポーリングのフレームか、または、ポーリングの次に送信するフレームに格納してICカード２００に送信し、ICカード２００が、乱数生成部２０２によって生成された８バイトの乱数Aを秘密鍵で暗号化したものを、通信IDとしてリーダライタ６００に送信する。
【０２０８】
これにより、リーダライタ６００とICカード２００は、自身が生成した８バイト長の乱数A（または乱数B）と、通信相手が生成した８バイト長の乱数B(または乱数A)を合わせた１６（１２８ビット）バイト長の鍵を共有することができる。
【０２０９】
従って、鍵のデータ長として１１２ビットや１２８ビットが必要な2-Key Triple-DESやAESなどの暗号アルゴリズムにも対応可能である。また、このときリーダライタ６００とICカード２００との間で行われる通信フレームの数（通信の回数）は、図４のアローチャートと図１４および図１７のアローチャートを比較して明らかなように、通信システム５０で行われていた通信フレームの数と同一である。即ち、通信システム５０において１６バイト長の鍵を共有するために必要であった不足分の情報を問い合わせる余分な通信は、通信システム５００においては発生しない。
【０２１０】
即ち、通信システム５００によれば、必要最小限の通信フレーム数の通信によって、通信IDのデータ長よりも長いデータ長の鍵を使用する暗号アルゴリズムに対応した通信システムを提供することが可能となる。
【０２１１】
なお、上述した例において、リーダライタ６００が生成する乱数Bのデータ長を８バイトとしたが、付加情報として格納するフレームの空き領域により、乱数Bのデータ長を８バイトより大きくすることも可能である。この場合、リーダライタ６００とICカード２００で使用されるセッション鍵を１２８ビットより大きくすることができる。
【０２１２】
上述した実施の形態では、図２を参照して説明したように、カードIDの送信要求があった場合に暗号化フラグがONに設定されるため、データを暗号化して通信するためには、リーダライタ６００からICカード２００にカードIDの送信要求を必ず送信する必要がある。
【０２１３】
しかしながら、送受信するデータを秘匿する必要はあるが、カードIDは必ずしも必要ではない場合も考えられる。そのような場合には、暗号化フラグをONさせるコマンドを別途設け、リーダライタ６００からICカード２００に送信すればよい。即ち、図１４および図１７の処理において、カードID読み出し要求のコマンドに代えて、暗号化フラグをONさせるコマンドを含むフレームがリーダライタ６００からICカード２００に送信される。また、データの暗号化を必ず行う場合には、セッション鍵の交換後は、リーダライタ６００とICカード２００とでやりとりするデータを必ず暗号化する（暗号化フラグをONさせる）ようにしてもよい。この場合、暗号化フラグは省略することが可能である。
【０２１４】
以上においては、ICカードとリーダライタを用いて構成される通信システムの例について説明したが、例えば、RFIDと、RFIDのリーダによりNFCIP-1のイニシエータとターゲットが構成される場合においても本発明を適用することができる。
【０２１５】
なお、上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、図１のCPU１０５またはCPU２０７により実行され、それらのプログラムは、リーダライタ１００またはICカード２００が読み取り可能な記録媒体などから読み込まれる。
【０２１６】
本明細書において上述した一連の処理を実行するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【０２１７】
【図１】本発明を適用した通信システムの一実施形態における構成例を示すブロック図である。
【図２】図１のICカードの通信処理を説明するフローチャートである。
【図３】NFCIP-1に規定される応答フレームフォーマットを示す図である。
【図４】図１のリーダライタと、ICカードとの間で行われる通信の詳細について説明するアローチャートである。
【図５】通信ID生成処理を説明するフローチャートである。
【図６】乱数取得処理を説明するフローチャートである。
【図７】カードID送信処理を説明するフローチャートである。
【図８】カードID復号処理を説明するフローチャートである。
【図９】読出データ送信処理を説明するフローチャートである。
【図１０】書込要求送信処理を説明するフローチャートである。
【図１１】データ書込み処理を説明するフローチャートである。
【図１２】本発明を適用したICカードと、一般的なリーダライタとの間で行われる通信の詳細について説明するアローチャートである。
【図１３】本発明を適用した通信システムのその他の実施形態における構成例を示すブロック図である。
【図１４】図１３のリーダライタと、ICカードとの間で行われる通信の詳細について説明するアローチャートである。
【図１５】ポーリング生成処理を説明するフローチャートである。
【図１６】乱数B取得処理を説明するフローチャートである。
【図１７】図１３のリーダライタと、ICカードとの間で行われる通信の詳細について説明するアローチャートである。
【図１８】カードID読み出し要求生成処理を説明するフローチャートである。
【図１９】乱数B取得処理を説明するフローチャートである。
【符号の説明】
【０２１８】
５０  通信システム，  １００  リーダライタ，  １０１  秘密鍵記憶部，  １０２  入出力部，  １０３  RAM，  １０４  ROM，  １０５  CPU，  １０６  暗号演算部，  ２００  ICカード，  ２０１  入出力部，  ２０２  乱数生成部，  ２０３  秘密鍵記憶部，  ２０４  ID記憶部，  ２０５  データ記憶部，  ２０６  ROM，  ２０７  CPU，  ２０８  暗号演算部，  ５００  通信システム，  ６００  リーダライタ，  ６０１  秘密鍵記憶部，  ６０２  入出力部，  ６０３  RAM，  ６０４  ROM，  ６０５  CPU，  ６０６  暗号演算部，  ６０７  乱数生成部，  ６０８  データ記憶部
【図１】
0005205720.tif 000002
【図２】
0005205720.tif 000003
【図３】
0005205720.tif 000004
【図４】
0005205720.tif 000005
【図５】
0005205720.tif 000006
【図６】
0005205720.tif 000007
【図７】
0005205720.tif 000008
【図８】
0005205720.tif 000009
【図９】
0005205720.tif 000010
【図１０】
0005205720.tif 000011
【図１１】
0005205720.tif 000012
【図１２】
0005205720.tif 000013
【図１３】
0005205720.tif 000014
【図１４】
0005205720.tif 000015
【図１５】
0005205720.tif 000016
【図１６】
0005205720.tif 000017
【図１７】
0005205720.tif 000018
【図１８】
0005205720.tif 000019
【図１９】
0005205720.tif 000020