(57)【要約】【課題】  アドホックモードにおける無線通信のセキュリティ強度を向上する。【解決手段】  STAは、無線ネットワークに接続し、他のSTAと直接通信する場合、自身と他のSTAが通信先ごとの暗号鍵の変更が可能か否かを判定する(S714)。そして、自身と他のSTAの少なくとも一方が通信先ごとの暗号鍵の変更が不可能と判定した場合、無線ネットワークのグループ鍵を、自身と他のSTAの間の通信に利用することを他のSTAと合意し、グループ鍵とユニキャスト鍵に設定する(S715)。【選択図】  図11
2007336010.tif 000002
【特許請求の範囲】
【請求項１】
無線ネットワークに接続し、他の端末と直接通信する通信装置であって、
自装置および通信相手の端末が通信先ごとに暗号鍵の変更が可能か否かを判定する判定手段と、
前記自装置と前記通信相手の端末の少なくとも一方が前記通信先ごとに暗号鍵の変更が不可能と判定した場合、前記無線ネットワークで一意に決められる暗号鍵を、前記通信相手の端末との通信用の暗号鍵として設定する設定手段とを有することを特徴とする通信装置。
【請求項２】
さらに、前記無線ネットワークで一意に決められる暗号鍵が存在しない場合は、当該暗号鍵を生成する生成手段を有することを特徴とする請求項1に記載された通信装置。
【請求項３】
さらに、前記通信相手の端末との間でユニキャスト鍵を生成するユニキャスト鍵生成手段と、
前記ユニキャスト鍵によって暗号化した、前記無線ネットワークで一意に決められる暗号鍵を前記通信相手の端末に送信する送信手段とを有することを特徴とする請求項1または請求項2に記載された通信装置。
【請求項４】
前記無線ネットワークで一意に決められる暗号鍵はグループ通信用の暗号鍵であることを特徴とする請求項1に記載された通信装置。
【請求項５】
さらに、前記通信相手の端末が前記グループ通信用の暗号鍵を保持するか否かを判断する判断手段と、
前記通信相手の端末が前記グループ通信用の暗号鍵を保持しない場合は、当該暗号鍵を生成して前記端末に送信する送信手段と、
前記通信相手の端末が前記グループ通信用の暗号鍵を保持する場合、当該暗号鍵を前記端末から受信する受信手段とを有することを特徴とする請求項4に記載された通信装置。
【請求項６】
無線ネットワークに接続し、他の端末と直接通信する通信装置の通信方法であって、
自装置および通信相手の端末が通信先ごとに暗号鍵の変更が可能か否かを判定し、
前記自装置と前記通信相手の端末の少なくとも一方が前記通信先ごとに暗号鍵の変更が不可能と判定した場合、前記無線ネットワークで一意に決められる暗号鍵を、前記通信相手の端末との通信用の暗号鍵として設定することを特徴とする通信方法。
【請求項７】
通信装置を制御して、請求項6に記載された通信を実現することを特徴とするコンピュータプログラム。
【請求項８】
請求項7に記載されたコンピュータプログラムが記録されたことを特徴とするコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、無線ネットワークに接続し、他の端末と直接通信する通信装置に関する。
【背景技術】
【０００２】
盗聴や改竄の防止に、通信データの暗号化が行われる。とくに、無線通信は、盗聴が容易なため、安全な通信路の確保が重要である。
【０００３】
無線LANインフラストラクチャモードにおいて、通信端末(STA)とアクセスポイント(AP)はwired equivalent privacy (WEP)もしくはWi-Fi protected access (WPA)といった標準規格を実装する。WEPは、STAとAPに事前に暗号鍵を設定し、その暗号鍵を通信に使うことで安全性を保障する。しかし、この方式は、暗号鍵が常に固定で、WEPが採用する暗号アルゴリズムの強度も高くないため、安全性が保証できない場面が様々指摘されている。これに対抗して策定されたWPAは、暗号アルゴリズムの強度を向上させるとともに、STAとAPに事前に設定された情報からネットワークに参加する度に毎回暗号鍵を生成することで安全性を高める。
【０００４】
インフラストラクチャモードでは、APを介して、他のSTAにデータを送信する。言い替えれば、STAは、APとのみ直接に通信するため、APとの通信の安全性のみを保障すればよい。
【０００５】
一方、アドホックモードでは、APが存在せず、通信相手と直接通信する。従って、複数のSTAと通信する場合、それら複数のSTAとの通信の安全性を考慮する必要がある。ネットワーク構成は異なるもののインフラストラクチャモードと同様に安全性を確保するには、通信セッションごとに暗号鍵を変更することが望ましい。しかし、市販の無線LANデバイスを用いてアドホックモードで通信する場合、事前に、ネットワークに参加するすべてのSTAに同じ暗号鍵を設定し、その暗号鍵を利用する。そのためインフラストラクチャモードで懸念されるセキュリティ上の問題は残ったままである。
【０００６】
これらの問題に対してWPAよりも後に標準化されたIEEE 802.11iは、アドホックモードにおいても、通信セッションごとに暗号鍵を動的に生成することを提案する。図1はIEEE 802.11iの暗号鍵の生成方法を示すシーケンス図である。
【０００７】
通信端末STA1とSTA2は互いに四方向ハンドシェイクと呼ばれるメッセージ交換を行い、ユニキャスト鍵PTK (pairwise transient key)とグループ鍵GTK (group temporal key)を生成し共有する。STA1とSTA2は、ステップS401〜S404で、EAPOLのキーとして乱数（ANonceとSNonce）を交換して、STA1が送信に使用するPTK12とGTK1を生成して共有する。また、ステップS405〜S409で、乱数を交換して、STA2が送信に使用するPTK21とGTK2を生成して共有する。なお、EAPOLは拡張認証プロトコル(extensible authentication protocol)の略である。
【０００８】
STA1は、さらにSTA3と通信する際は同様に四方向ハンドシェイクを行い(S410、S411)、STA3との間でPTKとGTKを生成して共有する。
【０００９】
この方式の特長は、通信相手ごとに暗号鍵を切り替えて通信すること、送信と受信で別の鍵を設定することである。送信用のグループ鍵はネットワーク上の全STAが受信できるように一つを決定し、受信用のグループ鍵は各STAごとにもつ。
【００１０】
現状の無線LANデバイスを顧みると、通信相手ごとに暗号鍵を設定できるデバイスばかリではない。言い替えれば、すべての通信相手に対して同一の暗号鍵しか設定できないデバイスが存在する。暗号鍵を一つに制限すれば、デバイスの構成を簡単化してコストを下げることができるが、暗号鍵の制約はIEEE 802.11iの仕様を実現することを困難にする。例えば、APに使う無線LANデバイスは、IEEE 802.11iの仕様を満たすが、そのコストはSTAに使う無線LANデバイスの概ね1.5倍になる。
【００１１】
このように、従来のアドホック通信では、通信セッションごとの暗号鍵の変更を実現することができない。また、IEEE 802.11iはセキュリティの観点からすれば理想的な方式であるが、IEEE 802.11iの暗号鍵の生成方法は複雑であるし、IEEE 802.11iの仕様を満たさない無線LANデバイスが存在する。従って、無線LANデバイスが、STAごとに暗号鍵を変更可能な機能を備えればそのように動作し、また、STAごとに暗号鍵を変更できない場合は鍵通信セッションを確立する度に暗号鍵を変更するようなアルゴリズムが必要とされる。
【００１２】
特開2005-278044公報は、伝送範囲内に存在するSTAに対して共通鍵を伝送することを開示する。また、特開2004-260556公報は、マルチキャスト用暗号鍵をユニキャスト鍵で送信することを開示する。しかし、何れの文献も、STAごとに暗号鍵を変更できる機能を有する無線LANデバイスと、そうではない無線LANデバイスの両方で動作するアルゴリズムを開示するわけではない。
【００１３】
【特許文献１】特開2005-278044公報
【特許文献２】特開2004-260556公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
本発明は、アドホックモードにおける無線通信のセキュリティ強度を向上することを目的とする。
【課題を解決するための手段】
【００１５】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１６】
本発明は、無線ネットワークに接続し、他の端末と直接通信する際に、自装置および通信相手の端末が通信先ごとに暗号鍵の変更が可能か否かを判定し、前記自装置と前記通信相手の端末の少なくとも一方が前記通信先ごとに暗号鍵の変更が不可能と判定した場合、前記無線ネットワークで一意に決められる暗号鍵を、前記通信相手の端末との通信用の暗号鍵として設定することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、アドホックモードにおける無線通信のセキュリティ強度を向上することができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明にかかる実施例の情報処理を図面を参照して詳細に説明する。
【実施例１】
【００１９】
［無線通信システム］
図2は無線通信を用いてデータ伝送を行う無線通信システムの構成例を示す図である。
【００２０】
ディジタルカメラ（以下「カメラ」とする）101、102は、無線通信機能を備え、無線通信によりカメラ同士またはプリンタ103との間で、データ伝送を行う。このようにAPを介さずにSTA同士が直接通信するモードがアドホックモードである。
【００２１】
［カメラ］
図3はカメラ101、102の機能構成例を示すブロック図である。なお、カメラ101と102は同じ機能をもつとする。
【００２２】
システムコントローラ211を介してCPU 215に接続された操作部210は、シャッタスイッチや各種キーを備える。撮像部202は、シャッタが押されると被写体の画像を撮影する。撮像処理部203は、撮像部202によって撮影された画像を処理する。表示部206は、表示処理部207によって表示内容が制御され、LCD表示、LED表示、音声表示など、ユーザに対する情報を表示する。なお、表示部206に表示された情報を選択するなどのユーザ操作は、操作部210と連動して行われる。つまり、表示部206と操作部210はユーザインタフェイスを構成する。
【００２３】
メモリカードインタフェイス(I/F) 208には、メモリカード209が接続される。USB I/F 212は、外部機器との接続用のシリアルバスインタフェイスを提供する。オーディオI/F 214は、外部機器との間で音声信号をやり取りするためのインタフェイスである。
【００２４】
無線通信機能部204は、無線通信を行う。RF部205は、他の無線通信機器との間で無線信号の送受信を行う。なお、RF部205と無線通信機能部204は、一つの機能ブロックとして実現される場合もある。無線通信機能部204は、無線規格に基づくパケットのフレーミング、データに対する応答、データの暗号/復号処理などを実行する。
【００２５】
CPU 215は、RAM 217やフラッシュメモリ213をワークメモリとして、ROM 216やフラッシュメモリ213に格納されたプログラムを実行し、上記の各構成を制御する。また、無線通信機能部204とRF部205をアプリケーションの指示により起動するプログラムは、通常、ROM 216に格納されている。また、フラッシュメモリ213は、不揮発性のメモリであり、無線通信の設定情報などを記憶する。
【００２６】
［プリンタ］
図4はプリンタ103の機能構成例を示すブロック図である。
【００２７】
システムコントローラ311を介してCPU 315に接続される操作部310は、各種キーを備える。プリンタエンジン302は、プリント処理部303から出力される画像信号に基づき記録紙に画像をプリンタする。表示部306は、表示処理部307によって表示内容が制御され、LCD表示、LED表示、音声表示など、ユーザに対する情報を表示する。なお、表示部306に表示された情報を選択するなどのユーザ操作は、操作部310と連動して行われる。つまり、表示部306と操作部310はユーザインタフェイスを構成する。
【００２８】
メモリカードI/F 308には、メモリカード309が接続される。USB I/F 312は、外部機器との接続用のシリアルバスインタフェイスを提供する。パラレルI/F 314は、外部機器との接続用のパラレルインタフェイスを提供する。
【００２９】
1無線通信機能部304は、無線通信を行う。RF部305は、他の無線通信機器との間で無線信号の送受信を行う。なお、RF部305と無線通信機能部304は、一つの機能ブロックとして実現される場合もある。無線通信機能部304は、無線規格に基づくパケットのフレーミング、データに対する応答、データの暗号/復号処理などを実行する。
【００３０】
CPU 315は、RAM 317やフラッシュメモリ313をワークメモリとして、ROM 316やフラッシュメモリ313に格納されたプログラムを実行し、上記の各構成を制御する。また、無線通信機能部304とRF部305をアプリケーションの指示により起動するプログラムは、通常、ROM 316に格納されている。また、フラッシュメモリ313は、不揮発性のメモリであり、無線通信の設定情報などを記憶する。
【００３１】
［通信機能部］
通信相手のSTAごとに暗号鍵を変更可能か否かは通信機能部204、304の機能に依存する。送信先アドレスごとに異なる暗号鍵を設定できるもの、送受信で異なる暗号鍵を設定できるもの、すべての送信先アドレスに対して同一の暗号鍵しか設定できないもの、などが存在する。本実施例においてカメラ101、102、プリンタ103は、送信先アドレスごとに送受信で同一のユニキャスト鍵を設定できるものとする。ただし、グループ鍵については参加したネットワークで一つだけ保持できる能力をもつとする。
【００３２】
以上、実施例1におけるカメラ101、102とプリンタ103の機能構成について説明した。なお、RF部205、305はアンテナを備えるが、装置外に突出する形態とは限らない。とくに、ディジタルカメラの場合、携帯性が重要なファクタであるから、アンテナは装置外に突出するのではなく、内蔵もしくは装置表面に実装されることが望ましい。
【００３３】
［WPAにおける暗号鍵の共有方法］
カメラ101、102とプリンタ103における暗号鍵の共有アルゴリズムを説明する前に、WPAで用いられる暗号鍵の共有方法を説明する。本発明は、WPAのアルゴリズムを改良することで、送信先アドレスごとに暗号鍵を変更できる場合と、できない場合の両方において、セッションごとの暗号鍵の生成を可能にするものである。
【００３４】
図5はインフラモードにおけるAPとSTAにおけるユニキャスト鍵とグループ鍵の共有方法を説明するシーケンス図である。
【００３５】
STAがネットワークに接続してAPとセッションを確立すると、四方向ハンドシェイクが開始される。まず、APはSTAにメッセージMsg1を送信する(S501)。Msg1は、ユニキャスト鍵の交換のためのメッセージであることを示す情報(Unicast)およびAPが生成した乱数値(A Nonce)を含む。なお、メッセージのフレームはEAPOLのフォーマットに準拠する。
【００３６】
Msg1を受信したSTAは、A Nonceとは異なる乱数値(S Nonce)を生成して、Msg2としてAPに送信する(S502)。A NonceとS Nonce、および、APとSTAが事前に保持している情報からPTKが生成できる。これにより、APとSTAがPTKを生成する(S503、S504)。
【００３７】
APはPTKの正しい生成を示すMsg3をSTAに送信し(S505)、同様に、STAはPTKの正しい生成を示すMsg4をAPに送信する(S506)。そして、APとSTAは、PTKをユニキャスト鍵として設定し(S507、S508)、以後、ユニキャストに関して両者間では暗号化されたデータ転送が実行される。このように、ユニキャスト鍵は、APとSTAが乱数値などの情報要素を交換することで生成されるもので、暗号鍵自体が転送されるわけではない。
【００３８】
次に、グループ鍵の共有方法を説明する。
【００３９】
四方向ハンドシェイク(S501-S506)が終了すると、APはGTKを生成する(S509)。なお、既にGTKが存在する場合はそれを使用してもよい。続いて、まず、APはSTAにグループキーハンドシェイクメッセージMsg1を送信する(S510)。Msg1は、グループ鍵の交換のためのメッセージであることを示す情報(Group)およびユニキャスト鍵で暗号化したGTKを含む。なお、メッセージのフレームはEAPOLのフォーマットに準拠する。
【００４０】
Msg1を受信したSTAは、APに受信確認メッセージとしてMsg2を送信する(S511)。そして、APとSTAは、GTKをグループ鍵として設定し(S512、S513)、以降、ブロードキャストのパケットをグループ鍵で暗号化する。
【００４１】
［四方向ハンドシェイクの拡張］
図6はIEEE 802.11iで規定された四方向ハンドシェイクの拡張を説明する図である。IEEE 802.11iは、四方向ハンドシェイク内でGTKを交換できるように拡張している。図5と同様に、APとSTAの間でMsg2が交換されるまで(S601-S603)は同一であるが、APは、PTKとともGTKを生成し(S604)、Msg3にPTKによって暗号化したGTKを付加する(S605)。これにより、グループキーハンドシェイクが不要になるように工夫されている。Msg3を受信したSTAは、既にPTKをステップS603で生成しているから暗号化されたGTKを復号することができる。従って、APとSTAは、PTKをユニキャスト鍵に、GTKをグループ鍵に設定する(S607、S608)。
【００４２】
［通信セッションごとの暗号鍵生成］
インフラストラクチャモードとアドホックモードには大きな違いが二つある。第一の違いは、インフラストラクチャモードでは、四方向ハンドシェイクのMsg1をAPから送信することが決められている。一方、アドホックモードでは、STA同士で直接通信するため、どちらが先にMsg1を送信してもよい。本実施例では、とくに規定はなく、先にMsg1を送信したSTAが四方向ハンドシェイクを開始するものとする。
【００４３】
第二の違いは、アドホックモードでは、STA同士が直接データを伝送するために、STAごとに暗号鍵を分けるか、全STAに対して同一の暗号鍵を利用するなどをしなくてはならない。また、暗号鍵の解読を防ぐために、セッションごとに暗号鍵を設定することが望ましく、全STAに同一の暗号鍵を使う場合において、その共有方法が問題になる。また、暗号鍵を通信相手ごとに変更するには通信機能部の鍵管理処理が必要になり、処理のオーバヘッドや管理コストがかかる。これらの理由から、現状、多くの無線LANデバイスは送信先に対して一つのユニキャスト鍵しかもたない設計になっている。
【００４４】
本実施例では、通信セッションを確立する度に暗号鍵を変更できるようにする。さらに、STAが、送信先ごとに暗号鍵を変更できる機能を備える場合は送信先ごとに異なる暗号鍵を利用し、送信先ごとに暗号鍵を変更できる機能を備えない場合は全STAに対して同一の暗号鍵を利用するようにする。このようにすれば、高機能なSTAはその恩恵に与ることができ、そうでないSTAも最低限のセキュリティを確保することができる。
【００４５】
上記の機能を実現するには、以下の二つの情報を通信端末間でやり取りする。
(A) 機能情報：送信先ごとに暗号鍵を変更できる機能を備える場合はTYPE1、
備えない場合はTYPE2とする
(B) グループ鍵情報：グループ鍵を既に保持している場合はGkeyExist、
保持していない場合はGkeyNotExistとする
【００４６】
上記の情報を先に説明した四方向ハンドシェイクでやり取りすることで、図7に示すような暗号鍵の共有を可能にする。
【００４７】
カメラ101と102はTYPE1に属すため、それらの間のユニキャスト通信のセキュリティは、それら二つのSTAに固有のユニキャスト鍵PTK1によって守られる。一方、TYPE2に属すプリンタ103は、カメラ101、102との間で同じユニキャスト鍵を用いて通信する。プリンタ103は、カメラ101、102との間のユニキャスト鍵としてグループ鍵GTKを利用する。なお、プリンタ103は、二つの送信先に対して同じ鍵を使うが、ネットワークに参加しセッションを確立する度に異なるグループ鍵GTKが利用できる。従って、WEPよりも暗号鍵の解読は困難である。
【００４８】
●カメラ-カメラ
図8はカメラ101と102の間で通信セッションを開始する際の暗号鍵の生成を説明するシーケンス図である。上記の四方向ハンドシェイクとほぼ同一であるが、機能情報およびグループ鍵情報をやり取りする点で異なる。
【００４９】
カメラ101はカメラ102にMsg1を送信する(S1001)。Msg1のフレームは、カメラ101が生成した乱数値(A Nonce)を含む。Msg1を受信したカメラ102は、カメラ101とは異なる乱数値(S Nonce)、機能情報としてTYPE1、および、グループ鍵情報として未保持を示すGkeyNotExistを含むMsg2をカメラ101に送信する(S1002)。なお、これら情報はMsg2の何処に格納してもよいが、独自拡張が認められたRSN情報要素(RSN information element)と呼ばれる領域に格納することが望ましい。
【００５０】
カメラ101と102は、A NonceとS Nonce、および、カメラ101、102が事前に保持している情報からPTKを生成する(S1003、S1004)。さらに、カメラ101は、Msg2に付加されたGkeyNotExistによりカメラ102がグループ鍵を未保持であることを知るとGTKを生成する(S1004)。そして、PTKによって暗号化したGTKと、機能情報としてTYPE1を含むMsg3をカメラ102に送信する(S1005)。Msg3を受信したカメラ102は、PTKを用いて暗号化されたGTKを復号し、確認応答のためのMsg4をカメラ101に送信する(S1006)。
【００５１】
カメラ101と102は、交換した機能情報により、互いに相手がTYPE1の機能をもつことを知ると、PTKをユニキャスト鍵に、GTKをグループ鍵に設定する(S1007、S1008)。
【００５２】
●カメラ→プリンタ
図9はカメラ101とプリンタ103の間で通信セッションを開始する際の暗号鍵の生成を説明するシーケンス図である。
【００５３】
カメラ101はプリンタ103にMsg1を送信する(S1101)。Msg1のフレームは、カメラ101が生成した乱数値(A Nonce)を含む。Msg1を受信したプリンタ103は、カメラ101とは異なる乱数値(S Nonce)、機能情報としてTYPE2、および、グループ鍵情報として未保持を示すGkeyNotExistを含むMsg2をカメラ101に送信する(S1202)。
【００５４】
カメラ101とプリンタ103は、A NonceとS Nonce、および、カメラ101とプリンタ103が事前に保持している情報からPTKを生成する(S1103、S1104)。さらに、カメラ101は、Msg2に付加されたGkeyNotExistによりプリンタ103がグループ鍵を未保持であることを知ると、例えばカメラ102との通信セッションの開始時に生成したGTKを利用する。つまり、PTKによって暗号化した（例えばステップS1004で生成した）GTKと、機能情報としてTYPE1を含むMsg3をプリンタ103に送信する(S1105)。Msg3を受信したプリンタ103は、PTKを用いて暗号化されたGTKを復号し、確認応答のためのMsg4をカメラ101に送信する(S1106)。
【００５５】
カメラ101とプリンタ103は、交換した機能情報により、一方がTYPE1の機能をもたないことを知ると、GTKをユニキャスト鍵およびグループ鍵にすることを合意し、GTKをユニキャスト鍵およびグループ鍵に設定する(S1107、S1108)。
【００５６】
●プリンタ→カメラ
図10はカメラ101とプリンタ103の間で通信セッションを開始する際の暗号鍵の生成を説明するシーケンス図である。ただし、図9と異なり、プリンタ103によって四方向ハンドシェイクが開始される。
【００５７】
プリンタ103はカメラ101にMsg1を送信する(S1201)。Msg1のフレームは、プリンタ103が生成した乱数値(A Nonce)を含む。Msg1を受信したカメラ101は、プリンタ103とは異なる乱数値(S Nonce)、機能情報としてTYPE1、および、グループ鍵を既保持であることを示すGkeyExistを含むMsg2をプリンタ103に送信する(S1202)。
【００５８】
プリンタ103とカメラ101は、A NonceとS Nonce、および、プリンタ103とカメラ101が事前に保持している情報からPTKを生成する(S1203、S1204)。プリンタ103は、Msg2に付加されたGkeyExistによりカメラ101がグループ鍵を既保持であることを知るとGTKの生成は行わない。そして、機能情報としてTYPE2を含むMsg3をカメラ101に送信する(S1205)。Msg3を受信したカメラ101は、確認応答のためのMsg4をプリンタ103に送信する(S1206)。
【００５９】
次に、カメラ101は、プリンタ103との間のグループ鍵が未設定であることを確認すると、グループキーハンドシェイクを開始し、PTKによって暗号化したGTKを含むMsg1をプリンタ103に送信する(S1207)。プリンタ103は、Msg1を受信すると、確認応答のためにSMsg2を返す(S1208)。
【００６０】
プリンタ103とカメラ101は、交換した機能情報により、一方がTYPE1の機能をもたないことを知ると、GTKをユニキャスト鍵およびグループ鍵にすることに合意し、GTKをユニキャスト鍵およびグループ鍵に設定する(S1209、S1210)。
【００６１】
以上、代表的な三つのシーケンス例を示したが、グループ鍵を既保持、未保持、グループ鍵を保持するSTAがどちらかによってシーケンスは変化する。なお、当業者であれば、その変化を容易に想到することができるだろう。
【００６２】
●アルゴリズム
図11と図12は、図8から図10に示すシーケンスを実現する処理を示すフローチャートで、カメラ101、102のCPU 215、プリンタ103のCPU 315が実行する処理である。なお、四方向ハンドシェイクのMsg1を送信するのか、受信するのかにより、アルゴリズムが変化する。従って、図11にはMsg1を送信する場合の処理を、図12にはMsg1を受信する場合の処理を示す。
【００６３】
まず、Msg1を送信する場合（図11）から説明する。
【００６４】
アドホックネットワークに参加した後、アプリケーションの指示などにより、他のSTAにデータを送信する。その際は、まず、その送信先に対する暗号鍵が未設定であること、その送信先との四方向ハンドシェイク（図には4WHSと記載する）が未開始であることを判定する(S701)。もし、暗号鍵が存在するか、四方向ハンドシェイクを開始している場合は以降の処理は不要であるから処理を終了する。
【００６５】
暗号鍵が存在せず、四方向ハンドシェイクも未開始の場合は、送信先にMsg1を送信し(S702)、所定時間内にMsg2を受信するか否かを判定する(S703)。所定時間内にMsg2を受信しなかった場合は処理を終了するが、受信した場合はPTKを生成する(S704）。
【００６６】
次に、グループ鍵を既に保持しているか否かを判定し(S705)、保持していればPTKにより暗号化したグループ鍵(GTK)と機能情報を含むMsg3を送信する(S708)。また、グループ鍵を未保持の場合は、受信したMsg2が含むグループ鍵情報から通信相手がグループ鍵を保持しているか否かを判定する(S706)。通信相手もグループ鍵を未保持の場合は、GTKを生成し(S707)、PTKで暗号化したGTKと機能情報を含むMsg3を送信する(S708)。また、通信相手がグループ鍵を既保持の場合はTYPE情報を含むMsg3を送信する(S709)。
【００６７】
次に、所定時間内にMsg4を受信するか否かを判定する(S710)。所定時間内にMsg4を受信しなかった場合は処理を終了する。また、所定時間内にMsg4を受信した場合は、グループ鍵を保持しているか、GTKを生成したかを判定する(S711)。
【００６８】
グループ鍵を保持、または、GTKを生成した場合はユニキャスト鍵とグループ鍵を共有することが可能になる。また、グループ鍵を未保持かつGTKを未生成の場合は所定時間、グループキーハンドシェイク（図にはGHSと記載する）の開始を待つ(S712)。所定時間内にグループキーハンドシェイクのMsg1を受信しなかった場合は処理を終了するが、受信した場合は、Msg2を返す(S713)。これによりユニキャスト鍵とグループ鍵を共有することが可能になる。
【００６９】
次に、ステップS703で受信したMsg2に含まれる通信相手の機能情報と自身の機能情報を判定し(S714)、何れか一方がTYPE2の場合は、ユニキャスト鍵とグループ鍵としてGTKを設定する(S715)。また、両者ともTYPE1の場合は、ユニキャスト鍵としてPTKを、グループ鍵としてGTKを設定する(S716)。
【００７０】
次に、Msg1を受信する場合を説明する。
【００７１】
四方向ハンドシェイクのMsg1を受信すると(S801)、Msg1を送信したSTAに対する暗号鍵が未設定であること、当該STAとの四方向ハンドシェイクが未開始であることを判定する(S802)。もし、暗号鍵が存在するか、四方向ハンドシェイクを開始している場合は以降の処理は不要であるから処理を終了する。
【００７２】
暗号鍵が存在せず、四方向ハンドシェイクも未開始の場合は、PTKを生成し(S803)、機能情報とグループ鍵情報を含むMsg2を送信相手に送信する(S804)。そして、所定時間内にMsg3を受信するか否かを判定し(S805)、所定時間内にMsg3を受信しなかった場合は処理を終了する。
【００７３】
所定時間内にMsg3を受信した場合、自身がグループ鍵を既保持か否かを判定し(S806)、既保持ならばMsg3に暗号化GTKが含まれるか否かを判定する(S807)。Msg3に暗号化GTKが含まれる場合は、自身が保持するグループ鍵(GTK)と、Msg3に含まれるGTKが同一か否かを判定する(S808)。もし、両GTKが異なると、この四方向ハンドシェイクは失敗に終わる。両GTKが同一、ステップS806の判定でグループ鍵を未保持、ステップS807の判定でMsg3が暗号化GTKを含まない、の何れかの場合はMsg4を送信して四方向ハンドシェイクを終了する(S809)。
【００７４】
次に、グループ鍵またはGTKを未保持か否かを判定し(S810)、未保持であればGTKを生成し(S811)、暗号化GTKを含むGHSのMsg1を通信相手に送信する(S812)。そして、所定時間内にGHSのMsg2を受信するか否かを判定し(S813)、所定時間内にGHSのMsg2を受信しなかった場合は処理を終了する。ステップS810の判定でグループ鍵またはGTKを保持する場合は、グループ鍵とGTKが一致するかを判定する(S817)。もし一致する場合は、暗号化GTKを含むGHSのMsg1を通信相手に送信する(S812)。
【００７５】
所定時間内にGHSのMsg2を受信した場合、あるいは、ステップS817でグループ鍵とGTKが一致しない場合は、ステップS805で受信したMsg3に含まれる通信相手の機能情報と自身の機能情報を判定する(S814)。そして、何れか一方がTYPE2の場合は、ユニキャスト鍵とグループ鍵としてGTKを設定する(S815)。また、両者ともTYPE1の場合は、ユニキャスト鍵としてPTKを、グループ鍵としてGTKを設定する(S816)。
【００７６】
図7はカメラ101、102、プリンタ103が上記のシーケンスによって、互いに通信を開始した場合に設定されるユニキャスト鍵とグループ鍵を示している。このように、アドホックモードで通信するカメラ101、102、プリンタ103は、通信セッションを確立する度に異なる暗号鍵を利用して、傍受や盗聴といった行為に対するセキュリティを強化することができる。また、現行の無線デバイスをそのまま利用することができるので、安価にセキュリティ強度を向上することができる。
【００７７】
［他の実施例］
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００７８】
また、本発明の目的は、上記実施例の機能を実現するソフトウェアを記録した記憶媒体（記録媒体）をシステムまたは装置に供給し、そのシステムまたは装置のコンピュータ（CPUやMPU）が前記ソフトウェアを実行することでも達成される。この場合、記憶媒体から読み出されたソフトウェア自体が上記実施例の機能を実現することになり、そのソフトウェアを記憶した記憶媒体は本発明を構成する。
【００７９】
また、前記ソフトウェアの実行により上記機能が実現されるだけでなく、そのソフトウェアの指示により、コンピュータ上で稼働するオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、それによって上記機能が実現される場合も含む。
【００８０】
また、前記ソフトウェアがコンピュータに接続された機能拡張カードやユニットのメモリに書き込まれ、そのソフトウェアの指示により、前記カードやユニットのCPUなどが実際の処理の一部または全部を行い、それによって上記機能が実現される場合も含む。
【００８１】
本発明を前記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するソフトウェアが格納される。
【図面の簡単な説明】
【００８２】
【図１】IEEE 802.11iの暗号鍵の生成方法を示すシーケンス図、
【図２】無線通信を用いてデータ伝送を行う無線通信システムの構成例を示す図、
【図３】カメラの機能構成例を示すブロック図、
【図４】プリンタの機能構成例を示すブロック図、
【図５】インフラモードにおけるAPとSTAにおけるユニキャスト鍵とグループ鍵の共有方法を説明するシーケンス図、
【図６】IEEE 802.11iで規定された四方向ハンドシェイクの拡張を説明する図、
【図７】カメラとプリンタが互いに通信を開始した場合に設定されるユニキャスト鍵とグループ鍵を示す図、
【図８】カメラの間で通信セッションを開始する際の暗号鍵の生成を説明するシーケンス図、
【図９】カメラとプリンタの間で通信セッションを開始する際の暗号鍵の生成を説明するシーケンス図、
【図１０】カメラとプリンタの間で通信セッションを開始する際の暗号鍵の生成を説明するシーケンス図、
【図１１】図8から図10に示すシーケンスを実現する処理を示すフローチャート、
【図１２】図8から図10に示すシーケンスを実現する処理を示すフローチャートである。
【図１】
2007336010.tif 000003
【図２】
2007336010.tif 000004
【図３】
2007336010.tif 000005
【図４】
2007336010.tif 000006
【図５】
2007336010.tif 000007
【図６】
2007336010.tif 000008
【図７】
2007336010.tif 000009
【図８】
2007336010.tif 000010
【図９】
2007336010.tif 000011
【図１０】
2007336010.tif 000012
【図１１】
2007336010.tif 000013
【図１２】
2007336010.tif 000014