説明

通信装置、制御方法及びプログラム

【課題】 共通鍵の算出に時間がかかってしまっても、通信パラメータの自動設定処理を正常に完了させることができるようにする。
【解決手段】 他の通信装置と接続される通信装置であって、前記他の通信装置から、WSC−M1を受信する受信手段と、WSC−M1に含まれる公開鍵と予め保持する秘密鍵とを用いて、共通鍵を算出する算出手段と、取得した公開鍵及び乱数とWSC−M1に含まれる乱数とを含むWSC−M2を構築する構築手段と、WSC−M2を送信する送信手段と、を備え、前記共通鍵の算出が完了するまでの間に、前記他の通信装置からWSC−M1が再送された場合に、前記算出手段は、受信したWSC−M1に含まれる公開鍵を用いて前記共通鍵を算出し、前記構築手段は、最後に受信したWSC−M1に含まれる乱数を含むWSC−M2を構築することを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信装置、制御方法及びプログラムに関する。
【背景技術】
【0002】
IEEE802.11規格シリーズに準拠した無線LANにおいて無線通信を行うにあたっては、各通信装置の使用前に多数の設定項目を設定しておく必要がある。
【0003】
具体的には、ネットワーク識別子としてのSSID(Service Set Identifier)や、暗号方式、暗号鍵、認証方式、認証鍵等、無線通信を行うために必要な各種通信パラメータが挙げられる。そして、従来、これらの設定項目はユーザが全て手入力で設定していたため、ユーザにとって非常に煩雑な作業となっていた。
【0004】
これに対し、近年、各種通信パラメータを通信装置に簡単に設定できるようにするための業界標準の自動設定方法として、Wi−Fi Protected Setup(以下、WPS。非特許文献1参照)が規格化され、現在、通信装置への搭載が進められている。
【0005】
図8は、WPSに開示されている、通信装置A(受信装置として機能する通信装置)と通信装置B(提供装置として機能する通信装置)との間におけるWPSによる通信パラメータの自動設定処理のシーケンスを簡潔に示したものである。図8に示すWSC−Start(F805)からWSC−Done(F814)までの各メッセージは、RFC3748 Extensible Authentication Protocolにより規定されたEAPプロトコルに基づいて送受信される。
【0006】
ここで、図8に示すWSC−M1(F806)、WSC−M2(F807)、及びWSC−M3(F808)の各メッセージのフォーマットの詳細を図9〜図11に示す。
【0007】
図9に示すとおり、WSC−M1メッセージ(F806)は、EAPヘッダのほか、WPSのバージョン情報(Version)901を要素として備える。更に、受信装置の乱数(Enrollee Nonce)902および受信装置の公開鍵(Public Key)903を要素として備える。
【0008】
また、図10に示すとおり、WSC−M2メッセージ(F806)は、WPSのバージョン情報(Version)1001、受信装置の乱数(Enrollee Nonce)1003を要素として備える。更に、提供装置の乱数(Registrar Nonce)1004、提供装置の公開鍵(Public Key)1005、およびメッセージ認証コード(Authenticator)1006を要素として備える。
【0009】
なお、WSC−M2メッセージ(F807)が備える受信装置の乱数(Enrollee Nonce)1003は、WSC−M1メッセージ(F806)が備える受信装置の乱数(Enrollee Nonce)902と同一の値である必要がある。
【0010】
また、メッセージ認証コード(Authenticator)1006は、1つ前に受信したメッセージ(ここではWSC−M1メッセージ)と今回送信するメッセージ(ここではWSC−M2メッセージ)とから算出されるハッシュ値である。当該ハッシュ値は受信装置として機能する通信装置Aで検算することが可能であり、当該ハッシュ値を用いることで送受信されたメッセージが改ざんされていないか、あるいは一部破壊されていないかといった情報を確認することができる。
【0011】
また、図11に示すとおり、WSC−M3メッセージ(F808)は、WPSのバージョン情報(Version)1101、提供装置の乱数(Registrar Nonce)1103を要素として備える。更に、メッセージ認証コード(Authenticator)1104を要素として備える。
【0012】
なお、WSC−M3メッセージ(F808)が備える提供装置の乱数(Registrar Nonce)1103は、WSC−M2メッセージ(F807)が備える提供装置の乱数(Registrar Nonce)1004と同一の値である必要がある。また、メッセージ認証コード(Authenticator)1104は、1つ前に受信したメッセージ(ここではWSC−M2メッセージ)と今回送信するメッセージ(ここではWSC−M3メッセージ)とから算出されるハッシュ値である。
【0013】
なお、図8に示すWSC−M8メッセージ(F813)では、通信装置A(提供装置)から通信装置B(受信装置)への通信パラメータの送信を行うが、この際、通信パラメータは、各通信装置の公開鍵と乱数とから算出された共通鍵を用いて暗号化されている。
【0014】
このように、WPSによる通信パラメータの自動設定処理においては、互いに、公開鍵暗号方式の公開鍵と各通信装置固有の乱数とを送信し、通信装置間における共通鍵の算出を行う。これにより、通信装置A(提供装置)から通信装置B(受信装置)へのと通信パラメータの送信にあたり、より安全な仕組みを提供することができる。
【先行技術文献】
【非特許文献】
【0015】
【非特許文献1】“Wi−Fi Protected Setup Specification”, Version 1.0h, December, 2006
【発明の概要】
【発明が解決しようとする課題】
【0016】
しかしながら、共通鍵の算出処理は複雑であり演算時間がかかるが、コンパクトデジタルカメラをはじめとする各種組み込み機器のように、低性能のCPUが搭載される通信装置の場合、高い演算能力を期待することはできない。
【0017】
一方で、通信装置が共通鍵の算出処理を実行している間、対向する通信装置では、自装置が送信したメッセージに対する、通信装置からの応答の有無を判断する。このため、共通鍵の算出処理に時間がかかり所定時間内に応答がない場合には、タイムアウト処理を動作させることとなり、結果的に通信パラメータの自動設定処理が正常に終了しなくなってしまう。
【0018】
図12は、このような状況を詳細に説明するための自動設定処理のシーケンス図である。なお、説明にあたり、通信装置B(提供装置)と通信装置A(受信装置)とは同一のネットワークに接続されているものとする。また、F1202からF1206までの処理では、上記WPSによる通信パラメータの自動設定処理の仕様にしたがって、メッセージのやりとりが行われているものとする。
【0019】
図12において、WSC−M1メッセージ(F1206)は、先に述べたとおり通信装置A(受信装置)の公開鍵を備える。このため、WSC−M1メッセージ(F1206)を受信した通信装置B(提供装置)では、内部に保持している秘密鍵と当該受信した公開鍵とに基づいて、共通鍵の算出処理を実行する(F1207)。
【0020】
このとき、通信装置B(提供装置)では、低性能ののCPUにより共通鍵の算出処理(F1207)を実行するため、処理の完了までには時間がかかる。このため、WSC−M1メッセージ(F1206)を送信した通信装置A(受信装置)では、対向する通信装置Bから後続のメッセージが送信されない状態が続くこととなり、タイムアウトを発生する(F1208)。
【0021】
タイムアウトが発生すると、通信装置A(受信装置)では、WSC−M1メッセージ(F1209)を再送する。このとき、再送されるWSC−M1メッセージ(F1209)と、先に送信されたWSC−M1メッセージ(F1206)とでは、受信装置の乱数(Enrollee Nonce)が異なっている。
【0022】
一方、通信装置B(提供装置)では、共通鍵の算出処理(F1207)が終了したことを契機としてWSC−M2メッセージ(F1210)を送信する。これに伴って、通信装置A(受信装置)では、WSC−M2メッセージ(F1210)を受信する。このとき、当該WSC−M2メッセージ(F1210)は、再送されたWSC−M1メッセージ(F1209)ではなく、先に送信されたWSC−M1メッセージ(F1206)に基づいて構築されたメッセージとなっている。
【0023】
このため、通信装置A(受信装置)では、受信すべきメッセージと異なることを理由に、当該WSC−M2メッセージ(F1210)を無視し、WSC−M1メッセージ(F1211)を再送することとなる。WSC−M1メッセージ(F1211)を受信した通信装置B(提供装置)では、当該WSC−M1メッセージ(F1211)に基づいて、再び共通鍵の算出処理を実施する(F1212)。
【0024】
このとき、通信装置B(提供装置)において実行される共通鍵の算出処理(F1212)は、先の共通鍵の算出処理(F1207)と同様、処理が完了するまでに時間がかかる。このため、通信装置A(受信装置)では、再びタイムアウトを発生し(F1213)、WSC−M1メッセージ(F1213)を再々送することとなる。
【0025】
このように、共通鍵の算出処理に多くの処理時間を要する通信装置の場合、WPSによる通信パラメータの自動設定処理が正常に終了しないという問題がある。
【0026】
本発明は、上記課題に鑑みてなされたものであり、共通鍵の算出に時間がかかってしまっても、通信パラメータの自動設定処理を正常に完了させることができるようにすることを目的とする。
【課題を解決するための手段】
【0027】
上記の目的を達成するために、本発明に係る通信装置は、例えば、以下のような構成を備える。即ち、
通信装置であって、
他の通信装置から公開鍵と乱数とが含まれるメッセージを受信する受信手段と、
前記受信手段において受信されたメッセージに含まれる前記公開鍵と、前記通信装置が予め保持する秘密鍵とを用いて、共通鍵を算出する算出手段と、
前記算出手段による前記共通鍵の算出の開始から完了までの間に、前記受信手段において前記他の通信装置から前記メッセージを複数回受信し、該複数回のメッセージそれぞれに含まれる前記公開鍵が同一である場合に、前記受信手段において最後に受信されたメッセージに含まれる乱数を含むメッセージを前記他の通信装置に送信する送信手段とを有することを特徴とする。
【発明の効果】
【0028】
本発明によれば、共通鍵の算出に時間がかかってしまっても、通信パラメータの自動設定処理を正常に完了させることが可能となる。
【図面の簡単な説明】
【0029】
【図1】本発明の一実施形態に係る通信装置によって形成されるネットワークの一例を示す図である。
【図2】本発明の一実施形態に係る通信装置のハードウェア構成を示す図である。
【図3】本発明の一実施形態に係る通信装置の機能構成を示す図である。
【図4】本発明の一実施形態に係る通信装置による通信パラメータの自動設定処理の流れを示すシーケンス図である。
【図5】本発明の一実施形態に係る通信装置における通信パラメータの自動設定処理の流れを示すフローチャートである。
【図6】本発明の一実施形態に係る通信装置における通信パラメータの自動設定処理の流れを示すシーケンス図である。
【図7】本発明の一実施形態に係る通信装置における通信パラメータの自動設定処理の流れを示すフローチャートである。
【図8】非特許文献2に開示されているWPSによる通信パラメータの自動設定処理の流れを示すシーケンス図である。
【図9】非特許文献2に開示されているWSC−M1のメッセージフォーマットを示す図である。
【図10】非特許文献2に開示されているWSC−M2のメッセージフォーマットを示す図である。
【図11】非特許文献2に開示されているWSC−M3のメッセージフォーマットを示す図である。
【図12】低性能CPUが搭載された通信装置におけるWPSによる通信パラメータの自動設定処理の流れを示すシーケンス図である。
【発明を実施するための形態】
【0030】
以下、本発明の各実施形態の通信装置について、図面を参照しながら詳細に説明する。なお、以下では、IEEE802.11シリーズに準拠した無線LANに適用された場合について説明するが、本発明の適用先は、必ずしもIEEE802.11準拠した無線LANには限定されるものではない。
【0031】
[第1の実施形態]
<1.ネットワーク構成>
はじめに、本発明の一実施形態に係る通信装置が形成するネットワークについて説明する。図1は、本発明の一実施形態に係る通信装置Bと、該通信装置Bに対向する通信装置Aとによって形成されるネットワークAを示す図である。
【0032】
図1に示すように、ネットワークAでは、通信装置Aが受信装置101として機能し、通信装置Bが提供装置102として機能する。なお、ネットワークAはインフラストラクチャネットワークであってもよいし、アドホックネットワークであってもよい。
【0033】
<2.通信装置のハードウェア構成>
次に、ネットワークAを形成する通信装置A及び通信装置Bのハードウェア構成について説明する。なお、本実施形態において、通信装置Aと通信装置Bとは、ハードウェア構成が同じであるため、ここでは図2を用いて通信装置Bのハードウェア構成についてのみ説明する。
【0034】
図2において、201は、記憶部202に記憶される制御プログラムを実行することにより通信装置全体を制御する制御部である。制御部201は、他の通信装置(通信装置A)との間で通信パラメータの自動設定処理を実行する。
【0035】
202は制御部201が実行する制御プログラムと、通信パラメータ等の各種情報を記憶する記憶部である。後述する通信パラメータの自動設定処理は、記憶部202に記憶された制御プログラムが読み出され制御部201にて実行されることにより実現される。
【0036】
203はIEEE802.11シリーズに準拠した無線LANにおいて無線通信を行うための無線部である。204は各種表示を行う表示部であり、LCDやLEDのように視覚で認知可能な情報の出力、あるいはスピーカなどの音出力が可能となっている。つまり、表示部204は視覚情報および音情報の少なくともどちらか一方を出力する機能を備える。
【0037】
205は通信パラメータの自動設定処理を開始するトリガを与える設定ボタンである。設定ボタン205が操作されると、通信パラメータの自動設定処理が開始される。制御部201では、ユーザによる設定ボタン205の操作を検出すると、後述する自動設定処理を実施する。
【0038】
206はアンテナ制御部、207はアンテナである。また、208は、ユーザが各種入力を行うための入力部である。
【0039】
<3.通信装置の機能構成>
次に、ネットワークAを形成する通信装置A及び通信装置Bの制御部201において実現される、通信パラメータの自動設定機能について図3を用いて説明する。なお、本実施形態では、通信装置Aの制御部201と通信装置Bの制御部201とは、それぞれが通信パラメータの自動設定機能として、共通の自動設定機能を有しているものとする。
【0040】
図3において、301は自動設定制御部であり、設定ボタン205の制御や、入力部208および表示部204の制御など通信パラメータの自動設定処理についての全体的な制御を行う。
【0041】
302はパケット受信部であり、無線部203を通じて受信したパケットの解析処理等を実行する。303はパケット送信部であり、通信パラメータの自動設定処理において必要なパケットの組み立て及び対向する通信装置へのパケットの送信などを行う。
【0042】
304は暗号鍵計算部であり、公開鍵暗号方式による共通鍵の算出処理を実行する。305はハッシュ計算部であり、メッセージ認証コード(Autheticator)の算出処理を実行する。
【0043】
306は通信パラメータ受信部であり、通信装置が受信装置として機能する場合には、対向する通信装置(提供装置として機能する通信装置)から通信パラメータを受信し、受信した通信パラメータの正当性の確認等を行う。
【0044】
307は通信パラメータ提供部であり、通信装置が提供装置として機能する場合には、対向する通信装置(受信装置として機能する通信装置)への通信パラメータの送信を行う。
【0045】
308は通信パラメータ記憶部であり、通信装置が提供装置として機能する場合には、当該通信パラメータ記憶部308から通信パラメータが取り出され、対向する通信装置(受信装置)へと送信される。一方、通信装置が受信装置として機能する場合には、通信パラメータ受信部306で受信した通信パラメータが格納される。
【0046】
なお、全ての機能ブロックはソフトウェアもしくはハードウェア的に相互関係を有するものとする。また、上記機能ブロックは一例であり、複数の機能ブロックを1つの機能ブロックで構成するようにしてもよいし、何れかの機能ブロックを更に複数の機能ブロックに分けて構成するようにしてもよい。
【0047】
<4.通信装置A及び通信装置Bによる通信パラメータの自動設定処理>
次に、通信装置A及び通信装置Bによる通信パラメータの自動設定処理の流れについて、図4に示すシーケンス図を用いて説明する。図4に示すように、受信装置として機能する通信装置Aは、提供装置として機能する通信装置Bとの間で接続処理(F401)を実行する。これにより、通信装置Aと通信装置Bとは、同一のネットワークAに接続される。
【0048】
なお、その後の処理のうち、処理(F402)〜処理(F406)は、WPSによる通信パラメータの自動設定処理の仕様に従った、一般的なパケットの送受信処理であるため、ここでは詳細な説明を省略する。
【0049】
WSC−M1メッセージ(F406)には、上述したように、受信装置として機能する通信装置Aの公開鍵(Public Key)が含まれている。そして、WSC−M1メッセージ(F406)を受信した通信装置Bでは、内部に保持している秘密鍵と、受信したWSC−M1メッセージ(F406)に含まれる公開鍵とに基づいて、共通鍵を算出する共通鍵算出処理を実行する。
【0050】
共通鍵算出処理(F407)は、低性能のCPUが搭載された通信装置Bにおいては、処理の完了までに時間がかかる。そのため、WSC−M1メッセージ(F406)を送信した通信装置Aでは、通信装置Bから後続のメッセージが送信されない状態が続くこととなり、タイムアウトを発生する。
【0051】
そして、タイムアウトが発生すると、通信装置AではWSC−M1メッセージ(F408)を再送する。このとき、送信されるWSC−M1メッセージ(F408)は、先に送信したWSC−M1メッセージ(F406)とは、受信装置の乱数(Enrollee Nonce)が異なっている。
【0052】
一方、通信装置Bでは、共通鍵算出処理(F407)が終了したことを契機として、WSC−M2メッセージを構築する。このとき、通信装置Bでは、共通鍵算出処理(F407)の実行中に、新たなWSC−M1メッセージ(F408)を受信している。
【0053】
そこで、通信装置Bでは、構築済みのWSC−M2メッセージに対して、受信装置の乱数(Enrollee Nonce)及びメッセージ認証コード(Authenticator)を差し替え、WSC−M2メッセージの再構築を行う。なお、それ以外の要素は既に構築済みのメッセージフォーマットのままにしておく。
【0054】
通信装置Bでは、WSC−M2メッセージを再構築した後に、通信装置Aへ当該WSC−M2メッセージを送信する(F409)。このとき送信されるWSC−M2メッセージ(F409)の受信装置の乱数(Enrollee Nonce)及びメッセージ認証コード(Authenticator)には、最新のWSC−M1メッセージ(F408)に対応した値が格納されている。このため、通信装置Aでは、その後の処理を正常に実行することができる。
【0055】
この結果、処理(F410〜F417)が上記WPSによる通信パラメータの自動設定処理の仕様に沿って実行され、通信パラメータの自動設定処理が正常に完了することとなる。
【0056】
<5.通信装置Bにおける通信パラメータの自動設定処理の流れ>
次に、通信装置Bにおける通信パラメータの自動設定処理について説明する。図5は、通信装置Bにおける通信パラメータの自動設定処理の流れを示すフローチャートである。なお、ここでは、説明の簡略化のため、WSC−M1メッセージ(F406)の受信からWSC−M2メッセージ(F409)の送信までの処理の流れについて説明する。
【0057】
ステップS501において、通信装置Bは通信装置AからWSC−M1メッセージ(F406)を受信する。ステップS502では、ステップS501において受信したWSC−M1メッセージ(F406)を解析する。
【0058】
ステップS503では、ステップS502における解析の結果、WSC−M1メッセージ(F406)に含まれる受信装置の公開鍵(Public Key)と、通信装置Bが内部で保持している秘密鍵とを用いて、共通鍵(DH−Key)を計算する。この共通鍵(DH−Key)は、WPS仕様書に定義されているとおり、通信パラメータを送信する際の暗号処理および、メッセージ認証コードの算出処理に用いる鍵の基となる情報である。
【0059】
なお、上述したとおり、低性能のCPUが搭載された通信装置Bでは、共通鍵(DH−Key)の算出処理の完了までには時間がかかる。
【0060】
ステップS503における共通鍵(DH−key)の算出処理が終了すると、通信装置Bでは、ステップS504においてWSC−M2メッセージを構築する。なお、WSC−M2メッセージのフォーマットは図10を用いて説明したとおりである。
【0061】
ステップS504においてWSC−M2メッセージを構築した後は、ステップS505において、新たなWSC−M1メッセージ(F408)を受信しているか否かを確認する。
【0062】
ステップS505において受信していないことが確認された場合には、ステップS510に進み、ステップS504において構築したWSC−M2メッセージ(最初に構築したWSC−M2メッセージ)を通信装置Aに送信する。
【0063】
一方、ステップS505において、新たなWSC−M1メッセージ(F408)を受信したことが確認された場合には、ステップS506に進む。
【0064】
ステップS506では、ステップS505において受信したことが確認された新たなWSC−M1メッセージ(F408)を解析する。ステップS507では、ステップS506における解析の結果、先に受信したWSC−M1メッセージ(F406)と新たに受信したWSC−M1メッセージ(F408)との間に差異があるか否かを判断する。
【0065】
具体的には、先に受信したWSC−M1メッセージ(F406)が備える受信装置の乱数(Enrollee Nonce)について、新たに受信したWSC−M1メッセージ(F408)との間で差異があるか否かを判定する。
【0066】
ステップS507において、受信装置の乱数(Enrollee Nonce)について差異がないと判定された場合には、ステップS510に進む。ステップS510では、ステップS504において構築したWSC−M2メッセージ(最初に構築したWSC−M2メッセージ)を通信装置Aに送信する。
【0067】
一方、ステップS507において、受信装置の乱数(Enrollee Nonce)について差異があったと判定された場合には、ステップS508に進む。
【0068】
ステップS508では、先に受信したWSC−M1メッセージ(F406)が備える公開鍵(Public Key)について、新たに受信したWSC−M1メッセージ(F408)との間で差異があるか否かを判定する。
【0069】
ステップS508において、公開鍵(Public Key)について差異があると判定された場合には、ステップS503に戻り、共通鍵(DH−Key)の再計算を行う。
【0070】
一方、ステップS508において、公開鍵(Public Key)について差異がない(同一である)と判定された場合には、ステップS509に進む。ステップS509では、ステップS503において計算した共通鍵(DH−Key)を、そのまま使用してWSC−M2メッセージを再構築する。つまり、受信装置の乱数(Enrollee Nonce)とメッセージ認証コード(Authenticator)のみを再計算してWSC−M2メッセージを再構築する。
【0071】
具体的には、受信装置の乱数(Enrollee Nonce)を、ステップS504で設定した値から、ステップS506において取得された乱数(つまり、複数回受信したメッセージのうち、最後のメッセージに含まれる乱数)に置き換える。なお、メッセージ認証コード(Authenticator)はハッシュ計算のみであるため、通信装置BのCPUの演算能力が低い場合であっても、通信装置Aの動作には影響しない。
【0072】
ステップS509においてWSC−M2メッセージが再構築されると、ステップS510では、再構築したWSC−M2メッセージ(F409)を通信装置Aに対して送信する。その後は、図4を用いて説明したシーケンス図に従って自動設定処理が正常に実行される。
【0073】
以上の説明から明らかなように、本実施形態にかかる通信装置(提供装置)では、共通鍵算出処理の実施中に同一のメッセージが再送された場合に、必要な部分のみを差し替えたうえで、メッセージを再構築し送信する構成とした。
【0074】
この結果、提供装置として機能する通信装置BのCPUの演算能力が低く、公開鍵暗号方式による共通鍵の算出処理に時間がかかる場合であっても、通信パラメータの自動設定処理を正常に完了させることが可能となった。
【0075】
[第2の実施形態]
上記第1の実施形態においては、提供装置である通信装置Bにおいて共通鍵の算出処理を実行する場合について説明した。しかしながら、本発明はこれに限定されない。例えば、上記第1の実施形態とは逆に、受信装置である通信装置AのCPUの演算能力が低い場合であって、受信装置である通信装置Aにおいて共通鍵の算出処理が行われる場合についても同様である。
【0076】
そこで、本実施形態では、CPUの演算能力の低い通信装置Aにおいて共通鍵の算出処理を実行する場合について説明する。なお、ネットワークAの構成、通信装置のハードウェア構成、及び通信装置の機能構成については、図1〜図3を用いて既に説明済みであるため、ここでは説明を省略する。
【0077】
<1.通信装置A及び通信装置Bによる通信パラメータの自動設定処理>
はじめに、本実施形態に係る通信装置A(受信装置として機能する通信装置)と該通信装置Aに対向する通信装置B(提供装置として機能する通信装置)とによる通信パラメータの自動設定処理の流れについて図6に示すシーケンス図を用いて説明する。
【0078】
図6に示すように、受信装置として機能する通信装置Aは、提供装置として機能する通信装置Bとの間で接続処理(F601)を実行する。これにより、通信装置Aと通信装置Bとは、同一のネットワークAに接続される。
【0079】
なお、接続された後の処理のうち、処理(F602)〜処理(F607)は、WPSによる通信パラメータの自動設定処理の仕様に従った、一般的なパケットの送受信処理であるため、ここでは詳細な説明を省略する。
【0080】
WSC−M2メッセージ(F607)には、上述したように、提供装置として機能する通信装置Bの公開鍵(Public Key)が含まれている。そして、WSC−M2メッセージ(F607)を受信した通信装置Aでは、内部に保持している秘密鍵と、受信したWSC−M2メッセージ(F607)に含まれる公開鍵とに基づいて、共通鍵の算出処理を実行する(F608)。
【0081】
共通鍵算出処理(F608)は、低性能のCPUが搭載された通信装置Aでは、上記第1の実施形態の通信装置B(提供装置)と同様、処理の完了までに時間がかかる。そのため、WSC−M2メッセージ(F607)を送信した通信装置Bでは、通信装置Aから後続のメッセージが送信されない状態が続くこととなり、タイムアウトを発生する。
【0082】
そして、タイムアウトが発生すると、通信装置BではWSC−M2メッセージ(F609)を再送する。このとき、送信されるWSC−M2メッセージ(F609)は、先に送信したWSC−M2メッセージ(F607)とは、提供装置の乱数(Registrar Nonce)が異なっている。
【0083】
一方、通信装置Aでは、共通鍵算出処理(F608)が終了したことを契機として、WSC−M3メッセージを構築する。このとき、通信装置Aでは、共通鍵算出処理(F608)の実行中に、新たなWSC−M2メッセージ(F609)を受信している。
【0084】
そこで、通信装置Aでは、構築済みのWSC−M3メッセージに対して、提供装置の乱数(Registrar Nonce)及びメッセージ認証コード(Authenticator)を差し替え、WSC−M3メッセージの再構築を行う。なお、それ以外の要素は既に構築済みのメッセージフォーマットのままにしておく。
【0085】
通信装置Aでは、WSC−M3メッセージを再構築した後に、通信装置Bへ当該WSC−M3メッセージを送信する(F610)。このとき送信されるWSC−M3(F610)及びメッセージ認証コード(Authenticator)には、最新のWSC−M2メッセージ(F609)に対応した値が格納されている。このため、通信装置Bでは、その後の処理を正常に実行することができる。
【0086】
この結果、処理(F611〜F617)が上記WPSによる通信パラメータの自動設定処理の仕様に沿って実行され、通信パラメータの自動設定処理が正常に完了することとなる。
【0087】
<2.通信装置Aにおける通信パラメータの自動設定処理の流れ>
次に、通信装置Aにおける通信パラメータの自動設定処理について説明する。図7は、通信装置Aにおける通信パラメータの自動設定処理の流れを示すフローチャートである。なお、ここでは、説明の簡略化のため、WSC−M1メッセージ(F606)の送信からWSC−M3メッセージ(F610)の送信までの処理の流れについて説明する。
【0088】
ステップS701において、通信装置Aは通信装置BへWSC−M1メッセージ(F606)を送信する。ステップS701におけるWSC−M1メッセージ(F606)の送信に応答して、通信装置Bでは、WSC−M2メッセージ(F607)を送信し、通信装置Aでは、当該WSC−M2メッセージ(F607)を受信する。ステップS703では、ステップS702において受信したWSC−M2メッセージ(F607)を解析する。
【0089】
ステップS704では、ステップS703における解析の結果、WSC−M2メッセージ(F607)に含まれる公開鍵(Public Key)と、通信装置Aが内部で保持している秘密鍵とに基づいて、共通鍵(DH−Key)を算出する。この共通鍵(DH−Key)は、WPS仕様書に定義されているとおり、通信パラメータを送信する際の暗号処理および、メッセージ認証コードの算出処理に用いる鍵の基となる情報である。
【0090】
なお、上述したとおり、低性能のCPUが搭載された通信装置Aでは、共通鍵(DH−Key)の算出処理の完了までには時間がかかる。
【0091】
ステップS704における共通鍵(DH−key)の算出処理が終了すると、通信装置Aでは、ステップS705においてWSC−M3メッセージを構築する。なお、WSC−M3メッセージのフォーマットは図11を用いて説明したとおりである。
【0092】
ステップS705においてWSC−M3メッセージを構築した後は、ステップS706において、新たなWSC−M2メッセージ(F609)を受信しているか否かを確認する。
【0093】
ステップS706において受信していないことが確認された場合には、ステップS711に進み、ステップS705において構築したWSC−M3メッセージ(最初に構築したWSC−M3メッセージ)を通信装置Bに送信する。
【0094】
一方、ステップS706において、新たなWSC−M2メッセージ(F609)を受信していたことが確認された場合には、ステップS707に進む。
【0095】
ステップS707では、ステップS706において受信していたことが確認された新たなWSC−M2メッセージ(F609)を解析する。ステップS708では、ステップS707における解析の結果、先に受信したWSC−M2メッセージ(F607)と新たに受信したWSC−M2メッセージ(F609)との間に差異があるか否かを判断する。
【0096】
具体的には、先に受信したWSC−M2(F607)メッセージが備える提供装置の乱数(Registrar Nonce)について、新たに受信したWSC−M2メッセージ(F609)との間で差異があるか否かを判定する。
【0097】
ステップS708において、提供装置の乱数(Registrar Nonce)について差異がないと判定された場合には、ステップS711に進む。ステップS711では、ステップS705において構築したWSC−M3メッセージ(最初に構築したWSC−M3メッセージ)を通信装置Bに送信する。
【0098】
一方、ステップS708において、提供装置の乱数(Registrar Nonce)について差異があると判定された場合には、ステップS709に進む。
【0099】
ステップS709では、先に受信したWSC−M2メッセージ(F607)が備える公開鍵(Public Key)について、新たに受信したWSC−M2メッセージ(F609)との間で差異があるか否かを判定する。
【0100】
ステップS709において、公開鍵(Public Key)について差異があると判定された場合には、ステップS704に戻り、共通鍵(DH−Key)の再計算を行う。
【0101】
一方、ステップS709において、公開鍵(Public Keyが)について差異がない(同一である)と判定された場合には、ステップS710に進む。ステップS710では、ステップS704において算出した共通鍵(DH−Key)を、そのまま使用してWSC−M3メッセージを再構築する。つまり、提供装置の乱数(Registrar Nonce)とメッセージ認証コード(Authenticator)のみを再計算してWSC−M3メッセージを再構築する。
【0102】
具体的には、提供装置の乱数(Registrar Nonce)について、ステップS705で設定した値から、ステップS707において取得された乱数(つまり、複数回受信したメッセージのうちの最後のメッセージに含まれる乱数)に置き換える。なお、メッセージ認証コード(Authenticator)はハッシュ計算のみであるため、通信装置AのCPUの演算能力が低い場合であっても、通信装置Bの動作には影響しない。
【0103】
ステップS710においてWSC−M3メッセージが再構築されると、ステップS711では、再構築したWSC−M3メッセージ(F610)を通信装置Bに対して送信する。その後は、図6を用いて説明したシーケンス図に従って自動設定処理が正常に実行される。
【0104】
以上の説明から明らかなように、本実施形態に係る通信装置(受信装置)では、共通鍵算出処理の実施中に同一のメッセージが再送された場合に、必要な部分のみを差し替えたうえで、メッセージを再構築し送信する構成とした。
【0105】
この結果、受信装置として機能する通信装置AのCPUの演算能力が低く、公開鍵暗号方式による共通鍵の算出処理に時間がかかる場合であっても、通信パラメータの自動設定処理を正常に完了させることが可能となった。
【0106】
[第3の実施形態]
上記第1及び第2の実施形態では、IEEE802.11準拠の無線LANシステムに適用した場合について説明した。しかしながら、本発明はこれに限定されず、ワイヤレスUSB、MBOA、Bluetooth(登録商標)、UWB、ZigBee等の他の無線システムに適用してもよい。また、有線LAN等の有線通信システムに適用してもよい。
【0107】
なお、ここでいうMBOAとは、Multi Band OFDM Allianceの略である。また、UWBには、ワイヤレスUSB、ワイヤレス1394、WINETなどが含まれるものとする。
【0108】
また、上記第1及び第2の実施形態では、通信パラメータとしてネットワーク識別子、暗号方式、暗号鍵、認証方式、認証鍵等を例に挙げたが、本発明はこれに限定されず、他の設定項目であってもよい。あるいは、当該他の設定項目が上記通信パラメータに加えて含まれていてもよい。
【0109】
[他の実施形態]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

