説明

通信システムおよび通信方法、情報処理装置および方法、デバイス、プログラム、並びに記録媒体

【課題】複数のアルゴリズムを扱えるようにし、通信に拡張性をもたせる。
【解決手段】能力リスト102は、リーダライタ100が扱う暗号化や復号のアルゴリズムに関する能力が記載された能力リストを記憶している。同様に、能力リスト202は、ICカード200が扱う暗号化や復号のアルゴリズムに関する能力が記載された能力リストを記憶している。リーダライタ100とICカード200は、互いの能力リストを交換し、授受するデータの重要性に応じたセキュリティレベルを確保できるアルゴリズムを選択し、その選択したアルゴリズムに基づく通信を行う。本発明は、例えば、NFCIP方式で通信を行う装置に適用できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信システムおよび通信方法、情報処理装置および方法、デバイス、プログラム、並びに記録媒体に関し、特に、安全かつ利便性の高い情報通信を行うときに、互いの通信能力などを考慮して通信が行えるようにする通信システムおよび通信方法、情報処理装置および方法、デバイス、プログラム、並びに記録媒体に関する。
【背景技術】
【0002】
情報技術の発展に伴い、コンピュータ等の情報処理装置をWLAN(Wireless Local Area Network)や、Bluetooth(登録商標)等の無線通信手段で接続し、ファイルやデータ等の情報を送受信したり、共有したりする通信システムが構築されている。
【0003】
Bluetooth等を用いた広域通信可能な通信装置を携帯電話、パーソナルコンピュータに搭載した広域通信機能搭載機器を利用して、動画データや、音楽データ等の大容量データを送受信している。また、一方で広域通信によるデータ通信において、第三者の広域通信機能搭載機器によってデータが盗聴されたり、データが改ざんされたりする等のセキュリティ上の危険性を低減するため、広域通信においても、データを暗号化する暗号化処理を導入するのが一般的となっている。
【0004】
しかしながら、Bluetoothをはじめとする広域通信に暗号化処理を実行するためには、まず通信相手を特定する必要があるが、広域通信の通信可能エリアが広いため、想定外の広域通信機能搭載機器が通信相手として特定されてしまう可能性があった。
【0005】
通信相手を特定しても、さらにセキュアな通信を開始するためのセッション鍵を通信相手双方で共有する必要があるが、広域通信の通信可能エリアが広いという特性上、セッション鍵を通信相手に送信する際に、第三者が使用する広域通信機能搭載機器によって、その鍵が盗聴され、解読されてしまう可能性があったため、鍵長を長くするなどセッション鍵の強度を高める必要があり、そのためには広域通信機能搭載機器の高い処理能力が必要とされていた。
【0006】
そこで、通信装置の双方でセキュアにセッション鍵を共有することを可能にすることが提案されている。(例えば、特許文献1参照)
【0007】
ここで、特許文献1に開示されている通信について、図1を参照して簡便に説明を加える。通信を行う装置を、ここでは、イニシエータ(Initiator)とターゲット(Target)と称する。
【0008】
イニシエータは、ステップS11において、鍵の生成と送信を行う。イニシエータは、例えば、ポーリング(問合せ処理)を実行し、そのポーリングに対してターゲットからの応答が送信されてくると、その応答を受信し、暗号化鍵と復号鍵とを生成する。イニシエータは、生成した暗号化鍵をターゲットに送信する。
【0009】
ステップ21において、ターゲットは、暗号化鍵を受信する。ステップS22において、ターゲットは、乱数を発生し、その発生した乱数をセッション鍵とする。そしてセッション鍵は、受信された暗号化鍵を鍵として暗号化される。暗号化されたセッション鍵は、イニシエータに送信される。
【0010】
イニシエータは、ステップS12において、ターゲットから暗号化されたセッション鍵を受信すると、復号鍵で復号し、セッション鍵を取得する。ステップS13において、復号されたセッション鍵を用いた通信が開始される。
【0011】
このようにイニシエータは、暗号化されたセッション鍵を受信すると、その暗号化されたセッション鍵を、既に生成している復号鍵で復号し、セッション鍵を取得する。このようにして、イニシエータとターゲットとの間で、共通のセッション鍵が共有される。そして、このセッション鍵が用いられた通信、例えば、セッション鍵で授受するデータを暗号化する通信が行われる。
【0012】
【特許文献1】特開2006−14076号公報
【発明の開示】
【発明が解決しようとする課題】
【0013】
特許文献1に開示されているように、セッション鍵を共有するようにすれば、セキュアな通信を行うことが可能となる。さらに、例えば、授受するデータにより、アルゴリズムを変更するなどすれば、よりセキュアな通信を行えるようになり、かつ、拡張性のある通信を行えるようになる。
【0014】
本発明は、このような状況に鑑みてなされたものであり、よりセキュアな通信を行えるようにし、かつ、拡張性のある通信を行えるようにするものである。
【課題を解決するための手段】
【0015】
本発明の一側面の情報処理システムは、通信を行う情報処理装置およびデバイスにより構成される通信システムであって、前記情報処理装置または前記デバイスのうちの一方から他方に、暗号に関する能力を表すリストを送信する送信手段と、前記送信手段により送信された前記リストを受信した前記他方は、受信されたリストを参照し、自己の暗号に関する能力で前記一方と通信を行うことができるアルゴリズムを決定する決定手段と、前記決定手段により決定された前記アルゴリズムで通信を行う通信手段とを備える。
【0016】
本発明の一側面の情報処理システムの通信方法は、通信を行う情報処理装置およびデバイスにより構成される通信システムの通信方法であって、前記情報処理装置または前記デバイスのうちの一方から他方に、暗号に関する能力を表すリストを送信し、送信された前記リストを受信した前記他方は、受信されたリストを参照し、自己の暗号に関する能力で前記一方と通信を行うことができるアルゴリズムを決定し、決定された前記アルゴリズムで通信を行う。
【0017】
本発明の一側面の情報処理システムおよび通信方法においては、通信を行う装置間で、少なくとも一方の装置から他方の装置に対して、暗号に関する能力を表すリストが送信され、受信した側において、通信に用いるアルゴリズムが決定され、その決定されたアルゴリズムに基づいて通信が行われる。
【0018】
本発明の一側面の情報処理装置は、デバイスと通信を行う情報処理装置であって、暗号に関する能力を表す第1の能力リストを記憶する記憶手段と、前記デバイスの暗号に関する能力を表す第2の能力リストを受信する受信手段と、前記第1の能力リストと前記第2の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定手段と、前記決定手段により決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材を前記デバイスに送信する送信手段とを備える。
【0019】
前記第1の能力リストから、前記決定手段による決定の処理が行われるときの候補となるアルゴリズムを選択し、選択されたアルゴリズムが記載された第3の能力リストを生成し、前記デバイスに送信するリスト送信手段をさらに備えるようにすることができる。
【0020】
前記決定手段は、セキュリティレベルに応じて前記アルゴリズムを決定するようにすることができる。
【0021】
本発明の一側面の情報処理方法は、デバイスと通信を行う情報処理装置の情報処理方法であって、暗号に関する能力を表す第1の能力リストを管理する管理ステップと、前記デバイスの暗号に関する能力を表す第2の能力リストの受信を制御する受信制御ステップと、前記第1の能力リストと前記第2の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定ステップと、前記決定ステップの処理で決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材の前記デバイスへの送信を制御する送信制御ステップとを含む。
【0022】
本発明の一側面のプログラムは、デバイスと通信を行う情報処理装置を制御するコンピュータのプログラムであって、暗号に関する能力を表す第1の能力リストを管理する管理ステップと、前記デバイスの暗号に関する能力を表す第2の能力リストの受信を制御する受信制御ステップと、前記第1の能力リストと前記第2の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定ステップと、前記決定ステップの処理で決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材の前記デバイスへの送信を制御する送信制御ステップとを含む。
【0023】
本発明の一側面の記録媒体は、デバイスと通信を行う情報処理装置に、暗号に関する能力を表す第1の能力リストを管理する管理ステップと、前記デバイスの暗号に関する能力を表す第2の能力リストの受信を制御する受信制御ステップと、前記第1の能力リストと前記第2の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定ステップと、前記決定ステップの処理で決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材の前記デバイスへの送信を制御する送信制御ステップとを含む処理を実行させるプログラムを記録している。
【0024】
本発明の一側面の情報処理装置、情報処理方法、およびプログラムにおいては、通信を行う相手の暗号に関する能力と、自己の暗号に関する能力とから、通信を行うアルゴリズムが決定され、決定されたアルゴリズムに基づく通信が実行される。
【0025】
本発明の一側面のデバイスは、情報処理装置と通信を行うデバイスであって、暗号に関する能力を表す能力リストを前記情報処理装置に送信する送信手段と、前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報を受信する受信手段と、前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号手段とを備える。
【0026】
前記情報処理装置の暗号に関する能力を表す第2の能力リストを受信する第2の受信手段をさらに備え、前記送信手段により送信される前記能力リストは、前記第2の能力リストに記載されている能力のなかから選択された自己が扱える能力が記載されているようにすることができる。
【0027】
本発明の一側面の情報処理方法は、情報処理装置と通信を行うデバイスの情報処理方法であって、暗号に関する能力を表す能力リストの前記情報処理装置への送信を制御する送信制御ステップと、前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報の受信を制御する受信制御ステップと、前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号ステップとを含む。
【0028】
本発明の一側面のプログラムは、情報処理装置と通信を行うデバイスを制御するコンピュータのプログラムであって、暗号に関する能力を表す能力リストの前記情報処理装置への送信を制御する送信制御ステップと、前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報の受信を制御する受信制御ステップと、前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号ステップとを含む。
【0029】
本発明の一側面の記録媒体は、情報処理装置と通信を行うデバイスに、暗号に関する能力を表す能力リストの前記情報処理装置への送信を制御する送信制御ステップと、前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報の受信を制御する受信制御ステップと、前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号ステップとを含む処理を実行させるプログラムが記録されている。
【0030】
本発明の一側面のデバイス、情報処理方法、およびプログラムにおいては、暗号に関する能力を表すリストが送信され、通信を行うアルゴリズムを指定する情報が受信され、そのアルゴリズムに基づいて暗号化や復号が行われる。
【発明の効果】
【0031】
本発明の一側面によれば、複数のアルゴリズム、復号方式を選択できる。また、選択された方式で通信を行うことが可能となる。
【発明を実施するための最良の形態】
【0032】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【0033】
本発明の一側面の情報処理システム(例えば、図2の通信システム50)は、通信を行う情報処理装置およびデバイスにより構成される通信システムであって、前記情報処理装置または前記デバイスのうちの一方から他方に、暗号に関する能力を表すリストを送信する送信手段(例えば、図3のステップS51の処理を実行するリーダライタ100または図3のステップS62の処理を実行するICカード200)と、前記送信手段により送信された前記リストを受信した前記他方は、受信されたリストを参照し、自己の暗号に関する能力で前記一方と通信を行うことができるアルゴリズムを決定する決定手段(例えば、図3のステップS53の処理を実行するリーダライタ100)と、前記決定手段により決定された前記アルゴリズムで通信を行う通信手段(例えば、図3のステップS54乃至S56の処理を実行するリーダライタ100または図3のステップS64の処理を実行するICカード200)とを備える。
【0034】
本発明の一側面の情報処理装置(例えば、図2のリーダライタ100)は、デバイスと通信を行う情報処理装置であって、暗号に関する能力を表す第1の能力リストを記憶する記憶手段(例えば、図2の能力リスト記憶部102)と、前記デバイスの暗号に関する能力を表す第2の能力リストを受信する受信手段(例えば、図4のステップS103の処理を実行する図2の通信部107)と、前記第1の能力リストと前記第2の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定手段(例えば、図4のステップS104の処理を実行する図2の制御部101)と、前記決定手段により決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材を前記デバイスに送信する送信手段(例えば、図4のステップS106の処理を実行する図2の通信部107)とを備える。
【0035】
本発明の一側面のデバイス(例えば、図2のICカード200)は、情報処理装置と通信を行うデバイスであって、暗号に関する能力を表す能力リストを前記情報処理装置に送信する送信手段(例えば、図7のステップS203の処理を実行する図2の通信部207)と、前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報を受信する受信手段(例えば、図7のステップS204の処理を実行する図2の通信部207)と、前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号手段(例えば、図7のステップS205乃至S208の処理を実行する図2の乱数生成部203、暗号化部206)とを備える。
【0036】
以下に、本発明の実施の形態について図面を参照して説明する。
【0037】
[システムの構成例]
図2は、本発明を適用した通信システム50の一実施の形態における構成例を示すブロック図である。通信システム50は、リーダライタ100とICカード200により構成されており、リーダライタ100とICカード200は、例えば、それぞれが有するアンテナなどを介して無線による通信を行う。
【0038】
リーダライタ100は、制御部101、能力リスト記憶部102、鍵生成部103、データ記憶部104、暗号化部105、復号部106、および通信部107を含む構成とされている。
【0039】
制御部101は、例えばCPU(Central Processing Unit)を含む構成とされ、リーダライタ100の各部を制御する。能力リスト記憶部102は、後述する通信に関する能力、特に、暗号化方式や復号方式(アルゴリズム:本明細書においては、アルゴリズムとの記載には、方式とその方式の鍵の長さについて含む場合もある)に関する能力のリストを記憶する。能力リスト記憶部102に記憶されている能力リストは、必要に応じ通信部107を介して、ICカード200に提供される。鍵生成部103は、暗号化や復号に用いる鍵を生成する。
【0040】
データ記憶部104は、RAM(Random Access Memory)、ROM(Read Only Memory)などの記憶媒体や記録媒体を含む構成とされ、制御部101がリーダライタ100の各部を制御する上で必要とされるプログラムやデータを記憶し、また、ICカード200からのデータやICカード200に提供するデータなどを記憶する。
【0041】
暗号化部105は、ICカード200に供給する鍵やデータを暗号化する。復号部106は、ICカード200からの暗号化されている鍵やデータを復号する。暗号化部105と復号部106は、それぞれ、能力リストに記載されている複数のアルゴリズムのうちの1つのアルゴリズムに基づき、暗号化や復号を行う。能力リストには、自己が扱える複数(1以上)のアルゴリズムが記載されており、その記載されている複数のアルゴリズムのうちから1つのアルゴリズムが選択され(指定され)、その選択(指定)されたアルゴリズムに基づく暗号化や復号が行われる。
【0042】
通信部107は、ICカード200との通信を行う。リーダライタ100の通信部107は、所定の電磁波を輻射し、それに対する負荷の変化に基づいて、ICカード200が近接されたか否かを検出するとともに、例えば、ICカード200が近接されたとき、ICカード200と各種のデータを送受信するアンテナ(不図示)を有する構成とされる。
【0043】
通信部107は、例えば、発振回路(OSC)から供給される所定の周波数の搬送波を、ICカード200に送信するデータに基づきASK(Amplitude Shift Keying)変調し、生成された変調波を、電磁波としてアンテナから出力する。また、通信部107は、アンテナを介して取得した変調波(ASK変調波)を復調し、復調したデータを制御部101などに適宜供給する。
【0044】
ICカード200は、制御部201、能力リスト記憶部202、乱数生成部203、データ記憶部204、暗号化部205、復号部206、および通信部207を含む構成とされている。
【0045】
制御部201は、例えばCPUを含む構成とされ、ICカード200の各部を制御する。能力リスト記憶部202は、後述する通信に関する能力、特に、暗号化方式や復号方式(アルゴリズム)に関する能力のリストを記憶する。能力リスト記憶部202に記憶されている能力リストは、必要に応じ通信部207を介して、リーダライタ100に提供される。乱数生成部203は、乱数を生成する。生成される乱数は、後述するように、リーダライタ100との通信におけるセッション鍵として用いられる。
【0046】
データ記憶部204は、RAM、ROM、EEPROM(Electrically Erasable Programmable Read-Only Memory)などの記憶(記録)媒体を含む構成とされ、制御部201がICカード200の各部を制御する上で必要とされるプログラムやデータを記憶し、また、リーダライタ100からのデータやリーダライタ100に提供するデータなどを記憶する。
【0047】
暗号化部205は、リーダライタ100に供給する鍵やデータを暗号化する。復号部206は、リーダライタ100からの暗号化されている鍵やデータを復号する。暗号化部205と復号部206は、それぞれ、能力リストに記載されている複数のアルゴリズムのうちの1つのアルゴリズムに基づき、暗号化や復号を行う。能力リストには、自己が扱える複数(1以上)のアルゴリズムが記載されており、その記載されている複数のアルゴリズムのうちから1つのアルゴリズムが選択され(指定され)、その選択(指定)されたアルゴリズムに基づく暗号化や復号が行われる。
【0048】
通信部207は、例えば、コイル状のアンテナとコンデンサにより構成されるLC回路を有する構成とされ、LC回路が近傍に配置されたリーダライタ100から輻射される所定の周波数の電磁波と共振するようになされている。また、通信部207は、アンテナにおいて励起された交流磁界をASK復調により整流し、それを安定化し、各部に直流電源として供給する。リーダライタ100から輻射される電磁波の電力は、ICカード200に必要な電力をまかなう磁界を発生させるように調整されている。
【0049】
また、通信部207は、アンテナを介して受信した変調波(ASK変調波)を包絡線検波して復調し、復調後のデータをBPSK(Binary Phase Shift Keying)復調して制御部201などに供給するとともに、受信信号のクロック周波数と同一の周波数のクロック信号を発生して制御部201に供給する。
【0050】
さらに、通信部207は、所定の情報をリーダライタ100に送信する場合、BPSK変調されたデータを、例えばアンテナの負荷の変動に基づいてASK変調し、その変調成分を、アンテナを介してリーダライタ100に送信する。
【0051】
上述したように、リーダライタ100とICカード200は、無線による通信を行うので、同時に二つ以上のICカードまたはリーダライタが電波を送出し、その結果、ICカードまたはリーダライタがどの対象から電波が発せられたものであるかを区別できなくなるという、いわゆる衝突が懸念されるが、通信システム50におけるリーダライタ100とICカード200のそれぞれは、リーダライタと通信可能な範囲にあるICカードやRFIDを識別することが可能な通信方式であるNFCIP(Near Field Communication - Interface and Protocol)-1に適合する通信を行う。
【0052】
NFCIP-1には、他のNFCIP-1デバイスの通信ならびに同帯域で通信している他の装置による通信との両立を図るため、RF検知と衝突回避の仕組が盛り込まれており、NFC識別子(NFCID(NFC Identifier))と呼ばれるRF衝突回避の際および単一デバイス探知処理に用いられる乱数を利用したNFCデバイスの識別子が用いられる。例えば、従来の通信システムにおいては、ICカードの固有のIDをリーダライタに送信し、リーダライタがそのIDに基づいて個々のICカードを識別することで衝突の防止を図るものも多いが、NFCIP-1ではICカードに固有のIDをリーダライタに送信する必要はない。
【0053】
従って、通信システム50においては、ICカード200に固有のカードIDをリーダライタ100に送信しなくも、リーダライタ100とICカード200がそれぞれ通信相手を一意に識別し、衝突を防止することが可能となる。
【0054】
なお、NFCIP-1については、ISO/IEC18092にその詳細が記述されている。
【0055】
以降においては、リーダライタ100がNFCIP-1に規定されるイニシエータ(Initiator)として動作し、ICカード200がNFCIP-1に規定されるターゲット(Target)として動作する場合を例として説明する。
【0056】
[システムの動作について]
次に、図2に示した通信システム50の動作について図3のフローチャートを参照して説明する。まず、図3のフローチャートを参照し、通信システム50における動作を簡便に説明し、その後、リーダライタ100とICカード200の、それぞれの動作の詳細について説明を加える。
【0057】
リーダライタ100は、ステップS51において、能力リストをICカード200に対して送信する。送信された能力リストは、ステップS61において、ICカード200により受信される。ICカード200は、リーダライタ100から能力リストを受信すると、ステップS62において、自己の能力リストを、リーダライタ100に送信する。送信された能力リストは、ステップS52において、リーダライタ100に受信される。
【0058】
このようにして、リーダライタ100とICカード200は、互いに、相手の通信能力に関わる情報、この場合、暗号化や復号に関わるアルゴリズムに関する情報を交換する。
【0059】
リーダライタ100は、ステップS53において、自己の能力リストとICカード200の能力リストを参照し、互いのリストに記載されているアルゴリズム、すなわち、共通するアルゴリズムのうちから、暗号化や復号に用いるアルゴリズムを選択する。
【0060】
ステップS54において、選択されたアルゴリズムに基づき、暗号化鍵と復号鍵が生成され、そのうちの暗号化鍵がICカード200に送信される。なお、ここでは、暗号化鍵と復号鍵が生成されるアルゴリズムが選択された場合を例に挙げて説明をしているが、選択されたアルゴリズムにより、生成される鍵や生成の仕方などは異なる。
【0061】
ICカード200は、ステップS63において、リーダライタ100からの暗号化鍵を受信すると、ステップS64において、乱数を発生し、その発生した乱数を、セッション鍵として設定する。そして、セッション鍵は、受信された暗号化鍵で暗号化され、リーダライタ100に送信される。
【0062】
リーダライタ100は、ステップS55において、暗号化されたセッション鍵を受信すると、ステップS56において、ステップS54において生成した復号鍵を用いて暗号化されているセッション鍵を復号する。
【0063】
このようにして、セッション鍵がリーダライタ100とICカード200との間で共用される。セッション鍵が共用された後、このセッション鍵を用いた通信が適宜行われる。
【0064】
なお、ここでは、上記したように、例えば、ステップSステップS64において、セッション鍵が暗号化されて送信されるとしたが、セッション鍵そのものが送信されるのではなく、セッション鍵を生成するための素材が送信されるようにしても良い。
【0065】
すなわち、本実施の形態においては、以下に説明を続けるように、能力リストを交換することにより、暗号化方式が決定されるが、その決定された暗号化方式に基づき、セッション鍵そのものが送受信される場合もあるし、セッション鍵を生成するための素材が送受信される場合もある。また、決定された暗号化方式によっては、セッション鍵に関係のない情報が送受信される場合もあり、送受信される情報は、決定された暗号化方式に依存する。
【0066】
次に、図4のフローチャートを参照し、リーダライタ100の動作について詳細に説明する。
【0067】
ステップS101において、リーダライタ100は、能力リストを生成する。リーダライタ100の制御部101は、能力リスト記憶部102に記憶されている能力リストを参照し、ICカード200に送信する能力リストを生成する。生成された能力リストは、ステップS102において、ICカード200に対して送信される。
【0068】
ここで、能力リスト記憶部102に記憶されている能力リスト(以下適宜、第1の能力リストと記述する)と、生成される能力リスト(以下適宜、第2の能力リストと記述する)との関係について、図5と図6を参照して説明する。
【0069】
図5は、能力リスト記憶部102に記憶されている能力リストの一例を示す図である。暗号化や復号に関わるアルゴリズムを、鍵共有方式と暗号通信方式の2つに分ける。能力リストもここでは、説明の都合上、図5に示したように2つのリストに分けて説明するが、1つのリスト形式としても勿論よい。
【0070】
能力リスト記憶部102には、鍵共有方式として、16個のアルゴリズムが登録できるリストと、暗号通信方式として、16個のアルゴリズムが登録できるリストが、それぞれ記憶されている。ここで、それぞれのリストに16個のアルゴリズムが登録できるとしたのは、図6に示したように、ICカード200に送信する第2の能力リストを16ビットで表現するときに対応している。よって、16ビット以外のビット数で第2の能力リストを生成するのであれば、そのビット数に応じた数のアルゴリズムを、第1の能力リストとして記憶させることができる。
【0071】
図6に示した第2の能力リストは、鍵共有方式に16ビット割り当て、暗号通信方式に16ビット割り当てたときの一例を示している。図5と図6において、鍵共有方式を適宜“K”と表し、暗号通信方式を適宜“C”と表す。
【0072】
図5に示した第1の能力リストと図6に示した第2の能力リストとの関係を説明するに、第1の能力リストの“K−0”の欄に記載されているアルゴリズムをリーダライタ100が処理する能力を有していれば、図6に示した第2の能力リストの鍵供給方式の“K−0”のビットが1にセットされる。なお、ここでは、有している能力に対応するビットが1にセットされ、有していない能力に対応するビットが0にセットされるとして説明を続けるが、有している能力に対応するビットが0にセットされ、有していない能力に対応するビットが1にセットされるようにすることも可能である。
【0073】
第1の能力リストの各欄には、1つのアルゴリズムが割り当てられている。例えば、図5を参照するに、“K−0”という欄には、鍵共有方式である“DH 768bit”というアルゴリズムが割り当てられている。この割り当てられているアルゴリズムを扱える場合、その欄に何らかの情報が書き込まれている。欄に書き込まれる情報としては、扱えあるか否かを示すフラグであっても良いし、アルゴリズムの名称などの情報でも良い。
【0074】
このように、能力リスト記憶部102に記憶されている第1の能力リストの所定の欄は、所定のアルゴリズムと対応付けられている。図5に示したように、リーダライタ100が扱わないアルゴリズムに対応する欄は空欄にされる(情報が記載されないか、または、対応するアルゴリズムを処理する能力がないということを示す情報が記載される)。
【0075】
または、図示はしないが、第1の能力リストは、例えば、リーダライタ100が扱うアルゴリズムだけの情報だけが記載されたようなリストでもよい。例えば、図5に示した例によれば、“K−0,K−1,K−4,K−5,K−8,K−9,K−C,C−0,C−1,C−2,C−4,C−5,C−6”といった情報からなるリストとしても良い。
【0076】
また、このような第1の能力リストは更新可能としても良い。例えば、通信部107(図2)における通信で、新たなアルゴリズムに関するデータが授受され、データ記憶部104に、授受されたアルゴリズムのデータが記憶されるとともに、能力リスト記憶部102に記憶されている第1の能力リストも更新(新たに追加されたアルゴリズムに対応する欄に、情報が記載される)ようにしても良い。能力リストに記載されているアルゴリズムを削除することも可能であるし、既に記載されている情報を上書きすることも可能であるようにしても良い。
【0077】
図5に示したような第1の能力リストが参照され、図6に示した第2の能力リストが生成されるようにしても良い。すなわち、第1の能力リストに情報が記載されている欄に対応するビットを1にすることにより、第2の能力リストが生成されるようにしても良い。または、図6に示した第2の能力リストにおいて、扱われるアルゴリズムのビットが1にされている第1の能力リストとしても良い(すなわち、第1の能力リスト=第2の能力リストの関係が満たされ、能力リスト記憶部102に記憶されいる能力リストが読み出され、送信されるようにしても良い)。
【0078】
図5において、“DH”は“Diffie-Hellman”の略であり、“ECDH”は“Elliptic Curve Diffie-Hellman”の略であり、“RSA”は“Rivest, Shamir, Adleman”の略であり、“DES”は“Data Encryption Standard”の略であり、“AES”は“Advanced Encryption Standard”の略である。また、“Pre-shared key”は、事前共有鍵による鍵共有方式を示す。
【0079】
図4のフローチャートの説明に戻る。
【0080】
ステップS101,102において、能力リストが生成され、送信される。送信される第2の能力リストは、リーダライタ100の能力全てが記載されたリストでも良い(能力リスト記憶部102に記憶されている第1の能力リストの全ての情報が反映された第2の能力リストとしても良い)し、一部の能力が記載されたリストでも良い。
【0081】
一部の能力が記載された能力リストが送信される場合、例えば、後の処理で授受するデータの重要性から、必要とされるセキュリティレベルを満たすアルゴリズムのみ記載された能力リストが生成され、送信されるようにしても良い。換言すれば、一部の能力が記載された能力リストが送信される場合、後の処理、具体的にはステップS104の処理で、通信に用いるアルゴリズムが決定されるが、その決定される際の候補となるアルゴリズムのみが記載された能力リストが生成され、送信されるようにしても良い。
【0082】
ステップS103において、能力リストが受信されたか否かが判断される。リーダライタ100からICカード200に対して、リーダライタ100の能力リストが送信される(図3のステップS51の処理に相当)と、その応答として、ICカード200からICカードの能力リストが送信されてくる(図3のステップS52の処理に相当)。
【0083】
ICカード200の能力リスト記憶部202には、リーダライタ100の能力リスト記憶部102と同様に能力リストが記憶されている。すなわち、ICカード200の能力リスト記憶部202には、図5に示したような第1の能力リストが記憶され、図6に示したような第2の能力リストが、リーダライタ100に送信されてくる。
【0084】
ステップS103において、リーダライタ100の制御部101は、通信部107により、ICカード200からの能力リストを受信したと判断すると、ステップS104において、アルゴリズムの決定を行う。制御部101は、受信されたICカード200の能力リストと、能力リスト記憶部102に記憶されている能力リストとを参照し、互いに扱えるアルゴリズムを選択する(2つの能力リストにおいて共にフラグが立てられているアルゴリズムを選択する)。
【0085】
例えば、リーダライタ100とICカード200が共に、図5に示した能力リストを記憶していたような場合、“K−0,K−1,K−4,K−5,K−8,K−9,K−C,C−0,C−1,C−2,C−4,C−5,C−6”の欄にフラグが立てられているので、“K−0,K−1,K−4,K−5,K−8,K−9,K−C”の鍵共有方式(K)の中から、1つのアルゴリズムが選択され、“C−0,C−1,C−2,C−4,C−5,C−6”の暗号通信方式(C)の中から、1つのアルゴリズムが選択される。
【0086】
この場合、例えば、鍵共用方式(K)においては、“K−0,K−1,K−4,K−5,K−8,K−9,K−C”という7個の欄に対応するアルゴリズムが選択肢とあげられることになる。このように、複数の選択肢が存在するときに、どのアルゴリズムを選択するかの条件は、リーダライタ100がどのような機能を有し、どのようなデータを管理するかなどを考慮し、設計段階などで適宜設定されるようにしてもよい。
【0087】
また、例えば、優先順位をつけておき、その優先順位に従って、順位の高いアルゴリズムが選択されるようにしても良い。または、この後の処理として、例えば、ICカード200とデータの授受が行われるが、そのデータの重要性などに基づいて選択されるようにしても良い。データの重要性などに基づいて選択されるとは、重要なデータを授受するときには、解読しづらいアルゴリズムが選択されることを意味する。一般的に鍵が長いほど解読されづらいので、例えば、選択肢として“K−0(DH 768bit)”と“K−1(DH 1024bit)”があるような場合、鍵の長い“K−1(DH 1024bit)”が選択される。
【0088】
このように、何らかの条件に基づいて、暗号化や復号に用いるアルゴリズムが決定される。
【0089】
ステップS105において、決定されたアルゴリズムに基づいて暗号化鍵と復号鍵が生成される。制御部101は、決定したアルゴリズムに基づいて、鍵を生成するように、鍵生成部103に指示を出す。鍵生成部103は、指示を受けると、決定されたアルゴリズムに基づき、暗号化鍵と復号鍵を生成する。
【0090】
決定されたアルゴリズムによるが、鍵生成部103が生成する暗号化鍵と復号鍵は、一組の鍵とされる。この生成された暗号化鍵(以下適宜、公開鍵と記載する場合もある)で暗号化された平文(データ)は、一組に生成された復号鍵(以下適宜、秘密鍵と記載する場合もある)でなければ復号することができない。
【0091】
ステップS106において、生成された暗号化鍵が送信される。通信部107は、鍵生成部103により生成された暗号化鍵を、ICカード200に対して送信する。暗号化鍵とともに、決定されたアルゴリズム(暗号化鍵を生成するのに用いたアルゴリズム)を識別するための情報(以下適宜、識別情報と記述する)も送信される。識別情報として、例えば、図6に示した能力リストの形式で、決定されたアルゴリズムのビットのみが立てられた能力リストを用いることが可能である。
【0092】
暗号化鍵がICカード200に供給されるとICカード200は、暗号化鍵を鍵として暗号化した暗号化セッション鍵を送信してくる(図3のステップS64の処理に相当)。リーダライタ100は、ステップS107において、ICカード200から暗号化セッション鍵を受信したか否かを判断し、受信したと判断するまで受信の待機状態を維持する。
【0093】
ステップS107において、暗号化セッション鍵を受信したと判断された場合、ステップS108に処理が進められ、暗号化セッション鍵が復号される。復号部106は、通信部107により暗号化セッション鍵が受信されると、鍵生成部103により生成された復号鍵で暗号化セッション鍵を復号する。
【0094】
ステップS109において、復号されたセッション鍵を用いた通信が開始される。例えば、リーダライタ100からデータ記憶部104に記憶されているデータがICカード200に送信される場合、データ記憶部104からデータが読み出され、暗号化部105でセッション鍵を鍵とした暗号化が行われ、通信部107によりICカード200に対して送信される。また、ICカード200からデータが送信されてきた場合、通信部107により受信され、復号部106により、セッション鍵を鍵とした復号が行われる。
【0095】
このようにして、本実施の形態においては、セッション鍵の授受が行われる前の時点で、暗号化や復号に関わるアルゴリズムの能力に関する情報が授受される。また、その授受される情報に基づいて、アルゴリズムが選択される。このようにすることで、複数のアルゴリズムを扱うことが可能となる。また、複数のアルゴリズムを扱うことができることにより、より高いセキュリティレベルが要求されるような通信のときでも、または逆に、低いセキュリティレベルでも良いような通信のときでも、幅広く対応することができ、通信の拡張性をもたせることが可能となる。
【0096】
次に、ICカード200の動作について、図7のフローチャートを参照して説明する。
【0097】
ステップS201において、ICカード200は、能力リストを受信したか否かを判断する。ICカード200の制御部201は、通信部207によりリーダライタ100からの能力リストを受信したか否かを判断し、受信したと判断するまで、受信の待機状態を維持する。
【0098】
ステップS201においてリーダライタ100からの能力リストを受信したと判断された場合、ステップS202において、能力リストが生成され、ステップS203において、生成された能力リストが送信される。
【0099】
このステップS202とステップS203の処理は、基本的に、リーダライタ100で実行されるステップS101とステップS102の処理と基本的に同様に行われる。すなわち、ICカード200も、能力リスト記憶部202に図5に示したような第1の能力リストを記憶し、図6に示したような第2の能力リストで送信される。
【0100】
なお、ICカード200が能力リスト(第2の能力リスト)を送信する際、その送信する能力リストは、ICカード200の能力全てが記載されたリストでも良い(能力リスト記憶部202に記憶されている第1の能力リストの全ての情報が反映された第2の能力リストとしても良い)し、一部の能力が選択的に記載されたリストでも良い。
【0101】
一部の能力が記載された能力リストが送信される場合、例えば、受信したリーダライタ100の能力リストが参照され、リーダライタ100と一致するアルゴリズムが選択され、その選択されたアルゴリズムだけが記載された能力リストが生成され、送信される。また、一致するアルゴリズムがない場合、同一のアルゴリズムでの暗号化や復号を行うことができないので、能力リストが送信されないようにしても良い。
【0102】
また、ICカード200は、能力リストを生成する前に、リーダライタ100の能力リストを参照し、リーダライタ100と通信を継続するか否かを判断するようにしても良い。例えば、ICカード200は、授受するデータの重要性から必要とされるセキュリティレベルを満たすアルゴリズムを判断し、リーダライタ100の能力リストを参照し、セキュリティレベルを満たすアルゴリズムをリーダライタ100は扱える装置でないと判断したとき、通信を継続しないと判断し、その後の処理を継続しないようにしても良い。
【0103】
図7のフローチャートの説明に戻り、ステップS203において、能力リストが送信されると、ステップS204に処理が進められ、暗号化鍵を受信したか否かが判断される。リーダライタ100は、上述したように、ICカード200から能力リストを受信すると、暗号化鍵を生成し、送信してくる。その送信された暗号化鍵を受信したか否かが判断される。
【0104】
ステップS204において、暗号化鍵を受信したと判断された場合、ステップS205に処理が進められ、アルゴリズムが特定される。アルゴリズムの特定は、暗号化鍵とともにリーダライタ100から送られてきた識別情報を基に特定される。
【0105】
ステップS206において、乱数生成部203は、乱数Aを生成(発生)する。ステップS207において、制御部201は、生成された乱数Aを、例えば、データ記憶部204の中の予め定められた所定の領域に記憶する。
【0106】
なおここでは、特定されたアルゴリズムが、以下に説明するように、乱数を生成し、その乱数をセッション鍵とするというアルゴリズムである場合を例に挙げて説明している。よって、例えば、図8以降の図面を参照して説明するように、他のアルゴリズムが特定された場合には、その特定されたアルゴリズムに基づいてステップS206以下の処理が実行されるため、必ずしも乱数が生成されるわけではない。
【0107】
ステップS208において、暗号化部206は、通信部207により受信された暗号化鍵を鍵とし、乱数生成部203により生成された乱数Aを暗号化する。ステップS209において、暗号化された乱数Aをセッション鍵とし、例えば、データ記憶部204の中の予め定められた所定の領域に記憶する。
【0108】
ステップS210において、暗号化された乱数A、すなわち、暗号化されたセッション鍵が、リーダライタ100に対して送信される。
【0109】
このように、データの授受などの処理を始める前の段階で、データの授受を行う装置間で暗号化や復号に関するアルゴリズムのリストを交換するようにしたので、複数のアルゴリズムを扱えるようになり、例えばセキュリティレベルによって、アルゴリズムを使い分けることができるようになり、通信に拡張性を持たせることが可能となる。
【0110】
上述したように、複数のアルゴリズムを扱えるようにした場合、リーダライタ100やICカード200は、それぞれ自己が扱うアルゴリズムに対応する構成とされる必要がある。図2を参照して説明したリーダライタ100とICカード200の構成においてリーダライタ100は、暗号化鍵を生成し、送信できる構成とされ、ICカード200は、送信されたきた暗号化鍵を鍵として乱数を暗号化し、送信できる構成とされていた。このような構成においては、上述したように、ICカード200側で生成された乱数をセッション鍵とするアルゴリズムに対応している。
【0111】
次に、他のアルゴリズムが適用される場合の本実施の形態について説明を加える。
【0112】
図8乃至図10を参照し、アルゴリズムとしてDH(Diffie-Hellman)法を適用した場合の本実施の形態について説明する。
【0113】
DH法では、通信を行う双方で、公開鍵と秘密鍵を生成(保持)する必要があるため、図8に示すように、ICカード200は、鍵を生成する鍵生成部301を備える構成とされる。
【0114】
図8に示した通信システム50は、図2に示した通信システム50と同様に、リーダライタ100とICカード200とから構成されている。リーダライタ100は、図2に示したリーダライタ100と同様の構成とされている。ICカード200は、鍵を生成する鍵生成部301を備える構成とされている。図8に示したICカード200の構成によれば、上記した乱数を生成し、その乱数をセッション鍵とするようなアルゴリズムにも対応できるし、以下に説明する鍵を生成し、その鍵をセッション鍵とするようなアルゴリズムにも対応できる。
【0115】
図8に示した通信システム50の動作は、基本的に、図3に示したフローチャートを参照して説明した場合と同様に行われる。すなわち、鍵の授受が行われる前に、どのようなアルゴリズムに基づいて鍵を生成するかを示す能力リストが交換され、交換後、アルゴリズムに基づく鍵の生成や授受が行われる。
【0116】
リーダライタ100とICカード200のそれぞれの動作について以下に説明する。
【0117】
まず、図9のフローチャートを参照し、リーダライタ100の動作について説明する。なお、図4のフローチャートを参照して説明したリーダライタ100の動作と同様に行われる動作については、適宜、その説明を省略する。
【0118】
ステップS301,S302において、能力リストが生成され、送信される。ステップS303において、ICカード200からの能力リストが受信されると、ステップS304において、アルゴリズムが決定される。
【0119】
このステップS301乃至S304の処理は、図2のステップS101乃至S104と同様に行われる。すなわち、能力リストの授受に関する処理は、後の処理で用いられるアルゴリズムによらず同様に行われる。
【0120】
ステップS304において、アルゴリズムが決定される。ここでは、DH法と決定されるとして説明を続ける。
【0121】
ステップS305において、鍵生成部103(図8)は、決定されたアルゴリズムであるDH法に基づき、公開鍵と秘密鍵を生成する。リーダライタ100が生成する公開鍵と秘密鍵とICカード200が生成する公開鍵と秘密鍵を区別するために、ここでは、リーダライタ100が生成する公開鍵と秘密鍵をそれぞれ公開鍵Kiと秘密鍵Kiと記述し、ICカード200が生成する公開鍵と秘密鍵をそれぞれ公開鍵Ktと秘密鍵Ktと記述する。
【0122】
鍵生成部103は、秘密鍵Kiを生成する。そして鍵生成部103は、生成した秘密鍵Kiを用いて、公開鍵Kiを、次式に基づいて生成する。
公開鍵ki=g^秘密鍵Ki mod p
この式において、g,pは、ドメインパラメータなどと称される値であり、リーダライタ100とICカード200で同じ値が用いられる。
【0123】
このようにして生成された公開鍵Kiと秘密鍵Kiは、データ記憶部104に記憶される。
【0124】
ステップS306において、生成された公開鍵Kiと、ステップS304において決定されたアルゴリズムを識別するための識別情報が、ICカード200に送信される。
【0125】
ステップS308において、ICカード200からICカード200の公開鍵Ktを受信したか否かが判断される。リーダライタ100が、公開鍵Kiを送信したことに対応し、ICカード200は、自己の公開鍵Ktを送信してくる。その送信されてきた公開鍵Ktを受信したか否かが、ステップS308において判断され、受信したと判断されるまで受信待ちの状態が維持される。
【0126】
ステップS309において、ICカード200からのセッション鍵を復号する。セッション鍵は、受信されたICカード200の公開鍵Ktとリーダライタ100の秘密鍵Kiが用いられ、以下の式により導出される。
セッション鍵=公開鍵Kt^秘密鍵Ki mod p
【0127】
セッション鍵が導出されと、ステップS310において、セッション鍵を用いた通信が開始される。
【0128】
このように、能力リストを交換し、アルゴリズムが決定されると、そのアルゴリズムに基づく処理が実行される。換言すれば、アルゴリズムが決定される前の処理は、アルゴリズムによらず共通して行われ、アルゴリムが決定された後は、決定されたアルゴリズムに基づく処理が実行される。このように、アルゴリズムに基づく処理を行う前に、互いにどのようなアルゴリズムを扱えるかの情報を交換することで、複数のアルゴリズムを扱うことが可能となり、複数のアルゴリズムのなかから、通信を行う上で適切なアルゴリズムを選択できるようになり、通信に拡張性をもたせることが可能となる。
【0129】
次に、図9に示したフローチャートの処理がリーダライタ100側で行われるときのICカード200の動作について、図10のフローチャートを参照して説明する。ステップS401乃至S403の処理は、図7のステップS201乃至S203の処理と同様である。すなわちこの場合も、能力リストの交換における処理は、アルゴリズムによらず、同一に行われる。
【0130】
ステップS404において、リーダライタ100からの公開鍵Kiを受信したか否かが判断される。ステップS404において、公開鍵Kiを受信したと判断されると、ステップS405に処理が進めら、アルゴリズムが特定される。ステップS404,S405の処理は、図7のステップS204,S205と基本的に同様であるが、受信する鍵が公開鍵Kiである点が異なる。
【0131】
ステップS406において、ICカード200の鍵生成部301は、公開鍵Ktと秘密鍵Ktを生成する。制御部201は、通信部207により公開鍵Kiとアルゴリズムを識別するための識別情報を受信すると、まず、その識別情報からアルゴリズムを特定する。そして、制御部201は、特定されたアルゴリズムに応じて、乱数生成部203か鍵生成部301に対して指示を出す。この場合、特定されるアルゴリズムは、DH法であるので、鍵生成部301に対して、DH法に基づく公開鍵Ktと秘密鍵Ktを生成するように指示が出される。
【0132】
鍵生成部301において、秘密鍵Ktがまず生成される。生成された秘密鍵Ktが用いられて、公開鍵Ktが、次式に基づいて生成される。
公開鍵kt=g^秘密鍵Kt mod p
【0133】
このようにして生成された公開鍵Ktと秘密鍵Ktは、ステップS407において、データ記憶部204に記憶される。
【0134】
ステップS408において、受信された公開鍵Kiと生成された秘密鍵Ktでセッション鍵が生成される。鍵生成部301または暗号化部206において、次式に基づいてセッション鍵が生成される。
セッション鍵=公開鍵ki^秘密鍵Kt mod p
【0135】
DH法に基づいてセッション鍵が生成される場合、リーダライタ100とICカード200は、それぞれセッション鍵を生成(導出)するが(リーダライタ100はステップS309において生成し、ICカード200はステップS408において生成する)、同一のセッション鍵が生成(導出)されるため、リーダライタ100とICカード200は、同一のセッション鍵を共有することになる。
【0136】
ステップS410において、生成された公開鍵Ktが、リーダライタ100に対して送信される。この公開鍵Ktを用いてリーダライタ100は、上述したように、セッション鍵を導出する。
【0137】
このようにして、複数のアルゴリズムを扱えるようになり、選択されたアルゴリズムに応じた処理ができるようになる。リーダライタ100やICカード200の構成は、図2や図8に示した構成例に限定されるのではなく、扱うアルゴリズムに応じて必要とされる機能を実現するための構成が適宜、追加、削除されることは勿論のことである。
【0138】
さらに本実施の形態に関し、交換される能力リストなどの具体例を挙げ、図11のフローチャートを参照して説明を加える。
【0139】
ステップS501において、リーダライタ100は、能力リストを生成し、送信する。能力リスト記憶部102には、図12に示したような能力リストが記憶されている場合を例に挙げて説明する。図12に示した能力リストは、鍵共有方式Kiとして“K−0”の欄に{DH 768bit}が、“K−4”の欄に{EDch 160bit}が、それぞれ記載され、暗号化通信方式Ciとして“C−0”の欄に{DES 56bit}が、“C−4”の欄に{AES 128bit}が、それぞれ記載されている。
【0140】
このような図12に示したような能力リストが参照されて生成される能力リストは、例えば、図13に示すようになる。すなわち、送信される能力リストは、鍵共有方式Kiとして{DH 768bit}、{EDch 160bit}という2つの方式にそれぞれ対応する“K−0”と“K−4”という欄のビットが1に設定され、暗号化通信方式Ciとして{DES 56bit}、{AES 128bit}という2つの方式にそれぞれ対応する“C−1”と“C−4”という欄のビットが1に設定されたリストである。
【0141】
このような能力リストが送信されると、ステップS601において、ICカード200により受信される。ステップS602において、ICカード200は、能力リストを生成し、送信する。能力リスト記憶部202には、図14に示したような能力リストが記憶されている場合を例に挙げて説明する。図14に示した能力リストは、鍵共有方式Ktとして“K−0”の欄に{DH 768bit}が、“K−1”の欄に{DH 1024bit}が、それぞれ記載され、暗号化通信方式Ctとして“C−4”の欄に{AES 128bit}が記載されている。
【0142】
このような図14に示したような能力リストが参照されて生成される能力リストは、例えば、図15に示すようになる。すなわち、送信される能力リストは、鍵共有方式Ktとして{DH 768bit}、{DH 1024bit}という2つの方式にそれぞれ対応する“K−0”と“K−1”という欄のビットが1に設定され、暗号化通信方式Ctとして{AES 128bit}という1つの方式にそれぞれ対応する“C−4”という欄のビットが1に設定されたリストである。
【0143】
このような能力リストが送信されると、ステップS502において、リーダライタ100により受信される。ステップS503において、リーダライタ100は、アルゴリズムを決定する。鍵共有方式Kとしてはこの場合、リーダライタ100が{DH 768bit,EDch 160bit}という2つの方式に対応し、ICカード200が{DH 68bit,DH 1024bit}という1つの方式で2つの異なるセキュリティレベルに対応しているため、共通している方式である{DH 768bit}が選択される。
【0144】
また、暗号通信方式Cとしてはこの場合、リーダライタ100が{DES 56bit,AES 128bit}という2つの方式に対応し、ICカード200が{AES 128bit}という1つの方式に対応しているため、共通している方式である{AES 128bit}が選択される。
【0145】
結果として、アルゴリズムとして、鍵共有方式K={DH 768bit}、暗号通信方式C={AES 128bit}が選択される。
【0146】
ステップS504において、リーダライタ100は、公開鍵Kiと秘密鍵Kiを生成する。この場合、鍵共有方式としてDH方式が選択されているため、秘密鍵Kiが生成され、その生成された秘密鍵Kiを用いて、公開鍵Kiが、次式に基づいて生成される。
公開鍵ki=g^秘密鍵Ki mod p
【0147】
ステップS505において、公開鍵Kiとアルゴリズムの識別情報が送信される。この場合、アルゴリズムの識別情報としては、鍵共有方式K={DH 768bit}、暗号通信方式C={AES 128bit}という情報が、ICカード200側で識別できるような情報である。
【0148】
このような公開鍵Kiと識別情報が送信されると、ステップS603において、ICカード200により受信される。ステップS604において、公開鍵Ktと秘密鍵Ktが生成される。この場合、識別情報からアルゴリズムはDH法であり、鍵長が768bitであると特定されるので、DH法に基づく公開鍵Ktと秘密鍵Ktが生成される。
【0149】
ICカード200において、秘密鍵Ktが生成されると、その生成された秘密鍵Ktが用いられて、公開鍵Ktが、次式に基づいて生成される。
公開鍵kt=g^秘密鍵Kt mod p
【0150】
ステップS605において、セッション鍵が生成される。セッション鍵は、受信された公開鍵Kiと生成された秘密鍵Ktから次式に基づいて生成される。
セッション鍵=公開鍵ki^秘密鍵Kt mod p
【0151】
ステップS606において、生成された公開鍵Ktが、リーダライタ100に対して送信される。
【0152】
ステップS506において、リーダライタ100が、ICカード200からの公開鍵Ktを受信すると、ステップS507において、セッション鍵を導出する。セッション鍵は、以下の式により導出される。
セッション鍵=公開鍵Kt^秘密鍵Ki mod p
【0153】
セッション鍵が導出されと、その導出されたセッション鍵をパケット暗号化に利用する暗号化通信が行われる。この場合、セッション鍵を{AES 128bit}の暗号化に利用した暗号化通信が行われる。
【0154】
すなわち、ステップS508において、ICカード200に送信するデータ(平文i)が、セッション鍵を鍵としたAES方式の暗号化方式で、暗号化され、暗号文iが生成され、送信される。
暗号文i=AES128_ENC(平文i)
【0155】
送信された暗号文iが、ステップS607において、ICカード200により受信されると、ステップS608において解読される。すなわち、ICカード200は、この場合、受信した暗号文iは、AES方式で暗号化されていることを認識しているので、受信した暗号文iを、AES方式で、セッション鍵を用いて復号し、平文iを取得する。
平文i=AES128_DES(暗号文i)
【0156】
このようにして平文iを取得したICカード200は、必要に応じ、リーダライタ100に対してデータを暗号化して送信する。ここではステップS609において、ICカード200は、平文tをAES方式で暗号化して暗号文tを生成し、送信するとする。
暗号文t=AES128_ENC(平文t)
【0157】
送信された暗号文tが、ステップS509において、リーダライタ100により受信されると、ステップS510において、解読される。すなわち、リーダライタ100は、この場合、受信した暗号文tは、AES方式で暗号化されていることを認識しているので、受信した暗号文tを、AES方式で、セッション鍵を用いて復号し、平文tを取得する。
平文t=AES128_DES(暗号文t)
【0158】
このようにして、必要な回数だけデータの授受が繰り返し行われる。
【0159】
なお、上述した実施の形態においては、リーダライタ100側でアルゴリズムを決定するようにしたが、ICカード200側で決定するようにしても良い。
【0160】
なお、上述した実施の形態における能力リストの交換に関わる処理は、アルゴリズムを決定する前の段階で行われていれば、どのようなタイミングで行われても良い。例えば、リーダライタ100側でポーリングリクエストを出すときに、そのポーリングリクエストとして、能力リストを送信するようにしても良い。
【0161】
また例えば、リーダライタ100側でポーリングリクエストを出し、そのポーリングリクエストに対してICカード200が応答してきた時点で、能力リストが送信されるようにしても良い。
【0162】
さらには、上述した実施の形態においては、リーダライタ100側から能力リストが送信され、その後に、ICカード200側から能力リストが送信されるとして説明したが、例えば、ICカード200側が、リーダライタ100からのポーリングリクエストを受信し、その応答としてICカード200が能力リストを送信し、その応答としてリーダライタ100が能力リストを送信するといったように、ICカード200から先に能力リストを送信するようにしても良い。
【0163】
なお、上述した実施の形態においては、リーダライタ100とICカード200は、それぞれ能力リストを送信するとしたが、どちらか一方のみが他方に能力リストを送信するようにしても良い。例えば、リーダライタ100からICカード200に能力リストを送信し、ICカード200は、リーダライタ100からの能力リストを参照し、所望のアルゴリズムを選択し、その選択したアルゴリズムの識別情報をリーダライタ100に送信するようにし、ICカード200からはICカード200の能力リストを送信しないようにしても良い。
【0164】
または、例えば、ICカード200からリーダライタ100に能力リストを送信し、リーダライタ100は、ICカード200からの能力リストを参照し、所望のアルゴリズムを選択し、その選択したアルゴリズムの識別情報をICカード200に送信するようにし、リーダライタ100からはリーダライタ100の能力リストを送信しないようにしても良い。
【0165】
換言すれば、一方から他方に能力リストを送信し、能力リストを受信した他方において利用するアルゴリズムを決定し、決定したアルゴリズムの識別情報を一方に送信するようにし、互いに能力リストを交換することがないようにしても良い。
【0166】
本発明によれば、データの授受を行うときの暗号化や復号に用いるアルゴリズムを、複数(1以上)、扱うことが可能となり、それらの複数のアルゴリズムから、授受するデータの重要性などに応じて、適切なアルゴリズムを選択して利用することが可能となる。よって、例えば、低いセキュリティレベルから高いセキュリティレベルまでの通信を、必要なセキュリティレベルで対応できる通信が可能となり、通信に拡張性をもたせることが可能となる。
【0167】
本明細書における情報処理装置、デバイスとの用語は、例えば、NFCIP-1の規格においては、イニシエータとターゲット、すなわち、それぞれ、RFフィールドを発生し、NFCIP-1通信を開始する装置と負荷変調または自ら発生したRFフィールドの変調を利用してイニシエータからの命令に応答する装置に対応する。また、これら装置は、それぞれの機能を有する1つ以上のICチップを搭載した通信装置であって、他の機能等を有した装置であっても良い。
【0168】
上述した実施の形態においては、イニシエータとしてリーダライタ100を例に挙げ、ターゲットとしてICカード200を例に挙げて説明したが、本発明は、リーダライタ100やICカード200だけに適用が限定されるものではない。例えば、本発明は、データを授受する装置に適用することが可能であり、授受する際、無線で通信を行う装置であっても、有線で通信を行う装置であっても適用することが可能である。
【0169】
[記録媒体について]
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、図2のCPU105またはCPU207により実行され、それらのプログラムは、リーダライタ100(300)またはICカード200(400)が読み取り可能な記録媒体などから読み込まれる。
【0170】
本明細書において上述した一連の処理を実行するステップは、記載された順序に沿って時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【0171】
【図1】従来の通信方式の一例について説明するフローチャートである。
【図2】本発明の通信システムの一実施の形態の構成を示す図である。
【図3】通信システムの動作について説明するフローチャートである。
【図4】リーダライタの動作について説明するフローチャートである。
【図5】能力リストについて説明する図である。
【図6】能力リストについて説明する図である。
【図7】ICカードの動作について説明するフローチャートである。
【図8】通信システムの他の構成例を示す図である。
【図9】リーダライタの他の動作について説明するフローチャートである。
【図10】ICカードの他の動作について説明するフローチャートである。
【図11】通信システムの動作について説明するフローチャートである。
【図12】能力リストについて説明する図である。
【図13】能力リストについて説明する図である。
【図14】能力リストについて説明する図である。
【図15】能力リストについて説明する図である。
【符号の説明】
【0172】
50 通信システム, 100 リーダライタ, 101 制御部、 102 能力リスト記憶部, 103 鍵生成部, 104 データ記憶部, 105 暗号化部, 106 復号部, 107 通信部, 200 ICカード, 201 制御部、 202 能力リスト記憶部, 203 乱数生成部, 204 データ記憶部, 205 暗号化部, 206 復号部, 207 通信部, 301 鍵生成部

