(57)【要約】【課題】  通信装置が他の通信装置と時刻同期を行う際に、ユーザから時刻同期を行うための他の通信装置を選択するユーザ操作を受け付けなくとも時刻同期を行えるようにする。【解決手段】  通信装置１０１が通信装置１０２から受信した第一の情報と、通信装置１０１が保持する時刻同期処理に対応した第一のコードとが対応する場合、通信装置１０１が構築するネットワーク１０４に参加するための通信パラメータを通信装置１０２に提供し、第一の情報と第一のコードとが対応しない場合、通信パラメータを提供しない。また、通信装置１０１はネットワーク１０４に参加した通信装置１０２に、通信装置１０１の時刻情報を用いた時刻同期処理を実行させる。【選択図】  図１
2020072442.tif 000002
【特許請求の範囲】
【請求項１】
通信装置であって、
第一の無線ネットワークを構築する第一の構築手段と、
他の通信装置から第一の情報を受信する第一の受信手段と、
前記通信装置が保持する、時刻同期処理に対応した第一のコードと、前記第一の受信手段により受信した前記第一の情報とが対応する場合は、前記他の通信装置に前記第一の構築手段により構築した前記第一の無線ネットワークに参加するための第一の通信パラメータを提供し、前記第一のコードと前記第一の情報とが対応しない場合は、前記他の通信装置に前記第一の通信パラメータを提供しない第一の提供手段と、
前記第一の提供手段により提供した前記第一の通信パラメータを用いて前記第一の無線ネットワークに参加した他の通信装置を特定し、当該特定された他の通信装置に前記通信装置の時刻情報を用いた前記時刻同期処理を実行させる同期手段と、
を有することを特徴とする通信装置。
【請求項２】
前記第一のコードを用いて第二の情報を算出する第一の算出手段と、
前記第一の算出手段により算出した前記第二の情報と、前記第一の受信手段により受信した前記第一の情報とが一致するかを判定する判定手段を更に有し、
前記第一の提供手段は、前記判定手段によって前記第一の情報と前記第二の情報とが一致すると判定された場合は前記他の通信装置に前記第一の通信パラメータを提供し、前記判定手段によって前記第一の情報と前記第二の情報とが一致しないと判定された場合は前記他の通信装置に前記第一の通信パラメータを提供しないことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記時刻同期処理の開始を指示するユーザ操作を受け付ける受付手段を更に有し、
前記第一の受信手段は、前記受付手段により前記ユーザ操作を受け付けた後に、前記他の通信装置から前記第一の情報を受信することを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記第一の無線ネットワークとは異なる第二の無線ネットワークを構築する第二の構築手段と、
前記他の通信装置から第三の情報を受信する第二の受信手段と、
前記通信装置が保持する、前記時刻同期処理とは異なる処理に対応した第二のコードと、前記第二の受信手段により受信した前記第三の情報とが対応する場合は、前記他の通信装置に前記第二の構築手段により構築した前記第二の無線ネットワークに参加するための第二の通信パラメータを提供し、前記第二のコードと前記第三の情報が対応しない場合は、前記他の通信装置に前記第二の通信パラメータを提供しない第二の提供手段と、
を更に有することを特徴とする請求項１から３の何れか一項に記載の通信装置。
【請求項５】
前記第二の提供手段は、Ｗｉ−Ｆｉ  ＤＰＰ（Ｄｅｖｉｃｅ  Ｐｒｏｖｉｓｉｏｎｉｎｇ  Ｐｒｏｔｏｃｏｌ）規格に準拠した方式であって、ＰＫＥＸ（Ｐｕｂｌｉｃ  Ｋｅｙ  Ｅｘｃｈａｎｇｅ）Ｐｒｏｔｏｃｏｌを利用した方式によって前記第二の通信パラメータの提供を行うことを特徴とする請求項４に記載の通信装置。
【請求項６】
前記第二の提供手段は、ＷＰＳ（Ｗｉ−Ｆｉ  Ｐｒｏｔｅｃｔｅｄ  Ｓｅｔｕｐ）規格に準拠したＰＩＮ方式で前記第二の通信パラメータの提供を行うことを特徴とする請求項４に記載の通信装置。
【請求項７】
前記第一の提供手段は、Ｗｉ−Ｆｉ  ＤＰＰ規格に準拠した方式であって、ＰＫＥＸ  Ｐｒｏｔｏｃｏｌを利用した方式によって前記第一の通信パラメータの提供を行うことを特徴とする請求項１から６の何れか一項に記載の通信装置。
【請求項８】
前記第一の提供手段は、ＷＰＳ規格に準拠したＰＩＮ方式で前記第一の通信パラメータの提供を行うことを特徴とする請求項１から６の何れか一項に記載の通信装置。
【請求項９】
前記通信装置の前記時刻情報を含むアクションフレームを送信する送信手段を更に有し、
前記同期手段は、前記送信手段により前記アクションフレームを前記第一の無線ネットワークに参加する前記特定された他の通信装置に送信することで、前記特定された他の通信装置に前記時刻同期処理を実行させることを特徴とする請求項１から８の何れか一項に記載の通信装置。
【請求項１０】
前記アクションフレームを送信してから所定の時間が経過するまでに、前記特定された他の通信装置から応答を受信しなかった場合、前記特定された他の通信装置との前記時刻同期処理を終了する第一の終了手段を更に有することを特徴とする請求項９に記載の通信装置。
【請求項１１】
前記同期手段によって前記特定された他の通信装置に前記時刻同期処理を実行させている場合に、所定の時間毎に生存確認パケットを前記特定された他の通信装置に送信する送信手段と、
前記生存確認パケットを送信してから所定の時間が経過するまでに、前記特定された他の通信装置から応答を受信しなかった場合、前記特定された他の通信装置との前記時刻同期処理を終了する第二の終了手段を更に有することを特徴とする請求項１から１０の何れか一項に記載の通信装置。
【請求項１２】
前記同期手段によって前記時刻同期処理を実行させている前記特定された他の通信装置から、前記時刻同期処理の終了を示す終了要求を受信する第三の受信手段と、
前記第三の受信手段により前記終了要求を受信したことに応じて、前記第一の構築手段によって構築した前記第一の無線ネットワークを終了する第三の終了手段を更に有することを特徴とする請求項１から１１の何れか一項に記載の通信装置。
【請求項１３】
前記同期手段による前記時刻同期処理を開始してから所定の時間が経過するまでに、前記第三の受信手段により前記終了要求を受信しなかった場合、前記特定された他の通信装置との前記時刻同期処理を終了する第四の終了手段を更に有することを特徴とする請求項１２に記載の通信装置。
【請求項１４】
前記時刻情報は、６４ビットで表される前記通信装置の時刻と、３２ビットで表される前記通信装置の時刻との両方であることを特徴とする請求項１から１３の何れか一項に記載の通信装置。
【請求項１５】
前記同期手段は、ＴＭプロトコル（Ｔｉｍｉｎｇ  Ｍｅａｓｕｒｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）に準拠した前記時刻同期処理を前記特定された他の通信装置に実行させることを特徴とする請求項１から１４の何れか一項に記載の通信装置。
【請求項１６】
通信装置の制御方法であって、
無線ネットワークを構築する構築工程と、
他の通信装置から第一の情報を受信する受信工程と、
前記通信装置が保持する、時刻同期処理に対応した第一のコードと、前記受信工程において受信した前記第一の情報とが対応する場合は、前記他の通信装置に前記第一の構築工程において構築した前記無線ネットワークに参加するための通信パラメータを提供し、前記第一のコードと前記第一の情報とが対応しない場合は、前記他の通信装置に前記通信パラメータを提供しない提供工程と、
前記提供工程において提供した前記通信パラメータを用いて前記無線ネットワークに参加した他の通信装置を特定し、当該特定された他の通信装置に前記通信装置の時刻情報を用いた前記時刻同期処理を実行させる同期工程と、
を有することを特徴とする制御方法。
【請求項１７】
コンピュータを請求項１から１５の何れか一項に記載の通信装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置における時刻同期処理に関する。
【背景技術】
【０００２】
近年、カメラやスマートフォンなどの電子機器に無線通信機能を搭載し、これらの機器を無線ネットワークに接続して使用するケースが増えている。カメラを無線ネットワークに接続して使用する方法として、複数台のカメラを同一の無線ネットワークに接続し、同期を取って撮影する同期撮影が行われている。また、複数のカメラが撮影した画像データを収集した際に、画像データの時系列でのソートを容易にするために、同一の無線ネットワークに接続した複数のカメラ間での時刻同期が行われている。
【０００３】
特許文献１には、時刻同期の親機となるカメラが子機となるカメラと無線通信を行い、ユーザによって選択された子機カメラと時刻同期を行うことが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−６６８９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示の通信装置は、他の通信装置と時刻同期を行う際に、ユーザから時刻同期を行う相手となる他の通信装置を選択するための選択指示を受け付けることを必要としており、操作が煩雑である。
【０００６】
上記を鑑み、本発明は、通信装置が他の通信装置と時刻同期を行う際に、ユーザから時刻同期を行うための他の通信装置を選択するユーザ操作を受け付けなくとも時刻同期を行えるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の通信装置は、第一の無線ネットワークを構築する第一の構築手段と、他の通信装置から第一の情報を受信する第一の受信手段と、前記通信装置が保持する、時刻同期処理に対応した第一のコードと、前記第一の受信手段により受信した前記第一の情報とが対応する場合は、前記他の通信装置に前記第一の構築手段により構築した前記第一の無線ネットワークに参加するための第一の通信パラメータを提供し、前記第一のコードと前記第一の情報とが対応しない場合は、前記他の通信装置に前記第一の通信パラメータを提供しない第一の提供手段と、前記第一の提供手段により提供した前記第一の通信パラメータを用いて前記第一の無線ネットワークに参加した他の通信装置を特定し、当該特定された他の通信装置に前記通信装置の時刻情報を用いた前記時刻同期処理を実行させる同期手段と、を有する。
【発明の効果】
【０００８】
本発明によれば、通信装置が他の通信装置と時刻同期を行う際に、ユーザから時刻同期を行うための他の通信装置を選択するユーザ操作を受け付けなくとも時刻同期を行うことができる。
【図面の簡単な説明】
【０００９】
【図１】通信装置１０１が参加する通信システムのネットワーク構成を示す図である。
【図２】通信装置１０１のハードウェア構成を示す図である。
【図３】通信装置１０１の機能構成を示す図である。
【図４】通信装置１０１が時刻同期処理を行う際に実行する処理の一例を示すフローチャートである。
【図５】通信装置１０２、１０３が時刻同期処理を行う際に実行する処理の一例を示すフローチャートである。
【図６】通信装置１０１と、通信装置１０２、１０３とが通信パラメータの共有と無線接続を確立する際に実行される処理を示すシーケンス図である。
【図７】通信装置１０１（マスター端末）と、通信装置１０２、１０３（スレーブ端末）とが時刻同期処理を行う際に実行される処理を示すシーケンス図である。
【図８】図４のステップＳ４０６において通信装置１０１（マスター端末）が実行する処理の一例を示すフローチャートである。
【図９】図５のステップＳ５０３において通信装置１０２、１０３（スレーブ端末）が実行する処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、添付の図面を参照して実施形態を詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００１１】
図１に、本実施形態に係る通信装置１０１が参加する通信システムのネットワーク構成を示す。通信システムは、通信装置１０１、１０２、１０３およびこれらの通信装置が参加する無線ＬＡＮネットワーク１０４（以下、ネットワーク１０４）を含んで構成される。通信装置１０１、１０２、１０３はＩＥＥＥ８０２．１１シリーズ規格に準拠したインフラストラクチャネットワークであるネットワーク１０４上で無線通信を行う。なお、ＩＥＥＥとは、Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓの略である。
【００１２】
ネットワーク１０４は、通信装置１０１がアクセスポイント（ＡＰ）として形成する、時刻同期を実行するためのネットワークである。通信装置１０２、１０３はステーション（ＳＴＡ）としてネットワーク１０４に参加する。通信装置１０１はネットワーク１０４に参加する通信装置１０２、１０３と時刻同期を行う。また、通信装置１０１は自装置の時刻情報を基準として時刻同期を行うマスタ端末として動作し、通信装置１０２、１０３は通信装置１０１の時刻情報に同期するスレーブ端末として動作する。なお、通信装置１０１は、ネットワーク１０４以外にも、時刻同期とは異なる目的のネットワークを構築することができる。例えば、各通信装置がカメラであった場合、通信装置１０１はネットワーク１０４とは別に、各通信装置において自動でシャッターが切られるタイミングを共有する連動撮影の実行を目的としたネットワークを構築できる。
【００１３】
通信装置１０１、１０２、１０３の具体的な例としては、カメラ、タブレット、スマートフォン、ＰＣ、携帯電話、ビデオカメラなどが挙げられるが、これらに限定されない。通信装置１０１、１０２、１０３は、時刻同期を実行できる通信装置であればよい。また、図１の通信システムは３台の通信装置を含んで構成される通信システムであるが、２台または４台以上を含んで構成される通信システムであってもよい。
【００１４】
本実施形態において、図１の各装置はＩＥＥＥ８０２．１１シリーズ規格に準拠した無線通信を行うが、これに加えて、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＮＦＣ、ＵＷＢ、ＺｉｇＢｅｅ、ＭＢＯＡなどの他の無線通信方式に準拠した無線通信も利用してよい。なお、ＵＷＢはＵｌｔｒａ  Ｗｉｄｅ  Ｂａｎｄの略であり、ＭＢＯＡはＭｕｌｔｉ  Ｂａｎｄ  ＯＦＤＭ  Ａｌｌｉａｎｃｅの略である。なお、ＯＦＤＭはＯｒｔｈｏｇｏｎａｌ  Ｆｒｅｑｕｅｎｃｙ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅｘｉｎｇの略である。また、ＮＦＣはＮｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎの略である。ＵＷＢには、ワイヤレスＵＳＢ、ワイヤレス１３９４、ＷｉＮＥＴなどが含まれる。
【００１５】
図２は、通信装置１０１のハードウェア構成を示す図である。
【００１６】
通信装置１０１は、記憶部２０３、制御部２０２、機能部２０９、入力部２０８、出力部２０５、無線通信部２０４、アンテナ２０７、およびタイマ２１０を備える。
【００１７】
記憶部２０３はＲＯＭやＲＡＭ等の１以上のメモリにより構成され、後述する各種動作を行うためのコンピュータプログラムや、無線通信のための通信パラメータ等の各種情報を記憶する。ＲＯＭはＲｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙの、ＲＡＭはＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの夫々略である。なお、記憶部２０３として、ＲＯＭ、ＲＡＭ等のメモリの他に、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＤＶＤなどの記憶媒体を用いてもよい。また、記憶部２０３が複数のメモリ等を備えていてもよい。
【００１８】
制御部２０２はＣＰＵやＭＰＵ等の１以上のプロセッサにより構成され、記憶部２０３に記憶されたコンピュータプログラムを実行することにより通信装置１０１全体を制御する。ＣＰＵはＣｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの、ＭＰＵはＭｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略であり、コンピュータとして機能する。なお、制御部２０２は、記憶部２０３に記憶されたコンピュータプログラムとＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）との協働により通信装置１０１全体を制御するようにしてもよい。また、制御部２０２がマルチコア等の複数のプロセッサを備え、複数のプロセッサにより通信装置１０１全体を制御するようにしてもよい。
【００１９】
また、制御部２０２が記憶部２０３に記憶されたコンピュータプログラムを実行することで、通信装置１０１はマスタ端末としての時刻同期機能を実現する。マスタ端末としての時刻同期機能とは、自装置の時刻情報を基準としてスレーブ端末である他の通信装置との時刻同期を実行する機能である。
【００２０】
また、制御部２０２は、機能部２０９を制御して、撮像やコンテンツの閲覧などの所定の処理を実行する。機能部２０９は、通信装置１０１が所定の処理を実行するためのハードウェアである。例えば、通信装置１０１がカメラである場合、機能部２０９は撮像部であり、撮像処理を行う。
【００２１】
入力部２０８は、ユーザからの各種操作の受付を行う。出力部２０５は、モニタ画面やスピーカーなどを介してユーザに対して各種出力を行う。ここで、出力部２０５による出力とは、画面上への表示や、スピーカーによる音声出力、振動出力などであってもよい。なお、出力部２０５が出力するモニタ画面は、通信装置１０１が備えるモニタ画面である。あるいは、通信装置１０１と接続された他の装置が有するモニタ画面であってもよい。なお、タッチパネルのように入力部２０８と出力部２０５の両方を１つのモジュールで実現するようにしてもよい。入力部２０８、出力部２０５は、夫々通信装置１０１とは別体であってもよい。また、出力部２０５は、画面上への表示や、スピーカーによる音声出力、振動出力などを行うことで、ユーザに対して通知を行う通知部としての機能を実現する。また、入力部２０８と、出力部２０５は、夫々通信装置１０１と一体であってもよいし、別体であってもよい。通信装置１０１は入力部２０８として、例えば通信装置１０１と一体のハードキーやタッチスクリーンなどを有していてもよいし、通信装置１０１と別体のリモコンなどを有していてもよい。また、通信装置１０１は出力部２０５として、例えば通信装置１０１と一体のモニタ画面や光源などを有していてもよいし、通信装置１０１と別体のディスプレイやスピーカーを有していてもよい。
【００２２】
無線通信部２０４は、ＩＥＥＥ８０２．１１シリーズに準拠した無線通信の制御を行う。また、無線通信部２０４はアンテナ２０７を制御して、無線通信のための無線信号の送受信を行う。なお、通信装置１０１は、ＩＥＥＥ８０２．１１シリーズに準拠した無線通信に加えて、あるいは代えて、ＮＦＣによる無線通信や、Ｂｌｕｅｔｏｏｔｈによる無線通信を行ってもよい。また、通信装置１０１が複数の無線通信規格に準拠した無線通信を実行できる場合、夫々の無線通信に対応した無線通信部２０４とアンテナ２０７を個別に有する構成であってもよい。
【００２３】
タイマ２１０は、各種制御に用いる時間や、内蔵されている時計の時間を計測する計時部である。タイマ２１０は制御部２０２によって管理され、計測した時間は記憶部２０３に保持される。また、タイマ２１０によって計時される時刻は制御部２０２によって適宜修正が可能である。
【００２４】
通信装置１０２、１０３は通信装置１０１と同様のハードウェア構成を有するが、通信装置１０２、１０３の制御部２０２は、記憶部２０３に記憶されたコンピュータプログラムを実行することで、スレーブ端末としての時刻同期機能を実現する。スレーブ端末としての時刻同期機能とは、マスタ端末（通信装置１０１）の時刻情報を基準として時刻同期を行う機能である。
【００２５】
図３は、通信装置１０１の機能構成を示す図である。なお、通信装置１０２、１０３の機能構成は、通信装置１０１と同様である。
【００２６】
通信パラメータ制御部３０２は、通信装置間で通信パラメータを共有するための通信パラメータ共有処理を実行する。通信パラメータの提供端末（通信装置１０１）が受信端末（通信装置１０２、１０３）に、ネットワーク１０４へ無線接続するための通信パラメータを提供する。本実施形態において、各通信装置は、Ｗｉ−Ｆｉ  ＤＰＰ（Ｄｅｖｉｃｅ  Ｐｒｏｖｉｓｉｏｎｉｎｇ  Ｐｒｏｔｏｃｏｌ）規格に準拠した方法で通信パラメータ共有処理を実行する。なお、通信パラメータ共有処理の詳細は後述の図６で説明する。
【００２７】
なお、通信パラメータには、Ｗｉ−Ｆｉ  ＤＰＰ規格に規定されるコネクタが含まれる。また、コネクタに加えて、あるいは代えて、ネットワーク識別子としてのＳＳＩＤ、暗号方式、暗号鍵、認証方式、認証鍵、ＭＡＣアドレス、ＰＳＫ（Ｐｒｅ−Ｓｈａｒｅｄ  Ｋｅｙ）、パスフレーズ等の情報も通信パラメータとして含めることができる。なお、ＳＳＩＤとはＳｅｒｖｉｃｅ  Ｓｅｔ  Ｉｄｅｎｔｉｆｉｅｒの、ＭＡＣとはＭｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌの夫々略である。また、これらに加えて、あるいは代えて、提供端末は、ネットワーク層での通信を行うためのＩＰアドレスや、ネットワーク層より上位の通信層におけるサービスの利用に必要な情報や、ネットワークの利用用途等も通信パラメータとして含めてもよい。なお、ＩＰとはＩｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌの略である。
【００２８】
なお、本実施形態において、各通信装置はＷｉ−Ｆｉ  ＤＰＰ規格に準拠した通信パラメータ共有処理を実行するとしたが、これに限らず、ＷＰＳ規格やＷｉ−Ｆｉ  Ｄｉｒｅｃｔ規格などに準拠した通信パラメータ共有処理を実行してもよい。なお、ＷＰＳ規格とはＷｉ−Ｆｉ  Ｐｒｏｔｅｃｔｅｄ  Ｓｅｔｕｐ規格の略である。
【００２９】
また、本実施形態において、各通信装置は通信パラメータ共有処理によって、ネットワーク１０４の通信パラメータを共有するとしたが、これに限らず、例えば撮像データの送受信など時刻同期以外を目的とするネットワークの通信パラメータを共有してもよい。なお、これらのネットワークのパラメータは、一回の通信パラメータ共有処理によって共有されてもよいし、夫々のネットワークについて別々の通信パラメータ共有処理を必要としてもよい。
【００３０】
パケット受信部３０３、パケット送信部３０４は、データリンク層だけではなく、ネットワーク層やトランスポート層、アプリケーション層といった上位の通信層の通信プロトコルを含むあらゆるパケットの送受信を制御する。本実施形態においてアプリケーション層とはＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）参照モデル（７階層）における第５層以上の上位層を指す。また、トランスポート層とは、ＯＳＩ参照モデルにおける第４層を、ネットワーク層とはＯＳＩ参照モデルにおける第３層を指す。データリンク層とは、ＯＳＩ参照モデルにおける第２層を指す。
【００３１】
また、パケット受信部３０３、パケット送信部３０４は、無線通信を行う相手装置との間で、ＩＥＥＥ８０２．１１シリーズ規格に準拠したパケットの送信および受信を行うために、無線通信部２０４を制御する。なお、ＮＦＣやＢｌｕｅｔｏｏｔｈなど、他の無線通信規格に準拠した無線通信も可能な通信装置の場合、それらの通信規格に準拠したパケットの送信および受信を行うために無線通信部２０４を制御してもよい。あるいは、通信規格ごとに異なる無線通信部やパケット受信部、パケット送信部を有していてもよい。
【００３２】
データ記憶部３０５は、記憶部２０３への、ソフトウェアや通信パラメータ、認証情報などの書き込みおよび読み出しの制御を行う。
【００３３】
サービス制御部３０６は、アプリケーション層におけるサービスを制御する制御部である。例えばサービス制御部３０６は、無線通信部２０４による無線通信を介して、他の通信装置に自装置が保持している撮像データの送信などを実行する。
【００３４】
ステーション機能制御部３０７は、ＩＥＥＥ８０２．１１シリーズ規格に準拠したインフラストラクチャモードにおけるステーション（ＳＴＡ）として動作するＳＴＡ機能を提供する。ＳＴＡとして動作する通信装置は、インフラストラクチャモードにおいてアクセスポイント（ＡＰ）として動作する通信装置が構築したネットワークに参加し、他の通信装置と無線通信を行う。ＳＴＡ機能制御部３０７は、ＡＰが構築したネットワークにＳＴＡとして参加する際に、ＳＴＡとしての認証処理や暗号処理等を実施する。
【００３５】
アクセスポイント機能制御部３０８は、ＩＥＥＥ８０２．１１シリーズ規格に準拠したインフラストラクチャモードにおけるアクセスポイント（ＡＰ）として動作するＡＰ機能を提供する。ＡＰとして動作する通信装置は、ネットワークを構築し、自装置が構築したネットワークに参加した他の通信装置と無線通信を行う。また、ＡＰ機能制御部３０８は、自装置が構築したネットワークに他の通信装置がＳＴＡとして参加する際に、ＡＰとしての認証処理や暗号処理を実施し、更にネットワークに参加しているＳＴＡの管理等を実施する。なお、ＡＰ機能制御部３０８は自装置が構築したネットワークに参加するＳＴＡの台数をカウントする機能を有する。
【００３６】
なお、本実施形態において、通信装置１０１は時刻同期に用いるネットワーク１０４を構築するが、これに限らず、ネットワーク１０４とは別に、撮像データの送受信など他の目的に用いるためのネットワークを構築してもよい。
【００３７】
本実施形態において、通信装置１０１、１０２、１０３は、夫々ＳＴＡ機能制御部３０７とＡＰ機能制御部３０８との両方を有しているが、これに限らず、何れか一方のみを有していてもよい。具体的には、ネットワーク１０４を構築する通信装置１０１はＡＰ機能制御部３０８のみを有していてもよいし、ネットワーク１０４に参加する通信装置１０２、１０３はＳＴＡ機能制御部３０７のみ有していてもよい。
【００３８】
同期処理部３０９は、ネットワーク１０４を介して、マスタ端末とスレーブ端末との間の時刻同期処理を行う。なお、本実施形態において、時刻同期処理では、マスタ端末の時刻情報を基準として、スレーブ端末がマスタ端末の時刻に合わせるものとする。時刻同期処理に詳細については、図７、図８、および図９で説明する。
【００３９】
本実施形態において、各通信装置は通信装置１０１をマスタ端末、通信装置１０２、１０３をスレーブ端末として時刻同期処理を行う。そのため、通信装置１０１の同期処理部３０９は、マスタ端末としての時刻同期処理のみを実行できる処理部であってもよい。また、通信装置１０２、１０３の同期処理部３０９は、スレーブ端末としての時刻同期処理のみを実行できる処理部であってもよい。
【００４０】
図４は、本実施形態における通信装置１０１が時刻同期処理を行う際に、記憶部２０３に記憶されたコンピュータプログラムを制御部２０２が実行することで実現される処理の一例を示すフローチャートである。
【００４１】
本フローチャートは通信装置１０１がユーザからマスタ端末としての時刻同期処理を開始するように指示を受けたことで開始される。具体的には出力部２０５であるタッチパネルに表示されたソフトキーをユーザが押下したことに応じて開始される。あるいは、通信装置１０１に備えられたハードキーが押下されたことに応じて開始されてもよい。なお、通信装置１０１は所定のタイミングが到来する毎に時刻同期処理を実行する通信装置であってもよく、この場合通信装置１０１は所定のタイミングが到来したことで本フローチャートの処理を開始してもよい。
【００４２】
マスタ端末としての時刻同期処理の開始を指示された通信装置１０１は、インフラストラクチャモードとしてのＡＰ機能を実行する（ステップＳ４０１）。具体的には、通信装置１０１はネットワーク１０４を構築する。通信装置１０１は、後述する処理によりネットワーク１０４に参加した通信装置１０２、１０３と時刻同期処理を行う。なお、通信装置１０１はネットワーク１０４を構築する際に、ネットワーク１０４に参加するための通信パラメータを用意する。
【００４３】
通信装置１０１は、ＡＰ機能を起動した後、スレーブ端末との無線接続処理を行う（ステップＳ４０２）。通信装置１０１は、本ステップの処理を行うことで、通信装置１０２および通信装置１０３と時刻同期用のネットワーク１０４を確立する。通信装置１０１は、時刻同期を目的とするＳＴＡとのみ無線接続を確立することができる。本ステップの詳細は、後述の図６で説明する。
【００４４】
マスタ端末である通信装置１０１は、スレーブ端末である他の通信装置との無線接続を確立できたかを判定する（ステップＳ４０３）。具体的には通信装置１０１は、ステップＳ４０２で無線接続処理を行った相手装置が、ネットワーク１０４に参加したかを判定し、参加している場合は本ステップでＹｅｓと判定し、参加していない場合はＮｏと判定する。通信装置１０１はステップＳ４０３でＮｏと判定されると、ステップＳ４０５の処理を行う。また、通信装置１０１はステップＳ４０３でＹｅｓと判定されると、ステップＳ４０４の処理を行う。
【００４５】
通信装置１０１は、自装置が構築したネットワーク１０４に参加している端末数のカウントアップを行う（ステップＳ４０４）。具体的には、通信装置１０１は、ネットワーク１０４に参加している端末数として保持しているカウンタの値を１つ増やす。なお、通信装置１０１は、ステップＳ４０２以降において、ネットワーク１０４に参加している端末数に関する情報を、出力部２０５を介してユーザに表示する。この場合、通信装置１０１は、ステップＳ４０２の処理を行い、ステップＳ４０３でＹｅｓと判定する毎に、表示している端末数を一台ずつカウントアップする。また、本ステップにおいて通信装置１０１は、新たにネットワーク１０４に参加したスレーブ端末のＭＡＣアドレスを保持する。保持したＭＡＣアドレスは、後述（図７、図８、および図９）の時刻同期処理におけるアクションフレームの交換で用いる。
【００４６】
通信装置１０１は、ユーザから現在ネットワーク１０４に参加しているスレーブ端末との時刻同期処理を開始するように指示するユーザ操作を受け付けたかを判定する（ステップＳ４０５）。具体的には出力部２０５であるタッチパネルに表示されたソフトキーをユーザが押下したことに応じてＹｅｓと判定される。あるいは、通信装置１０１に備えられたハードキーが押下されたことに応じてＹｅｓと判定されてもよい。これらのソフトキーあるいはハードキーが押下されなかった場合、通信装置１０１はＮｏと判定する。なお、通信装置１０１は、ユーザ指示に限らず、所定の台数のスレーブ端末がネットワーク１０４に参加したことに応じて本ステップをＹｅｓと判定してもよい。あるいは、通信装置１０１は、本フローチャートを開始する際にユーザからマスタ端末としての時刻同期処理を開始するように指示を受けてから所定の時間が経過したことに応じて、本ステップをＹｅｓと判定してもよい。あるいは、通信装置１０１は、最後にネットワーク１０４にスレーブ端末が参加してから所定の時間が経過したことに応じて、本ステップをＹｅｓと判定してもよい。通信装置１０１は、本ステップをＮｏと判定するとステップＳ４０２の処理を行う。
【００４７】
一方、通信装置１０１はステップＳ４０５でＹｅｓと判定すると、ステップＳ４０５までにネットワーク１０４に参加したスレーブ端末と、時刻同期処理を行う（ステップＳ４０６）。この場合、通信装置１０１は、ユーザから時刻同期処理を行う相手となるスレーブ端末を選択する選択指示を受け付けることなく、ネットワーク１０４に参加している全てのスレーブ端末との時刻同期処理を開始する。具体的には、ステップＳ４０４で保持したＭＡＣアドレスから、時刻同期処理を実行するスレーブ端末を特定し、該特定したスレーブ端末に時刻同期処理を実行させる。本ステップの詳細は、図８で説明する。
【００４８】
通信装置１０１は、スレーブ端末との時刻同期処理を完了させると、ステップＳ４０４でカウントしていた参加端末数のカウンタを１減らす（ステップＳ４０７）。具体的には、マスタ端末は、時刻同期処理を完了したスレーブ端末から時刻同期の完了通知を受信したことに基づいて参加端末数のカウンタを１減らす。なお、通信装置１０１は、時刻同期処理を完了したことに応じて参加端末数のカウンタを１減らすことに同期して、出力部２０５を介して表示している参加端末数に関する情報も変化させてもよい。参加端末数に関する情報とは、単に参加端末数そのものであってもよいし、あるいはステップＳ４０５でＹｅｓと判定された時点での参加端末数を基に、時刻同期処理が完了した端末数を割合で示すことで、時刻同期処理の進捗状況を示す情報であってもよい。これによりユーザは、時刻同期処理の進捗状況を視認でき、便利である。
【００４９】
通信装置１０１は、ステップＳ４０７の処理を行うと、ネットワーク１０４に参加している全てのスレーブ端末との時刻同期が完了したかを判定する（ステップＳ４０８）。本ステップにおいて通信装置１０１は、参加端末数のカウンタが０であるかに応じて判定する。通信装置１０１は、参加端末数のカウンタが０である場合は本ステップにおいてＹｅｓと判定し、ステップＳ４０９の処理を行う。一方、通信装置１０１は、参加端末数のカウンタが０でない場合には本ステップにおいてＮｏと判定し、ステップＳ４０６の処理を行う。
【００５０】
ネットワーク１０４に参加している全スレーブ端末との時刻同期処理が完了した場合（ステップＳ４０８のＹｅｓ）、通信装置１０１はステップＳ４０１で起動したＡＰ機能を終了する（ステップＳ４０９）。これにより、ネットワーク１０４が終了し、マスタ端末とスレーブ端末との無線通信は切断される。
【００５１】
通信装置１０１は、ＡＰ機能を終了すると、時刻同期処理が完了したことを、出力部２０５を介してユーザに通知する（ステップＳ４１０）。なお、ステップＳ４１０より以前のステップで、時刻同期処理の進捗状況を表示させている場合、時刻同期処理の進捗状況が１００％になったことを表示することで、ステップＳ４１０における通知の代わりとしてもよい。あるいは、時刻同期処理を未実施のスレーブ端末が０％になったことを表示することで、ステップＳ４１０における通知の代わりとしてもよい。また、本実施形態において通信装置１０１はステップＳ４０９の後にステップＳ４１０を行うが、これに限らずステップＳ４０９より先に行ってもよいし、あるいはステップＳ４０９と並行して行ってもよい。通信装置１０１はステップＳ４１０の処理を行うと、本フローチャートのフローを終了する。
【００５２】
以上、図４には、通信装置１０１が時刻同期処理を行う際に実行する処理を示した。
【００５３】
図５は、本実施形態における通信装置１０２、１０３が時刻同期処理を行う際に、記憶部２０３に記憶されたコンピュータプログラムを制御部２０２が実行することで実現される処理の一例を示すフローチャートである。本明細書では、通信装置１０２を例として本図の説明を行う。
【００５４】
本フローチャートは通信装置１０２がユーザからスレーブ端末としての時刻同期処理を開始するように指示を受けたことで開始される。具体的には出力部２０５であるタッチパネルに表示されたソフトキーをユーザが押下したことに応じて開始される。あるいは、通信装置１０２に備えられたハードキーが押下されたことに応じて開始されてもよい。なお、通信装置１０２は所定のタイミングが到来する毎に時刻同期処理を実行する通信装置であってもよく、この場合通信装置１０２は所定のタイミングが到来したことで本フローチャートの処理を開始してもよい。
【００５５】
スレーブ端末としての時刻同期処理の開始を指示された通信装置１０２は、インフラストラクチャモードとしてのＳＴＡ機能を実行し、マスタ端末である通信装置１０１との無線接続処理を行う（ステップＳ５０１）。通信装置１０２は、本ステップの処理を行うことで、通信装置１０１が構築するネットワーク１０４に参加し、通信装置１０１との無線接続を確立する。本ステップの詳細は、後述の図６で説明する。
【００５６】
通信装置１０２は、マスタ端末である通信装置１０１との無線接続を確立できたかを判定する（ステップＳ５０２）。具体的には通信装置１０２は、ステップＳ５０１で無線接続処理を行った通信装置１０１が構築したネットワーク１０４に自装置が参加したかを判定し、参加した場合は本ステップでＹｅｓと判定し、参加できなかった場合はＮｏと判定する。通信装置１０２はステップＳ５０２でＮｏと判定されると、ステップＳ５０１の処理を行う。
【００５７】
通信装置１０２はマスタ端末である通信装置１０１と無線接続を確立できた場合、通信装置１０１と時刻同期処理を行う（ステップＳ５０３）。本ステップの詳細は、図９で説明する。
【００５８】
通信装置１０２は、マスタ端末との時刻同期処理が完了したことを、出力部２０５を介してユーザに通知し（ステップＳ５０４）、本フローチャートのフローを終了する。
【００５９】
以上、図５には、通信装置１０２、１０３が時刻同期処理を行う際に実行する処理を示した。
【００６０】
図６は、通信装置１０１と、通信装置１０２、１０３とが通信パラメータの共有と無線接続を確立する際に実行される処理を示すシーケンス図である。通信装置１０１は図４のステップＳ４０２において、通信装置１０２、１０３は図５のステップＳ５０１において、夫々本シーケンス図に示した処理を実行する。
【００６１】
本実施形態において、通信装置１０１は通信装置１０２、１０３とＷｉ−Ｆｉ  ＤＰＰ規格に準拠した通信パラメータの共有処理を実行する。本実施形態において、通信装置１０１はコンフィグレータ（ｃｏｎｆｉｇｕｒａｔｏｒ）として、通信装置１０２、１０３は夫々エンローリ（ｅｎｒｏｌｌｅｅ）として動作する。なお、コンフィグレータとは、通信パラメータをエンローリに提供する役割であり、エンローリとはコンフィグレータが提供する通信パラメータを受信する役割である。エンローリとして動作する通信装置は、コンフィグレータから提供された通信パラメータを利用することで、該通信パラメータを使用したネットワークに参加することができる。
【００６２】
Ｗｉ−Ｆｉ  ＤＰＰ規格に準拠した通信パラメータの共有処理と無線接続の確立は、大きく分けて４ステップで構成される。具体的には、Ｂｏｏｔｓｔｒａｐｐｉｎｇ（ステップＳ６０１）、Ａｕｔｈｅｎｔｉｃａｔｉｏｎ（ステップＳ６０２）、Ｃｏｎｆｉｇｕｒａｔｉｏｎ（ステップＳ６０３）、Ｎｅｔｗｏｒｋ  Ｉｎｔｒｏｄｕｃｔｉｏｎ（ステップＳ６０４）で構成される。さらに、通信装置１０１と通信装置１０２、１０３は、ステップＳ６０５の処理を行うことで、無線接続を確立する。以下に、各ステップの説明を行う。
【００６３】
Ｂｏｏｔｓｔｒａｐｐｉｎｇ（ステップＳ６０１）において、コンフィグレータとエンローリは、Ａｕｔｈｅｎｔｉｃａｔｉｏｎ（ステップＳ６０２）を実施する際に利用する公開鍵（Ｂｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ）の共有を行う。なお、公開鍵は通信パラメータ共有処理の際のセキュリティを高めるために用いられる情報であり、証明書、またはパスワードなどの情報であってもよい。ここで、公開鍵は公開鍵暗号方式で用いられる暗号鍵の一種である。また、公開鍵以外にも、コンフィグレータとエンローリは、Ａｕｔｈｅｎｔｉｃａｔｉｏｎを実施するためのチャネル情報やＭＡＣアドレスなどの情報の共有を行ってもよい。Ｂｏｏｔｓｔｒａｐｐｉｎｇ（ステップＳ６０１）の方法としては、ＰＫＥＸ  Ｐｒｏｔｏｃｏｌを利用する方法、Ｂｌｕｅｔｏｏｔｈを利用する方法、ＮＦＣを利用する方法、およびＱＲコード（登録商標）を利用する方法がある。なお、ＰＫＥＸとは、Ｐｕｂｌｉｃ  Ｋｅｙ  Ｅｘｃｈａｎｇｅの略である。夫々の方法について以下に説明する。なお、ＢｏｏｔｓｔｒａｐｐｉｎｇやＡｕｔｈｅｎｔｉｃａｔｉｏｎを行う際、コンフィグレータとエンローリは夫々イニシエータとレスポンダという役割を与えられる。本実施形態においては、コンフィグレータがレスポンダに、エンローリがイニシエータとして動作する場合を例に説明をするが、コンフィグレータがイニシエータに、エンローリがレスポンダとして動作してもよい。
【００６４】
まず、ＰＫＥＸ  Ｐｒｏｔｏｃｏｌを利用したＢｏｏｔｓｔｒａｐｐｉｎｇについて説明する。ＰＫＥＸ  Ｐｒｏｔｏｃｏｌを用いる場合、イニシエータとレスポンダは共通のコードを利用することで、相手装置とＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙの共有を行う。コードとは、文字や数字、記号、あるいはそれらの組み合わせなどによって構成されるものである。本実施形態では、通信装置１０１、通信装置１０２、および通信装置１０３は、時刻同期を行うネットワーク１０４に対応する時刻同期用のコード（例えば“ｔｉｍｅ−ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ”）をＢｏｏｔｓｔｒａｐｐｉｎｇにおいて利用する。コードは、通信装置が保持するものであってもよいし、ユーザによって任意に入力されるものであってもよい。
【００６５】
通信装置１０１、通信装置１０２、および通信装置１０３は、時刻同期を開始する際に、自装置が保持する時刻同期用のコードをＢｏｏｔｓｔｒａｐｐｉｎｇで使用するように設定する。これにより、各通信装置において共通のコードが設定される。あるいは、通信装置１０１が時刻同期を開始する際に表示した時刻同期用のコードを、ユーザが通信装置１０２，１０３に入力することで共通のコードを設定するようにしてもよい。この場合、通信装置１０１は時刻同期用のコードを保持していてもよいし、生成してもよい。また、コードを表示する装置は、通信装置１０１に代えて、通信装置１０２あるいは通信装置１０３であってもよい。あるいは、ユーザによって任意のコードが通信装置１０１、１０２、１０３に共通に入力されることで、各通信装置に共通のコードが設定されるようにしてもよい。
【００６６】
まず、イニシエータは、コード（ｃｏｄｅ）と自装置のＭＡＣアドレス（ＭＡＣ−Ｉｎｉｔｉａｔｏｒ）とをハッシュ化し、暗号要素Ｑｉを生成する。
【００６７】
Ｑｉ＝Ｈ（ＭＡＣ−Ｉｎｉｔｉａｔｏｒ｜ｃｏｄｅ）＊Ｐｉ
【００６８】
また、Ｘ＝ｘ＊Ｇである一時的な鍵ペア（ｘ／Ｘ）を生成し、先ほど生成した暗号要素ＱｉにＸを付与することで情報要素Ｍを生成する。なお、Ｘは公開鍵であり、ｘはＸに対応する秘密鍵である。また、公開鍵Ｘおよび情報要素Ｍは、ｘ成分およびｙ成分を含むベクトルである。
【００６９】
Ｍ＝Ｘ＋Ｑｉ
イニシエータは、生成した情報要素ＭをＰＫＥＸ  Ｅｘｃｈａｎｇｅ  Ｒｅｑｕｅｓｔフレームに含めてレスポンダに送信する。
【００７０】
なお、イニシエータは、レスポンダのＭＡＣアドレスを既に知っている場合は、ＰＫＥＸ  Ｅｘｃｈａｎｇｅ  Ｒｅｑｕｅｓｔフレームをレスポンダ宛にユニキャストで送信する。一方、レスポンダのＭＡＣアドレスをまだ知らない場合、イニシエータはＰＫＥＸ  Ｅｘｃｈａｎｇｅ  Ｒｅｑｕｅｓｔフレームをブロードキャストで送信する。
【００７１】
レスポンダは、受信した情報要素Ｍからイニシエータの一時鍵であるＸを算出する。ここでは、レスポンダが算出したイニシエータの一時鍵ＸをＸ’とする。
【００７２】
レスポンダはコードとイニシエータのＭＡＣアドレスとをハッシュ化し、暗号要素Ｑｉ’を生成する。
【００７３】
Ｑｉ’＝Ｈ（ＭＡＣ−Ｉｎｉｔｉａｔｏｒ｜ｃｏｄｅ）＊Ｐｉ
【００７４】
そして、生成した暗号要素Ｑｉ’と、イニシエータから受信した情報要素Ｍとから一時鍵Ｘ’を算出する。
【００７５】
Ｘ’＝Ｍ−Ｑｉ’
【００７６】
また、これらの処理に加えて、レスポンダもイニシエータと同様に、Ｙ＝ｙ＊Ｇである一時的な鍵ペア（ｙ／Ｙ）を生成する。なお、Ｙは公開鍵であり、ｙはＹに対応する秘密鍵である。また、コードと自装置のＭＡＣアドレス（ＭＡＣ−Ｒｅｓｐｏｎｄｅｒ）とをハッシュ化し、暗号要素Ｑｒを生成する。
【００７７】
Ｑｒ＝Ｈ（ＭＡＣ−Ｒｅｓｐｏｎｄｅｒ｜ｃｏｄｅ）＊Ｐｉ
【００７８】
生成した暗号要素Ｑｒに一時鍵Ｙを付与することで、情報要素Ｎを生成する。なお、公開鍵Ｙおよび情報要素Ｎは、ｘ成分およびｙ成分を含むベクトルである。
【００７９】
Ｎ＝Ｙ＋Ｑｒ
【００８０】
レスポンダは、情報要素ＮをＰＫＥＸ  Ｅｘｃｈａｎｇｅ  Ｒｅｑｕｅｓｔに対する応答である、ＰＫＥＸ  Ｅｘｃｈａｎｇｅ  Ｒｅｓｐｏｎｓｅに含めてイニシエータに送信する。
【００８１】
さらに、レスポンダは、自装置のｙと算出した一時鍵Ｘ’とから、秘密要素Ｋを算出する。
【００８２】
Ｋ＝ｙ＊Ｘ’
【００８３】
レスポンダは、イニシエータおよびレスポンダのＭＡＣアドレス、情報要素Ｍ、Ｎ、コード、および秘密要素Ｋを用いて、イニシエータとの共通暗号鍵Ｚを生成する。
【００８４】
Ｚ＝ＨＫＤＦ（＜＞、ＭＡＣ−Ｉｎｉｔｉａｔｏｒ｜ＭＡＣ−Ｒｅｓｐｏｎｄｅｒ｜Ｍ．ｘ｜Ｎ．ｘ｜ｃｏｄｅ，Ｋ．ｘ）
【００８５】
ここで、＜＞は関数に引き渡される第１の引数がブランクであることを示す。また、｜は、各要素を結合させることを示す。また、Ｍ．ｘ、Ｎ．ｘ、および、Ｋ．ｘは、各々、Ｍ、Ｎ、Ｋのｘ成分の値を示す。
【００８６】
一方、レスポンダから情報要素Ｎを受信したイニシエータも、同様にレスポンダの一時鍵Ｙを算出し（Ｙ’）、秘密要素Ｋを生成することで、共通暗号鍵Ｚを生成する。
イニシエータは、コードとレスポンダのＭＡＣアドレスとから、暗号要素Ｑｒ’を生成する。
【００８７】
Ｑｒ’＝Ｈ（ＭＡＣ−Ｒｅｓｐｏｎｄｅｒ｜ｃｏｄｅ）＊Ｐｉ
【００８８】
イニシエータは、受信した情報要素Ｎと、生成した暗号要素Ｑｒ’とから、レスポンダの一時鍵Ｙ’を算出する。
【００８９】
Ｙ’＝Ｍ−Ｑｒ’
【００９０】
イニシエータは、算出した一時鍵Ｙ’とｘから秘密要素Ｋを算出する。
【００９１】
Ｋ＝ｘ＊Ｙ’
イニシエータは、イニシエータおよびレスポンダのＭＡＣアドレス、情報要素Ｍ、Ｎ、コード、および秘密要素Ｋを用いて、レスポンダとの共通暗号鍵Ｚを生成する。
【００９２】
Ｚ＝ＨＫＤＦ（＜＞、ＭＡＣ−Ｉｎｉｔｉａｔｏｒ｜ＭＡＣ−Ｒｅｓｐｏｎｄｅｒ｜Ｍ．ｘ｜Ｎ．ｘ｜ｃｏｄｅ，Ｋ．ｘ）
【００９３】
このように、イニシエータとレスポンダは、同一のコードを使って共通暗号鍵Ｚを生成する。
【００９４】
レスポンダとイニシエータは、夫々共通暗号鍵Ｚを生成すると、次にＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙの共有を行う。
【００９５】
まず、イニシエータは算出したレスポンダの一時鍵Ｙ’と、自装置のＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ａに対応する秘密鍵ａとを用いて情報要素Ｊを生成する。
【００９６】
Ｊ＝ａ＊Ｙ’
【００９７】
続いて、イニシエータは、算出した情報要素Ｊと、自装置のＭＡＣアドレスと、Ｂｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ａと、レスポンダの一時鍵Ｙ’と、自装置の一時鍵Ｘとを用いて暗号要素ｕを算出する。
【００９８】
ｕ＝ＨＭＡＣ（Ｊ．ｘ，Ｍａｃ−Ｉｎｉｔｉａｔｏｒ｜Ａ．ｘ｜Ｙ’．ｘ｜Ｘ．ｘ）
【００９９】
イニシエータは、算出した暗号要素ｕと、Ｂｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ａを含むＢｏｏｔｓｔｒａｐｐｉｎｇに関する情報とを共通暗号鍵Ｚで暗号化し、ＰＫＥＸ  Ｃｏｎｆｉｒｍａｔｉｏｎ  Ｒｅｑｕｅｓｔに含めてレスポンダに送信する。
【０１００】
レスポンダは、暗号化された暗号要素ｕと、Ｂｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ａを受信すると、復号を行う。そして、復号したイニシエータのＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ａ’を用いて、情報要素Ｊ’を算出する。
【０１０１】
Ｊ’＝ｙ＊Ａ’
【０１０２】
さらに、レスポンダは、算出した情報要素Ｊ’と、イニシエータのＭＡＣアドレスと、復号したＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ａ’と、自装置の一時鍵Ｙと，イニシエータの一時鍵Ｘ’とを用いて暗号要素ｕ’を算出する。
【０１０３】
ｕ’＝ＨＭＡＣ（Ｊ’．ｘ，Ｍａｃ−Ｉｎｉｔｉａｔｏｒ｜Ａ’．ｘ｜Ｙ．ｘ｜Ｘ’．ｘ）
【０１０４】
レスポンダは、算出した暗号要素ｕ’と、イニシエータから受信した情報要素ｕが一致するか判定し、一致した場合、復号したＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ａ’をイニシエータのＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙであると認証する。レスポンダは、認証したＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ａ’を、Ｓ６０２以降の処理で利用する。
【０１０５】
同様の方法で、レスポンダのＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ｂもイニシエータに送信される。まず、レスポンダは、算出したイニシエータの一時鍵Ｘ’と、自装置のＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ｂに対応する秘密鍵ｂとを用いて情報要素Ｌを生成する。
【０１０６】
Ｌ＝ｂ＊Ｘ’
【０１０７】
続いて、レスポンダは、算出した情報要素Ｌと、自装置のＭＡＣアドレスと、Ｂｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ｂと、イニシエータの一時鍵Ｘ’と、自装置の一時鍵Ｙとを用いて暗号要素ｖを算出する。
【０１０８】
ｖ＝ＨＭＡＣ（Ｌ．ｘ，Ｍａｃ−Ｒｅｓｐｏｎｄｅｒ｜Ｂ．ｘ｜Ｘ’．ｘ｜Ｙ．ｘ）
【０１０９】
レスポンダは、算出した暗号要素ｖと、Ｂｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ｂを含むＢｏｏｔｓｔｒａｐｐｉｎｇに関する情報とを共通暗号鍵Ｚで暗号化し、ＰＫＥＸ  Ｃｏｎｆｉｒｍａｔｉｏｎ  Ｒｅｓｐｏｎｓｅに含めてイニシエータに送信する。
【０１１０】
イニシエータは、暗号化された暗号要素ｖと、Ｂｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ｂとを受信すると、復号を行う。そして、復号したレスポンダのＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ｂ’を用いて情報要素Ｌ’を算出する。
【０１１１】
Ｌ’＝ｘ＊Ｂ’
更にイニシエータは、算出した情報要素Ｌ’と、レスポンダのＭＡＣアドレスと、復号したＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ｂ’と、自装置の一時鍵Ｘと、レスポンダの一時鍵Ｙ’とを用いて暗号要素ｖ’を算出する。
【０１１２】
ｖ’＝ＨＭＡＣ（Ｌ’．ｘ，Ｍａｃ−Ｒｅｓｐｏｎｄｅｒ｜Ｂ’．ｘ｜Ｘ．ｘ｜Ｙ’．ｘ）
【０１１３】
イニシエータは、算出した暗号要素ｖ’と、レスポンダから受信した情報要素ｖが一致するか判定し、一致した場合、復号したＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ｂ’をレスポンダのＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙであると認証する。イニシエータは、認証したＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ  Ｂ’を、Ｓ６０２以降の処理で利用する。
【０１１４】
なお、イニシエータとレスポンダとの間で、Ｂｏｏｔｓｔｒａｐｐｉｎｇに用いるコードが異なる場合、相手装置から受信した暗号化されたＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙを復号できない。あるいは、自装置が算出した暗号要素（ｕ’またはｖ’）と、相手装置から受信した暗号要素（ｕまたはｖ）とが一致しない結果を示す。この場合、イニシエータまたはレスポンダは、Ｂｏｏｔｓｔｒａｐｐｉｎｇが失敗したとして、Ｂｏｏｔｓｔｒａｐｐｉｎｇの処理を終了し、相手装置にエラーを示す情報を送信する。Ｂｏｏｔｓｔｒａｐｐｉｎｇに失敗すると、Ｓ６０２以降の処理を実施することはできないので、イニシエータおよびレスポンダは図４および図５の処理を終了する。なお、イニシエータおよびレスポンダは、Ｂｏｏｔｓｔｒａｐｐｉｎｇに失敗した場合、自装置の表示部にエラー、あるいはＢｏｏｔｓｔｒａｐｐｉｎｇの失敗を示す情報を表示することで、ユーザに通知してもよい。
【０１１５】
なお、本実施形態では、各通信装置は時刻同期を行うために、時刻同期用のコードを用いてＢｏｏｔｓｔｒａｐｐｉｎｇを行った。各通信装置は、これに加えて、連動撮影など、異なる目的のネットワークに対応するコード（例えば“ｉｎｔｅｒｌｏｃｋｉｎｇ−ｓｈｕｔｔｅｒ”等の文字列）を用いたＢｏｏｔｓｔｒａｐｐｉｎｇを行うことができる。このように、時刻同期用のコードと、その他のコードを分けて用いることで、ネットワーク１０４に時刻同期を目的としない通信装置が参加することを防ぐことができる。
【０１１６】
続いて、Ｂｌｕｅｔｏｏｔｈを利用したＢｏｏｔｓｔｒａｐｐｉｎｇについて説明する。なお、本実施形態において、Ｂｌｕｅｔｏｏｔｈとは、Ｂｌｕｅｔｏｏｔｈ  ４．０以降のｂｌｕｅｔｏｏｔｈ  ｌｏｗ  ｅｎｅｒｇｙも含む。まず、レスポンダとして動作するコンフィグレータがｂｏｏｔｓｔｒａｐｐｉｎｇモードに入り、ｂｏｏｔｓｔｒａｐｐｉｎｇについての情報を含めたアドバタイズパケットを送信する際に利用するセカンダリーチャネルの情報をアドバタイズする。なお、ｂｏｏｔｓｔｒａｐｐｉｎｇについての情報を含めたアドバタイズパケットとはＡＵＸ＿ＡＤＶ＿ＩＮＤパケットである。レスポンダは、セカンダリーチャネルに関する情報を、セカンダリーチャネルとは異なるプライマリーチャネルにおいて、ＡＤＶ＿ＥＸＴ＿ＩＮＤパケットを利用してアドバタイズする。イニシエータは、プライマリーチャネルにおいてレスポンダからアドバタイズパケット（ＡＤＶ＿ＥＸＴ＿ＩＮＤ）を受信する。イニシエータは、受信したアドバタイズパケット（ＡＤＶ＿ＥＸＴ＿ＩＮＤ）から取得したセカンダリーチャネルにおいてレスポンダからのアドバタイズパケットを待ち受ける。レスポンダはセカンダリーチャネルにおいて、Ｂｏｏｔｓｔｒａｐｐｉｎｇに関する情報を含めたアドバタイズパケット（ＡＵＸ＿ＡＤＶ＿ＩＮＤ）を送信する。イニシエータは、セカンダリーチャネルにおいてエンローリからアドバタイズパケットを受信することで、Ｂｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙを含むＢｏｏｔｓｔｒａｐｐｉｎｇに関する情報を取得し、Ｂｏｏｔｓｔｒａｐｐｉｎｇを完了する。
【０１１７】
なお、イニシエータは、プライマリーチャネルにおいてＡＤＶ＿ＥＸＴ＿ＩＮＤを受信した際に、ＢｌｕｅｔｏｏｔｈによるＢｏｏｔｓｔｒａｐｐｉｎｇに対応しているレスポンダの情報をユーザに表示することができる。これによりユーザはＢｏｏｔｓｔｒａｐｐｉｎｇを行うレスポンダを選択することができる。イニシエータは、ユーザによって選択されたレスポンダから、セカンダリーチャネルにおいてＡＵＸ＿ＡＤＶ＿ＩＮＤを受信できていた場合は、Ｂｏｏｔｓｔｒａｐｐｉｎｇに関する情報を取得できているので、Ｂｏｏｔｓｔｒａｐｐｉｎｇを完了する。一方、ＡＵＸ＿ＡＤＶ＿ＩＮＤを受信できていなかった場合は、ユーザによって選択されたレスポンダに、Ｂｏｏｔｓｔｒａｐｐｉｎｇに関する情報を要求するためにＡＵＸ＿ＳＣＡＮ＿ＲＥＱを送信する。ＡＵＸ＿ＳＣＡＮ＿ＲＥＱを受信したレスポンダは、Ｂｏｏｔｓｔｒａｐｐｉｎｇに関する情報を含めたＡＵＸ＿ＳＣＡＮ＿ＲＳＰをイニシエータに送信することで、Ｂｏｏｔｓｔｒａｐｐｉｎｇを完了する。
【０１１８】
次に、ＮＦＣを利用したＢｏｏｔｓｔｒａｐｐｉｎｇについて説明する。ＮＦＣでは、ＮＦＣとは異なる通信方式（例えばＷｉ−ＦｉやＢｌｕｅｔｏｏｔｈ、ＩＰ通信など）による通信を行うための情報を、ＮＦＣを介して共有するＮＦＣ  Ｈａｎｄｏｖｅｒという方法がある。ＮＦＣを利用したＢｏｏｔｓｔｒａｐｐｉｎｇでは、このＮＦＣ  Ｈａｎｄｏｖｅｒという方法を利用する。ＮＦＣ  Ｈａｎｄｏｖｅｒには、Ｎｅｇｏｔｉａｔｅｄ  ＨａｎｄｏｖｅｒとＳｔａｔｉｃ  Ｈａｎｄｏｖｅｒという二種類の方法があるが、以下では夫々の方法によるＢｏｏｔｓｔｒａｐｐｉｎｇについて説明する。
【０１１９】
Ｎｅｇｏｔｉａｔｅｄ  Ｈａｎｄｏｖｅｒの場合、イニシエータであるエンローリと、レスポンダであるコンフィグレータが近接すると、どちらの装置がＮＦＣ  Ｈａｎｄｏｖｅｒ  Ｒｅｑｕｅｓｔｅｒになるかを決定する。ＮＦＣ  Ｈａｎｄｏｖｅｒ  Ｒｅｑｕｅｓｔｅｒとは、Ｈａｎｄｏｖｅｒ  Ｒｅｑｕｅｓｔメッセージを送信することで、ＮＦＣ  Ｈａｎｄｏｖｅｒを開始する役割である。どちらかの装置がＮＦＣ  Ｈａｎｄｏｖｅｒ  Ｒｅｑｕｅｓｔｅｒとなると、もう一方の装置はＮＦＣ  Ｈａｎｄｏｖｅｒ  Ｓｅｌｅｃｔｏｒとなる。イニシエータとレスポンダのどちらがＮＦＣ  Ｈａｎｄｏｖｅｒ  Ｒｅｑｕｅｓｔｅｒとなってもよい。ＲｅｑｕｅｓｔｅｒはＳｅｌｅｃｔｏｒに対して、ＲｅｑｕｅｓｔｅｒのＢｏｏｔｓｔｒａｐｐｉｎｇに関する情報を含めたＨａｎｄｏｖｅｒ  Ｒｅｑｕｅｓｔメッセージを送信する。Ｈａｎｄｏｖｅｒ  Ｒｅｑｕｅｓｔメッセージを受信したＳｅｌｅｃｔｏｒは、応答として、ＳｅｌｅｃｔｏｒのＢｏｏｔｓｔｒａｐｐｉｎｇに関する情報を含めたＨａｎｄｏｖｅｒ  Ｓｅｌｅｃｔメッセージを送信する。これらのメッセージのやり取りにより、ＲｅｑｕｅｓｔｅｒとＳｅｌｅｃｔｏｒの間でＢｏｏｔｓｔｒａｐｐｉｎｇに関する情報が交換されると、ＲｅｑｕｅｓｔｅｒとＳｅｌｅｃｔｏｒはＢｏｏｔｓｔｒａｐｐｉｎｇを完了する。なお、Ｂｏｏｔｓｔｒａｐｐｉｎｇに関する情報は、Ｈａｎｄｏｖｅｒ  ＲｅｑｕｅｓｔメッセージとＨａｎｄｏｖｅｒ  Ｓｅｌｅｃｔメッセージとの何れか一方にのみ含まれていてもよい。
【０１２０】
一方、Ｓｔａｔｉｃ  Ｈａｎｄｏｖｅｒの場合、イニシエータであるエンローリと、レスポンダであるコンフィグレータが近接すると、イニシエータはレスポンダからＮＦＣ通信によって、レスポンダのＢｏｏｔｓｔｒａｐｐｉｎｇに関する情報を読み取る。これにより、Ｂｏｏｔｓｔｒａｐｐｉｎｇが完了する。
【０１２１】
なお、ＢｌｕｅｔｏｏｔｈあるいはＮＦＣを用いてＢｏｏｔｓｔｒａｐｐｉｎｇを行う場合、各通信装置は自装置が送信するフレームの何れかに、無線接続を行う目的を示す情報を含めるようにしてもよい。具体的には、各通信装置は自装置が送信するフレームの何れかに無線接続を行う目的を示すコードを含めるようにしてもよい。本実施形態において、各通信装置は時刻同期を目的としてネットワーク１０４を介した無線接続を行うので、送信するフレームに例えば“ｔｉｍｅ−ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ”という時刻同期処理に対応したコードを含めて送信してもよい。フレームを受信した通信装置は、フレームに含まれるコードと、自装置が保持する時刻同期処理に対応したコードとが一致するかを判定し、一致した場合に通信パラメータの共有処理を行う。フレームを受信した通信装置は、時刻同期処理に対応したコードを含まないフレームを送信してきた他の通信装置とのパラメータ共有処理をエラーとして終了することで、目的の異なる通信装置のネットワーク１０４への参加を防ぐことができる。
【０１２２】
最後に、ＱＲコードを利用したＢｏｏｔｓｔｒａｐｐｉｎｇについて説明する。イニシエータまたはレスポンダは、相手装置のＢｏｏｔｓｔｒａｐｐｉｎｇに関する情報を含むＱＲコードを読み取ることで、Ｂｏｏｔｓｔｒａｐｐｉｎｇを完了する。ＱＲコードは、通信装置が有する出力部である画面を介して表示されてもよいし、通信装置本体に貼り付けられていてもよい。あるいは、相手装置が印刷機能を有する場合、通信装置によって印刷された自装置のＢｏｏｔｓｔｒａｐｐｉｎｇに関する情報を含むＱＲコードを読み取ってもよい。
【０１２３】
なお、本実施形態においてＱＲコードを表示する通信装置は、表示するＱＲコードに、無線接続を行う目的を示す情報を含めてもよい。具体的には、ＱＲコードを表示する通信装置は、表示するＱＲコードに無線接続を行う目的を示すコードを含めてもよい。本実施形態において、各通信装置は時刻同期を目的としてネットワーク１０４を介した無線通信を行う。ＱＲコードを撮影した通信装置は、ＱＲコードに含まれるコードと、自装置が保持する時刻同期処理に対応したコードとが一致するかを判定し、一致した場合にパラメータ共有処理を行う。ＱＲコードを撮影した通信装置は、撮影したＱＲコードに時刻同期処理に対応するコードが含まれていない場合、その通信装置とのパラメータ共有処理を行わないことで、目的の異なる通信装置のネットワーク１０４への参加を防ぐことができる。
【０１２４】
なお、上記の何れかの方法で通信されるＢｏｏｔｓｔｒａｐｐｉｎｇに関する情報とは、具体的にはＡｕｔｈｅｎｔｉｃａｔｉｏｎで利用する公開鍵（Ｂｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙ）である。また、公開鍵以外に、Ａｕｔｈｅｎｔｉｃａｔｉｏｎを実施するためのチャネル情報や、エンローリのＭＡＣアドレス等の情報が含まれていてもよい。
【０１２５】
以上の何れかの方法によりＢｏｏｔｓｔｒａｐｐｉｎｇ（ステップＳ６０１）が行われ、Ｂｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙが共有されると、通信装置１０１と通信装置１０２、１０３はＡｕｔｈｅｎｔｉｃａｔｉｏｎ（ステップＳ６０２）を行う。
【０１２６】
Ａｕｔｈｅｎｔｉｃａｔｉｏｎ（ステップＳ６０２）では、通信パラメータ共有処理を行うための認証処理を行う。認証処理にはＢｏｏｔｓｔｒａｐｐｉｎｇ（ステップＳ６０１）で得られた公開鍵を使用する。Ａｕｔｈｅｎｔｉｃａｔｉｏｎ（ステップＳ６０２）を行うことで、コンフィグレータとエンローリは共通鍵を取得できる。この共通鍵はＣｏｎｆｉｇｕｒａｔｉｏｎ（ステップＳ６０３）の通信を暗号化するために用いられる。
【０１２７】
Ａｕｔｈｅｎｔｉｃａｔｉｏｎ（ステップＳ６０２）における認証方法では、Ｂｏｏｔｓｔｒａｐｐｉｎｇ（ステップＳ６０１）で共有したＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙを用いる。具体的には、共有したＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙのハッシュ値をそれぞれの端末で計算し、相手から送られてくるハッシュ値と自身が計算したものと一致するかどうかで判定される。ハッシュ値が一致した場合は認証が成功となり、一致しなかった場合は失敗となる。Ａｕｔｈｅｎｔｉｃａｔｉｏｎ（ステップＳ６０２）は認証要求、認証応答、認証確認の各フレームをやり取りすることで行われる。
【０１２８】
まず、イニシエータが認証要求を送信する。認証要求はＷｉ−Ｆｉ  ＤＰＰ規格で規定されたＤＰＰ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｒｅｑｕｅｓｔフレームである。Ｂｏｏｔｓｔｒａｐｐｉｎｇで共有したＢｏｏｔｓｔｒａｐｐｉｎｇに関する情報にチャネル情報が含まれていた場合、イニシエータは当該チャネル情報が示すチャネルにおいて認証要求を送信する。同様にレスポンダも、当該チャネル情報が示すチャネルにおいて認証要求を待ち受ける。また、Ｂｏｏｔｓｔｒａｐｐｉｎｇに関する情報としてレスポンダのＭＡＣアドレスが含まれていた場合、イニシエータは該ＭＡＣアドレスを利用して、認証要求をレスポンダにユニキャストで送信してもよい。この認証要求には、認証情報、識別情報、役割情報、乱数、共有鍵生成用の公開鍵が含まれる。認証情報とは、Ｂｏｏｔｓｔｒａｐｐｉｎｇ（ステップＳ６０１）で取得したレスポンダのＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙのハッシュ値である。識別情報とは、イニシエータのＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙのハッシュ値である。役割情報とは、イニシエータがコンフィグレータあるいはエンローリ、もしくはその両方で動作することを示す情報である。乱数とは、後述の認証応答を受信した際に行う認証のために使用する情報である。共有鍵生成用の公開鍵とは、認証相手であるレスポンダとの間で生成する共有鍵の生成元となる鍵である。
【０１２９】
イニシエータは、レスポンダから受信した共有鍵生成用の公開鍵と、自身の共有鍵生成用の秘密鍵とを用いて生成した鍵を共有鍵とする。一方レスポンダは、イニシエータから受信した共有鍵生成用の公開鍵と、自身の共有鍵生成用の秘密鍵の双方を用いて生成した鍵を共有鍵とする。この時、ＥＣＤＨ（Ｅｌｌｉｐｔｉｃ  Ｃｕｒｖｅ  Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ）方式に基づいて共有鍵を生成する。以下、共有鍵は、このＥＣＤＨ方式に基づいて生成されるものとする。なお、共有鍵の生成方法はこの方式に限定されるものではなく、その他の公開鍵暗号方式で生成してもよい。
【０１３０】
レスポンダは、イニシエータから認証要求を受信すると、認証要求を送信したイニシエータが、Ｂｏｏｔｓｔｒａｐｐｉｎｇ（ステップＳ６０１）でＢｏｏｔｓｔｒａｐｐｉｎｇに関する情報を送信した相手であるかの確認を行う。具体的には、レスポンダは自装置のＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙのハッシュ値が、受信した認証要求に含まれている認証情報と一致するかを確認する。レスポンダは、二つのハッシュ値が一致すれば認証が成功したと判定する。ハッシュ値の計算に使用するハッシュ関数は、レスポンダとイニシエータの間であらかじめ合意されているものとする。
【０１３１】
また、このときレスポンダは認証要求に含まれているイニシエータの役割情報を参照し、自装置の役割を決定する。例えばイニシエータがエンローリの場合、レスポンダはコンフィグレータとなる。決定された役割の情報は、後述の認証応答に含まれ、イニシエータに送信される。
【０１３２】
認証が成功すると、レスポンダは認証応答をイニシエータへ送信する。この認証応答は、Ｗｉ−Ｆｉ  ＤＰＰ規格で規定されたＤＰＰ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｒｅｓｐｏｎｓｅフレームである。この認証応答には、レスポンダの共有鍵生成用の公開鍵、役割情報、乱数、タグ情報が含まれる。レスポンダの共有鍵生成用の公開鍵とは、通信パラメータを暗号化するための共有鍵の生成元となる鍵である。また、タグ情報とは、認証要求に含まれていた乱数である。このタグ情報は、レスポンダの共有鍵生成用の秘密鍵と、イニシエータの共有鍵生成用の公開鍵の双方を用いて生成された共有鍵で暗号化される。なお、レスポンダがイニシエータのＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｋｅｙを有している場合、認証応答にそのハッシュ値を含めることで、相互認証を行ってもよい。
【０１３３】
次に、認証応答を受信したイニシエータは、認証応答に含まれるタグ情報を自身が生成した共有鍵で正しく復号できるか確認する。具体的には、イニシエータは、レスポンダの共有鍵生成用の公開鍵と、イニシエータの共有鍵生成用の秘密鍵を用いて共有鍵を生成し、その共有鍵でタグ情報を復元する。復号できた場合、イニシエータは認証成功と判定し、レスポンダに認証確認を送信する。また、イニシエータは認証応答に含まれるレスポンダの役割情報を確認することで、自装置の役割を決定してもよい。認証確認は、例えばＷｉ−Ｆｉ  ＤＰＰ規格で規定されたＤＰＰ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｎｆｉｒｍフレームである。認証確認には、タグ情報が含まれる。タグ情報とは、レスポンダから受信した認証応答に含まれていた乱数を、イニシエータが生成した共有鍵で暗号化したものである。
【０１３４】
レスポンダは認証応答を受信すると、レスポンダが生成した共有鍵を用いてタグ情報を復号できるか確認し、復号できた場合、認証成功と判定する。
【０１３５】
以上のように、Ａｕｔｈｅｎｔｉｃａｔｉｏｎ（ステップＳ６０２）を行うことで、通信装置１０１と通信装置１０２、１０３は認証処理の実行と、コンフィグレータあるいはエンローリの役割の決定を行うことができる。
【０１３６】
Ａｕｔｈｅｎｔｉｃａｔｉｏｎ（ステップＳ６０２）が完了すると、Ｃｏｎｆｉｇｕｒａｔｉｏｎ（ステップＳ６０３）が行われる。Ｃｏｎｆｉｇｕｒａｔｉｏｎでは、無線接続を行うための通信パラメータの共有が行われる。Ｃｏｎｆｉｇｕｒａｔｉｏｎでは、どちらの装置がイニシエータあるいはレスポンダであったかに関わらず、エンローリが通信パラメータを要求し、コンフィグレータが提供することになる。
【０１３７】
通信パラメータは、ＤＰＰを用いた場合、ＤＰＰ  Ｃｒｅｄｅｎｔｉａｌという全体構成の中に、ＡＫＭ、レガシーＰＳＫ／パスフレーズ、Ｃｏｎｎｅｃｔｏｒ（コネクタ）、Ｅｘｐｉｒｙ（有効期限）、Ｃ−ｓｉｇｎ−ｋｅｙ（公開鍵）などが含まれる。ＡＫＭとは、Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ａｎｄ  ｋｅｙ  ｍａｎａｇｅｍｅｎｔ  ｔｙｐｅの略であり、通信時にどの認証プロトコルや鍵交換アルゴリズムを使用するかを示す値である。レガシーＰＳＫ／パスフレーズは、従来のＷＰＡやＩＥＥＥ８０２．１１に基づいた認証・鍵交換を実施する際の暗号鍵である。レガシーＰＳＫ／パスフレーズは、ＤＰＰに非対応のアクセスポイントに接続するための情報でもあり、通信パラメータとして含まれていなくてもよい。また、コネクタは、ＤＰＰが定めた認証プロトコルや鍵交換アルゴリズムで使用する各種情報である。コネクタは、ＤＰＰに対応するアクセスポイントに接続し、ネットワークに参加するための情報であって、本実施形態では通信装置１０１が構築するネットワーク１０４に参加するための情報である。Ｃ−ｓｉｇｎ−ｋｅｙはコンフィグレータ専用の公開鍵であり、コネクタはコンフィグレータ専用の秘密鍵で暗号化されている。
【０１３８】
なお、本実施形態では、通信装置１０１、通信装置１０２、および通信装置１０３は時刻同期を目的としてネットワーク１０４を介した無線接続を行うため、コンフィグレータはネットワーク１０４用の（時刻同期用の）コネクタを提供する。しかし、これに限らず、例えば各通信装置がデータ通信を目的としてネットワークを介した無線接続を行う場合、コンフィグレータは時刻同期用のコネクタとは異なるコネクタを提供してもよい。なお、ＢｏｏｔｓｔｒａｐｐｉｎｇでＰＫＥＸを利用した場合、コンフィグレータは利用したコードに基づいて提供するコネクタを決定してもよい。また、その他の方法を用いてＢｏｏｔｓｔｒａｐｐｉｎｇを行う場合、コンフィグレータはネットワークの目的を示す情報に基づいて提供するコネクタを決定してもよい。
【０１３９】
Ｃｏｎｆｉｇｕｒａｔｉｏｎ（ステップＳ６０３）は、設定要求、設定応答の各フレームをやり取りすることで実行される。なお、エンローリのみがＣｏｎｆｉｇｕｒａｔｉｏｎを開始する（つまり設定要求を送信する）ことができる。
【０１４０】
設定要求とは、例えばＤＰＰ規格で規定されたＤＰＰ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｒｅｑｕｅｓｔフレームであって、エンローリからコンフィグレータに送信される。この設定要求には、デバイス情報や役割情報が含まれる。デバイス情報とは、自身のデバイス名などである。役割情報とは、受信した通信パラメータによってエンローリが参加できるネットワークにおいて、エンローリが希望する役割を示す情報である。具体的には、ネットワークを構築するＡＰとしての役割を希望するか、ネットワークに参加するＳＴＡとしての役割を希望するかを示す情報である。本実施形態では、通信装置１０２、１０３がエンローリとして動作しているので、役割情報としてはＳＴＡとしての役割を希望する情報が含まれることになる。設定要求に含まれる情報は、Ａｕｔｈｅｎｔｉｃａｔｉｏｎ（ステップＳ６０２）で作成した共有鍵で暗号化される。
【０１４１】
設定要求を受信したコンフィグレータはエンローリへ設定応答を送信する。この設定応答は、例えばＤＰＰ規格で規定されたＤＰＰ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｒｅｓｐｏｎｓｅフレームである。設定応答には、コンフィグレータが提供する通信パラメータが含まれる。設定応答に含まれる情報はＡｕｔｈｅｎｔｉｃａｔｉｏｎ（ステップＳ６０２）で作成した共有鍵で暗号化される。
【０１４２】
設定応答を受信したエンローリは共有鍵を使用して通信パラメータを復号する。そして、通信パラメータに含まれるコンフィグレータ専用の公開鍵を使って、秘密鍵で暗号化されているコネクタを復号することで、コンフィグレータが提供する通信パラメータを取得する。
【０１４３】
このようにＣｏｎｆｉｇｕｒａｔｉｏｎ（ステップＳ６０３）が行われることで、コンフィグレータからエンローリに通信パラメータの提供が完了すると、Ｎｅｔｗｏｒｋ  Ｉｎｔｒｏｄｕｃｔｉｏｎ（ステップＳ６０４）が行われる。
【０１４４】
Ｎｅｔｗｏｒｋ  Ｉｎｔｒｏｄｕｃｔｉｏｎ（ステップＳ６０４）では、Ｃｏｎｆｉｇｕｒａｔｉｏｎ（ステップＳ６０３）までの処理を完了したデバイスが、コンフィグレータから提供された通信パラメータを用いてネットワークへ参加できるかを確認する。コンフィグレータから提供された通信パラメータがインフラストラクチャネットワークである場合、ＳＴＡとして動作するデバイスから検索要求を送信することで本ステップの処理が開始される。本実施形態では、ＳＴＡ端末である通信装置１０２、１０３から、ＡＰ端末である通信装置１０１に検索要求が送信される。
【０１４５】
まず、ＳＴＡ端末は、ＡＰ端末から送信されるビーコンやＰｒｏｂｅ  Ｒｅｓｐｏｎｓｅに含まれているＡＫＭを確認し、ＤＰＰに対応していることを示す情報が含まれているかを確認する。なお、Ｃｏｎｆｉｇｕｒａｔｉｏｎ（ステップＳ６０３）でやりとりしたフレームに含まれているＡＫＭを利用して当該確認を行ってもよい。ＡＰ端末から送信されたフレームに、ＤＰＰに対応していることを示す情報が含まれている場合、ＳＴＡ端末はＡＰ端末に検索要求を送信する。この検索要求は、例えばＷｉ−Ｆｉ  ＤＰＰ規格で規定されたＤＰＰ  Ｐｅｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｒｅｑｕｅｓｔフレームである。検索要求には、コンフィグレータ専用の秘密鍵で暗号化されたコネクタが含まれる。
【０１４６】
検索要求を受信したＡＰ端末は、検索要求に含まれているコネクタを、コンフィグレータ専用の公開鍵で復号できるかを確認する。ＡＰ端末はＳＴＡ端末から受信したコネクタを復号できたことを確認すると、接続許可である検索応答をＳＴＡ端末に送信する。この検索応答は、例えばＤＰＰ規格で規定されたＤＰＰ  Ｐｅｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｒｅｓｐｏｎｓｅフレームである。接続許可を受信したＳＴＡ端末は、ＡＰ端末との間で４−Ｗａｙ  ｈａｎｄｓｈａｋｅなどの必要な接続処理を実施してネットワーク１０４へ参加する（ステップＳ６０５）。
【０１４７】
なお、ＡＰ端末から送信されたフレームに、ＤＰＰに対応していることを示す情報が含まれていない場合、つまりレガシー端末であることを示している場合は、ステップＳ６０４およびステップＳ６０５に代えて、以下の処理を行う。ＳＴＡ端末は、レガシーＰＳＫ／パスフレーズを参照して、自装置の暗号鍵として設定する。そしてＳＴＡ端末はＷＰＡ・ＷＰＡ２プロトコルを用いてＡＰ端末と接続を行う。
【０１４８】
以上のステップＳ６０１からステップＳ６０５の処理を行い、通信装置１０１が構築するネットワーク１０４に、通信装置１０２、１０３が参加することで、通信装置１０１と通信装置１０２、１０３との無線接続が確立される。
【０１４９】
ステップＳ６０１からステップＳ６０５の各ステップの途中でエラーが検出された場合、各通信装置は本シーケンスから抜け、通信装置１０１は図４のステップＳ４０３の、通信装置１０２、１０３は図５のステップＳ５０２の処理を行い、Ｎｏと判定する。なお、エラーが検出された場合、各通信装置はユーザに通知してもよい。また、各通信装置は図４のステップＳ４０３や図５のステップＳ５０２の処理を行うのではなく、本シーケンスの最初や、エラーが発生した処理から再度やり直してもよい。また、各通信装置は、エラーが発生した数をカウントし、エラーの発生数が所定の値を超えたら、図４や図５のフローチャートのフローを強制的に終了する構成であっても良い。
【０１５０】
本実施形態のように、エンローリが複数台ある場合、図６の処理はコンフィグレータと各エンローリとの間で１回ずつ行われる。具体的には、通信装置１０１および１０２の間と、通信装置１０１および１０３との間の計２回、図６の処理が行われることになる。
【０１５１】
また、各通信装置が時刻同期用のコードとは異なる目的のコードを有しており、該コードを用いたＢｏｏｔｓｔｒａｐｐｉｎｇ処理を行った場合、コンフィグレータはネットワーク１０４の通信パラメータとは異なる通信パラメータを提供するようにしてもよい。この通信パラメータは、通信装置１０１がネットワーク１０４とは異なるネットワークを構築する際、および通信装置１０２、１０３が該ネットワークに参加する際に用いられる。
【０１５２】
以上、図６には、通信装置１０１と、通信装置１０２、１０３とが通信パラメータの共有と無線接続を確立する際に実行される処理を示した。
【０１５３】
なお、本実施形態では、通信装置１０１、通信装置１０２、および通信装置１０３はＷｉ−Ｆｉ  ＤＰＰ規格に準拠して通信パラメータの共有処理を行うが、これに限らず、ＷＰＳ規格に準拠した通信パラメータ共有処理を行ってもよい。この場合、各通信装置は、ＷＰＳ規格に準拠したＰＩＮ（Ｐｅｒｓｏｎａｌ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  Ｎｕｍｂｅｒ）方式による通信パラメータ共有処理を行う。ＷＰＳ規格に準拠したＰＩＮ方式によるパラメータ共有処理を実行する際も、Ｗｉ−Ｆｉ  ＤＰＰ規格に準拠したパラメータ共有処理と同様に、時刻同期用のＰＩＮを用いてパラメータ共有処理を行う。
【０１５４】
ＷＰＳ規格に準拠したパラメータ共有処理において、各通信装置は、通信パラメータを提供するレジストラと、レジストラから提供された通信パラメータを受信するエンローリという役割を与えられる。本実施形態では、ＡＰ機能を有する通信装置１０１がレジストラ、ＳＴＡ機能を有する通信装置１０２、１０３がエンローリとしてＷＰＳ規格に準拠した通信パラメータ共有処理を行うとする。以下に、ＷＰＳ規格による通信パラメータ共有処理について説明する。
【０１５５】
まず、エンローリが保持するＰＩＮ（ここでは時刻同期用のＰＩＮ）がレジストラに入力される。ＰＩＮは、エンローリの表示部に表示されたＰＩＮをユーザが入力することでレジストラに入力される。もしくは、Ｂｌｕｅｔｏｏｔｈ通信、ＮＦＣ通信、あるいは有線通信によってエンローリからレジストラにＰＩＮが入力されてもよい。あるいは、レジストラも予めエンローリと同じ時刻同期用のＰＩＮを保持しており、ユーザから時刻同期処理の開始指示を受けたことに応じて当該ＰＩＮを用いた通信パラメータ共有処理を実行するようにしてもよい。
【０１５６】
エンローリは、時刻同期処理の開始指示を受けたことに応じて、保持している時刻同期用のＰＩＮに対して値Ａを用いて所定のアルゴリズムに従った計算処理を行い、計算結果ＰＫｅを算出する。エンローリはＰＫｅを算出すると、レジストラに送信する。また、エンローリは計算に用いた値Ａもレジストラに送信する。
【０１５７】
レジストラは入力されたＰＩＮおよび受信した値Ａを用いて、エンローリと同じ所定のアルゴリズムに従った計算処理を行い、計算結果ＰＫｅ’を算出する。レジストラは、自装置が算出したＰＫｅ’とエンローリから受信したＰＫｅとが一致する場合、エンローリに通信パラメータを送信し、一致しない場合は通信パラメータを送信せず、エンローリにエラーを示す通知を送信する。レジストラとエンローリは、通信パラメータを共有すると、共有された通信パラメータを用いた無線通信を開始する。
【０１５８】
なお、エンローリとレジストラとで同一のＰＩＮを用いて計算を行った場合は夫々の計算結果が一致するが、異なるＰＩＮを用いて計算を行った場合、夫々の計算結果は一致しないため、通信パラメータは共有されない。そのため、本実施形態では、エンローリとレジストラとが時刻同期用のＰＩＮを用いることで、時刻同期を目的とする通信装置のみがネットワーク１０４に参加することになる。
【０１５９】
なお、エンローリは、時刻同期用のＰＩＮとは別に、時刻同期とは異なる目的のネットワークを構築するためのＰＩＮを保持していてもよい。レジストラもＰＩＮを保持している場合、エンローリと同様に時刻同期とは異なる目的のネットワークを構築するためのＰＩＮを保持していてもよい。エンローリおよびレジストラは、時刻同期とは異なる目的のネットワークを構築するためのＰＩＮを用いた通信パラメータ共有処理を行うことで、ネットワーク１０４とは異なるネットワークを構築し、例えば連動撮影等の処理を行ってもよい。
【０１６０】
また、各通信装置は、ＷＰＳ規格に準拠した通信パラメータ共有処理と、Ｗｉ−Ｆｉ  ＤＰＰ規格に準拠した通信パラメータ共有処理と、両方を実行可能な通信装置であってもよい。
【０１６１】
次に、通信装置１０１と通信装置１０２、１０３とが時刻同期処理を行う際に実行する処理について、図７、図８、および図９を用いて説明する。図７は、通信装置１０１と通信装置１０２、１０３とが時刻同期処理を行う際に実行される処理を示すシーケンス図である。また、図８は通信装置１０１が記憶部２０３に記憶されたコンピュータプログラムを制御部２０２に読み出し、実行することで実現される処理を示すフローチャートである。また、図９は、通信装置１０２、１０３が記憶部２０３に記憶されたコンピュータプログラムを制御部２０２に読み出し、実行することで実現される処理を示すフローチャートである。
【０１６２】
本実施形態では、通信装置１０１および通信装置１０２、１０３は、時刻同期のプロトコルとしてＩＥＥＥ８０２．１１ｖに規定されているＴｉｍｉｎｇ  Ｍｅａｓｕｒｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ（以下、ＴＭプロトコルとする）を利用する。本実施形態では通信装置１０１をマスタ端末、通信装置１０２、１０３をスレーブ端末として時刻同期処理を行うが、通信装置１０２、１０３の何れかがマスタ端末となってもよい。この場合、通信装置１０１はスレーブ端末となる。
【０１６３】
まず、図７を用いてＴＭプロトコルの手順について説明する。
【０１６４】
マスタ端末はスレーブ端末へ、ＩＥＥＥ８０２．１１シリーズ規格で規定されるＡｃｔｉｏｎフレームを送信する（ステップＳ７０１）。本フレームを送信する際に、マスタ端末は該Ａｃｔｉｏｎフレームの送信時刻Ｔ１を記憶しておく。
【０１６５】
ステップＳ７０１で送信されたＡｃｔｉｏｎフレームを受信したスレーブ端末は、該Ａｃｔｉｏｎフレームを受信した受信時刻Ｔ２を記憶する。続いてスレーブ端末は、該Ａｃｔｉｏｎフレームに対する応答としてＡＣＫフレームを送信する（ステップＳ７０２）。このとき、スレーブ端末は、ＡＣＫフレームの送信時刻Ｔ３を記憶しておく。
【０１６６】
マスタ端末はＡＣＫフレームを受信すると、その受信時刻Ｔ４を記憶し、スレーブ端末へＡｃｔｉｏｎフレームを送信する（ステップＳ７０３）。本ステップで送信されるＡｃｔｉｏｎフレームには、Ｔ１とＴ４の情報が含まれている。なお、ステップＳ７０３でＡｃｔｉｏｎフレームを送信する際に、マスタ端末は送信時刻Ｔ´１の時刻を記憶しておく。
【０１６７】
ステップＳ７０３で送信されたＡｃｔｉｏｎフレームを受信したスレーブ端末は、受信時刻Ｔ´２を記憶し、マスタ端末にＡＣＫフレームを送信する（ステップＳ７０４）。このとき、スレーブ端末はＡＣＫを送信した送信時刻Ｔ´３を記憶する。
【０１６８】
ステップＳ７０４で送信されたＡＣＫフレームを受信したマスタ端末は、受信時刻Ｔ´４を記憶する。図７には記載していないが、ステップＳ７０４の次にマスタ端末がＡｃｔｉｏｎフレームを送信する際は、Ｔ´１とＴ´４の時刻を含める。このような処理を定期的に繰り返すことでスレーブ端末はＴ１、Ｔ２、Ｔ３、Ｔ４（またはＴ´１、Ｔ´２、Ｔ´３、Ｔ´４）が取得できるので、マスタ端末間との遅延時間Ｔｄを計算可能となる。遅延時間は、マスタ端末からスレーブ端末へのフレームの送信にかかる時間と、スレーブ端末からマスタ端末へのフレームの送信にかかる時間とで同じであると仮定すると、次の式により求められる。
【０１６９】
Ｔｄ＝（（Ｔ４―Ｔ１）―（Ｔ３−Ｔ２））／２  （１）
【０１７０】
また、マスタ端末とスレーブ端末との時刻のずれＴｏは下記により求められる。
【０１７１】
Ｔｏ＝Ｔ２−（Ｔ１＋Ｔｄ）  （２）
【０１７２】
スレーブ端末は自身の時刻にＴｏを加算することにより、マスタ端末との時刻同期を実現できる。
【０１７３】
なお、ＴＭプロトコルでのＴ１〜Ｔ４の時刻は３２ビット、１ビットは１０ナノ秒で定義されており、マスタ端末とスレーブ端末のシステム時刻（年月日を含む時刻情報）の同期はできない。そのため、Ａｃｔｉｏｎフレーム送信時にはＶｅｎｄｏｒ  Ｓｐｅｃｉｆｉｃ  ＩＤ領域にシステム時刻（たとえば、６４ビットで１ビットは１ナノ秒を表す）を追加することで、年月日の同期も実現する。
【０１７４】
本実施形態では、３２ビットの時刻情報と、６４ビットの時刻情報の両方を使うことで、マスタ端末とスレーブ端末の時刻同期を行う。具体的には６４ビットの時刻情報を使うことで年月日といった単位の大きな時刻を同期し、更に３２ビットの時刻情報によって単位の小さい時刻の同期を行う。
【０１７５】
なお、ＴＭプロトコルを利用して時刻同期を行う場合、マスタ端末とスレーブ端末は、ステップＳ７０１でＡｃｔｉｏｎフレームが送信される前に、ＴＭプロトコルに対応しているかを端末間で確認することができる。本実施形態のように、マスタ端末とスレーブ端末との両方がＴＭプロトコルに対応していることを前提としている場合、ＴＭプロトコルへの対応の確認を省略してもよい。ＴＭプロトコルへの対応を確認する場合、マスタ端末およびスレーブ端末は、確認を行ってから図７のシーケンスを開始する。
【０１７６】
なお、本実施形態においてマスタ端末とスレーブ端末とは、時刻同期のプロトコルとしてＴＭプロトコルを利用したが、これに限らず、ＮＴＰやＰＴＰを利用してもよい。ＮＴＰは、Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌの、ＰＴＰはＰｒｅｃｉｓｉｏｎ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌの略である。ＴＭプロトコル以外のプロトコルを利用する場合であっても、マスタ端末とスレーブ端末とは、マスタ端末の時刻にスレーブ端末が合わせることで時刻同期を行うものとする。
【０１７７】
図８は、図７の時刻同期シーケンスにおけるマスタ端末の動作の一例を示すフローチャートである。本実施形態では、通信装置１０１がマスタ端末であるので、通信装置１０１は図４のステップＳ４０６として本フローチャートの処理を行う。また、図９は図７の時刻同期シーケンスにおけるスレーブ端末の動作の一例を示すフローチャートである。本実施形態では、通信装置１０２、１０３がスレーブ端末であるので、通信装置１０２、１０３は図５のステップＳ５０４として本フローチャートの処理を行う。
【０１７８】
マスタ端末はスレーブ端末へ時刻同期のＡｃｔｉｏｎフレームを送信し、そのときの送信時刻を記憶する（ステップＳ８０１）。このとき、マスタ端末は３２ビットの時刻だけでなく、システム時刻（６４ビット）も記憶する。
【０１７９】
スレーブ端末は、マスタ端末からＡｃｔｉｏｎフレームを受信したかを判定する（ステップＳ９０１）。スレーブ端末は、Ａｃｔｉｏｎフレームを受信していないと判定すると（ステップＳ９０１のＮｏ）、再度ステップＳ９０１の処理を行う。一方、Ａｃｔｉｏｎフレームを受信したと判定すると（ステップＳ９０１のＹｅｓ）、スレーブ端末はＡｃｔｉｏｎフレームの受信時刻Ｔ２を記憶し、ステップＳ９０２の処理を行う。このとき、マスタ端末は３２ビットの時刻だけでなく、システム時刻（６４ビット）も記憶する。
【０１８０】
Ａｃｔｉｏｎフレームを受信したスレーブ端末は、マスタ端末にＡＣＫを送信する（ステップＳ９０２）。このとき、スレーブ端末はＡＣＫの送信時刻Ｔ３を記憶する。このとき、スレーブ端末は３２ビットの時刻と６４ビットのシステム時刻との両方を記憶する。
【０１８１】
一方、ステップＳ８０１でＡｃｔｉｏｎフレームを送信したマスタ端末は、スレーブ端末からＡＣＫを受信したかを判定する（ステップＳ８０２）。マスタ端末は、ＡＣＫを受信していないと判定すると（ステップＳ８０２のＮｏ）、再度ステップＳ８０２の処理を行う。一方、ＡＣＫを受信したと判定すると（ステップＳ８０２のＹｅｓ）、マスタ端末は受信時刻Ｔ４を記憶し、ステップＳ８０３の処理を行う。このとき、マスタ端末は３２ビットの時刻と６４ビットのシステム時刻との両方を記憶する。
【０１８２】
一方、ステップＳ９０２の処理を行ったスレーブ端末は、ＴｄとＴｏの計算を行う（ステップＳ９０３）。しかし、マスタ端末から時刻Ｔ１、Ｔ４の情報が入ったＡｃｔｉｏｎフレームを受信していない場合、スレーブ端末はＴｄおよびＴｏの計算を行うことができないので、本ステップをスキップする。
【０１８３】
続いて、スレーブ端末は時刻同期の終了条件を満たしているかを判定する（ステップＳ９０４）。今回は、ステップＳ９０３でＴｄおよびＴｏを計算できていないので、スレーブ端末はＮｏと判定し、再度ステップＳ９０１の判定を行う。
【０１８４】
一方、ステップＳ８０２の処理を行ったマスタ端末は、記憶した時刻Ｔ１およびＴ４を含めたＡｃｔｉｏｎフレームをスレーブ端末に送信する（ステップＳ８０３）。マスタ端末は、時刻Ｔ１およびＴ４の両方について、３２ビットの時刻と、６４ビットのシステム時刻との両方を送信する。また、マスタ端末はステップＳ８０３でＡｃｔｉｏｎフレームを送信する際に、送信時刻Ｔ´１について３２ビットの時刻と６４ビットのシステム時刻とを記憶する。
【０１８５】
スレーブ端末は、マスタフレームからのＡｃｔｉｏｎフレームを受信すると、ステップ９０１でＹｅｓと判定し、受信時刻Ｔ´２を記憶する。スレーブ端末は、３２ビットの時刻および６４ビットのシステム時刻を記憶する。
【０１８６】
次にスレーブ端末は、ステップＳ９０２の処理を行い、マスタ端末にＡＣＫを送信する。このとき、スレーブ端末は送信時刻Ｔ´３を記憶する。スレーブ端末は時刻Ｔ´２と同様に、３２ビットの時刻だけでなく、６４ビットのシステム時刻も記憶する。
【０１８７】
一方、ステップＳ８０３でＡｃｔｉｏｎフレームを送信したマスタ端末は、スレーブ端末からＡＣＫを受信したかを判定する（ステップＳ８０４）。ＡＣＫを受信していない場合（ステップＳ８０４のＮｏ）、マスタ端末はステップＳ８０４の処理を再度行う。一方、ＡＣＫを受信した場合（ステップＳ８０４のＹｅｓ）、マスタ端末はステップＳ８０５の処理を行う。
【０１８８】
スレーブ端末はステップＳ９０２の処理を行うと、ＴｄおよびＴｏを計算する（ステップＳ９０３）。マスタ端末から時刻Ｔ１および時刻Ｔ４を受信しているため、スレーブ端末は本ステップにおける計算を実行できる。
【０１８９】
スレーブ端末は、ＴｄとＴｏの計算を行うと、時刻同期の終了条件を満たしているかを判定する（ステップＳ９０４）。具体的には、ＴｄとＴｏを所定の回数以上計算した場合はＹｅｓと判定し、ＴｄとＴｏの計算回数が所定の回数より少ない場合はＮｏと判定する。あるいは、本ステップの判定方法としては、計算結果の統計処理による遅延時間Ｔｄの収束性の確認などが挙げられる。この場合、スレーブ端末は、遅延時刻Ｔｄの収束性が十分である場合にＹｅｓと判定し、十分であると確認できなかった場合にＮｏと判定する。スレーブ端末は、ステップＳ９０４でＮｏと判定した場合には、ステップＳ９０１の処理を行う。一方、ステップＳ９０４でＹｅｓと判定した場合、スレーブ端末はステップＳ９０５の処理を行う。
【０１９０】
スレーブ端末は、ステップＳ９０３で計算したＴｄとＴｏを用いて自装置の時刻を補正する（ステップＳ９０５）。なお、本ステップにおいて用いられるＴｄやＴｏは、夫々の計算結果の平均値や統計値であってもよい。
【０１９１】
スレーブ端末は、自装置の時刻の補正を行うと、時刻同期の終了要求をマスタ端末に送信する（ステップＳ９０６）。終了要求とは、時刻同期処理の終了をマスタ端末に要求するフレームであって、具体的にはＩＥＥＥ８０２．１１シリーズ規格に規定されるＴＭ  Ｒｅｑｕｅｓｔ  Ｆｒａｍｅのトリガーフィールドが「０」にセットされたものである。あるいは、ＤｅａｕｔｈｅｎｔｉｃａｔｉｏｎフレームやＤｉｓａｓｓｏｃｉａｔｉｏｎフレームといったネットワークの切断要求のフレームであってもよい。
【０１９２】
マスタ端末は、ステップＳ８０４でＹｅｓと判定された場合、スレーブ端末から時刻同期の終了要求を受信したかを判定する（ステップＳ８０５）。時刻同期の終了要求を受信していないと判定した場合（ステップＳ８０５のＮｏ）、マスタ端末は再度ステップＳ８０３の処理を行う。一方、時刻同期の終了要求を受信したと判定した場合（ステップＳ８０５のＹｅｓ）、マスタ端末はステップＳ８０６の処理を行う。
【０１９３】
マスタ端末は、受信した終了要求に対する応答として、スレーブ端末にＡＣＫを送信し（ステップＳ８０６）、図８のフローチャートのフローを終了する。
【０１９４】
一方、スレーブ端末は、ステップＳ９０６の処理を行うと、マスタ端末からＡＣＫを受信したかを判定する（ステップＳ９０７）。スレーブ端末は、マスタ端末からのＡＣＫを受信していないと判定すると（ステップＳ９０７のＮｏ）、再度ステップＳ９０７の処理を行う。一方、マスタ端末からのＡＣＫを受信したと判定すると（ステップＳ９０７のＹｅｓ）、スレーブ端末は図９のフローチャートのフローを終了する。
【０１９５】
なお、マスタ端末はスレーブ端末が複数ある場合、各スレーブ端末との時刻同期処理を並行して行ってもよい。具体的には、第一のスレーブ端末に対してステップＳ７０１のＡｃｔｉｏｎ  Ｆｒａｍｅを送信した後、第二のスレーブ端末に対してステップＳ７０１のＡｃｔｉｏｎ  Ｆｒａｍｅを送信してもよい。
【０１９６】
以上、図７、図８、および図９には、通信装置１０１と通信装置１０２、１０３とが時刻同期処理を行う際に実行する処理を示した。
【０１９７】
なお、図８のステップＳ８０１およびステップＳ８０３においてマスタ端末が送信するＡｃｔｉｏｎフレームが、ブロードキャストで送信される場合、既に時刻同期処理を完了しているスレーブ端末もマスタ端末にＡＣＫを返すようにする。
【０１９８】
また、マスタ端末とスレーブ端末とが時刻同期処理を行っている間に、スレーブ端末が無線接続の切断要求（Ｄｅａｕｔｈｅｎｔｉｃａｔｉｏｎ）を送信してきた場合、マスタ端末は該スレーブ端末との時刻同期処理をエラーとして終了する。また、マスタ端末は、図４のステップＳ４０４でカウントした接続端末数から、切断要求を送信してきたスレーブ端末を削除する。
【０１９９】
なお、マスタ端末は、図８のステップＳ８０１のＡｃｔｉｏｎフレームの送信を行ってから所定の時間が経過してもスレーブ端末から時刻同期の終了要求を受信しなかった場合、当該スレーブ端末との時刻同期処理をエラーとして終了する。また、マスタ端末は、図４のステップＳ４０４でカウントした接続端末数から、切断要求を送信してきたスレーブ端末を削除する。
【０２００】
また、時刻同期処理を実行している間、マスタ端末はスレーブ端末に対して、所定の時間毎に生存確認のパケットを送信してもよい。マスタ端末は、送信した生存確認パケットに対する応答をスレーブ端末から受信した場合、該スレーブ端末との時刻同期処理を継続する。一方、生存確認パケットを送信してから所定の時間が経過するまでに、スレーブ端末から応答を受信しなかった場合、マスタ端末は該スレーブ端末との時刻同期処理をエラーとして終了する。また、マスタ端末は、図４のステップＳ４０４でカウントした接続端末数から、切断要求を送信してきたスレーブ端末を削除する。
【０２０１】
あるいは、時刻同期処理が開始してから所定の時間が経過する毎に、スレーブ端末から生存確認のパケットが送信されるようにしてもよい。この場合、マスタ端末は、スレーブ端末から生存確認パケットを受信したことに基づいて、該スレーブ端末との時刻同期処理を継続する。また、時刻同期処理を開始してから、あるいは前回生存確認パケットを受信してから所定の時間が経過するまでに、スレーブ端末から生存確認パケットを受信しなかった場合、該スレーブ端末との時刻同期処理をエラーとして終了する。また、マスタ端末は、図４のステップＳ４０４でカウントした接続端末数から、切断要求を送信してきたスレーブ端末を削除する。なお、時刻同期処理を開始してから所定の時間が経過するまでとは、マスタ端末が図８のステップＳ８０１でＡｃｔｉｏｎフレームを送信してから所定の時間が経過するまでのことである。
【０２０２】
なお、マスタ端末およびスレーブ端末は、時刻同期処理がエラーとして終了した場合に、エラーが発生したことを示す表示を行うことで、ユーザにエラーを通知してもよい。また、マスタ端末は、どのスレーブ端末との時刻同期処理がエラーとして終了したかを示す表示を行ってもよい。これにより、ユーザは時刻同期処理が正常に完了しなかったスレーブ端末を認識することができる。
【０２０３】
なお、図４、図５、図８、および図９に示した通信装置１０１、１０２、１０３のフローチャートの少なくとも一部または全部をハードウェアにより実現してもよい。ハードウェアにより実現する場合、例えば、所定のコンパイラを用いることで、各ステップを実現するためのコンピュータプログラムからＦＰＧＡ上に専用回路を生成し、これを利用すればよい。ＦＰＧＡとは、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略である。また、ＦＰＧＡと同様にしてＧａｔｅ  Ａｒｒａｙ回路を形成し、ハードウェアとして実現するようにしてもよい。また、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）により実現するようにしてもよい。また、図４、図５、図８、および図９に示したフローチャートの各ステップを不図示の複数のＣＰＵもしくは装置で分散して行うようにしてもよい。図６、図７のシーケンスについても同様である。
【０２０４】
以上、実施形態を詳述したが、本発明は例えば、システム、装置、方法、プログラム若しくは記録媒体（記憶媒体）などとしての実施態様をとることが可能である。具体的には、複数の機器（例えば、ホストコンピュータ、インタフェース機器、撮像装置、ｗｅｂアプリケーションなど）から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【０２０５】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０２０６】
２０２  制御部
２０３  記憶部
２０４  無線通信部
２０５  出力部
２０７  アンテナ
２０８  入力部
２０９  機能部
２１０  タイマ
【図１】
2020072442.tif 000003
【図２】
2020072442.tif 000004
【図３】
2020072442.tif 000005
【図４】
2020072442.tif 000006
【図５】
2020072442.tif 000007
【図６】
2020072442.tif 000008
【図７】
2020072442.tif 000009
【図８】
2020072442.tif 000010
【図９】
2020072442.tif 000011