【特許請求の範囲】
【請求項1】
通信装置であって、
他の通信装置から公開鍵と乱数とが含まれるメッセージを受信する受信手段と、
前記受信手段において受信されたメッセージに含まれる前記公開鍵と、前記通信装置が予め保持する秘密鍵とを用いて、共通鍵を算出する算出手段と、
前記算出手段による前記共通鍵の算出の開始から完了までの間に、前記受信手段において前記他の通信装置から前記メッセージを複数回受信し、該複数回のメッセージそれぞれに含まれる前記公開鍵が同一である場合に、前記受信手段において最後に受信されたメッセージに含まれる乱数を含むメッセージを前記他の通信装置に送信する送信手段と
を有することを特徴とする通信装置。
【請求項2】
前記算出手段による前記共通鍵の算出の開始から完了までの間に、前記受信手段において前記他の通信装置から異なる公開鍵が含まれる前記メッセージを受信した場合、前記算出手段は、前記異なる公開鍵を用いて共通鍵を算出することを特徴とする請求項1に記載の通信装置。
【請求項3】
前記算出手段による前記共通鍵の算出の開始から完了までの間に、前記受信手段において前記他の通信装置から前記メッセージを複数回受信し、該複数回のメッセージそれぞれに含まれる前記公開鍵が同一であり、前記乱数も同一であった場合、前記送信手段は、前記受信手段において最初に受信されたメッセージに含まれる乱数を含むメッセージを前記他の通信装置に送信することを特徴とする請求項1に記載の通信装置。
【請求項4】
通信装置の制御方法であって、
受信手段が、他の通信装置から公開鍵と乱数とが含まれるメッセージを受信する受信工程と、
算出手段が、前記受信工程において受信されたメッセージに含まれる前記公開鍵と、前記通信装置が予め保持する秘密鍵とを用いて、共通鍵を算出する算出工程と、
送信手段が、前記算出工程における前記共通鍵の算出の開始から完了までの間に、前記受信工程において前記他の通信装置から前記メッセージを複数回受信し、該複数回のメッセージそれぞれに含まれる前記公開鍵が同一である場合に、前記受信工程において最後に受信されたメッセージに含まれる乱数を含むメッセージを前記他の通信装置に送信する送信工程と
を有することを特徴とする通信装置の制御方法。
【請求項5】
通信装置において、コンピュータに、
他の通信装置から公開鍵と乱数とが含まれるメッセージを受信する受信工程と、
前記受信工程において受信されたメッセージに含まれる前記公開鍵と、前記通信装置が予め保持する秘密鍵とを用いて、共通鍵を算出する算出工程と、
前記算出工程における前記共通鍵の算出の開始から完了までの間に、前記受信工程において前記他の通信装置から前記メッセージを複数回受信し、該複数回のメッセージそれぞれに含まれる前記公開鍵が同一である場合に、前記受信工程において最後に受信されたメッセージに含まれる乱数を含むメッセージを前記他の通信装置に送信する送信工程と
を実行させることを特徴とするプログラム。

【図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


【公開番号】特開2012−119917(P2012−119917A)
【公開日】平成24年6月21日(2012.6.21)
【国際特許分類】
【出願番号】特願2010−267502(P2010−267502)
【出願日】平成22年11月30日(2010.11.30)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ZIGBEE
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】