【特許請求の範囲】
【請求項1】
通信を行う情報処理装置およびデバイスにより構成される通信システムであって、
前記情報処理装置または前記デバイスのうちの一方から他方に、暗号に関する能力を表すリストを送信する送信手段と、
前記送信手段により送信された前記リストを受信した前記他方は、受信されたリストを参照し、自己の暗号に関する能力で前記一方と通信を行うことができるアルゴリズムを決定する決定手段と、
前記決定手段により決定された前記アルゴリズムで通信を行う通信手段と
を備える通信システム。
【請求項2】
通信を行う情報処理装置およびデバイスにより構成される通信システムの通信方法であって、
前記情報処理装置または前記デバイスのうちの一方から他方に、暗号に関する能力を表すリストを送信し、
送信された前記リストを受信した前記他方は、受信されたリストを参照し、自己の暗号に関する能力で前記一方と通信を行うことができるアルゴリズムを決定し、
決定された前記アルゴリズムで通信を行う
通信方法。
【請求項3】
デバイスと通信を行う情報処理装置であって、
暗号に関する能力を表す第1の能力リストを記憶する記憶手段と、
前記デバイスの暗号に関する能力を表す第2の能力リストを受信する受信手段と、
前記第1の能力リストと前記第2の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定手段と、
前記決定手段により決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材を前記デバイスに送信する送信手段と
を備える情報処理装置。
【請求項4】
前記第1の能力リストから、前記決定手段による決定の処理が行われるときの候補となるアルゴリズムを選択し、選択されたアルゴリズムが記載された第3の能力リストを生成し、前記デバイスに送信するリスト送信手段を
さらに備える請求項3に記載の情報処理装置。
【請求項5】
前記決定手段は、セキュリティレベルに応じて前記アルゴリズムを決定する
請求項3に記載の情報処理装置。
【請求項6】
デバイスと通信を行う情報処理装置の情報処理方法であって、
暗号に関する能力を表す第1の能力リストを管理する管理ステップと、
前記デバイスの暗号に関する能力を表す第2の能力リストの受信を制御する受信制御ステップと、
前記第1の能力リストと前記第2の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定ステップと、
前記決定ステップの処理で決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材の前記デバイスへの送信を制御する送信制御ステップと
を含む情報処理方法。
【請求項7】
デバイスと通信を行う情報処理装置を制御するコンピュータのプログラムであって、
暗号に関する能力を表す第1の能力リストを管理する管理ステップと、
前記デバイスの暗号に関する能力を表す第2の能力リストの受信を制御する受信制御ステップと、
前記第1の能力リストと前記第2の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定ステップと、
前記決定ステップの処理で決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材の前記デバイスへの送信を制御する送信制御ステップと
を含むプログラム。
【請求項8】
デバイスと通信を行う情報処理装置に、
暗号に関する能力を表す第1の能力リストを管理する管理ステップと、
前記デバイスの暗号に関する能力を表す第2の能力リストの受信を制御する受信制御ステップと、
前記第1の能力リストと前記第2の能力リストを参照し、前記デバイスと通信を行うアルゴリズムを決定する決定ステップと、
前記決定ステップの処理で決定された前記アルゴリズムを識別するための識別情報と、前記アルゴリズムによる鍵または鍵の素材の前記デバイスへの送信を制御する送信制御ステップと
を含む処理を実行させるプログラムを記録している記録媒体。
【請求項9】
情報処理装置と通信を行うデバイスであって、
暗号に関する能力を表す能力リストを前記情報処理装置に送信する送信手段と、
前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報を受信する受信手段と、
前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号手段と
を備えるデバイス。
【請求項10】
前記情報処理装置の暗号に関する能力を表す第2の能力リストを受信する第2の受信手段をさらに備え、
前記送信手段により送信される前記能力リストは、前記第2の能力リストに記載されている能力のなかから選択された自己が扱える能力が記載されている
請求項9に記載のデバイス。
【請求項11】
情報処理装置と通信を行うデバイスの情報処理方法であって、
暗号に関する能力を表す能力リストの前記情報処理装置への送信を制御する送信制御ステップと、
前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報の受信を制御する受信制御ステップと、
前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号ステップと
を含む情報処理方法。
【請求項12】
情報処理装置と通信を行うデバイスを制御するコンピュータのプログラムであって、
暗号に関する能力を表す能力リストの前記情報処理装置への送信を制御する送信制御ステップと、
前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報の受信を制御する受信制御ステップと、
前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号ステップと
を含むプログラム。
【請求項13】
情報処理装置と通信を行うデバイスに、
暗号に関する能力を表す能力リストの前記情報処理装置への送信を制御する送信制御ステップと、
前記情報処理装置により決定され、データの授受を行うときに用いるアルゴリズムを識別するための識別情報の受信を制御する受信制御ステップと、
前記識別情報から前記アルゴリズムを特定し、その特定されたアルゴリズムでデータを暗号化または復号する暗号化復号ステップと
を含む処理を実行させるプログラムが記録されている記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate