以下、添付の図面を参照して実施形態を詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
図1に、通信装置101が参加する通信システムの構成を示す。本実施形態において、通信システムは通信装置101、102と、アクセスポイント103から構成され、いずれも無線LAN(Local Area Network)通信機能を有する。通信装置101、102は、無線ネットワークに参加するステーション(STA)として動作する。また、アクセスポイント103は、無線ネットワークを構築するアクセスポイント(AP)として動作する。通信装置101、102およびアクセスポイント103は、いずれもIEEE802.11シリーズ規格であるIEEE802.11a/b/g/n/ac/ax/be規格の少なくとも何れか一つによる無線通信に対応していてもよい。なお、IEEEは、Institute of Electrical and Electronics Engineersの略である。
また、通信装置101は、Wi-Fi Device Provisioning Protocol(DPP)規格に準拠したコンフィギュレータとして動作し、他の装置に通信パラメータを提供する提供装置として動作する。また、通信装置102およびアクセスポイント103は、DPP規格に準拠したエンローリとして動作し、他の装置から通信パラメータを受信する受信装置として動作する。このように、通信装置101は、通信装置102およびアクセスポイント103と通信パラメータを共有することで、各通信装置とアクセスポイント103が構築する無線ネットワーク104において通信することができるようになる。なお、通信装置101は、アクセスポイント103が構築する無線ネットワーク104に接続してもよいし、接続しなくてもよい。
本実施形態において、通信装置101は、アクセスポイント103に対して無線ネットワーク104を形成するための通信パラメータを提供する。また、通信装置101は、通信装置102に対して無線ネットワーク104に接続するための通信パラメータを提供する。通信パラメータには、無線通信を行うために必要な設定項目が含まれ、ネットワーク識別子としてのSSID(Service Set Identifier)、暗号化方式、暗号鍵、認証方式、およびAKMなどの少なくともいずれか一つが含まれる。
AKMとは、Authentication and Key Management Typeの略であって、通信時にどの認証プロトコルや鍵交換アルゴリズムを使用するかを示す値である。例えば、AKMが「dpp」の場合、通信パラメータには、上記の設定項目に加えて、あるいは代えて、DPP規格に対応するアクセスポイントに接続するために必要な情報であるコネクタが含まれる。コネクタは、DPP規格によって定められた認証プロトコルや鍵交換アルゴリズムで使用される各種情報である。
なお、ここではAKMが「dpp」と表現される場合について説明したが、AKMの表現はこれに限らず、異なる文字列や数字などであってもよい。DPP規格の更新に伴う仕様の変更によって、異なる文字列や数字などの表現が「dpp」に相当する表現として割り当てられた場合、新たに割り当てられた文字列や数字がAKMとして設定されている場合には通信パラメータにコネクタを含めるようにしてもよい。
また、AKMが「sae」の場合、通信パラメータには、上記の設定項目に代えて、あるいは加えて、WPA(Wi-Fi Protected Access)3規格に対応するアクセスポイントに接続するための情報であるパスワードが含まれる。なお、SAEは、Simultaneous Authentication of Equals(同等性同時認証)の略である。
また、AKMが「sae」の場合、通信パラメータとして、パスワードに加えて、SAEの情報要素が含まれてもよい。SAEの情報要素とは、SAEの仕様で規定されたPassword Identifier(以下、Identifier)のことである。アクセスポイントは、BSS(Basic Service Set)ごとにIdentifierを設定することができる。Identifierが設定されているアクセスポイントと接続するSTAは、設定されているIdentifierを知らないと、アクセスポイントと接続することができない。このように、アクセスポイントは、Identifierを設定することでセキュリティを向上させることができる。Identifierは任意の文字列であって、ユーザによって設定されてもよいし、アクセスポイントに予め設定されていてもよい。また、アクセスポイントはIdentifierを使用してもよいし、使用しなくてもよい。アクセスポイントがIdentifierを使用するか否かは、ユーザによって設定されてもよいし、アクセスポイントに予め設定されていてもよい。
なお、ここではAKMが「sae」と表現される場合について説明したが、AKMの表現はこれに限らず、異なる文字列や数字などであってもよい。DPP規格の更新に伴う仕様の変更によって、異なる文字列や数字などの表現が「sae」に相当する表現として割り当てられた場合、新たに割り当てられた文字列や数字がAKMとして設定されている場合には通信パラメータにパスワードやIdentifierを含めるようにしてもよい。
また、AKMが「psk」の場合、通信パラメータには、上記の設定項目に代えて、あるいは加えて、WPA3規格の前の規格であるWPA2規格に対応するアクセスポイントに接続するための情報であるPSKまたはパスフレーズが含まれる。なお、pskはPre Shared Key(事前共有鍵)の略である。このPSKまたはパスフレーズは、WPA2規格に準拠した無線接続で使用される。WPA3規格のパスワードやWPA2規格のPSK、パスフレーズは、WPA2規格やWPA3規格、IEEE802.11シリーズ規格に準拠した認証または鍵交換を実施する際の暗号鍵である。
なお、ここではAKMが「psk」と表現される場合について説明したが、AKMの表現はこれに限らず、異なる文字列や数字などであってもよい。DPP規格の更新に伴う仕様の変更によって、異なる文字列や数字などの表現が「psk」に相当する表現として割り当てられた場合、新たに割り当てられた文字列や数字がAKMとして設定されている場合には通信パラメータにPSKまたはパスフレーズを含めるようにしてもよい。
本実施形態において、通信装置101、102の具体例としては、携帯電話、デジタルカメラ、ビデオカメラ、PC、PDA、スマートフォン、およびスマートウォッチなどの電子機器があげられるが、これらに限られるものではない。通信装置101および102は、無線ネットワークに接続が可能な電子機器であればよく、携帯型でなくてもよい。また、本実施形態においてアクセスポイント103の具体例としては、無線LANルーターやPCなどがあげられるが、これらに限定されない。アクセスポイント103は、無線ネットワークを構築する機能を有する電子機器であればよく、プリンタやデジタルカメラなどであってもよい。
なお、通信装置101、102およびアクセスポイント103の少なくともいずれか一台は、DPP規格に加えて、Wi-Fi Allianceによって策定されたWi-Fi Direct規格などの規格に対応していてもよい。また、Bluetooth(登録商標)、NFC、UWB、ZigBee、MBOAなどの他の通信規格に対応していてもよい。なお、UWBはUltra Wide Bandの略であり、MBOAはMulti Band OFDM Allianceの略である。また、NFCはNear Field Communicationの略である。UWBには、ワイヤレスUSB、ワイヤレス1394、WiNETなどが含まれる。あるいは、有線LANなどの有線通信の通信規格に対応していてもよい。
図2は、通信装置101のハードウェア構成を示す図である。なお、通信装置102も通信装置101と同様のハードウェア構成を有する。なお、図2で示す各部の一部またはすべてがソフトウェアによって実現されてもよい。
無線通信制御部201は、DPP規格に準拠した無線通信の制御を行う。また、無線通信制御部201は、DPP規格に加えて、IEEE802.11シリーズ規格に準拠した無線通信の制御や、有線LANなどの有線通信の制御を行ってもよい。無線通信制御部201は、アンテナ213を制御して、後述の制御部205によって生成された無線通信のための無線信号の送受信を行う。通信装置101は、無線通信制御部201を介して、画像データや文書データ、映像データなどのコンテンツを他の通信装置と通信してもよい。
送受信部202は、各通信レイヤのプロトコルに応じたデータの送受信制御を、無線通信制御部201を介して行う。
操作部203は、ユーザが通信装置101を操作するための各種操作を受け付ける。操作部203には、撮像部207を起動するためのボタン等が含まれてもよい。なお、操作部203はハードウェアで構成されていてもよいし、ソフトウェアにより表示部204を用いて提供されるUI(User Interface)で構成されてもよい。
表示部204は、LCD(Liquid Crystal Display)やLED(Light Emitting Diode)等で構成され、各種表示処理を行う。なお、タッチパネルのように、操作部203と表示部204とを一つのモジュールで実現するようにしてもよい。また、操作部203と表示部204とは、夫々通信装置101と一体であってもよいし、別体であってもよい。
制御部205は、例えばCPUやMPU等の1つ以上のプロセッサにより構成され、後述の記憶部206に記憶されたコンピュータプログラムを実行することにより、通信装置101全体を制御する。なお、CPUはCentral Processing Unitの、MPUはMicro Processing Unitの略である。なお制御部205は、CPUやMPUに加えて、あるいは代えて、ASIC(特定用途向け集積回路)、DSP(デジタルシグナルプロセッサ)、FPGA(フィールドプログラマブルゲートアレイ)等により構成されてもよい。なお、制御部205は、記憶部206に記憶されたコンピュータプログラムとOS(Operating System)との協働により、通信装置101全体を制御するようにしてもよい。また、制御部205は、他の通信装置との通信において送信するデータや信号を生成する。また、制御部205がマルチコア等の複数のプロセッサを備え、複数のプロセッサにより通信装置101全体を制御するようにしてもよい。
記憶部206は、ROMやRAMなどの1以上のメモリにより構成され、後述する各種動作を行うためのコンピュータプログラムや、無線通信のための通信パラメータ等の各種情報を記憶する。ROMはRead Only Memoryの、RAMはRandom Access Memoryの夫々略である。なお、記憶部206として、ROM、RAM等のメモリの他に、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、CD-R、磁気テープ、不揮発性のメモリカード、DVDなどの記憶媒体が用いられてもよい。
撮像部207は、撮像素子、レンズ等を含み、制御部205によって制御されることで、静止画や動画の撮影を行う。
画像処理部208は、撮像部207によって撮影された画像等の画像処理を行う。また、画像処理部208は、撮像部207により撮影されたQRコード(登録商標)の画像を解析し、符号化された情報を復号してQRコード情報を取得する。QRコード情報には、DPP規格における通信パラメータの共有処理に用いられる認証用の公開鍵(Bootstrapping Key)の情報が含まれる。なお、QRコード情報には、公開鍵の情報に加えて、QRコードに対応する装置の識別情報(MACアドレス、装置の名称)や、該装置がDPP規格におけるコンフィギュレータであるか、またはエンローリであるかを示す情報が含まれていてもよい。
コード生成部209は、QRコード情報を生成し、生成したQRコード情報をQRコード(画像)として表示部204へ表示するための制御を行う。なお、本実施形態では、コード情報の画像としてQRコードを用いたが、これに限らず、バーコードなどの一次元コードや、AztecCodeやSemacodeなどの他の二次元コードなどが用いられてもよい。なお、QRコードなどの機械が読み取り可能な情報に代えて、ユーザが読みとれる形式の情報を生成してもよい。この場合、ユーザが手入力で相手装置にQRコード情報に相当する情報を入力することで該情報が共有されるようにしてもよい。
パラメータ処理部210は、無線ネットワーク104に接続するための通信パラメータの提供や取得を行うための処理を行う。
更新部211は、通信パラメータ提供処理に関する各種更新処理を行う。
認証部212は、他の装置を認証するための制御を行う。
なお、上記ハードウェア構成は一例であり、複数のハードウェアに対応する機能を1つのハードウェアが有するように構成されてもよいし、何れかのハードウェアが更に複数のハードウェアに分かれてもよい。
図3は、通信装置101が通信パラメータを提供する際に、記憶部206に記憶されたコンピュータプログラムを制御部205に読み出し、実行することで実現される処理を示すフローチャートである。本実施形態において、通信装置101はコンフィギュレータとして動作し、エンローリとして動作する通信装置102およびアクセスポイント103に通信パラメータを提供する。
通信装置101は、ユーザから通信パラメータの提供を指示されると、本フローの処理を開始する。あるいは、通信装置101は、ユーザから通信パラメータの共有処理の開始を指示されると本フローの処理を開始してもよいし、所定のアプリケーションの起動に応じて本フローの処理を開始してもよい。あるいは、通信装置101は、通信装置101に電源が投入されたことに基づいて本フローの処理を開始してもよい。
通信装置101は、通信装置102が表示するQRコード(を含む画像)を撮影するために撮像部207を起動する(S301)。当該QRコードには、QRコード情報として、通信装置102の認証に用いられる、通信装置102の公開鍵が含まれる。
通信装置101は、撮像部207によってQRコードを撮影したかを判定する(S302)。通信装置101は、QRコードを撮影しなかったと判定されると(S302のNo)、再度S302の処理を実行する。一方、QRコードを撮影したと判定されると(S302のYes)、通信装置101はS303の処理を実行する。ここで、通信装置102に対応するQRコードは、通信装置の表示部204等に表示されたものに限らず、通信装置102の筺体や付属品に貼り付けられたラベル等に印刷されたものであってもよい。また、通信装置102に対応するQRコードは、例えば通信装置102に対する説明書等に記載されたものでもよい。あるいは、通信装置102が印刷機能を有している場合、通信装置102がQRコードを印刷してもよい。なお、S302にて、撮像部207の起動から所定の時間内にQRコードを撮影したと判定されなかった場合、通信装置101は、本フローの処理を終了してもよい。
通信装置101は、QRコードを撮影したと判定されると(S302のYes)、撮影されたQRコードから通信装置102の認証用の公開鍵(Bootstrapping Key)を含むQRコード情報を取得する(S303)。なお、通信装置101は、撮影したQRコードに、公開鍵に加えて、通信装置102の識別情報や、通信装置102がコンフィギュレータであるか、またはエンローリであるかを示す情報が含まれている場合、これらの情報をQRコード情報として取得してもよい。
次に、通信装置101は、通信装置102に対して認証要求を送信する(S304)。認証要求は、例えばDPP規格で規定されたDPP Authentication Requestフレームである。通信装置101から通信装置102に送信される認証要求には、認証に用いるための認証情報と、通信装置101の識別情報、乱数、役割情報、および共有鍵生成用の公開鍵が含まれる。認証情報は、S302で撮影したQRコードに含まれていた、通信装置102の認証用の公開鍵のハッシュ値であり得る。通信装置101の識別情報は、通信装置101の認証用の公開鍵のハッシュ値であり得る。乱数は、後述する認証応答の受信時において認証のために使用され得る数値である。役割情報とは、通信装置101がコンフィギュレータあるいはエンローリ、もしくはその両方で動作することができることを示す情報である。本実施形態において、通信装置101は、コンフィギュレータとして動作できることを示す情報を役割情報として認証要求に含めるものとする。共有鍵生成用の公開鍵は、通信装置102との間で生成される共有鍵の生成元となる鍵であり得る。
通信装置102は、認証要求を受信すると、認証要求を送信した装置(通信装置101)がQRコードを撮影した装置であるかを判定する。この判定は、認証要求に含まれている認証情報を用いて行われる。通信装置102は、自装置が表示したQRコードに含めた公開鍵のハッシュ値を計算し、算出したハッシュ値と通信装置101が送信した認証要求に含まれるハッシュ値(認証情報)とを比較する。通信装置102が算出したハッシュ値と、通信装置101から受信したハッシュ値が一致した場合、通信装置102は通信装置101の認証に成功したと判定する。通信装置102は、認証に成功したと判定すると、認証要求に対する応答として、通信装置101に認証応答を送信する。一方、通信装置102が算出したハッシュ値と、通信装置101から受信したハッシュ値とが一致しなかった場合、通信装置102は通信装置101の認証に失敗したと判定する。通信装置102は、認証に失敗したと判定すると、通信装置101に認証応答を送信しない。なお、ハッシュ値の計算に用いられるハッシュ関数は、通信装置101と通信装置102との間で予め共有されているものとする。本実施形態では、通信装置102が、自装置の認証用の公開鍵のハッシュ値を算出するとしたが、これに限らず、通信装置102は予めハッシュ値を保持していてもよい。
通信装置101は、通信装置102にS304において認証要求を送信した後、認証応答を受信したかを判定する(S305)。通信装置101は、認証応答を受信すると本判定でYesと判定し、S306の処理を行う。一方、通信装置101は、認証応答を受信しないと本判定でNoと判定し、S305の処理を再度行う。なお、通信装置101は、S305において所定の時間内に認証応答を受信できなかった場合、本フローの処理を終了し、通信パラメータの提供処理を終了してもよい。認証応答は、例えばDPP規格で規定されたDPP Authentication Responseフレームである。通信装置102から通信装置101に送信される認証応答には、通信装置102の共有鍵生成用の公開鍵、乱数、役割情報、およびタグ情報が含まれる。共有鍵生成用の公開鍵とは、通信パラメータを暗号化するための共有鍵の生成元となる鍵である。役割情報とは、通信装置102がコンフィギュレータあるいはエンローリで動作することができることを示す情報である。本実施形態において、通信装置102は、エンローリとして動作できることを示す情報を役割情報として認証応答に含めるものとする。また、タグ情報とは、認証要求に含まれていた乱数である。このタグ情報は、通信装置102の共有鍵生成用の秘密鍵と、通信装置101の共有鍵生成用の公開鍵の双方を用いて生成された共有鍵で暗号化される。
通信装置101は、認証応答を受信すると(S305のYes)、認証応答を送信した通信装置102の認証処理を実行する(S306)。まず、通信装置101は、認証応答に含まれている通信装置102の共有鍵生成用の公開鍵と、通信装置101が保持する自装置の共有鍵生成用の秘密鍵の双方を用いて共有鍵を生成する。なお、通信装置102は、認証要求を受信した際に、通信装置101の共有鍵生成用の公開鍵と、通信装置102の共有鍵生成用の秘密鍵の双方を用いて共有鍵を生成する。共有鍵は、例えば、ECDH(Elliptic Curve Diffie-Hellman)方式に基づいて生成される。本実施形態において、共有鍵は、ECDH方式に基づいて生成されるものとするが、この方式に限定されるものではなく、その他の公開鍵暗号方式に基づいて生成されてもよい。
続いて、通信装置101は、認証応答に含まれるタグ情報を用いて認証処理を行い、認証が成功したかを判定する。通信装置101は、受信したタグ情報を自装置が生成した共有鍵で正しく復号できた場合に、認証に成功したと判定し(S306のYes)、S307の処理を実行する。一方、通信装置101は、自装置が生成した共有鍵でタグ情報を復号できなかった場合、認証に失敗したと判定し(S306のNo)、S310の処理を実行する。
通信装置101は、認証に失敗したと判定された場合(S306のNo)、表示部204にエラーを示すメッセージを表示し(S310)、本フローの処理を終了することで、パラメータ提供処理を終了する。なお、S310において通信装置101は、エラーを示すメッセージを表示するのに加えて、あるいは代えて、音声やLEDの点滅などによってユーザにエラーを通知してもよい。S310において、通信装置101は、パラメータ共有処理においてエラーが発生したことをユーザに通知できればよい。この場合に、通信装置101は、通信装置102にエラーを通知してもよい。また、通信装置101は、S310をスキップして本フローの処理を終了してもよい。
一方、通信装置101は、認証に成功したと判定された場合(S306のYes)、通信装置102へ認証確認を送信する(S307)。この認証確認は、例えばDPP規格で規定されたDPP Authentication Confirmフレームである。この認証確認は、タグ情報を含む。タグ情報は、通信装置102が送信した認証応答に含まれている乱数が、生成された共有鍵で暗号化されたものである。
なお、通信装置101は、認証応答を受信した際に、認証応答に含まれる通信装置102の役割情報が、自装置の役割情報と同じ場合(コンフィギュレータとコンフィギュレータ、あるいはエンローリとエンローリ)、S306でNoと判定してもよい。あるいは、通信装置101は、S306でYesと判定し、エラーを示す情報を含む認証確認を通信装置102に送信してもよい。
同様に、通信装置102も、認証要求を受信した際に、認証要求に含まれる通信装置101の役割情報が、自装置の役割情報と同じ場合(コンフィギュレータとコンフィギュレータ、あるいはエンローリとエンローリ)、エラーを示す認証応答を送信してもよい。あるいは、通信装置102は、認証応答を送信せずに処理を終了してもよい。
通信装置102は、通信装置101から認証確認を受信すると、通信装置101の認証処理を実行する。具体的には、通信装置102は、認証確認に含まれるタグ情報を、自装置が生成した共有鍵で復号できるかを判定する。通信装置102は、認証確認に含まれているタグ情報を、自装置が生成した共有鍵で正しく復号できた場合、認証が成功したと判定する。認証が成功したと判定されると、通信装置102は、認証要求を送信した通信装置101を、通信パラメータの共有処理を行う相手装置として認定する。本実施形態において、通信装置101は、コンフィギュレータとして認定される。通信装置102は、認証に成功すると、通信装置101に対して設定要求を送信する。一方、通信装置102は、タグ情報を自装置が生成した共有鍵で正しく復号できなかった場合、認証に失敗したと判定し、通信装置101に対して認証要求を送信しない。あるいは、通信装置102は、通信装置101にエラーを通知する。
設定要求は、例えばDPP規格で規定されたDPP Configuration Requestフレームである。設定要求には、通信装置102のデバイス情報および役割情報が含まれる。デバイス情報とは、通信装置102のデバイス名などである。また、役割情報とは、受信した通信パラメータによって通信装置102が参加できるネットワークにおいて、通信装置102が希望する役割を示す情報である。具体的には、ネットワークを構築するアクセスポイントとしての役割を希望するか、あるいはネットワークに参加するステーションとしての役割を希望するかを示す情報である。本実施形態において、通信装置102は、ステーションとしての役割を希望することを示す役割情報を送信する。設定要求に含まれる情報は、通信装置102が認証要求を受信した際に生成した共有鍵で暗号化される。
通信装置101は、認証確認を送信した後、通信装置102から設定要求が送信されたかを判定する(S308)。通信装置101は、設定要求を受信すると、S308でYesと判定し、S309の処理を行う。一方、通信装置101は、認証要求を受信しないと、S308でNoと判定し、S308の処理を行う。なお、通信装置101は、S308において、所定の時間内に設定要求を受信しなかった場合、本フローの終了することで、通信パラメータの提供処理を終了してもよい。この場合に、通信装置101はユーザにエラーを通知してもよい。
通信装置101は、通信装置102から設定要求を受信すると(S308のYes)、通信パラメータの提供処理を行う(S309)。本ステップの詳細は、後述の図5で説明する。通信装置101は、通信装置102に対して無線ネットワーク104に参加するための通信パラメータを含む設定応答を送信する。これにより、通信装置101と通信装置102との間で通信パラメータが共有される。なお、通信装置101がアクセスポイント103と通信パラメータの共有処理を行う場合、通信装置101は本ステップにおいて、アクセスポイント103に無線ネットワーク104を構築するための通信パラメータを含む設定応答を送信する。
設定応答は、例えばDPP規格で規定されたDPP Configuration Responseフレームである。設定応答には、通信パラメータが含まれる。設定応答に含まれる情報は、通信装置101がS306において生成した共有鍵で暗号化される。なお、通信パラメータには、AKMが含まれる他、AKMに応じてコネクタ、パスワード、PSK、あるいはパスフレーズの少なくとも何れか一つが含まれる。AKMが「dpp」、「dpp+sae」、あるいは「dpp+sae+psk」のように、「dpp」を含むものである場合、通信パラメータには少なくともコネクタが含まれる。また、AKMが「dpp」を含むものである場合、通信パラメータにC-sign-key(公開鍵)も含まれる。C-sign-keyはコンフィグレータ専用の公開鍵であり、コネクタはコンフィグレータ専用の秘密鍵で暗号化されている。あるいは、AKMが「psk」、「psk+sae」、あるいは「dpp+sae+psk」のように、「psk」を含む場合、通信パラメータには少なくともPSKまたはパスフレーズが含まれる。あるいは、AKMが「sae」、「psk+sae」、「dpp+sae」、あるいは「dpp+sae+psk」のように「sae」を含む場合、通信パラメータにはパスワードが含まれる。これに加えて、saeの情報要素であるIdentifierが含まれていてもよい。
なお、ここではAKMが「dpp」、「dpp+sae」、「dpp+sae+psk」、「psk」、「sae」、あるいは「psk+sae」と表現される場合について説明したが、AKMの表現はこれに限らず、異なる文字列や数字などであってもよい。DPP規格の更新に伴う仕様の変更によって、異なる文字列や数字などの表現がこれらのAKMに相当する表現として割り当てられた場合に、新たに割り当てられた文字列や数字に対応する情報を通信パラメータに含めるようにしてもよい。
通信装置102は、設定要求を送信後、コンフィギュレータとして動作する通信装置101から設定応答が送信されるのを待ち受ける。設定応答を受信した通信装置102は、設定応答に含まれる情報を、認証要求の受信時に生成した共有鍵で復号する。通信装置102は、復号して得られた通信パラメータを使用して、無線ネットワーク104に接続することができる。
以上、図3には、通信装置101が他の通信装置に通信パラメータを提供する際に実行される処理を示した。通信装置101は、DPP規格のコンフィギュレータとして、DPP規格のエンローリとして動作する通信装置102に通信パラメータを提供する。
なお、本実施形態において、通信装置101は、通信装置102に対応するQRコードを撮影することで、通信装置102の認証に用いられる公開鍵を取得するとしたが、これに限らず、NFC通信やBluetooth通信によって取得してもよい。また、通信装置101は、PKEX(Public Key Exchange) Protocolを利用して、通信装置102の認証に用いられる公開鍵を取得してもよい。PKEX Protocolを用いる場合、通信装置101は、通信装置102と共有したコードを用いて通信装置102の認証に用いられる公開鍵を取得する。コードとは、文字や数字、記号、あるいはそれらの組み合わせなどによって構成されるものである。
また、本実施形態において、コンフィギュレータである通信装置101が通信装置102に対応するQRコードを撮影し、通信装置102の認証に用いる公開鍵(Bootstrapping Keyの)を取得するとした。しかし、これに限らず、通信装置102が通信装置101に対応するQRコードを撮影し、通信装置101の認証に用いる公開鍵(Bootstrapping Key)を取得するようにしてもよい。この場合、通信装置102は、本実施形態において通信装置101が行っていた図3のS301~S307およびS310の処理を行う。また、通信装置101は、本実施形態では通信装置102が行っていた、図3のS301~S307およびS310に対応する処理を行う。図3のS308以降の処理は、コンフィギュレータとして動作する通信装置が行う処理であるため、このような場合であっても、通信装置101が実行する。
図4は、通信装置101が、通信装置102またはアクセスポイント103と通信パラメータを共有する場合に実行する処理の一例を示すシーケンス図である。本実施形態において、通信装置101はDPP規格に準拠したコンフィギュレータとして、DPP規格に準拠したエンローリである通信装置102またはアクセスポイント103に通信パラメータを提供するものとする。
通信装置102は、通信パラメータの受領をユーザから指示されると(S401)、通信装置102の表示部204にQRコードを表示し(S402)、認証要求を待ち受ける。なお、S401でユーザから通信パラメータの受領ではなく、通信の開始や通信パラメータの共有の開始を指示されてもよい。また、通信装置102は、認証要求を待ち受けている場合に、所定の時間内に認証要求を受信できなかった場合、通信装置102は認証要求の待ち受けを終了してもよい。また、通信装置102がQRコードを表示するのではなく、通信装置102の筺体や付属品に貼り付けられたラベル等にQRコードが印刷されていてもよい。この場合、S402はスキップされる。あるいは通信装置102が印刷機能を有している場合、S402でQRコードを印刷してもよい。
一方、通信装置101は、通信パラメータの提供をユーザから指示されると(S403)、通信装置102の表示するQRコードを撮影するために撮像部207を起動する(S404)。なお、通信装置101は、通信パラメータの提供ではなく、通信の開始を指示されてもよい。通信装置101は、通信装置102が表示するQRコードを撮影し、撮影したQRコードからQRコード情報を取得する(S405)。通信装置101は、QRコード情報として、通信装置102の認証に用いられる公開鍵を少なくとも取得する。
QRコードが示す情報を取得した通信装置101は、認証要求を生成し、通信装置102に送信する(S406)。通信装置102は、受信した認証要求に含まれる情報に基づいて、通信装置101がQRコードを撮影した装置であるかを判定する(S407)。認証要求を送信した通信装置101がQRコードを撮影した装置であると判定すると、通信装置102は、認証応答を生成し、通信装置101に送信する(S408)。通信装置101に認証応答を送信した通信装置102は、通信装置101から認証確認が送信されるのを待ち受ける。
認証応答を受信した通信装置101は、認証応答の内容に基づいて、通信装置102の認証処理を行う(S409)。通信装置101は、通信装置102の認証に成功した場合、通信装置102に認証確認を送信する(S410)。通信装置101から認証確認を受信した通信装置102は、認証確認の内容に基づいて通信装置101の認証処理を行う。通信装置102は、自装置が生成した共有鍵を用いて、認証確認に含まれるタグ情報を正しく復号できた場合、認証に成功したと判定する。
通信装置102は、認証に成功したと判定すると、通信パラメータの設定処理を行うために、通信装置101に設定要求を送信する(S411)。通信装置102は、設定要求を送信すると、通信装置101から設定応答が送信されるのを待ち受ける。設定要求を受信した通信装置101は、通信パラメータを含めた設定応答を通信装置102に送信する(S412)。設定応答を受信した通信装置102は、設定応答に含まれる通信パラメータを用いて無線ネットワーク104に接続する。
なお、本実施形態では、通信装置101が通信装置102に通信パラメータを提供する場合を例として説明したが、通信装置101がアクセスポイント103に通信パラメータを提供する場合も同様の処理が実行される。アクセスポイント103は、通信装置101から受信した通信パラメータを用いて無線ネットワーク104を構築することができる。
以上、図4には、通信装置101が通信装置102またはアクセスポイント103に通信パラメータを提供する際に実行される処理の一例を示した。通信装置101は、DPP規格のコンフィギュレータとして、DPP規格のエンローリとして動作する通信装置102またはアクセスポイント103に通信パラメータを提供する。
図5に、通信装置101が図3のS309において実行する処理を示すフローチャートである。本実施形態において、通信装置101は、無線LANのセキュリティ規格であるWi-Fi Protected Access 3(WPA3)規格に対応しているものとする。通信装置101は、WPA3規格に対応していることから、暗号鍵の共有の方式としてSAE(Simultaneous Authentication of Equals)を用いることができる。また、通信装置101は、AKM=「sae」の場合に、通信パラメータとして、パスワードだけなく、SAEのオプションの情報要素も提供できるものとする。SAEのオプションの情報要素とは、SAEの仕様のアップデートによって追加されたPassword Identifier(以下、Identifier)のことである。
IdentifierはSAEの仕様のアップデートによって追加されたため、アップデート後のSAE仕様に対応していない通信装置は、通信パラメータとしてIdentifierを受信しても、無効な情報として判定してしまう虞がある。また、通信装置101が通信装置102とアクセスポイント103との両方に通信パラメータを提供する場合であって、一方がIdentifierに対応していない場合は、相互接続性を確保するためにIdentifierを提供しない方が適切である。
本フローチャートの処理は、通信装置101が図3のS308でYesと判定した場合に開始される。
通信装置101は、まず、自装置が提供する通信パラメータのAKMが「sae」を含むものであるかを判定する(S506)。具体的には、通信装置101は、提供する通信パラメータのAKMが「sae」、「psk+sae」、「dpp+sae」、あるいは「dpp+psk+sae」であるかを判定する。なお、通信パラメータのAKMは、通信パラメータの提供先である通信装置102あるいはアクセスポイント103が、DPPとPSKとSAEとの何れに対応しているかに基づいて通信装置101が選択する。通信装置101は、相手装置が対応している暗号鍵の共有の方式を含むAKMを選択してもよい。あるいは通信装置101は、通信装置102に通信パラメータを提供する場合に、通信装置102を接続させたいアクセスポイント103が対応している暗号鍵の共有の方式を含むAKMを選択するようにしてもよい。あるいは、通信装置101は、何れの暗号鍵の共有の方式に対応した通信パラメータを提供するかをユーザに選択させ、ユーザ選択に応じたAKMを選択するようにしてもよい。通信装置101は、提供する通信パラメータのAKMが「sae」を含む場合は、S506でYesと判定し、S501の処理を行う。一方、提供する通信パラメータのAKMが「sae」を含まない場合は、S506でNoと判定し、S505の処理を行う。
通信装置101は、相手装置である通信装置102またはアクセスポイント103に通信パラメータの提供を行う(S505)。通信装置101は、通信パラメータを含む設定応答を相手装置に送信する。この場合に、通信装置101は、AKMに応じて適切な通信パラメータを提供する。例えばAKMが「dpp」を含むものであった場合、通信装置101は、コネクタを含む通信パラメータを提供する。あるいはAKMが「psk」を含むものであった場合は、通信装置101はPSKまたはパスフレーズを含む通信パラメータを提供する。通信装置101は、S505の処理を行うと本フローを終了する。
一方、S506でYesと判定された場合、通信装置101は、まず自端末が提供する通信パラメータとして、Password Identifierを保有しているかを判定する(S501)。例えば、通信装置101が提供する通信パラメータとして、Password Identifierがユーザによって入力されている場合、通信装置101は本ステップでYesと判定する。あるいは、通信装置101が既にアクセスポイント103に接続済みであって、アクセスポイント103がIdentifierを設定している場合、通信装置101は本ステップでYesと判定する。あるいは、通信装置101が、Identifierを含んだ通信パラメータの提供をユーザあるいはアプリケーションから指示されている場合、通信装置101は本ステップでYesと判定する。通信装置101は本ステップでYesと判定すると、S503の処理を行う。一方、通信装置101は、本ステップでNoと判定すると、S504の処理を行う。
通信装置101は、通信パラメータを提供する相手装置がPassword Identifierを利用するかを判定する(S502)。具体的には、通信装置101は、相手装置がSAEのアップデート後の仕様に対応しているかを判定する。通信装置101は、相手装置から受信した認証応答、設定要求、あるいはビーコンの少なくとも何れか一つに含まれる情報に基づいて本ステップの判定を行う。通信装置101は、受信した信号の、アップデート後のSAE仕様(Identifierを利用するSAE仕様)に対応していることを示すビットが立っているか否かに基づいて判定してもよい。この場合、通信装置101はビットが立っている場合は本ステップでYesと判定し、ビットが立っていない場合は本ステップでNoと判定する。なお、該ビットは、認証応答、設定要求、あるいはビーコンに限らず、相手装置が送信する何れの信号に含まれていてもよい。また、該ビットは、Identifierの利用を要求する、あるいはIdentifierに対応することを示すものであってもよい。また、アップデート後のSAE仕様(Identifierを利用するSAE仕様)に対応していることを示す情報は、ビットではなく他の形式によって示されてもよい。この場合、アップデート後のSAE仕様に対応していない相手装置は、アップデート後のSAE仕様に対応していないことを示す情報を含む信号を送信してもよいし、あるいはアップデート後のSAE仕様に関する情報を含まない信号を送信してもよい。
また、通信装置101は、本ステップにおいて、DPP規格の認証応答や設定要求などに含まれる、相手装置が対応するSAEまたはDPPのバージョン情報に基づいて判定してもよい。相手装置が対応するSAEの仕様に関する情報、Identifierの利用に対応するかの情報、またはIdentifierの利用を要求するかの情報の少なくとも何れか一つを取得することができなかった場合、通信装置101はNoと判定してもよい。通信装置101は、本ステップでYesと判定するとS503の処理を行う。一方、本ステップでNoと判定した場合、通信装置101はS504の処理を行う。
通信装置101は、相手装置に提供する通信パラメータとして、Identifierのパラメータを設定する(S503)。
ここで、図6に、通信装置101が提供する通信パラメータに含まれるパラメータの一例を示した。Parameter602は、通信パラメータにどのようなパラメータが含まれるかを示す。Name603は、各パラメータの名称を示す。Type604は、各パラメータのデータ型を示す。Valueは、各パラメータとして設定されうる値を示す。なお、Valueは全てのパラメータに設定されているものではなく、任意の値をとり得るものや、値が特に設定されないものについては空欄になっている。
Wi-Fi Technology Objectは、通信パラメータに含まれるパラメータが何れの通信方式に対応したパラメータであるかを示す情報である。例えばwi-fi_tech=infraの場合、通信パラメータとして含まれているパラメータは、インフラストラクチャ方式の無線通信に対応したパラメータである。その他にも、例えば通信装置101は、Wi-Fi Aware規格に準拠した無線通信に対応するパラメータを提供する場合、wi-fi_tech=nanとする。あるいは、Wi-Fi Direct規格に準拠した無線通信に対応するパラメータを提供する場合、通信装置101はwi-fi_tech=p2pとする。通信装置101は、Wi-Fi Allianceによって策定された無線通信規格に準拠した無線通信に対応するパラメータを提供する場合、wi-fi_techとして該無線通信規格に対応する情報を設定することができる。本実施形態において、通信装置101は、インフラストラクチャ方式の無線通信に対応する通信パラメータを提供するので、通信装置101が提供する通信パラメータにはwi-fi_tech=infraが含まれる。
Serviceは、前述のWi-Fi Technology Objectの値に応じて設定されるオプションのパラメータである。Serviceは通信パラメータに含まれてもよいし、含まれなくてもよい。
SSIDは、通信装置101から通信パラメータを提供された通信装置が接続すべきネットワークのネットワーク名を示す情報である。
AKMとは、通信時にどの認証プロトコルや鍵交換アルゴリズムを使用するかを示す値である。AKMに「dpp」が含まれる場合、通信装置101は、通信パラメータに、DPP ConnectorとC-sign-keyを含ませる。また、AKMに「psk」が含まれる場合、通信装置101は、通信パラメータに、Pre-shared key(PSK)またはWPA2 Passphrase(パスフレーズ)を含ませる。また、AKMに「sae」が含まれる場合、通信装置101は、通信パラメータに、SAE passwordを含ませる。
更に、通信装置101は、通信パラメータとしてIdentifierを設定する場合、提供する通信パラメータとしてSAE Identifier601を含める。このSAE Identifier601は、任意の文字列であらわされるパラメータである。なお、本実施形態では、WPA2 Passphrase and/or SAE passwordの後に含まれるとしたが、これに限らず、図6に示した何れのパラメータの後あるいは前に含まれてもよい。あるいは、通信装置101は、Identifierを設定する場合に、SAE passwordの後続にIdentifierをつなげたものをSAE passwordとすることで、Identifierを設定してもよい。この場合、通信装置101は、通信パラメータとしてSAE Identifier601を設定しなくてもよい。また、通信装置101は、通信パラメータとして図6に示したものの全てを提供する必要はなく、少なくとも何れか一つを提供すればよい。
図5の説明に戻る。通信装置101は、S503の処理を行った後、S505の処理を行う。この場合、通信装置101が提供する通信パラメータには、Identifierが含まれる。
一方、S502でNoと判定された場合、通信装置101は提供する通信パラメータとして、Identifierのパラメータを設定しない(S504)。そして、通信装置101は通信パラメータを提供する(S505)。この場合、通信装置101が提供する通信パラメータには、Identifierは含まれない。通信装置101は、S505の処理を行うと、本フローの処理を終了する。
以上のように、通信装置101は、図5の処理を行うことで、SAEのIdentifierを利用する相手装置にはIdentifierを提供し、利用しない装置にはIdentifierを提供しないように制御できる。これにより、通信装置101は、適切にSAEのIdentifierを提供することができる。
なお、本実施形態では、SAEのIdentifierを通信パラメータに含む場合も含まない場合も、AKMはいずれも「sae」であるとしたが、これに限らず、Identifierを含む場合と含まない場合とで異なるAKMを用いるようにしてもよい。あるいは、SAEのIdentifierを利用する場合としない場合とで異なるAKMを用いるようにしてもよい。具体的には、通信パラメータにIdentifierを含む場合や、Identifierを利用する場合のAKMは、「saeid」とし、Identifierを含まない場合や利用しない場合のAKMは「sae」とするようにしてもよい。あるいは、各AKMは、文字列ではなく互いに区別できる数字などで表現されてもよい。
また、本実施形態では、通信装置101は、AKMの値や、相手装置がIdentifierを利用するかに基づいて、通信パラメータとしてIdentifierを利用するか否かを判定したが、これに限らない。通信装置101は、通信装置102に通信パラメータを提供する場合に、既にアクセスポイント103に提供した通信パラメータにIdentifierが含まれているか否かに基づいて判定を行ってもよい。具体的には、通信装置101は、アクセスポイント103に提供した通信パラメータにIdentifierが含まれていた場合は、通信装置102に提供する通信パラメータにもIdentifierを含めると判定する。一方、通信装置101は、アクセスポイント103に提供した通信パラメータにIdentifierが含まれていなかった場合は、通信装置102に提供する通信パラメータにもIdentifierを含めないと判定する。通信パラメータの提供装置は、APにIdentifierを含むBSSの通信パラメータを提供したか否かに基づいて、STAにIdentifierを提供するか判定することで、該BSSに接続するための適切な通信パラメータを提供することができる。
図7は、通信装置102が通信装置101から取得したSAEの情報要素を用いてアクセスポイント103との無線接続を確立する際に実行する処理を示すシーケンス図である。
通信装置102は、アクセスポイント103からビーコンを受信することで、アクセスポイント103を検出する(S701)。アクセスポイント103は、自装置が構築している無線ネットワークにIdentifierが設定されている場合、自装置が構築している無線ネットワークに参加するためには、Identifierが必要であることを示す情報を含ませる。
あるいは、通信装置102は、特定のチャネルまたは全チャネルにおいてプローブリクエストを送信することで、アクセスポイント103を検索してもよい。この場合、通信装置102は、送信したプローブリクエストに対する応答として、アクセスポイント103からプローブレスポンスを受信することで、アクセスポイント103を検出する。なお、アクセスポイント103が構築している無線ネットワークに参加するためには、Identifierが必要であることを示す情報は、プローブレスポンスに含まれていてもよい。
通信装置102は、アクセスポイント103を検出すると、Identifierを用いて、PWEを算出する(S702)。PWEは、password elementの略である。
SAEでは、楕円曲線暗号を利用してPWEの算出を行う。アクセスポイント103と通信装置102とは事前に楕円曲線y^2=x^3+ax+b mod pのパラメータaおよびbを共有しておく。
通信装置102は、DPPによって通信装置101から提供されたパスワードの後続にIdentifierをつなげたものをbaseとして、pwd-seedという情報を以下の式を用いて算出する。なお、base = password||identifierである。
pwd-seed = H (MAX(STA-A-MAC, STA-B-MAC)||MIN(STA-A-MAC, STA-B-MAC), base||counter)
なお、STA-A-MACおよびSTA-B-MACは夫々、通信装置102およびアクセスポイント103のMACアドレスである。MAX(STA-A-MAC, STA-B-MAC)は通信装置102またはアクセスポイント103のMACアドレスのうち、値が大きいもののことである。MIN(STA-A-MAC, STA-B-MAC)は、通信装置102またはアクセスポイント103のMACアドレスのうち、値が小さいもののことである。counterは、pwd-seedの初回の計算では1に設定されている。通信装置102は、MAX(STA-A-MAC, STA-B-MAC)、にMIN(STA-A-MAC, STA-B-MAC)をつなげたものと、baseにcounterをつなげたものを変数として、ハッシュ値を算出します。算出されたハッシュ値が、pwd-seedになる。
続いて、通信装置102は、算出したpwd-seedを用いて、以下の式のように以下の式のように鍵導出関数(Key derivation function、KDF)による計算を行うことで、pwd-valueを算出する。
pwd-value = KDF-Hash-Length(pwd-seed, “SAE Hunting and Pecking”, p)
“SAE Hunting and Pecking”は、この鍵導出関数によって導出される鍵の目的を識別するための文字列である。pは予め決められている素数である。上記の計算により、pwd-seedは、素数pのビット長に等しい長さまで拡張される。
次に、通信装置102は、x=pwd-valueを楕円曲線y^2=x^3+ax+b mod pに代入し、yを求める。以上の計算を行うことで、アクセスポイント103はPWE=(x,y)を求めることができる。
続いて通信装置102は、算出したPWEから、アクセスポイント103に送信するcommit scalarとCOMMIT-ELEMENTを求める。まず通信装置102は、秘密の値randと、一時的に秘密の値maskを決定する。また、通信装置102は、アクセスポイント103と素数rを共有する。通信装置102は、以下の夫々を計算し、commit -scalarとCOMMIT-ELEMENTを算出する。
commit scalar=(rand+mask)mod r
COMMIT-ELEMENT=inverse(scalar-op(mask, PWE))
通信装置102は、アクセスポイント103に対してAuthentication Requestを送信する(S702)。この場合に、送信されるAuthentication requestには、通信装置102が算出したcommit scalarとCOMMIT-ELEMENTを含む、SAE commitment messageが含まれる。
commit scalarとCOMMIT-ELEMENTを含むSAE commitment messageを受信したアクセスポイント103は、PMKの生成を行う(S703)。PMKとはPairwise Master Keyの略である。まずアクセスポイント103は以下の計算を行い、shared secret elementであるKを以下の式から生成する。なお、受信した通信装置102のcommit scalarとCOMMIT-ELEMENTは、夫々peer-commit-scalarおよびPEER-COMMIT-ELEMENTとする。
K=scalar-op(rand, (elem-op(scalar-op(peer-commit-scalar, PWE), PEER-COMMIT-ELEMENT)))
続いて、アクセスポイント103は、算出したKから秘密の値kを算出する。
k=F(K)
関数Fは、K=(x,y)の場合、F(K)=xを返すような関数である。
続いて、アクセスポイント103は、算出したkを使って以下の式からkeyseedを算出する。
keyseed=H(<0>32, k)
<0>32は、値0の32オクテットで構成されることを示す記号である。アクセスポイント103は、<0>32とkを変数として、ハッシュ値を算出する。
次にアクセスポイント103は算出したkeyseedをつかって、kck_and_pmkを算出する。
kck_and_pmk=KDF-Hash-512(keyseed, “SAE KCK and PMK”, (commit-scalar+peer-commit-scalar)mod r)
KDF-Hash-512()は鍵導出関数である。“SAE KCK and PMK”は、この鍵導出関数によって導出される鍵の目的を識別するための文字列である。
続いてアクセスポイント103は、算出したkck_and_pmkから、以下の式によってKCKとPMKを算出する。
KCK = L(kck_and_pmk, 0, 256)
PMK = L(kck_and_pmk, 256, 256)
KCKもPMKも計算結果は256ビットとなる。具体的には、KCKは、kck_and_pmkの0ビットから255ビット(最初の256ビット)として算出される。また、PMKは、kck_and_pmkの256ビットから511ビット(次の256ビット)として算出される。
アクセスポイント103は、ここまでの計算を行うと、SAE commitment messageに対する応答であるSAE confirmation messageに含めるためのconfirmの算出を行う。
confirm = CN(KCK, send-confirm, commit-scalar, COMMIT-ELEMENT, peer-commit-scalar,PEER-COMMIT-ELEMENT)
send-confirmおよびcommit-scalarは、アクセスポイント103が決定した秘密の値randと、一時的に秘密の値maskを用いて算出したものである。peer-commit-scalarおよびPEER-COMMIT-ELEMENTは、通信装置102から受信したものである。send-confirmは、リプレイ防止カウンターとしてSAEで用いられるカウンターの値である。CN()はハッシュ値を計算する関数である。
アクセスポイント103は、confirmを算出すると、confirmを含めたSAE confirmation messageを含むAuthentication responseを通信装置102に送信する(S705)。
Authentication responseを受信した通信装置102は、同様にKCKとPMKを算出する。また、アクセスポイント103を認証するために、verifierを以下の式から算出する。
verifier = CN(KCK, peer-send-confirm, peer-commit-scalar, PEER-COMMIT-ELEMENT,commit-scalar, COMMIT-ELEMENT)
peer-commit-scalarおよびPEER-COMMIT-ELEMENTは、アクセスポイント103が算出したcommit-scalarおよびCOMMIT-ELEMENTになる。commit-scalarおよびCOMMIT-ELEMENTは、通信装置102が算出したものになる。また、peer-send-confirmは、アクセスポイント103から受信したSAE confirmation messageから推定される、アクセスポイント103のSAEで用いられるカウンターの値である。アクセスポイント103が算出したconfirmと、通信装置102が算出したverifierが一致した場合、通信装置102はアクセスポイント103を認証する。
アクセスポイント103を認証した通信装置102は、同様にPMKの算出を行う(S706)。PMKを算出した通信装置102は、アクセスポイント103にAssociation requestを送信する(S707)。通信装置102からAssociation requestを受信したアクセスポイント103は、応答としてAssociation responseを通信装置102に送信する(S708)。
通信装置102とアクセスポイント103とは、4 way handshakeを行う(S709)。4 way handshakeでは、通信装置102とアクセスポイント103とはそれぞれのMACアドレスを共有する。なお、通信装置102とアクセスポイント103とはそれぞれのMACアドレスを共有済みなので、本ステップでのMACアドレスの共有は省略されてもよい。また、通信装置102とアクセスポイント103とは、夫々が決定した乱数の共有を行う。通信装置102とアクセスポイント103とは、共有したMACアドレスおよび乱数と、算出したPMKから、PTK(Pair-wise Transient Key)を生成する。通信装置102とアクセスポイント103とは、生成したPTKを用いて通信を行うことができる。
以上の処理を行うことで、通信装置102とアクセスポイント103とは、暗号鍵の共有の方式としてSAEを用いて通信を確立することができる。
このように、暗号鍵の共有の方式としてSAEを用いる場合、通信装置102はパスワードにIdentifierを続けたものに対して楕円曲線暗号を用いてPMKを算出した。暗号鍵の共有の方式としてSAEを用いる場合、パスワードだけでなくIdentifierも用いてPMKを算出するため、仮にパスワードが同じでもIdentifierが異なれば、異なるPMKが算出される。
一方、暗号鍵の共有の方式としてPSKを用いる場合、通信装置102およびアクセスポイント103は、PSKまたはパスフレーズをそのままPMKとして用いる。そのため、図7のS702やS706で示したような算出処理は不要となる。
暗号鍵の共有の方式としてPSKを用いる場合と比べ、SAEを用いる場合、単にパスフレーズやPSKをそのままPMKとして用いるのではなく、楕円曲線暗号を用いてPMKを算出するため、セキュリティ強度が高い。また、SAEを用いる場合、パスワードだけではなく、Identifierを設定することで、ユーザは簡単にネットワーク毎に異なるPMKを設定することができる。また、ユーザはネットワーク毎にIdentifierを設定することで、ネットワーク毎に異なるPMKが必要になるため、セキュリティ強度を高めることができる。
なお、本実施形態において、通信装置101は、アクセスポイント103が形成する無線ネットワーク104に関する通信パラメータを提供するとした。しかし、これに限らず、通信装置101は、Wi-Fi Direct規格に準拠したグループオーナーが形成する無線ネットワークに関する通信パラメータを提供するようにしてもよい。
なお、図3および図5に示した通信装置101のフローチャートの少なくとも一部または全部をハードウェアにより実現してもよい。ハードウェアにより実現する場合、例えば、所定のコンパイラを用いることで、各ステップを実現するためのコンピュータプログラムからFPGA上に専用回路を生成し、これを利用すればよい。FPGAとは、Field Programmable Gate Arrayの略である。また、FPGAと同様にしてGate Array回路を形成し、ハードウェアとして実現するようにしてもよい。また、ASIC(Application Specific Integrated Circuit)により実現するようにしてもよい。
また、図4に示した通信装置101のシーケンスおよび図7に示した通信装置102のシーケンスの少なくとも一部または全部をハードウェアにより実現してもよい。ハードウェアにより実現する場合、例えば、所定のコンパイラを用いることで、各ステップを実現するためのコンピュータプログラムからFPGA上に専用回路を生成し、これを利用すればよい。また、FPGAと同様にしてGate Array回路を形成し、ハードウェアとして実現するようにしてもよい。
以上、実施形態を詳述したが、本発明は例えば、システム、装置、方法、プログラム若しくは記録媒体(記憶媒体)などとしての実施態様をとることが可能である。具体的には、複数の機器(例えば、ホストコンピュータ、インターフェース機器、撮像装置、webアプリケーションなど)から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。