(57)【要約】【課題】複数のアルゴリズムを扱えるようにし、通信に拡張性をもたせる。【解決手段】能力リスト１０２は、リーダライタ１００が扱う暗号化や復号のアルゴリズムに関する能力が記載された能力リストを記憶している。同様に、能力リスト２０２は、ＩＣカード２００が扱う暗号化や復号のアルゴリズムに関する能力が記載された能力リストを記憶している。リーダライタ１００とＩＣカード２００は、互いの能力リストを交換し、授受するデータの重要性に応じたセキュリティレベルを確保できるアルゴリズムを選択し、その選択したアルゴリズムに基づく通信を行う。本発明は、例えば、NFCIP方式で通信を行う装置に適用できる。【選択図】図２
2008066834.tif 000002
【特許請求の範囲】
【請求項１】
通信を行う情報処理装置およびデバイスにより構成される通信システムであって、
前記情報処理装置または前記デバイスのうちの一方から他方に、暗号に関する能力を表すリストを送信する送信手段と、
前記送信手段により送信された前記リストを受信した前記他方は、受信されたリストを参照し、自己の暗号に関する能力で前記一方と通信を行うことができるアルゴリズムを決定する決定手段と、
前記決定手段により決定された前記アルゴリズムで通信を行う通信手段と
を備える通信システム。
【請求項２】
通信を行う情報処理装置およびデバイスにより構成される通信システムの通信方法であって、
前記情報処理装置または前記デバイスのうちの一方から他方に、暗号に関する能力を表すリストを送信し、
送信された前記リストを受信した前記他方は、受信されたリストを参照し、自己の暗号に関する能力で前記一方と通信を行うことができるアルゴリズムを決定し、
決定された前記アルゴリズムで通信を行う
通信方法。
【請求項３】
デバイスと通信を行う情報処理装置であって、
暗号に関する能力を表す第１の能力リストを記憶する記憶手段と、
前記デバイスの暗号に関する能力を表す第２の能力リストを受信する受信手段と、
前記第１の能力リストと前記第２の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定手段と、
前記決定手段により決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材を前記デバイスに送信する送信手段と
を備える情報処理装置。
【請求項４】
前記第１の能力リストから、前記決定手段による決定の処理が行われるときの候補となるアルゴリズムを選択し、選択されたアルゴリズムが記載された第３の能力リストを生成し、前記デバイスに送信するリスト送信手段を
さらに備える請求項３に記載の情報処理装置。
【請求項５】
前記決定手段は、セキュリティレベルに応じて前記アルゴリズムを決定する
請求項３に記載の情報処理装置。
【請求項６】
デバイスと通信を行う情報処理装置の情報処理方法であって、
暗号に関する能力を表す第１の能力リストを管理する管理ステップと、
前記デバイスの暗号に関する能力を表す第２の能力リストの受信を制御する受信制御ステップと、
前記第１の能力リストと前記第２の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定ステップと、
前記決定ステップの処理で決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材の前記デバイスへの送信を制御する送信制御ステップと
を含む情報処理方法。
【請求項７】
デバイスと通信を行う情報処理装置を制御するコンピュータのプログラムであって、
暗号に関する能力を表す第１の能力リストを管理する管理ステップと、
前記デバイスの暗号に関する能力を表す第２の能力リストの受信を制御する受信制御ステップと、
前記第１の能力リストと前記第２の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定ステップと、
前記決定ステップの処理で決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材の前記デバイスへの送信を制御する送信制御ステップと
を含むプログラム。
【請求項８】
デバイスと通信を行う情報処理装置に、
暗号に関する能力を表す第１の能力リストを管理する管理ステップと、
前記デバイスの暗号に関する能力を表す第２の能力リストの受信を制御する受信制御ステップと、
前記第１の能力リストと前記第２の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定ステップと、
前記決定ステップの処理で決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材の前記デバイスへの送信を制御する送信制御ステップと
を含む処理を実行させるプログラムを記録している記録媒体。
【請求項９】
情報処理装置と通信を行うデバイスであって、
暗号に関する能力を表す能力リストを前記情報処理装置に送信する送信手段と、
前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報を受信する受信手段と、
前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号手段と
を備えるデバイス。
【請求項１０】
前記情報処理装置の暗号に関する能力を表す第２の能力リストを受信する第２の受信手段をさらに備え、
前記送信手段により送信される前記能力リストは、前記第２の能力リストに記載されている能力のなかから選択された自己が扱える能力が記載されている
請求項９に記載のデバイス。
【請求項１１】
情報処理装置と通信を行うデバイスの情報処理方法であって、
暗号に関する能力を表す能力リストの前記情報処理装置への送信を制御する送信制御ステップと、
前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報の受信を制御する受信制御ステップと、
前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号ステップと
を含む情報処理方法。
【請求項１２】
情報処理装置と通信を行うデバイスを制御するコンピュータのプログラムであって、
暗号に関する能力を表す能力リストの前記情報処理装置への送信を制御する送信制御ステップと、
前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報の受信を制御する受信制御ステップと、
前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号ステップと
を含むプログラム。
【請求項１３】
情報処理装置と通信を行うデバイスに、
暗号に関する能力を表す能力リストの前記情報処理装置への送信を制御する送信制御ステップと、
前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報の受信を制御する受信制御ステップと、
前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号ステップと
を含む処理を実行させるプログラムが記録されている記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムおよび通信方法、情報処理装置および方法、デバイス、プログラム、並びに記録媒体に関し、特に、安全かつ利便性の高い情報通信を行うときに、互いの通信能力などを考慮して通信が行えるようにする通信システムおよび通信方法、情報処理装置および方法、デバイス、プログラム、並びに記録媒体に関する。
【背景技術】
【０００２】
情報技術の発展に伴い、コンピュータ等の情報処理装置をＷＬＡＮ（Wireless Local Area Network）や、Ｂｌｕｅｔｏｏｔｈ（登録商標）等の無線通信手段で接続し、ファイルやデータ等の情報を送受信したり、共有したりする通信システムが構築されている。
【０００３】
Ｂｌｕｅｔｏｏｔｈ等を用いた広域通信可能な通信装置を携帯電話、パーソナルコンピュータに搭載した広域通信機能搭載機器を利用して、動画データや、音楽データ等の大容量データを送受信している。また、一方で広域通信によるデータ通信において、第三者の広域通信機能搭載機器によってデータが盗聴されたり、データが改ざんされたりする等のセキュリティ上の危険性を低減するため、広域通信においても、データを暗号化する暗号化処理を導入するのが一般的となっている。
【０００４】
しかしながら、Ｂｌｕｅｔｏｏｔｈをはじめとする広域通信に暗号化処理を実行するためには、まず通信相手を特定する必要があるが、広域通信の通信可能エリアが広いため、想定外の広域通信機能搭載機器が通信相手として特定されてしまう可能性があった。
【０００５】
通信相手を特定しても、さらにセキュアな通信を開始するためのセッション鍵を通信相手双方で共有する必要があるが、広域通信の通信可能エリアが広いという特性上、セッション鍵を通信相手に送信する際に、第三者が使用する広域通信機能搭載機器によって、その鍵が盗聴され、解読されてしまう可能性があったため、鍵長を長くするなどセッション鍵の強度を高める必要があり、そのためには広域通信機能搭載機器の高い処理能力が必要とされていた。
【０００６】
そこで、通信装置の双方でセキュアにセッション鍵を共有することを可能にすることが提案されている。（例えば、特許文献１参照）
【０００７】
ここで、特許文献１に開示されている通信について、図１を参照して簡便に説明を加える。通信を行う装置を、ここでは、イニシエータ（Initiator）とターゲット（Target）と称する。
【０００８】
イニシエータは、ステップＳ１１において、鍵の生成と送信を行う。イニシエータは、例えば、ポーリング（問合せ処理）を実行し、そのポーリングに対してターゲットからの応答が送信されてくると、その応答を受信し、暗号化鍵と復号鍵とを生成する。イニシエータは、生成した暗号化鍵をターゲットに送信する。
【０００９】
ステップ２１において、ターゲットは、暗号化鍵を受信する。ステップＳ２２において、ターゲットは、乱数を発生し、その発生した乱数をセッション鍵とする。そしてセッション鍵は、受信された暗号化鍵を鍵として暗号化される。暗号化されたセッション鍵は、イニシエータに送信される。
【００１０】
イニシエータは、ステップＳ１２において、ターゲットから暗号化されたセッション鍵を受信すると、復号鍵で復号し、セッション鍵を取得する。ステップＳ１３において、復号されたセッション鍵を用いた通信が開始される。
【００１１】
このようにイニシエータは、暗号化されたセッション鍵を受信すると、その暗号化されたセッション鍵を、既に生成している復号鍵で復号し、セッション鍵を取得する。このようにして、イニシエータとターゲットとの間で、共通のセッション鍵が共有される。そして、このセッション鍵が用いられた通信、例えば、セッション鍵で授受するデータを暗号化する通信が行われる。
【００１２】
【特許文献１】特開２００６−１４０７６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
特許文献１に開示されているように、セッション鍵を共有するようにすれば、セキュアな通信を行うことが可能となる。さらに、例えば、授受するデータにより、アルゴリズムを変更するなどすれば、よりセキュアな通信を行えるようになり、かつ、拡張性のある通信を行えるようになる。
【００１４】
本発明は、このような状況に鑑みてなされたものであり、よりセキュアな通信を行えるようにし、かつ、拡張性のある通信を行えるようにするものである。
【課題を解決するための手段】
【００１５】
本発明の一側面の情報処理システムは、通信を行う情報処理装置およびデバイスにより構成される通信システムであって、前記情報処理装置または前記デバイスのうちの一方から他方に、暗号に関する能力を表すリストを送信する送信手段と、前記送信手段により送信された前記リストを受信した前記他方は、受信されたリストを参照し、自己の暗号に関する能力で前記一方と通信を行うことができるアルゴリズムを決定する決定手段と、前記決定手段により決定された前記アルゴリズムで通信を行う通信手段とを備える。
【００１６】
本発明の一側面の情報処理システムの通信方法は、通信を行う情報処理装置およびデバイスにより構成される通信システムの通信方法であって、前記情報処理装置または前記デバイスのうちの一方から他方に、暗号に関する能力を表すリストを送信し、送信された前記リストを受信した前記他方は、受信されたリストを参照し、自己の暗号に関する能力で前記一方と通信を行うことができるアルゴリズムを決定し、決定された前記アルゴリズムで通信を行う。
【００１７】
本発明の一側面の情報処理システムおよび通信方法においては、通信を行う装置間で、少なくとも一方の装置から他方の装置に対して、暗号に関する能力を表すリストが送信され、受信した側において、通信に用いるアルゴリズムが決定され、その決定されたアルゴリズムに基づいて通信が行われる。
【００１８】
本発明の一側面の情報処理装置は、デバイスと通信を行う情報処理装置であって、暗号に関する能力を表す第１の能力リストを記憶する記憶手段と、前記デバイスの暗号に関する能力を表す第２の能力リストを受信する受信手段と、前記第１の能力リストと前記第２の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定手段と、前記決定手段により決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材を前記デバイスに送信する送信手段とを備える。
【００１９】
前記第１の能力リストから、前記決定手段による決定の処理が行われるときの候補となるアルゴリズムを選択し、選択されたアルゴリズムが記載された第３の能力リストを生成し、前記デバイスに送信するリスト送信手段をさらに備えるようにすることができる。
【００２０】
前記決定手段は、セキュリティレベルに応じて前記アルゴリズムを決定するようにすることができる。
【００２１】
本発明の一側面の情報処理方法は、デバイスと通信を行う情報処理装置の情報処理方法であって、暗号に関する能力を表す第１の能力リストを管理する管理ステップと、前記デバイスの暗号に関する能力を表す第２の能力リストの受信を制御する受信制御ステップと、前記第１の能力リストと前記第２の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定ステップと、前記決定ステップの処理で決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材の前記デバイスへの送信を制御する送信制御ステップとを含む。
【００２２】
本発明の一側面のプログラムは、デバイスと通信を行う情報処理装置を制御するコンピュータのプログラムであって、暗号に関する能力を表す第１の能力リストを管理する管理ステップと、前記デバイスの暗号に関する能力を表す第２の能力リストの受信を制御する受信制御ステップと、前記第１の能力リストと前記第２の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定ステップと、前記決定ステップの処理で決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材の前記デバイスへの送信を制御する送信制御ステップとを含む。
【００２３】
本発明の一側面の記録媒体は、デバイスと通信を行う情報処理装置に、暗号に関する能力を表す第１の能力リストを管理する管理ステップと、前記デバイスの暗号に関する能力を表す第２の能力リストの受信を制御する受信制御ステップと、前記第１の能力リストと前記第２の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定ステップと、前記決定ステップの処理で決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材の前記デバイスへの送信を制御する送信制御ステップとを含む処理を実行させるプログラムを記録している。
【００２４】
本発明の一側面の情報処理装置、情報処理方法、およびプログラムにおいては、通信を行う相手の暗号に関する能力と、自己の暗号に関する能力とから、通信を行うアルゴリズムが決定され、決定されたアルゴリズムに基づく通信が実行される。
【００２５】
本発明の一側面のデバイスは、情報処理装置と通信を行うデバイスであって、暗号に関する能力を表す能力リストを前記情報処理装置に送信する送信手段と、前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報を受信する受信手段と、前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号手段とを備える。
【００２６】
前記情報処理装置の暗号に関する能力を表す第２の能力リストを受信する第２の受信手段をさらに備え、前記送信手段により送信される前記能力リストは、前記第２の能力リストに記載されている能力のなかから選択された自己が扱える能力が記載されているようにすることができる。
【００２７】
本発明の一側面の情報処理方法は、情報処理装置と通信を行うデバイスの情報処理方法であって、暗号に関する能力を表す能力リストの前記情報処理装置への送信を制御する送信制御ステップと、前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報の受信を制御する受信制御ステップと、前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号ステップとを含む。
【００２８】
本発明の一側面のプログラムは、情報処理装置と通信を行うデバイスを制御するコンピュータのプログラムであって、暗号に関する能力を表す能力リストの前記情報処理装置への送信を制御する送信制御ステップと、前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報の受信を制御する受信制御ステップと、前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号ステップとを含む。
【００２９】
本発明の一側面の記録媒体は、情報処理装置と通信を行うデバイスに、暗号に関する能力を表す能力リストの前記情報処理装置への送信を制御する送信制御ステップと、前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報の受信を制御する受信制御ステップと、前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号ステップとを含む処理を実行させるプログラムが記録されている。
【００３０】
本発明の一側面のデバイス、情報処理方法、およびプログラムにおいては、暗号に関する能力を表すリストが送信され、通信を行うアルゴリズムを指定する情報が受信され、そのアルゴリズムに基づいて暗号化や復号が行われる。
【発明の効果】
【００３１】
本発明の一側面によれば、複数のアルゴリズム、復号方式を選択できる。また、選択された方式で通信を行うことが可能となる。
【発明を実施するための最良の形態】
【００３２】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００３３】
本発明の一側面の情報処理システム（例えば、図２の通信システム５０）は、通信を行う情報処理装置およびデバイスにより構成される通信システムであって、前記情報処理装置または前記デバイスのうちの一方から他方に、暗号に関する能力を表すリストを送信する送信手段（例えば、図３のステップＳ５１の処理を実行するリーダライタ１００または図３のステップＳ６２の処理を実行するＩＣカード２００）と、前記送信手段により送信された前記リストを受信した前記他方は、受信されたリストを参照し、自己の暗号に関する能力で前記一方と通信を行うことができるアルゴリズムを決定する決定手段（例えば、図３のステップＳ５３の処理を実行するリーダライタ１００）と、前記決定手段により決定された前記アルゴリズムで通信を行う通信手段（例えば、図３のステップＳ５４乃至Ｓ５６の処理を実行するリーダライタ１００または図３のステップＳ６４の処理を実行するＩＣカード２００）とを備える。
【００３４】
本発明の一側面の情報処理装置（例えば、図２のリーダライタ１００）は、デバイスと通信を行う情報処理装置であって、暗号に関する能力を表す第１の能力リストを記憶する記憶手段（例えば、図２の能力リスト記憶部１０２）と、前記デバイスの暗号に関する能力を表す第２の能力リストを受信する受信手段（例えば、図４のステップＳ１０３の処理を実行する図２の通信部１０７）と、前記第１の能力リストと前記第２の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定手段（例えば、図４のステップＳ１０４の処理を実行する図２の制御部１０１）と、前記決定手段により決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材を前記デバイスに送信する送信手段（例えば、図４のステップＳ１０６の処理を実行する図２の通信部１０７）とを備える。
【００３５】
本発明の一側面のデバイス（例えば、図２のＩＣカード２００）は、情報処理装置と通信を行うデバイスであって、暗号に関する能力を表す能力リストを前記情報処理装置に送信する送信手段（例えば、図７のステップＳ２０３の処理を実行する図２の通信部２０７）と、前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報を受信する受信手段（例えば、図７のステップＳ２０４の処理を実行する図２の通信部２０７）と、前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号手段（例えば、図７のステップＳ２０５乃至Ｓ２０８の処理を実行する図２の乱数生成部２０３、暗号化部２０６）とを備える。
【００３６】
以下に、本発明の実施の形態について図面を参照して説明する。
【００３７】
［システムの構成例］
図２は、本発明を適用した通信システム５０の一実施の形態における構成例を示すブロック図である。通信システム５０は、リーダライタ１００とＩＣカード２００により構成されており、リーダライタ１００とＩＣカード２００は、例えば、それぞれが有するアンテナなどを介して無線による通信を行う。
【００３８】
リーダライタ１００は、制御部１０１、能力リスト記憶部１０２、鍵生成部１０３、データ記憶部１０４、暗号化部１０５、復号部１０６、および通信部１０７を含む構成とされている。
【００３９】
制御部１０１は、例えばＣＰＵ（Central Processing Unit）を含む構成とされ、リーダライタ１００の各部を制御する。能力リスト記憶部１０２は、後述する通信に関する能力、特に、暗号化方式や復号方式（アルゴリズム：本明細書においては、アルゴリズムとの記載には、方式とその方式の鍵の長さについて含む場合もある）に関する能力のリストを記憶する。能力リスト記憶部１０２に記憶されている能力リストは、必要に応じ通信部１０７を介して、ＩＣカード２００に提供される。鍵生成部１０３は、暗号化や復号に用いる鍵を生成する。
【００４０】
データ記憶部１０４は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）などの記憶媒体や記録媒体を含む構成とされ、制御部１０１がリーダライタ１００の各部を制御する上で必要とされるプログラムやデータを記憶し、また、ＩＣカード２００からのデータやＩＣカード２００に提供するデータなどを記憶する。
【００４１】
暗号化部１０５は、ＩＣカード２００に供給する鍵やデータを暗号化する。復号部１０６は、ＩＣカード２００からの暗号化されている鍵やデータを復号する。暗号化部１０５と復号部１０６は、それぞれ、能力リストに記載されている複数のアルゴリズムのうちの１つのアルゴリズムに基づき、暗号化や復号を行う。能力リストには、自己が扱える複数（１以上）のアルゴリズムが記載されており、その記載されている複数のアルゴリズムのうちから１つのアルゴリズムが選択され（指定され）、その選択（指定）されたアルゴリズムに基づく暗号化や復号が行われる。
【００４２】
通信部１０７は、ＩＣカード２００との通信を行う。リーダライタ１００の通信部１０７は、所定の電磁波を輻射し、それに対する負荷の変化に基づいて、ＩＣカード２００が近接されたか否かを検出するとともに、例えば、ＩＣカード２００が近接されたとき、ＩＣカード２００と各種のデータを送受信するアンテナ（不図示）を有する構成とされる。
【００４３】
通信部１０７は、例えば、発振回路（OSC）から供給される所定の周波数の搬送波を、ＩＣカード２００に送信するデータに基づきASK（Amplitude Shift Keying）変調し、生成された変調波を、電磁波としてアンテナから出力する。また、通信部１０７は、アンテナを介して取得した変調波（ASK変調波）を復調し、復調したデータを制御部１０１などに適宜供給する。
【００４４】
ＩＣカード２００は、制御部２０１、能力リスト記憶部２０２、乱数生成部２０３、データ記憶部２０４、暗号化部２０５、復号部２０６、および通信部２０７を含む構成とされている。
【００４５】
制御部２０１は、例えばＣＰＵを含む構成とされ、ＩＣカード２００の各部を制御する。能力リスト記憶部２０２は、後述する通信に関する能力、特に、暗号化方式や復号方式（アルゴリズム）に関する能力のリストを記憶する。能力リスト記憶部２０２に記憶されている能力リストは、必要に応じ通信部２０７を介して、リーダライタ１００に提供される。乱数生成部２０３は、乱数を生成する。生成される乱数は、後述するように、リーダライタ１００との通信におけるセッション鍵として用いられる。
【００４６】
データ記憶部２０４は、ＲＡＭ、ＲＯＭ、EEPROM（Electrically Erasable Programmable Read-Only Memory）などの記憶（記録）媒体を含む構成とされ、制御部２０１がＩＣカード２００の各部を制御する上で必要とされるプログラムやデータを記憶し、また、リーダライタ１００からのデータやリーダライタ１００に提供するデータなどを記憶する。
【００４７】
暗号化部２０５は、リーダライタ１００に供給する鍵やデータを暗号化する。復号部２０６は、リーダライタ１００からの暗号化されている鍵やデータを復号する。暗号化部２０５と復号部２０６は、それぞれ、能力リストに記載されている複数のアルゴリズムのうちの１つのアルゴリズムに基づき、暗号化や復号を行う。能力リストには、自己が扱える複数（１以上）のアルゴリズムが記載されており、その記載されている複数のアルゴリズムのうちから１つのアルゴリズムが選択され（指定され）、その選択（指定）されたアルゴリズムに基づく暗号化や復号が行われる。
【００４８】
通信部２０７は、例えば、コイル状のアンテナとコンデンサにより構成されるＬＣ回路を有する構成とされ、ＬＣ回路が近傍に配置されたリーダライタ１００から輻射される所定の周波数の電磁波と共振するようになされている。また、通信部２０７は、アンテナにおいて励起された交流磁界をASK復調により整流し、それを安定化し、各部に直流電源として供給する。リーダライタ１００から輻射される電磁波の電力は、ＩＣカード２００に必要な電力をまかなう磁界を発生させるように調整されている。
【００４９】
また、通信部２０７は、アンテナを介して受信した変調波（ASK変調波）を包絡線検波して復調し、復調後のデータをBPSK（Binary Phase Shift Keying）復調して制御部２０１などに供給するとともに、受信信号のクロック周波数と同一の周波数のクロック信号を発生して制御部２０１に供給する。
【００５０】
さらに、通信部２０７は、所定の情報をリーダライタ１００に送信する場合、BPSK変調されたデータを、例えばアンテナの負荷の変動に基づいてASK変調し、その変調成分を、アンテナを介してリーダライタ１００に送信する。
【００５１】
上述したように、リーダライタ１００とＩＣカード２００は、無線による通信を行うので、同時に二つ以上のＩＣカードまたはリーダライタが電波を送出し、その結果、ＩＣカードまたはリーダライタがどの対象から電波が発せられたものであるかを区別できなくなるという、いわゆる衝突が懸念されるが、通信システム５０におけるリーダライタ１００とＩＣカード２００のそれぞれは、リーダライタと通信可能な範囲にあるＩＣカードや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）として動作する場合を例として説明する。
【００５６】
［システムの動作について］
次に、図２に示した通信システム５０の動作について図３のフローチャートを参照して説明する。まず、図３のフローチャートを参照し、通信システム５０における動作を簡便に説明し、その後、リーダライタ１００とＩＣカード２００の、それぞれの動作の詳細について説明を加える。
【００５７】
リーダライタ１００は、ステップＳ５１において、能力リストをＩＣカード２００に対して送信する。送信された能力リストは、ステップＳ６１において、ＩＣカード２００により受信される。ＩＣカード２００は、リーダライタ１００から能力リストを受信すると、ステップＳ６２において、自己の能力リストを、リーダライタ１００に送信する。送信された能力リストは、ステップＳ５２において、リーダライタ１００に受信される。
【００５８】
このようにして、リーダライタ１００とＩＣカード２００は、互いに、相手の通信能力に関わる情報、この場合、暗号化や復号に関わるアルゴリズムに関する情報を交換する。
【００５９】
リーダライタ１００は、ステップＳ５３において、自己の能力リストとＩＣカード２００の能力リストを参照し、互いのリストに記載されているアルゴリズム、すなわち、共通するアルゴリズムのうちから、暗号化や復号に用いるアルゴリズムを選択する。
【００６０】
ステップＳ５４において、選択されたアルゴリズムに基づき、暗号化鍵と復号鍵が生成され、そのうちの暗号化鍵がＩＣカード２００に送信される。なお、ここでは、暗号化鍵と復号鍵が生成されるアルゴリズムが選択された場合を例に挙げて説明をしているが、選択されたアルゴリズムにより、生成される鍵や生成の仕方などは異なる。
【００６１】
ＩＣカード２００は、ステップＳ６３において、リーダライタ１００からの暗号化鍵を受信すると、ステップＳ６４において、乱数を発生し、その発生した乱数を、セッション鍵として設定する。そして、セッション鍵は、受信された暗号化鍵で暗号化され、リーダライタ１００に送信される。
【００６２】
リーダライタ１００は、ステップＳ５５において、暗号化されたセッション鍵を受信すると、ステップＳ５６において、ステップＳ５４において生成した復号鍵を用いて暗号化されているセッション鍵を復号する。
【００６３】
このようにして、セッション鍵がリーダライタ１００とＩＣカード２００との間で共用される。セッション鍵が共用された後、このセッション鍵を用いた通信が適宜行われる。
【００６４】
なお、ここでは、上記したように、例えば、ステップＳステップＳ６４において、セッション鍵が暗号化されて送信されるとしたが、セッション鍵そのものが送信されるのではなく、セッション鍵を生成するための素材が送信されるようにしても良い。
【００６５】
すなわち、本実施の形態においては、以下に説明を続けるように、能力リストを交換することにより、暗号化方式が決定されるが、その決定された暗号化方式に基づき、セッション鍵そのものが送受信される場合もあるし、セッション鍵を生成するための素材が送受信される場合もある。また、決定された暗号化方式によっては、セッション鍵に関係のない情報が送受信される場合もあり、送受信される情報は、決定された暗号化方式に依存する。
【００６６】
次に、図４のフローチャートを参照し、リーダライタ１００の動作について詳細に説明する。
【００６７】
ステップＳ１０１において、リーダライタ１００は、能力リストを生成する。リーダライタ１００の制御部１０１は、能力リスト記憶部１０２に記憶されている能力リストを参照し、ＩＣカード２００に送信する能力リストを生成する。生成された能力リストは、ステップＳ１０２において、ＩＣカード２００に対して送信される。
【００６８】
ここで、能力リスト記憶部１０２に記憶されている能力リスト（以下適宜、第１の能力リストと記述する）と、生成される能力リスト（以下適宜、第２の能力リストと記述する）との関係について、図５と図６を参照して説明する。
【００６９】
図５は、能力リスト記憶部１０２に記憶されている能力リストの一例を示す図である。暗号化や復号に関わるアルゴリズムを、鍵共有方式と暗号通信方式の２つに分ける。能力リストもここでは、説明の都合上、図５に示したように２つのリストに分けて説明するが、１つのリスト形式としても勿論よい。
【００７０】
能力リスト記憶部１０２には、鍵共有方式として、１６個のアルゴリズムが登録できるリストと、暗号通信方式として、１６個のアルゴリズムが登録できるリストが、それぞれ記憶されている。ここで、それぞれのリストに１６個のアルゴリズムが登録できるとしたのは、図６に示したように、ＩＣカード２００に送信する第２の能力リストを１６ビットで表現するときに対応している。よって、１６ビット以外のビット数で第２の能力リストを生成するのであれば、そのビット数に応じた数のアルゴリズムを、第１の能力リストとして記憶させることができる。
【００７１】
図６に示した第２の能力リストは、鍵共有方式に１６ビット割り当て、暗号通信方式に１６ビット割り当てたときの一例を示している。図５と図６において、鍵共有方式を適宜“Ｋ”と表し、暗号通信方式を適宜“Ｃ”と表す。
【００７２】
図５に示した第１の能力リストと図６に示した第２の能力リストとの関係を説明するに、第１の能力リストの“Ｋ−０”の欄に記載されているアルゴリズムをリーダライタ１００が処理する能力を有していれば、図６に示した第２の能力リストの鍵供給方式の“Ｋ−０”のビットが１にセットされる。なお、ここでは、有している能力に対応するビットが１にセットされ、有していない能力に対応するビットが０にセットされるとして説明を続けるが、有している能力に対応するビットが０にセットされ、有していない能力に対応するビットが１にセットされるようにすることも可能である。
【００７３】
第１の能力リストの各欄には、１つのアルゴリズムが割り当てられている。例えば、図５を参照するに、“Ｋ−０”という欄には、鍵共有方式である“ＤＨ  ７６８ｂｉｔ”というアルゴリズムが割り当てられている。この割り当てられているアルゴリズムを扱える場合、その欄に何らかの情報が書き込まれている。欄に書き込まれる情報としては、扱えあるか否かを示すフラグであっても良いし、アルゴリズムの名称などの情報でも良い。
【００７４】
このように、能力リスト記憶部１０２に記憶されている第１の能力リストの所定の欄は、所定のアルゴリズムと対応付けられている。図５に示したように、リーダライタ１００が扱わないアルゴリズムに対応する欄は空欄にされる（情報が記載されないか、または、対応するアルゴリズムを処理する能力がないということを示す情報が記載される）。
【００７５】
または、図示はしないが、第１の能力リストは、例えば、リーダライタ１００が扱うアルゴリズムだけの情報だけが記載されたようなリストでもよい。例えば、図５に示した例によれば、“Ｋ−０，Ｋ−１，Ｋ−４，Ｋ−５，Ｋ−８，Ｋ−９，Ｋ−Ｃ，Ｃ−０，Ｃ−１，Ｃ−２，Ｃ−４，Ｃ−５，Ｃ−６”といった情報からなるリストとしても良い。
【００７６】
また、このような第１の能力リストは更新可能としても良い。例えば、通信部１０７（図２）における通信で、新たなアルゴリズムに関するデータが授受され、データ記憶部１０４に、授受されたアルゴリズムのデータが記憶されるとともに、能力リスト記憶部１０２に記憶されている第１の能力リストも更新（新たに追加されたアルゴリズムに対応する欄に、情報が記載される）ようにしても良い。能力リストに記載されているアルゴリズムを削除することも可能であるし、既に記載されている情報を上書きすることも可能であるようにしても良い。
【００７７】
図５に示したような第１の能力リストが参照され、図６に示した第２の能力リストが生成されるようにしても良い。すなわち、第１の能力リストに情報が記載されている欄に対応するビットを１にすることにより、第２の能力リストが生成されるようにしても良い。または、図６に示した第２の能力リストにおいて、扱われるアルゴリズムのビットが１にされている第１の能力リストとしても良い（すなわち、第１の能力リスト＝第２の能力リストの関係が満たされ、能力リスト記憶部１０２に記憶されいる能力リストが読み出され、送信されるようにしても良い）。
【００７８】
図５において、“ＤＨ”は“Diffie-Hellman”の略であり、“ＥＣＤＨ”は“Elliptic Curve Diffie-Hellman”の略であり、“ＲＳＡ”は“Rivest, Shamir, Adleman”の略であり、“ＤＥＳ”は“Data Encryption Standard”の略であり、“ＡＥＳ”は“Advanced Encryption Standard”の略である。また、“Pre-shared key”は、事前共有鍵による鍵共有方式を示す。
【００７９】
図４のフローチャートの説明に戻る。
【００８０】
ステップＳ１０１，１０２において、能力リストが生成され、送信される。送信される第２の能力リストは、リーダライタ１００の能力全てが記載されたリストでも良い（能力リスト記憶部１０２に記憶されている第１の能力リストの全ての情報が反映された第２の能力リストとしても良い）し、一部の能力が記載されたリストでも良い。
【００８１】
一部の能力が記載された能力リストが送信される場合、例えば、後の処理で授受するデータの重要性から、必要とされるセキュリティレベルを満たすアルゴリズムのみ記載された能力リストが生成され、送信されるようにしても良い。換言すれば、一部の能力が記載された能力リストが送信される場合、後の処理、具体的にはステップＳ１０４の処理で、通信に用いるアルゴリズムが決定されるが、その決定される際の候補となるアルゴリズムのみが記載された能力リストが生成され、送信されるようにしても良い。
【００８２】
ステップＳ１０３において、能力リストが受信されたか否かが判断される。リーダライタ１００からＩＣカード２００に対して、リーダライタ１００の能力リストが送信される（図３のステップＳ５１の処理に相当）と、その応答として、ＩＣカード２００からＩＣカードの能力リストが送信されてくる（図３のステップＳ５２の処理に相当）。
【００８３】
ＩＣカード２００の能力リスト記憶部２０２には、リーダライタ１００の能力リスト記憶部１０２と同様に能力リストが記憶されている。すなわち、ＩＣカード２００の能力リスト記憶部２０２には、図５に示したような第１の能力リストが記憶され、図６に示したような第２の能力リストが、リーダライタ１００に送信されてくる。
【００８４】
ステップＳ１０３において、リーダライタ１００の制御部１０１は、通信部１０７により、ＩＣカード２００からの能力リストを受信したと判断すると、ステップＳ１０４において、アルゴリズムの決定を行う。制御部１０１は、受信されたＩＣカード２００の能力リストと、能力リスト記憶部１０２に記憶されている能力リストとを参照し、互いに扱えるアルゴリズムを選択する（２つの能力リストにおいて共にフラグが立てられているアルゴリズムを選択する）。
【００８５】
例えば、リーダライタ１００とＩＣカード２００が共に、図５に示した能力リストを記憶していたような場合、“Ｋ−０，Ｋ−１，Ｋ−４，Ｋ−５，Ｋ−８，Ｋ−９，Ｋ−Ｃ，Ｃ−０，Ｃ−１，Ｃ−２，Ｃ−４，Ｃ−５，Ｃ−６”の欄にフラグが立てられているので、“Ｋ−０，Ｋ−１，Ｋ−４，Ｋ−５，Ｋ−８，Ｋ−９，Ｋ−Ｃ”の鍵共有方式（Ｋ）の中から、１つのアルゴリズムが選択され、“Ｃ−０，Ｃ−１，Ｃ−２，Ｃ−４，Ｃ−５，Ｃ−６”の暗号通信方式（Ｃ）の中から、１つのアルゴリズムが選択される。
【００８６】
この場合、例えば、鍵共用方式（Ｋ）においては、“Ｋ−０，Ｋ−１，Ｋ−４，Ｋ−５，Ｋ−８，Ｋ−９，Ｋ−Ｃ”という７個の欄に対応するアルゴリズムが選択肢とあげられることになる。このように、複数の選択肢が存在するときに、どのアルゴリズムを選択するかの条件は、リーダライタ１００がどのような機能を有し、どのようなデータを管理するかなどを考慮し、設計段階などで適宜設定されるようにしてもよい。
【００８７】
また、例えば、優先順位をつけておき、その優先順位に従って、順位の高いアルゴリズムが選択されるようにしても良い。または、この後の処理として、例えば、ＩＣカード２００とデータの授受が行われるが、そのデータの重要性などに基づいて選択されるようにしても良い。データの重要性などに基づいて選択されるとは、重要なデータを授受するときには、解読しづらいアルゴリズムが選択されることを意味する。一般的に鍵が長いほど解読されづらいので、例えば、選択肢として“Ｋ−０（ＤＨ  ７６８ｂｉｔ）”と“Ｋ−１（ＤＨ  １０２４ｂｉｔ）”があるような場合、鍵の長い“Ｋ−１（ＤＨ  １０２４ｂｉｔ）”が選択される。
【００８８】
このように、何らかの条件に基づいて、暗号化や復号に用いるアルゴリズムが決定される。
【００８９】
ステップＳ１０５において、決定されたアルゴリズムに基づいて暗号化鍵と復号鍵が生成される。制御部１０１は、決定したアルゴリズムに基づいて、鍵を生成するように、鍵生成部１０３に指示を出す。鍵生成部１０３は、指示を受けると、決定されたアルゴリズムに基づき、暗号化鍵と復号鍵を生成する。
【００９０】
決定されたアルゴリズムによるが、鍵生成部１０３が生成する暗号化鍵と復号鍵は、一組の鍵とされる。この生成された暗号化鍵（以下適宜、公開鍵と記載する場合もある）で暗号化された平文（データ）は、一組に生成された復号鍵（以下適宜、秘密鍵と記載する場合もある）でなければ復号することができない。
【００９１】
ステップＳ１０６において、生成された暗号化鍵が送信される。通信部１０７は、鍵生成部１０３により生成された暗号化鍵を、ＩＣカード２００に対して送信する。暗号化鍵とともに、決定されたアルゴリズム（暗号化鍵を生成するのに用いたアルゴリズム）を識別するための情報（以下適宜、識別情報と記述する）も送信される。識別情報として、例えば、図６に示した能力リストの形式で、決定されたアルゴリズムのビットのみが立てられた能力リストを用いることが可能である。
【００９２】
暗号化鍵がＩＣカード２００に供給されるとＩＣカード２００は、暗号化鍵を鍵として暗号化した暗号化セッション鍵を送信してくる（図３のステップＳ６４の処理に相当）。リーダライタ１００は、ステップＳ１０７において、ＩＣカード２００から暗号化セッション鍵を受信したか否かを判断し、受信したと判断するまで受信の待機状態を維持する。
【００９３】
ステップＳ１０７において、暗号化セッション鍵を受信したと判断された場合、ステップＳ１０８に処理が進められ、暗号化セッション鍵が復号される。復号部１０６は、通信部１０７により暗号化セッション鍵が受信されると、鍵生成部１０３により生成された復号鍵で暗号化セッション鍵を復号する。
【００９４】
ステップＳ１０９において、復号されたセッション鍵を用いた通信が開始される。例えば、リーダライタ１００からデータ記憶部１０４に記憶されているデータがＩＣカード２００に送信される場合、データ記憶部１０４からデータが読み出され、暗号化部１０５でセッション鍵を鍵とした暗号化が行われ、通信部１０７によりＩＣカード２００に対して送信される。また、ＩＣカード２００からデータが送信されてきた場合、通信部１０７により受信され、復号部１０６により、セッション鍵を鍵とした復号が行われる。
【００９５】
このようにして、本実施の形態においては、セッション鍵の授受が行われる前の時点で、暗号化や復号に関わるアルゴリズムの能力に関する情報が授受される。また、その授受される情報に基づいて、アルゴリズムが選択される。このようにすることで、複数のアルゴリズムを扱うことが可能となる。また、複数のアルゴリズムを扱うことができることにより、より高いセキュリティレベルが要求されるような通信のときでも、または逆に、低いセキュリティレベルでも良いような通信のときでも、幅広く対応することができ、通信の拡張性をもたせることが可能となる。
【００９６】
次に、ＩＣカード２００の動作について、図７のフローチャートを参照して説明する。
【００９７】
ステップＳ２０１において、ＩＣカード２００は、能力リストを受信したか否かを判断する。ＩＣカード２００の制御部２０１は、通信部２０７によりリーダライタ１００からの能力リストを受信したか否かを判断し、受信したと判断するまで、受信の待機状態を維持する。
【００９８】
ステップＳ２０１においてリーダライタ１００からの能力リストを受信したと判断された場合、ステップＳ２０２において、能力リストが生成され、ステップＳ２０３において、生成された能力リストが送信される。
【００９９】
このステップＳ２０２とステップＳ２０３の処理は、基本的に、リーダライタ１００で実行されるステップＳ１０１とステップＳ１０２の処理と基本的に同様に行われる。すなわち、ＩＣカード２００も、能力リスト記憶部２０２に図５に示したような第１の能力リストを記憶し、図６に示したような第２の能力リストで送信される。
【０１００】
なお、ＩＣカード２００が能力リスト（第２の能力リスト）を送信する際、その送信する能力リストは、ＩＣカード２００の能力全てが記載されたリストでも良い（能力リスト記憶部２０２に記憶されている第１の能力リストの全ての情報が反映された第２の能力リストとしても良い）し、一部の能力が選択的に記載されたリストでも良い。
【０１０１】
一部の能力が記載された能力リストが送信される場合、例えば、受信したリーダライタ１００の能力リストが参照され、リーダライタ１００と一致するアルゴリズムが選択され、その選択されたアルゴリズムだけが記載された能力リストが生成され、送信される。また、一致するアルゴリズムがない場合、同一のアルゴリズムでの暗号化や復号を行うことができないので、能力リストが送信されないようにしても良い。
【０１０２】
また、ＩＣカード２００は、能力リストを生成する前に、リーダライタ１００の能力リストを参照し、リーダライタ１００と通信を継続するか否かを判断するようにしても良い。例えば、ＩＣカード２００は、授受するデータの重要性から必要とされるセキュリティレベルを満たすアルゴリズムを判断し、リーダライタ１００の能力リストを参照し、セキュリティレベルを満たすアルゴリズムをリーダライタ１００は扱える装置でないと判断したとき、通信を継続しないと判断し、その後の処理を継続しないようにしても良い。
【０１０３】
図７のフローチャートの説明に戻り、ステップＳ２０３において、能力リストが送信されると、ステップＳ２０４に処理が進められ、暗号化鍵を受信したか否かが判断される。リーダライタ１００は、上述したように、ＩＣカード２００から能力リストを受信すると、暗号化鍵を生成し、送信してくる。その送信された暗号化鍵を受信したか否かが判断される。
【０１０４】
ステップＳ２０４において、暗号化鍵を受信したと判断された場合、ステップＳ２０５に処理が進められ、アルゴリズムが特定される。アルゴリズムの特定は、暗号化鍵とともにリーダライタ１００から送られてきた識別情報を基に特定される。
【０１０５】
ステップＳ２０６において、乱数生成部２０３は、乱数Ａを生成（発生）する。ステップＳ２０７において、制御部２０１は、生成された乱数Ａを、例えば、データ記憶部２０４の中の予め定められた所定の領域に記憶する。
【０１０６】
なおここでは、特定されたアルゴリズムが、以下に説明するように、乱数を生成し、その乱数をセッション鍵とするというアルゴリズムである場合を例に挙げて説明している。よって、例えば、図８以降の図面を参照して説明するように、他のアルゴリズムが特定された場合には、その特定されたアルゴリズムに基づいてステップＳ２０６以下の処理が実行されるため、必ずしも乱数が生成されるわけではない。
【０１０７】
ステップＳ２０８において、暗号化部２０６は、通信部２０７により受信された暗号化鍵を鍵とし、乱数生成部２０３により生成された乱数Ａを暗号化する。ステップＳ２０９において、暗号化された乱数Ａをセッション鍵とし、例えば、データ記憶部２０４の中の予め定められた所定の領域に記憶する。
【０１０８】
ステップＳ２１０において、暗号化された乱数Ａ、すなわち、暗号化されたセッション鍵が、リーダライタ１００に対して送信される。
【０１０９】
このように、データの授受などの処理を始める前の段階で、データの授受を行う装置間で暗号化や復号に関するアルゴリズムのリストを交換するようにしたので、複数のアルゴリズムを扱えるようになり、例えばセキュリティレベルによって、アルゴリズムを使い分けることができるようになり、通信に拡張性を持たせることが可能となる。
【０１１０】
上述したように、複数のアルゴリズムを扱えるようにした場合、リーダライタ１００やＩＣカード２００は、それぞれ自己が扱うアルゴリズムに対応する構成とされる必要がある。図２を参照して説明したリーダライタ１００とＩＣカード２００の構成においてリーダライタ１００は、暗号化鍵を生成し、送信できる構成とされ、ＩＣカード２００は、送信されたきた暗号化鍵を鍵として乱数を暗号化し、送信できる構成とされていた。このような構成においては、上述したように、ＩＣカード２００側で生成された乱数をセッション鍵とするアルゴリズムに対応している。
【０１１１】
次に、他のアルゴリズムが適用される場合の本実施の形態について説明を加える。
【０１１２】
図８乃至図１０を参照し、アルゴリズムとしてＤＨ（Diffie-Hellman）法を適用した場合の本実施の形態について説明する。
【０１１３】
ＤＨ法では、通信を行う双方で、公開鍵と秘密鍵を生成（保持）する必要があるため、図８に示すように、ＩＣカード２００は、鍵を生成する鍵生成部３０１を備える構成とされる。
【０１１４】
図８に示した通信システム５０は、図２に示した通信システム５０と同様に、リーダライタ１００とＩＣカード２００とから構成されている。リーダライタ１００は、図２に示したリーダライタ１００と同様の構成とされている。ＩＣカード２００は、鍵を生成する鍵生成部３０１を備える構成とされている。図８に示したＩＣカード２００の構成によれば、上記した乱数を生成し、その乱数をセッション鍵とするようなアルゴリズムにも対応できるし、以下に説明する鍵を生成し、その鍵をセッション鍵とするようなアルゴリズムにも対応できる。
【０１１５】
図８に示した通信システム５０の動作は、基本的に、図３に示したフローチャートを参照して説明した場合と同様に行われる。すなわち、鍵の授受が行われる前に、どのようなアルゴリズムに基づいて鍵を生成するかを示す能力リストが交換され、交換後、アルゴリズムに基づく鍵の生成や授受が行われる。
【０１１６】
リーダライタ１００とＩＣカード２００のそれぞれの動作について以下に説明する。
【０１１７】
まず、図９のフローチャートを参照し、リーダライタ１００の動作について説明する。なお、図４のフローチャートを参照して説明したリーダライタ１００の動作と同様に行われる動作については、適宜、その説明を省略する。
【０１１８】
ステップＳ３０１，Ｓ３０２において、能力リストが生成され、送信される。ステップＳ３０３において、ＩＣカード２００からの能力リストが受信されると、ステップＳ３０４において、アルゴリズムが決定される。
【０１１９】
このステップＳ３０１乃至Ｓ３０４の処理は、図２のステップＳ１０１乃至Ｓ１０４と同様に行われる。すなわち、能力リストの授受に関する処理は、後の処理で用いられるアルゴリズムによらず同様に行われる。
【０１２０】
ステップＳ３０４において、アルゴリズムが決定される。ここでは、ＤＨ法と決定されるとして説明を続ける。
【０１２１】
ステップＳ３０５において、鍵生成部１０３（図８）は、決定されたアルゴリズムであるＤＨ法に基づき、公開鍵と秘密鍵を生成する。リーダライタ１００が生成する公開鍵と秘密鍵とＩＣカード２００が生成する公開鍵と秘密鍵を区別するために、ここでは、リーダライタ１００が生成する公開鍵と秘密鍵をそれぞれ公開鍵Ｋｉと秘密鍵Ｋｉと記述し、ＩＣカード２００が生成する公開鍵と秘密鍵をそれぞれ公開鍵Ｋｔと秘密鍵Ｋｔと記述する。
【０１２２】
鍵生成部１０３は、秘密鍵Ｋｉを生成する。そして鍵生成部１０３は、生成した秘密鍵Ｋｉを用いて、公開鍵Ｋｉを、次式に基づいて生成する。
公開鍵ｋｉ＝ｇ＾秘密鍵Ｋｉ ｍｏｄ ｐ
この式において、ｇ，ｐは、ドメインパラメータなどと称される値であり、リーダライタ１００とＩＣカード２００で同じ値が用いられる。
【０１２３】
このようにして生成された公開鍵Ｋｉと秘密鍵Ｋｉは、データ記憶部１０４に記憶される。
【０１２４】
ステップＳ３０６において、生成された公開鍵Ｋｉと、ステップＳ３０４において決定されたアルゴリズムを識別するための識別情報が、ＩＣカード２００に送信される。
【０１２５】
ステップＳ３０８において、ＩＣカード２００からＩＣカード２００の公開鍵Ｋｔを受信したか否かが判断される。リーダライタ１００が、公開鍵Ｋｉを送信したことに対応し、ＩＣカード２００は、自己の公開鍵Ｋｔを送信してくる。その送信されてきた公開鍵Ｋｔを受信したか否かが、ステップＳ３０８において判断され、受信したと判断されるまで受信待ちの状態が維持される。
【０１２６】
ステップＳ３０９において、ＩＣカード２００からのセッション鍵を復号する。セッション鍵は、受信されたＩＣカード２００の公開鍵Ｋｔとリーダライタ１００の秘密鍵Ｋｉが用いられ、以下の式により導出される。
セッション鍵＝公開鍵Ｋｔ＾秘密鍵Ｋｉ ｍｏｄ ｐ
【０１２７】
セッション鍵が導出されと、ステップＳ３１０において、セッション鍵を用いた通信が開始される。
【０１２８】
このように、能力リストを交換し、アルゴリズムが決定されると、そのアルゴリズムに基づく処理が実行される。換言すれば、アルゴリズムが決定される前の処理は、アルゴリズムによらず共通して行われ、アルゴリムが決定された後は、決定されたアルゴリズムに基づく処理が実行される。このように、アルゴリズムに基づく処理を行う前に、互いにどのようなアルゴリズムを扱えるかの情報を交換することで、複数のアルゴリズムを扱うことが可能となり、複数のアルゴリズムのなかから、通信を行う上で適切なアルゴリズムを選択できるようになり、通信に拡張性をもたせることが可能となる。
【０１２９】
次に、図９に示したフローチャートの処理がリーダライタ１００側で行われるときのＩＣカード２００の動作について、図１０のフローチャートを参照して説明する。ステップＳ４０１乃至Ｓ４０３の処理は、図７のステップＳ２０１乃至Ｓ２０３の処理と同様である。すなわちこの場合も、能力リストの交換における処理は、アルゴリズムによらず、同一に行われる。
【０１３０】
ステップＳ４０４において、リーダライタ１００からの公開鍵Ｋｉを受信したか否かが判断される。ステップＳ４０４において、公開鍵Ｋｉを受信したと判断されると、ステップＳ４０５に処理が進めら、アルゴリズムが特定される。ステップＳ４０４，Ｓ４０５の処理は、図７のステップＳ２０４，Ｓ２０５と基本的に同様であるが、受信する鍵が公開鍵Ｋｉである点が異なる。
【０１３１】
ステップＳ４０６において、ＩＣカード２００の鍵生成部３０１は、公開鍵Ｋｔと秘密鍵Ｋｔを生成する。制御部２０１は、通信部２０７により公開鍵Ｋｉとアルゴリズムを識別するための識別情報を受信すると、まず、その識別情報からアルゴリズムを特定する。そして、制御部２０１は、特定されたアルゴリズムに応じて、乱数生成部２０３か鍵生成部３０１に対して指示を出す。この場合、特定されるアルゴリズムは、ＤＨ法であるので、鍵生成部３０１に対して、ＤＨ法に基づく公開鍵Ｋｔと秘密鍵Ｋｔを生成するように指示が出される。
【０１３２】
鍵生成部３０１において、秘密鍵Ｋｔがまず生成される。生成された秘密鍵Ｋｔが用いられて、公開鍵Ｋｔが、次式に基づいて生成される。
公開鍵ｋｔ＝ｇ＾秘密鍵Ｋｔ ｍｏｄ ｐ
【０１３３】
このようにして生成された公開鍵Ｋｔと秘密鍵Ｋｔは、ステップＳ４０７において、データ記憶部２０４に記憶される。
【０１３４】
ステップＳ４０８において、受信された公開鍵Ｋｉと生成された秘密鍵Ｋｔでセッション鍵が生成される。鍵生成部３０１または暗号化部２０６において、次式に基づいてセッション鍵が生成される。
セッション鍵＝公開鍵ｋｉ＾秘密鍵Ｋｔ ｍｏｄ ｐ
【０１３５】
ＤＨ法に基づいてセッション鍵が生成される場合、リーダライタ１００とＩＣカード２００は、それぞれセッション鍵を生成（導出）するが（リーダライタ１００はステップＳ３０９において生成し、ＩＣカード２００はステップＳ４０８において生成する）、同一のセッション鍵が生成（導出）されるため、リーダライタ１００とＩＣカード２００は、同一のセッション鍵を共有することになる。
【０１３６】
ステップＳ４１０において、生成された公開鍵Ｋｔが、リーダライタ１００に対して送信される。この公開鍵Ｋｔを用いてリーダライタ１００は、上述したように、セッション鍵を導出する。
【０１３７】
このようにして、複数のアルゴリズムを扱えるようになり、選択されたアルゴリズムに応じた処理ができるようになる。リーダライタ１００やＩＣカード２００の構成は、図２や図８に示した構成例に限定されるのではなく、扱うアルゴリズムに応じて必要とされる機能を実現するための構成が適宜、追加、削除されることは勿論のことである。
【０１３８】
さらに本実施の形態に関し、交換される能力リストなどの具体例を挙げ、図１１のフローチャートを参照して説明を加える。
【０１３９】
ステップＳ５０１において、リーダライタ１００は、能力リストを生成し、送信する。能力リスト記憶部１０２には、図１２に示したような能力リストが記憶されている場合を例に挙げて説明する。図１２に示した能力リストは、鍵共有方式Ｋｉとして“Ｋ−０”の欄に｛ＤＨ  ７６８ｂｉｔ｝が、“Ｋ−４”の欄に｛ＥＤｃｈ  １６０ｂｉｔ｝が、それぞれ記載され、暗号化通信方式Ｃｉとして“Ｃ−０”の欄に｛ＤＥＳ  ５６ｂｉｔ｝が、“Ｃ−４”の欄に｛ＡＥＳ  １２８ｂｉｔ｝が、それぞれ記載されている。
【０１４０】
このような図１２に示したような能力リストが参照されて生成される能力リストは、例えば、図１３に示すようになる。すなわち、送信される能力リストは、鍵共有方式Ｋｉとして｛ＤＨ  ７６８ｂｉｔ｝、｛ＥＤｃｈ  １６０ｂｉｔ｝という２つの方式にそれぞれ対応する“Ｋ−０”と“Ｋ−４”という欄のビットが１に設定され、暗号化通信方式Ｃｉとして｛ＤＥＳ  ５６ｂｉｔ｝、｛ＡＥＳ  １２８ｂｉｔ｝という２つの方式にそれぞれ対応する“Ｃ−１”と“Ｃ−４”という欄のビットが１に設定されたリストである。
【０１４１】
このような能力リストが送信されると、ステップＳ６０１において、ＩＣカード２００により受信される。ステップＳ６０２において、ＩＣカード２００は、能力リストを生成し、送信する。能力リスト記憶部２０２には、図１４に示したような能力リストが記憶されている場合を例に挙げて説明する。図１４に示した能力リストは、鍵共有方式Ｋｔとして“Ｋ−０”の欄に｛ＤＨ  ７６８ｂｉｔ｝が、“Ｋ−１”の欄に｛ＤＨ  １０２４ｂｉｔ｝が、それぞれ記載され、暗号化通信方式Ｃｔとして“Ｃ−４”の欄に｛ＡＥＳ  １２８ｂｉｔ｝が記載されている。
【０１４２】
このような図１４に示したような能力リストが参照されて生成される能力リストは、例えば、図１５に示すようになる。すなわち、送信される能力リストは、鍵共有方式Ｋｔとして｛ＤＨ  ７６８ｂｉｔ｝、｛ＤＨ  １０２４ｂｉｔ｝という２つの方式にそれぞれ対応する“Ｋ−０”と“Ｋ−１”という欄のビットが１に設定され、暗号化通信方式Ｃｔとして｛ＡＥＳ  １２８ｂｉｔ｝という１つの方式にそれぞれ対応する“Ｃ−４”という欄のビットが１に設定されたリストである。
【０１４３】
このような能力リストが送信されると、ステップＳ５０２において、リーダライタ１００により受信される。ステップＳ５０３において、リーダライタ１００は、アルゴリズムを決定する。鍵共有方式Ｋとしてはこの場合、リーダライタ１００が｛ＤＨ  ７６８ｂｉｔ，ＥＤｃｈ  １６０ｂｉｔ｝という２つの方式に対応し、ＩＣカード２００が｛ＤＨ  ６８ｂｉｔ，ＤＨ  １０２４ｂｉｔ｝という１つの方式で２つの異なるセキュリティレベルに対応しているため、共通している方式である｛ＤＨ  ７６８ｂｉｔ｝が選択される。
【０１４４】
また、暗号通信方式Ｃとしてはこの場合、リーダライタ１００が｛ＤＥＳ  ５６ｂｉｔ，ＡＥＳ  １２８ｂｉｔ｝という２つの方式に対応し、ＩＣカード２００が｛ＡＥＳ  １２８ｂｉｔ｝という１つの方式に対応しているため、共通している方式である｛ＡＥＳ  １２８ｂｉｔ｝が選択される。
【０１４５】
結果として、アルゴリズムとして、鍵共有方式Ｋ＝｛ＤＨ  ７６８ｂｉｔ｝、暗号通信方式Ｃ＝｛ＡＥＳ  １２８ｂｉｔ｝が選択される。
【０１４６】
ステップＳ５０４において、リーダライタ１００は、公開鍵Ｋｉと秘密鍵Ｋｉを生成する。この場合、鍵共有方式としてＤＨ方式が選択されているため、秘密鍵Ｋｉが生成され、その生成された秘密鍵Ｋｉを用いて、公開鍵Ｋｉが、次式に基づいて生成される。
公開鍵ｋｉ＝ｇ＾秘密鍵Ｋｉ ｍｏｄ ｐ
【０１４７】
ステップＳ５０５において、公開鍵Ｋｉとアルゴリズムの識別情報が送信される。この場合、アルゴリズムの識別情報としては、鍵共有方式Ｋ＝｛ＤＨ  ７６８ｂｉｔ｝、暗号通信方式Ｃ＝｛ＡＥＳ  １２８ｂｉｔ｝という情報が、ＩＣカード２００側で識別できるような情報である。
【０１４８】
このような公開鍵Ｋｉと識別情報が送信されると、ステップＳ６０３において、ＩＣカード２００により受信される。ステップＳ６０４において、公開鍵Ｋｔと秘密鍵Ｋｔが生成される。この場合、識別情報からアルゴリズムはＤＨ法であり、鍵長が７６８ｂｉｔであると特定されるので、ＤＨ法に基づく公開鍵Ｋｔと秘密鍵Ｋｔが生成される。
【０１４９】
ＩＣカード２００において、秘密鍵Ｋｔが生成されると、その生成された秘密鍵Ｋｔが用いられて、公開鍵Ｋｔが、次式に基づいて生成される。
公開鍵ｋｔ＝ｇ＾秘密鍵Ｋｔ ｍｏｄ ｐ
【０１５０】
ステップＳ６０５において、セッション鍵が生成される。セッション鍵は、受信された公開鍵Ｋｉと生成された秘密鍵Ｋｔから次式に基づいて生成される。
セッション鍵＝公開鍵ｋｉ＾秘密鍵Ｋｔ ｍｏｄ ｐ
【０１５１】
ステップＳ６０６において、生成された公開鍵Ｋｔが、リーダライタ１００に対して送信される。
【０１５２】
ステップＳ５０６において、リーダライタ１００が、ＩＣカード２００からの公開鍵Ｋｔを受信すると、ステップＳ５０７において、セッション鍵を導出する。セッション鍵は、以下の式により導出される。
セッション鍵＝公開鍵Ｋｔ＾秘密鍵Ｋｉ ｍｏｄ ｐ
【０１５３】
セッション鍵が導出されと、その導出されたセッション鍵をパケット暗号化に利用する暗号化通信が行われる。この場合、セッション鍵を｛ＡＥＳ  １２８ｂｉｔ｝の暗号化に利用した暗号化通信が行われる。
【０１５４】
すなわち、ステップＳ５０８において、ＩＣカード２００に送信するデータ（平文ｉ）が、セッション鍵を鍵としたＡＥＳ方式の暗号化方式で、暗号化され、暗号文ｉが生成され、送信される。
暗号文ｉ＝ＡＥＳ１２８＿ＥＮＣ（平文ｉ）
【０１５５】
送信された暗号文ｉが、ステップＳ６０７において、ＩＣカード２００により受信されると、ステップＳ６０８において解読される。すなわち、ＩＣカード２００は、この場合、受信した暗号文ｉは、ＡＥＳ方式で暗号化されていることを認識しているので、受信した暗号文ｉを、ＡＥＳ方式で、セッション鍵を用いて復号し、平文ｉを取得する。
平文ｉ＝ＡＥＳ１２８＿ＤＥＳ（暗号文ｉ）
【０１５６】
このようにして平文ｉを取得したＩＣカード２００は、必要に応じ、リーダライタ１００に対してデータを暗号化して送信する。ここではステップＳ６０９において、ＩＣカード２００は、平文ｔをＡＥＳ方式で暗号化して暗号文ｔを生成し、送信するとする。
暗号文ｔ＝ＡＥＳ１２８＿ＥＮＣ（平文ｔ）
【０１５７】
送信された暗号文ｔが、ステップＳ５０９において、リーダライタ１００により受信されると、ステップＳ５１０において、解読される。すなわち、リーダライタ１００は、この場合、受信した暗号文ｔは、ＡＥＳ方式で暗号化されていることを認識しているので、受信した暗号文ｔを、ＡＥＳ方式で、セッション鍵を用いて復号し、平文ｔを取得する。
平文ｔ＝ＡＥＳ１２８＿ＤＥＳ（暗号文ｔ）
【０１５８】
このようにして、必要な回数だけデータの授受が繰り返し行われる。
【０１５９】
なお、上述した実施の形態においては、リーダライタ１００側でアルゴリズムを決定するようにしたが、ＩＣカード２００側で決定するようにしても良い。
【０１６０】
なお、上述した実施の形態における能力リストの交換に関わる処理は、アルゴリズムを決定する前の段階で行われていれば、どのようなタイミングで行われても良い。例えば、リーダライタ１００側でポーリングリクエストを出すときに、そのポーリングリクエストとして、能力リストを送信するようにしても良い。
【０１６１】
また例えば、リーダライタ１００側でポーリングリクエストを出し、そのポーリングリクエストに対してＩＣカード２００が応答してきた時点で、能力リストが送信されるようにしても良い。
【０１６２】
さらには、上述した実施の形態においては、リーダライタ１００側から能力リストが送信され、その後に、ＩＣカード２００側から能力リストが送信されるとして説明したが、例えば、ＩＣカード２００側が、リーダライタ１００からのポーリングリクエストを受信し、その応答としてＩＣカード２００が能力リストを送信し、その応答としてリーダライタ１００が能力リストを送信するといったように、ＩＣカード２００から先に能力リストを送信するようにしても良い。
【０１６３】
なお、上述した実施の形態においては、リーダライタ１００とＩＣカード２００は、それぞれ能力リストを送信するとしたが、どちらか一方のみが他方に能力リストを送信するようにしても良い。例えば、リーダライタ１００からＩＣカード２００に能力リストを送信し、ＩＣカード２００は、リーダライタ１００からの能力リストを参照し、所望のアルゴリズムを選択し、その選択したアルゴリズムの識別情報をリーダライタ１００に送信するようにし、ＩＣカード２００からはＩＣカード２００の能力リストを送信しないようにしても良い。
【０１６４】
または、例えば、ＩＣカード２００からリーダライタ１００に能力リストを送信し、リーダライタ１００は、ＩＣカード２００からの能力リストを参照し、所望のアルゴリズムを選択し、その選択したアルゴリズムの識別情報をＩＣカード２００に送信するようにし、リーダライタ１００からはリーダライタ１００の能力リストを送信しないようにしても良い。
【０１６５】
換言すれば、一方から他方に能力リストを送信し、能力リストを受信した他方において利用するアルゴリズムを決定し、決定したアルゴリズムの識別情報を一方に送信するようにし、互いに能力リストを交換することがないようにしても良い。
【０１６６】
本発明によれば、データの授受を行うときの暗号化や復号に用いるアルゴリズムを、複数（１以上）、扱うことが可能となり、それらの複数のアルゴリズムから、授受するデータの重要性などに応じて、適切なアルゴリズムを選択して利用することが可能となる。よって、例えば、低いセキュリティレベルから高いセキュリティレベルまでの通信を、必要なセキュリティレベルで対応できる通信が可能となり、通信に拡張性をもたせることが可能となる。
【０１６７】
本明細書における情報処理装置、デバイスとの用語は、例えば、NFCIP-1の規格においては、イニシエータとターゲット、すなわち、それぞれ、ＲＦフィールドを発生し、NFCIP-1通信を開始する装置と負荷変調または自ら発生したＲＦフィールドの変調を利用してイニシエータからの命令に応答する装置に対応する。また、これら装置は、それぞれの機能を有する１つ以上のＩＣチップを搭載した通信装置であって、他の機能等を有した装置であっても良い。
【０１６８】
上述した実施の形態においては、イニシエータとしてリーダライタ１００を例に挙げ、ターゲットとしてＩＣカード２００を例に挙げて説明したが、本発明は、リーダライタ１００やＩＣカード２００だけに適用が限定されるものではない。例えば、本発明は、データを授受する装置に適用することが可能であり、授受する際、無線で通信を行う装置であっても、有線で通信を行う装置であっても適用することが可能である。
【０１６９】
［記録媒体について］
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、図２のＣＰＵ１０５またはＣＰＵ２０７により実行され、それらのプログラムは、リーダライタ１００（３００）またはＩＣカード２００（４００）が読み取り可能な記録媒体などから読み込まれる。
【０１７０】
本明細書において上述した一連の処理を実行するステップは、記載された順序に沿って時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【０１７１】
【図１】従来の通信方式の一例について説明するフローチャートである。
【図２】本発明の通信システムの一実施の形態の構成を示す図である。
【図３】通信システムの動作について説明するフローチャートである。
【図４】リーダライタの動作について説明するフローチャートである。
【図５】能力リストについて説明する図である。
【図６】能力リストについて説明する図である。
【図７】ＩＣカードの動作について説明するフローチャートである。
【図８】通信システムの他の構成例を示す図である。
【図９】リーダライタの他の動作について説明するフローチャートである。
【図１０】ＩＣカードの他の動作について説明するフローチャートである。
【図１１】通信システムの動作について説明するフローチャートである。
【図１２】能力リストについて説明する図である。
【図１３】能力リストについて説明する図である。
【図１４】能力リストについて説明する図である。
【図１５】能力リストについて説明する図である。
【符号の説明】
【０１７２】
５０  通信システム，  １００  リーダライタ，  １０１  制御部、  １０２  能力リスト記憶部，  １０３  鍵生成部，  １０４  データ記憶部，  １０５  暗号化部，  １０６  復号部，  １０７  通信部，  ２００  ＩＣカード，  ２０１  制御部、  ２０２  能力リスト記憶部，  ２０３  乱数生成部，  ２０４  データ記憶部，  ２０５  暗号化部，  ２０６  復号部，  ２０７  通信部，  ３０１  鍵生成部
【図１】
2008066834.tif 000003
【図２】
2008066834.tif 000004
【図３】
2008066834.tif 000005
【図４】
2008066834.tif 000006
【図５】
2008066834.tif 000007
【図６】
2008066834.tif 000008
【図７】
2008066834.tif 000009
【図８】
2008066834.tif 000010
【図９】
2008066834.tif 000011
【図１０】
2008066834.tif 000012
【図１１】
2008066834.tif 000013
【図１２】
2008066834.tif 000014
【図１３】
2008066834.tif 000015
【図１４】
2008066834.tif 000016
【図１５】
2008066834.tif 000017