(57)【特許請求の範囲】
【請求項１】
１以上の通信装置に共通して保存される情報である装置情報を記憶する装置情報管理手段と、
周期的なクロック信号を用いて、タイミングを表すクロック情報を生成するクロック発生手段と、
前記クロック情報に応じて前記装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記クロック情報毎に異なる情報である選択情報を生成する装置情報選択手段と、
前記クロック情報と、前記装置情報選択手段により生成された前記選択情報とを少なくとも用いて、暗号鍵を生成する鍵生成手段と、
生成された暗号鍵を用いて、通信データに関する暗号化処理と復号処理との少なくとも一方を実行する暗号処理手段と、を備え、
他の前記通信装置との間で通信データを送受信する通信手段を更に備え、
前記通信手段が他の前記通信装置から受信した通信データを、前記暗号処理手段が正しく復号できない場合、
前記クロック発生手段は、その通信データを受信した際の自装置における前記クロック情報とは異なる前記クロック情報である第１の推定クロック情報を１以上生成し、
前記装置情報選択手段は、前記第１の推定クロック情報に応じて前記装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記選択情報を生成し、
前記鍵生成手段は、
前記第１の推定クロック情報と、前記選択情報とを少なくとも用いて第１の推定暗号鍵を生成し、
前記暗号処理手段が、生成された前記第１の推定暗号鍵を用いて、前記通信装置から受信した通信データを正しく復号できたか否かを判定した結果に応じて、他の前記通信装置において生成された前記クロック情報を推定する、通信装置。
【請求項２】
１以上の通信装置に共通して保存される情報である装置情報を記憶する装置情報管理手段と、
周期的なクロック信号を用いて、タイミングを表すクロック情報を生成するクロック発生手段と、
前記クロック情報に応じて前記装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記クロック情報毎に異なる情報である選択情報を生成する装置情報選択手段と、
前記クロック情報と、前記装置情報選択手段により生成された前記選択情報とを少なくとも用いて、暗号鍵を生成する鍵生成手段と、
生成された暗号鍵を用いて、通信データに関する暗号化処理と復号処理との少なくとも一方を実行する暗号処理手段と、を備え、
他の前記通信装置との間で通信データを送受信する通信手段を更に備え、
前記通信手段が、自装置から送信された通信データを正しく復号できないことを表す通知を、他の前記通信装置から受信した場合、
前記クロック発生手段は、自装置における前記クロック情報とは異なる前記クロック情報である第２の推定クロック情報を１以上生成し、
前記装置情報選択手段は、前記第２の推定クロック情報に応じて前記装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記選択情報を生成し、
前記鍵生成手段は、前記第２の推定クロック情報と、前記選択情報とを少なくとも用いて第２の推定暗号鍵を生成し、
前記通信手段は、前記第２の推定暗号鍵を用いて前記暗号処理手段により暗号化された通信データを他の前記通信装置に送信し、
前記鍵生成手段は、前記第２の推定暗号鍵を用いて暗号化された通信データを正しく復号できたことを表す通知を、前記通信手段が他の前記通信装置から受信した場合、前記第２の推定クロック情報を、他の前記通信装置において生成された前記クロック情報と推定する、通信装置。
【請求項３】
前記装置情報管理手段は、複数の前記装置情報を記憶し、
前記装置情報選択手段は、前記クロック情報に応じて、
複数の前記装置情報のうち、少なくとも１以上の前記装置情報を選択する処理と、
複数の前記装置情報から少なくとも１以上の前記装置情報を選択するとともに、選択したそれぞれの前記装置情報を複数の部分に分割し、選択したそれぞれの前記装置情報から１以上の部分を更に選択する処理と、の少なくとも一方を実行することにより、前記装置情報の少なくとも一部を選択する請求項１又は請求項２に記載の通信装置。
【請求項４】
前記クロック発生手段は、原子時計を備え、前記原子時計を用いて、他の前記通信装置と同期された前記クロック信号を発生する、請求項１乃至請求項３のいずれかに記載の通信装置。
【請求項５】
前記クロック発生手段は、自装置の外部から提供される、原子時計を用いて生成された時刻情報により、前記クロック信号のタイミングを調整する請求項１乃至請求項４のいずれかに記載の通信装置。
【請求項６】
前記鍵生成手段は、他の前記通信装置について推定した前記クロック情報と、自装置における前記クロック発生手段が生成した前記クロック情報との差分を表す調整情報を、他の前記通信装置に関連付けて保持し、
自装置が、他の前記通信装置から通信データを受信する受信側の通信装置である場合、
前記装置情報選択手段は、前記クロック発生手段により生成された前記クロック情報を、前記調整情報を用いて調整するとともに、調整後の前記クロック情報を用いて前記選択情報を生成し、
前記鍵生成手段は、前記クロック発生手段により生成された前記クロック情報を、前記調整情報を用いて調整するとともに、調整後の前記クロック情報及び前記装置情報選択手段により生成された前記選択情報を用いて暗号鍵を生成し、
前記暗号処理手段は、前記鍵生成手段により生成された暗号鍵を用いて、前記通信手段が受信した通信データを復号する、請求項１乃至請求項５のいずれかに記載の通信装置。
【請求項７】
それぞれ請求項６に記載の前記通信装置である送信側通信装置と、受信側通信装置と、を有し、
前記送信側通信装置における前記暗号処理手段は、前記送信側通信装置における前記クロック発生手段により生成された前記クロック情報に応じて前記鍵生成手段により生成された暗号鍵を用いて通信データを暗号化し、前記送信側通信装置における前記通信手段が、暗号化された通信データを前記受信側通信装置に送信し、
前記受信側通信装置における前記暗号処理手段は、前記受信側通信装置における前記クロック発生手段により生成された前記クロック情報を、前記調整情報を用いて調整し、調整後の前記クロック情報を用いて前記鍵生成手段により生成された暗号鍵を用いて、前記送信側通信装置から受信した通信データを復号する通信システム。
【請求項８】
通信装置が、
周期的なクロック信号を用いて、タイミングを表すクロック情報を生成し、
前記クロック情報に応じて、１以上の通信装置に共通して保存される情報である装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記クロック情報毎に異なる情報である選択情報を生成し、
前記クロック情報と、生成された前記選択情報とを少なくとも用いて、暗号鍵を生成し、
生成された暗号鍵を用いて、通信データに関する暗号化処理と復号処理との少なくとも一方を実行し、
他の前記通信装置との間で通信データを送受信し、
他の前記通信装置から受信した通信データを、正しく復号できない場合、
その通信データを受信した際の自装置における前記クロック情報とは異なる前記クロック情報である第１の推定クロック情報を１以上生成し、
前記第１の推定クロック情報に応じて前記装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記選択情報を生成し、
前記第１の推定クロック情報と、前記選択情報とを少なくとも用いて第１の推定暗号鍵を生成し、
生成された前記第１の推定暗号鍵を用いて、前記通信装置から受信した通信データを正しく復号できたか否かを判定した結果に応じて、他の前記通信装置において生成された前記クロック情報を推定する、通信方法。
【請求項９】
通信装置が、
周期的なクロック信号を用いて、タイミングを表すクロック情報を生成し、
前記クロック情報に応じて、１以上の通信装置に共通して保存される情報である装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記クロック情報毎に異なる情報である選択情報を生成し、
前記クロック情報と、生成された前記選択情報とを少なくとも用いて、暗号鍵を生成し、
生成された暗号鍵を用いて、通信データに関する暗号化処理と復号処理との少なくとも一方を実行し、
他の前記通信装置との間で通信データを送受信し、
自装置から送信された通信データを正しく復号できないことを表す通知を、他の前記通信装置から受信した場合、
自装置における前記クロック情報とは異なる前記クロック情報である第２の推定クロック情報を１以上生成し、
前記第２の推定クロック情報に応じて前記装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記選択情報を生成し、
前記第２の推定クロック情報と、前記選択情報とを少なくとも用いて第２の推定暗号鍵を生成し、
前記第２の推定暗号鍵を用いて暗号化された通信データを他の前記通信装置に送信し、
前記第２の推定暗号鍵を用いて暗号化された通信データを正しく復号できたことを表す通知を、他の前記通信装置から受信した場合、前記第２の推定クロック情報を、他の前記通信装置において生成された前記クロック情報と推定する、通信方法。
【請求項１０】
通信装置を構成するコンピュータに、
周期的なクロック信号を用いて、タイミングを表すクロック情報を生成する処理と、
前記クロック情報に応じて、１以上の通信装置に共通して保存される情報である装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記クロック情報毎に異なる情報である選択情報を生成する処理と、
前記クロック情報と、生成された前記選択情報とを少なくとも用いて、暗号鍵を生成する処理と、
生成された暗号鍵を用いて、通信データに関する暗号化処理と復号処理との少なくとも一方を実行する処理と、
他の前記通信装置との間で通信データを送受信する処理と、
他の前記通信装置から受信した通信データを、正しく復号できない場合、
その通信データを受信した際の自装置における前記クロック情報とは異なる前記クロック情報である第１の推定クロック情報を１以上生成する処理と、
前記第１の推定クロック情報に応じて前記装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記選択情報を生成する処理と、
前記第１の推定クロック情報と、前記選択情報とを少なくとも用いて第１の推定暗号鍵を生成する処理と、
生成された前記第１の推定暗号鍵を用いて、前記通信装置から受信した通信データを正しく復号できたか否かを判定した結果に応じて、他の前記通信装置において生成された前記クロック情報を推定する処理と、を実行させる通信プログラム。
【請求項１１】
通信装置を構成するコンピュータに、
周期的なクロック信号を用いて、タイミングを表すクロック情報を生成する処理と、
前記クロック情報に応じて、１以上の通信装置に共通して保存される情報である装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記クロック情報毎に異なる情報である選択情報を生成する処理と、
前記クロック情報と、生成された前記選択情報とを少なくとも用いて、暗号鍵を生成する処理と、
生成された暗号鍵を用いて、通信データに関する暗号化処理と復号処理との少なくとも一方を実行する処理と、
他の前記通信装置との間で通信データを送受信する処理と、
自装置から送信された通信データを正しく復号できないことを表す通知を、他の前記通信装置から受信した場合、
自装置における前記クロック情報とは異なる前記クロック情報である第２の推定クロック情報を１以上生成する処理と、
前記第２の推定クロック情報に応じて前記装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記選択情報を生成する処理と、
前記第２の推定クロック情報と、前記選択情報とを少なくとも用いて第２の推定暗号鍵を生成する処理と、
前記第２の推定暗号鍵を用いて暗号化された通信データを他の前記通信装置に送信する処理と、
前記第２の推定暗号鍵を用いて暗号化された通信データを正しく復号できたことを表す通知を、他の前記通信装置から受信した場合、前記第２の推定クロック情報を、他の前記通信装置において生成された前記クロック情報と推定する処理と、を実行させる通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、暗号化された通信データを用いて通信を行う技術に関する。
【背景技術】
【０００２】
近年、通信装置の間で暗号化されたデータを送受信する通信方法（以下、「暗号通信」と記載する）が広く用いられている。暗号通信においては、各通信装置が、秘密情報（例えば鍵）を用いて、通信データの暗号化処理及び復号処理を実行する。以下、データの暗号化処理及び復号処理を、まとめて「暗号処理」と記載する。暗号化されていないデータを「平文データ」と記載し、平文データを暗号化したデータを「暗号文データ」と記載する。暗号化に用いられる鍵と、復号に用いられる鍵とをまとめて「暗号鍵」と記載する。暗号化に用いられる鍵と復号に用いられる鍵とは同じ鍵データであってもよく（例えば、共通鍵暗号方式）、異なる鍵データのペアであってもよい（例えば公開鍵暗号方式）。【０００３】
暗号鍵が漏洩した場合、その暗号鍵を用いて暗号化された暗号文が危殆化する。また、同じ暗号鍵を用いて暗号化された暗号文の数が増大すると、暗号処理に対する攻撃の手掛かりを攻撃者に与える可能性がある。このため、暗号通信においては、暗号鍵が適宜変更されることがある。【０００４】
このような暗号通信に関連する技術が特許文献１に記載されている。即ち、特許文献１には、端末及びホストが予め同じ内容の鍵データテーブルを有し、当該端末とホストとの間で同期された時計データを用いて、鍵データテーブルから暗号鍵を選択する方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−１０１５２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
各通信装置が暗号通信を実行する際、暗号処理に用いられる暗号鍵が各通信装置に配布される。しかしながら、通信装置が配備される環境及び通信装置が稼働する状況によっては、係る暗号鍵の配布が容易ではない場合がある。【０００７】
例えば、暗号鍵が漏洩するリスクを低減する観点から、各通信装置に対してオフラインで（即ち通信路を介さずに）暗号鍵が配布される場合がある。この場合、通信装置の配備場所や、通信装置の数によっては、各通信装置に対して人手により暗号鍵を配布することは必ずしも容易ではない。暗号鍵の配布が容易ではない場合、暗号鍵を適切に変更できない可能性がある。換言すると、各通信装置は、暗号通信において、安全性の観点から適切な暗号鍵を使用することができない可能性がある。【０００８】
ところで、上記特許文献１には、暗号鍵を配布するかわりに、予め用意された鍵データテーブルから暗号鍵を選択することで、暗号鍵を変更する方法が記載されている。係る技術においては、暗号鍵のバリエーションが、鍵データテーブルに予め登録された暗号鍵に限定される。このため、暗号鍵の変更による安全性の改善が限定的であると考えられる。また、特許文献１に係る技術においては、鍵データテーブル自体が危殆化した場合に、鍵データテーブル自体を適切に変更する方法が考慮されていない。【０００９】
本開示は、上記のような事情を鑑みてなされたものである。即ち、本開示は、通信装置が適切な暗号鍵を用いて暗号通信を実行することを可能とする技術を提供することを、主たる目的の一つとする。
【課題を解決するための手段】
【００１０】
上記の目的を達成すべく、本開示の１態様に係る通信装置は、１以上の通信装置に共通して保存される情報である装置情報を記憶可能な装置情報管理部と、周期的なクロック信号を用いて、タイミングを表すクロック情報を生成するクロック発生部と、上記クロック情報に応じて１以上の上記装置情報の少なくとも一部を選択し、選択した上記装置情報の少なくとも一部から、上記クロック情報毎に異なる情報である選択情報を生成する装置情報選択部と、上記クロック情報と、上記装置情報選択部により生成された上記選択情報とを少なくとも用いて、暗号鍵を生成する鍵生成部と、生成された暗号鍵を用いて、暗号化処理と復号処理との少なくとも一方を実行する暗号処理部と、を備える。【００１１】
また、本開示の１態様に係る通信方法は、周期的なクロック信号を用いて、タイミングを表すクロック情報を生成し、上記クロック情報に応じて、１以上の通信装置に共通して保存される情報である装置情報の少なくとも一部を選択し、選択した上記装置情報の少なくとも一部から、上記クロック情報毎に異なる情報である選択情報を生成し、上記クロック情報と、上記装置情報選択部により生成された上記選択情報とを少なくとも用いて、暗号鍵を生成し、生成された暗号鍵を用いて、暗号化処理と復号処理との少なくとも一方を実行する。【００１２】
また、同目的は、上記構成を有する通信装置、通信方法をコンピュータによって実現するコンピュータ・プログラム、及び、そのコンピュータ・プログラムが格納されているコンピュータ読み取り可能な記憶媒体等によっても達成される。【００１３】
即ち、本開示の1態様に係るコンピュータプログラムは、通信装置を構成するコンピュータに、周期的なクロック信号を用いて、タイミングを表すクロック情報を生成する処理と、上記クロック情報に応じて、１以上の通信装置に共通して保存される情報である装置情報の少なくとも一部を選択し、選択した上記装置情報の少なくとも一部から、上記クロック情報毎に異なる情報である選択情報を生成する処理と、上記クロック情報と、生成された上記選択情報とを少なくとも用いて、暗号鍵を生成する処理と、
生成された暗号鍵を用いて、通信データに関する暗号化処理と復号処理との少なくとも一方を実行する処理と、を実行させるよう構成される。
【発明の効果】
【００１４】
本開示によれば、各通信装置は、適切な暗号鍵を用いて暗号通信を実行可能である。
【図面の簡単な説明】
【００１５】
【図１Ａ】図１Ａは、本開示の第１の実施形態における通信装置の機能的な構成を例示するブロック図である。
【図１Ｂ】図１Ｂは、本開示の第１の実施形態における通信装置の他の機能的な構成を例示するブロック図である。
【図２Ａ】図２Ａは、本開示の第１の実施形態における通信装置を実現可能なハードウェア構成の一例を示す説明図である。
【図２Ｂ】図２Ｂは、本開示の第１の実施形態における通信装置を実現可能なハードウェア構成の他の一例を示す説明図である。
【図２Ｃ】図２Ｃは、本開示の第１の実施形態における通信装置を実現可能なハードウェア構成の更に他の一例を示す説明図である。
【図３】図３は、本開示の第１の実施形態における通信装置の動作（暗号処理）を説明するフローチャート（その１）である。
【図４】図４は、本開示の第１の実施形態における通信装置の動作（暗号鍵の生成処理）を説明するフローチャート（その２）である。
【図５】図５は、本開示の第１の実施形態における通信装置の動作（暗号鍵の更新処理）を説明するフローチャート（その３）である。
【図６】図６は、本開示の第１の実施形態における通信装置の動作（クロック情報の調整処理）を説明するシーケンス図（その１）である。
【図７】図７は、本開示の第１の実施形態における通信装置の動作（クロック情報の調整処理）を模式的に説明する説明図である。
【図８】図８は、本開示の第１の実施形態における通信装置の動作（クロック情報の調整処理）を説明するシーケンス図（その２）である。
【図９】図９は、本開示の第１の実施形態における通信装置が保持するクロック情報の調整情報に関する具体例を模式的に示す説明図である。
【図１０】図１０は、本開示の第１の実施形態における通信装置による暗号鍵の調整に関する具体例を模式的に示す説明図である。
【図１１Ａ】図１１Ａは、本開示の第１の実施形態における通信装置による装置情報の受渡しに関する具体例を模式的に示す説明図（その１）である。
【図１１Ｂ】図１１Ｂは、本開示の第１の実施形態における通信装置による装置情報の受渡しに関する具体例を模式的に示す説明図（その２）である。
【図１２】図１２は、本開示の第１の実施形態における通信装置を構成する装置情報選択部の構成例を示す説明図である。
【図１３】図１３は、本開示の第１の実施形態における通信装置の動作（選択情報及び暗号鍵の生成処理）を例示するフローチャートである。
【図１４Ａ】図１４Ａは、本開示の第２の実施形態における通信装置の機能的な構成を例示するブロック図である。
【図１４Ｂ】図１４Ｂは、本開示の第２の実施形態における通信装置の他の機能的な構成を例示するブロック図である。
【発明を実施するための形態】
【００１６】
本開示の実施形態に関する説明に先立って、本開示に関する技術的な検討事項等についてより詳細に説明する。
【００１７】
上記したように、暗号通信を実行可能な各通信装置は、通信データに関する暗号処理に用いられる暗号鍵を有する。例えば、共通鍵暗号方式を用いる場合、ある通信装置は、他の通信装置と共通の暗号鍵を用いて、通信データに関する暗号処理を実行する。例えば、公開鍵暗号方式を用いる場合、ある通信装置は、他の通信装置が開示した公開鍵を用いて通信データを暗号化する。この場合、暗号化された通信データを受信した通信装置は、秘密鍵を用いて当該通信データを復号する。どちらの場合も、それぞれの通信装置には、暗号鍵が配布される。
【００１８】
暗号通信において、同じ暗号鍵を用いて暗号化されたデータが増大すると、攻撃者が入手可能な暗号解読の手掛かりが増大し得る。このようなリスクを低減する観点から、暗号通信においては、暗号鍵を適切に変更する処理が実行される。
【００１９】
暗号鍵が変更される際、各通信装置に対して暗号鍵が配布されることがある。オンラインにより（即ち通信回線を介して）、暗号鍵を配布する一般的な方法は広く用いられている。しかしながら、例えば、オンラインによる暗号鍵の配布において万が一暗号鍵が漏洩した場合、暗号通信の実行者は、暗号鍵の漏洩及び攻撃者による通信データの解読に気付けない可能性がある。
【００２０】
暗号鍵の漏洩に関するリスクを低減する方法の一つとして、オフラインにより（即ち、通信回線を介さずに）暗号鍵を配布する方法が考えられる。オフラインにより暗号鍵を配布する方法の一つとして、例えば、暗号通信の実行者及び通信装置のユーザ（以下単に「ユーザ」と記載する）は、各通信装置に暗号鍵を手作業で配布することができる。しかしながら、通信装置の数が多い場合や、通信装置の配置場所が離間している場合、各通信装置に対して手作業で鍵を配布することは、必ずしも容易ではない可能性がある。暗号鍵の配布が容易ではない場合、暗号鍵を適切なタイミングで変更できない可能性がある。これにより、暗号通信の安全性に関する問題が引き起こされる可能性がある。
【００２１】
そこで、以下に説明する本開示の各実施形態においては、オフラインによる鍵配布の問題点を解決可能な通信装置等について説明する。各実施形態における通信装置は、例えば、各通信装置が保持する情報と、時間の経過に伴い変化する情報（例えば、時刻、経過時間、時刻又は経過時間に応じて増減するカウンタ値等）とを用いて、暗号鍵を生成する。例えば、各通信装置において、暗号鍵の生成に用いられる情報が共通する場合、各通信装置は共通する暗号鍵を生成可能である。これにより、各通信装置は、例えば、明示的に相互に暗号鍵を配布することなく、共通の暗号鍵を使用可能である。以下、各実施形態について詳細に説明する。
【００２２】
なお、以下の各実施形態に記載されている通信装置の構成は例示であり、本開示の技術範囲はそれらには限定されない。以下の各実施形態における通信装置を構成する構成要素の区分け（例えば、機能的な単位による分割）は、当該通信装置を実現可能な一例である。当該通信装置の実装に際しては、以下の例示に限定されず、様々な構成が想定される。即ち、以下の各実施形態における通信装置を構成する構成要素は、更に分割されてもよく、１以上の構成要素が統合されてもよい。
【００２３】
以下において説明する通信装置は、単体の装置（物理的あるいは仮想的な装置）を用いて構成されてもよく、複数の離間した装置（物理的あるいは仮想的な装置）を用いて実現されてもよい。以下において説明する通信装置、あるいは、その構成要素を実現可能なハードウェア構成については、後述する。
【００２４】
＜第１の実施形態＞
以下、本開示の第１の実施形態における通信装置について説明する。
【００２５】
［機能的な構成］
図１Ａは、本実施形態における通信装置１００の機能的な構成を例示するブロック図である。
【００２６】
通信装置１００は、暗号通信を実行可能な装置である。１つの通信装置１００に対して、１以上の他の通信装置１００が通信可能に接続される。各通信装置１００を接続する通信路は、例えば、無線通信、有線通信、又はそれらの組合せにより実現されてよい。また、係る通信に用いられる通信プロトコルは、特に制限されず、適宜選択されてよい。
【００２７】
図１Ａに例示するように、通信装置１００は、装置情報管理部１０１、クロック発生部１０２、装置情報選択部１０３、鍵生成部１０４、暗号処理部１０５を含む。通信装置１００は、通信部１０６及びデータ転送部１０７を含んでもよい。通信装置１００を構成するこれらの構成要素の間は、データ及び指令（コマンド）等を伝達可能に接続されていてもよい。以下、通信装置１００を構成するこれらの構成要素について説明する。
【００２８】
装置情報管理部１０１は、暗号通信における暗号鍵の生成に用いられるデータ（以下、「装置情報」と記載する）を記憶（保持）する。装置情報管理部１０１は、例えば、通信装置１００に固有の情報（例えば、通信装置１００に含まれるデバイスに関する情報等）を装置情報として保持してもよい。また、装置情報管理部１０１は、通信装置１００に対して外部から与えられるデータ（例えば、各種設定情報等）を装置情報として保持してもよい。
【００２９】
具体的な装置情報として、例えば、以下のような情報が用いられ得る。即ち、装置情報として、通信装置に含まれるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を識別可能なＩＤ（識別子：Ｉｄｅｎｔｉｆｉｅｒ）であるＣＰＵＩＤが用いられてもよい。装置情報として、例えば、通信装置に含まれる通信インタフェースに割り当てられたＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスが用いられてもよい。装置情報として、例えば、通信装置１００のシリアル番号、型式番号等が用いられてもよい。上記に限定されず、装置情報としては、その他の適切な情報が選択されてよい。
【００３０】
上記装置情報の一つのバリエーションとして、装置情報管理部１０１は、全ての通信装置１００に共通して含まれる、ある特定の共通データを保持してもよい。係る特定の共通データは、例えば、通信装置１００の製造、配備、稼働、メンテナンスなどの各場面で適宜設定されてよい。係る特定の共通データは、例えば、各通信装置１００が共通に保持する鍵（事前共有鍵）であってもよい。なお、通信装置１００が事前共有鍵を保持することは必須ではない。即ち、通信装置１００は、必要に応じて、事前共有鍵を保持してもよく、保持しなくてもよい。
【００３１】
ある通信装置１００と、他の通信装置１００とには、例えば、予め同じ内容の装置情報が与えられてもよい。ある通信装置１００と、他の通信装置１００とは、例えば、相互にデータを送受信することで、同じ内容の装置情報を保持してもよい。ある通信装置１００及び他の通信装置１００は、それぞれが保持するデータを用いて所定の演算を実行することで、同じ内容の装置情報を生成してもよい。
【００３２】
クロック発生部１０２は、周期的なクロック信号を用いて、タイミングを表す情報であるクロック情報を生成するよう構成される。クロック発生部１０２は、生成したクロック情報を、通信装置１００の他の構成要素に提供可能である。
【００３３】
クロック発生部１０２は、例えば、所定の周波数精度を満足するクロック信号を生成可能な適切なデバイス（発振デバイス等）を用いて、クロック信号を生成する。具体的には、クロック発生部１０２は、例えば、ルビジウム原子発振器、セシウム原子発振器等を含む原子時計を用いてクロック信号を生成してよい。この場合、クロック発生部１０２は、極めて高精度な（例えば、周波数精度が”±５×１０Ｅ−１１”程度）のクロック信号を生成することができる。
【００３４】
原子時計等の極めて高精度なデバイスを使用するかわりに、クロック発生部１０２は、例えば、一般的な水晶発振器を用いてクロック信号を生成してもよい。この場合、クロック発生部１０２は、クロック信号を適切に調整することにより、クロック信号の精度を維持してもよい。例えば、クロック発生部１０２は、クロック信号の立ち上がりのタイミング又は立下がりのタイミングを、特定のタイミングに合わせるように、クロック信号を調整してもよい。クロック信号を調整する特定のタイミングは、例えば、定期的なタイミングであってもよく、特定の時刻を表すタイミングあってもよい。
【００３５】
クロック発生部１０２は、例えば、通信装置１００の外部から与えられる時刻情報を用いて、クロック信号を調整してもよい。クロック発生部１０２が時刻情報を取得する方法は、特に限定されず、適切な方法を採用してよい。時刻情報を取得する方法の一例として、クロック発生部１０２は、例えば、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）信号、標準電波信号（ＪＪＹ）等から時刻方法を取得してもよい。クロック発生部１０２は、例えば、通信部１０６（後述）を介してＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）サーバから時刻情報を取得してもよい。ＧＰＳ、標準電波、ＮＴＰからは、原子時計を用いて生成された正確な時刻情報を得ることができることから、クロック発生部１０２は正確な時刻情報を用いてクロック信号を調整可能である。
【００３６】
クロック発生部１０２が生成するクロック情報は、例えば、周期的なクロック信号そのものを表す情報であってもよい。また、クロック情報は、あるタイミングからのクロック信号を計数したカウンタ値を表す情報であってもよい。また、クロック発生部１０２は、時刻を表す情報を含むクロック情報を生成してもよい。この場合、クロック発生部１０２は、外部から取得した時刻情報と、生成したクロック信号とを用いて、あるタイミングにおける時刻を含むクロック情報を生成することができる。また、クロック発生部１０２は、あるタイミングからの経過時間を表す情報を含むクロック情報を生成してもよい。
【００３７】
クロック発生部１０２は、他の通信装置１００との間でクロック情報の差分を調整する処理を実行するよう構成されてもよい。クロック情報の差分を調整する処理については、後述する。
【００３８】
装置情報選択部１０３は、クロック発生部１０２から提供されるクロック情報に応じて、装置情報管理部１０１に保持された装置情報の少なくとも一部を選択し、選択した情報を用いて、クロックに応じて異なる情報である選択情報を生成する。即ち、装置情報選択部１０３は、装置情報管理部１０１に保持された装置情報の少なくとも一部を用いて、クロック情報毎に異なる情報を生成する。以下、装置情報管理部１０１に保持された装置情報の少なくとも一部を選択する方法を、「選択アルゴリズム」と記載する場合がある。
【００３９】
選択情報を生成する具体的な方法は、特に限定されない。装置情報選択部１０３は、例えば、装置情報と、クロック情報とを入力として所定の演算処理を実行することにより、クロック情報に応じて異なる情報を生成してもよい。
【００４０】
装置情報選択部１０３は、クロック発生部１０２から提供されるクロック情報を、当該クロック情報に関する特定の範囲毎に、代表値（例えば、当該範囲の上限値、下限値、中央値等）に変換してもよい。
【００４１】
例えば、クロック情報が時刻を表す場合、装置情報選択部１０３は、クロック情報により表される時刻を、ある時間範囲の代表値に変換してもよい。一つの具体例として、係る時間範囲が「１０秒」に設定されている場合を想定する。この場合、装置情報選択部１０３は、例えば、０秒以上１０秒未満の時間を、代表値（下限値）である「０秒」に変換してもよい。同様に、装置情報選択部１０３は、例えば、１０秒以上２０秒未満の時間を、代表値（下限値）である「１０秒」に変換してもよい。２０秒以上の時間についても同様である。なお、係る時間範囲はより短い時間の範囲（例えばミリ秒単位等）であってもよく、より長い時間の範囲（例えば、分単位、時間単位等）であってもよい。
【００４２】
例えば、クロック情報がカウンタ値を表す場合、装置情報選択部１０３は、クロック情報により表されるカウンタ値を、ある範囲の代表値に変換してもよい。係るカウンタ値の範囲として、例えば「１００」が設定されている場合を想定する。この場合、装置情報選択部１０３は、例えば、０以上１００未満のカウンタ値を、代表値（下限値）である「０」に変換してもよい。同様に、装置情報選択部１０３は、例えば、１００以上２００未満のカウンタ値を、代表値（下限値）である「１００」に変換してもよい。カウンタ値２００以上についても同様である。係るカウンタ値の範囲は、より小さな範囲であってもよく、より大きな範囲であってもよい。
【００４３】
上記のような処理により、装置情報選択部１０３は、クロック情報が所定の範囲内で変動した場合であっても、代表値をクロック情報として用いることで、変動による影響を吸収することができる。
【００４４】
以下、選択情報を生成する方法の具体例について説明する。
【００４５】
例えば、装置情報管理部１０１に、装置情報として、「装置情報＃１」、「装置情報＃２」、「装置情報＃３」・・・、「装置情報＃ｉ」の”ｉ個”（ｉは正整数）の情報を表すデータが保持されていることを想定する。
【００４６】
装置情報の少なくとも一部を選択する方法として、装置情報選択部１０３は、例えば、クロック情報に応じて、ｉ個の装置情報から１以上の装置情報を選択してもよい。例えば、装置情報選択部１０３は、クロック情報を数値として扱い、係る数値の”ｉ”による剰余（以下”ｍｏｄ  ｉ”と記載する）を算出してもよい。そして、装置情報選択部１０３は、ｉ個の装置情報の内、”ｍｏｄ  ｉ”個目の装置情報を選択してもよい。
【００４７】
装置情報の少なくとも一部を選択する他の方法として、装置情報選択部１０３は、例えば、装置情報を表すデータを１以上の部分に分割し、クロック情報に応じて、そのうちの１以上の部分を選択してもよい。
【００４８】
具体的には、例えば、装置情報選択部１０３は、装置情報＃１〜装置情報＃ｉのうち、１以上の装置情報を選択し、当該装置情報を表すデータを、それぞれｎ（ｎは自然数）個の部分に分割する。例えば、装置情報選択部１０３は、装置情報を表すデータのサイズに応じて当該データをｎ等分してもよい。装置情報を表すデータを分割する方法は、上記に限定されず、適切な方法を適宜選択してよい。装置情報選択部１０３は、それぞれの装置情報を表すデータから１以上の部分を選択し、それらを結合してもよい。
【００４９】
装置情報の少なくとも一部を選択する他の方法として、装置情報選択部１０３は、例えば、クロック情報に応じて、ｉ個の装置情報から１以上の装置情報を選択してランダムに並べたデータを生成してもよい。
【００５０】
装置情報の少なくとも一部を選択する他の方法として、装置情報選択部１０３は、例えば、ｉ個の装置情報を並べて結合したデータから、クロック情報に応じて、一部のデータを抽出してもよい。例えば、ｉ個の装置情報を並べたデータのサイズが”Ｎ”ビット（ｂｉｔ）であると想定する。装置情報選択部１０３は、”Ｎ”ビットのデータから、ランダムに”ｎ”ビットのデータを選択してもよい。この場合、装置情報選択部１０３は、例えば、クロック情報をシードとして、１以上”Ｎ”以下の乱数を”ｎ”個生成する。ある乱数の値が”ｊ”（１≦ｊ≦Ｎ）である場合、装置情報選択部１０３は、”Ｎ”ビットのデータのうち”ｊ”ビット目のデータを抽出する。上記処理を”ｎ”個の乱数について実行することで、装置情報選択部１０３は、少なくとも”ｎ”ビットのデータを抽出可能である。
【００５１】
装置情報の少なくとも一部を選択する方法は上記例示に限定されない。装置情報選択部１０３は、装置情報の少なくとも一部を選択する方法として、上記方法を適宜組み合わせてもよく、上記とは異なる方法を適宜採用してもよい。上記のような処理により、装置情報選択部１０３は、クロック情報に応じて、装置情報の少なくとも一部を選択可能である。
【００５２】
装置情報選択部１０３は、選択した１以上の装置情報（あるいはその一部）をそのまま選択情報として提供してもよい。装置情報管理部１０１が保持する装置情報のバリエーションが十分に多い場合は、装置情報選択部１０３は、これにより、クロック情報に応じて異なる選択情報を提供することができる。
【００５３】
また、装置情報選択部１０３は、選択した装置情報（あるいはその一部）と、クロック情報とを用いて所定の演算処理を実行した結果を、選択情報として提供してもよい。装置情報選択部１０３は、例えば、選択した装置情報及びクロック情報を含むデータ（例えば、選択した装置情報とクロック情報とを結合したデータ）のハッシュ値を算出し、係るハッシュ値を選択情報として提供してもよい。装置情報選択部１０３は、ハッシュ関数として、暗号論的に安全なハッシュ関数（例えば、ＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）−２等）を用いてもよい。これにより、装置情報管理部１０１が保持する装置情報のバリエーションが比較的少ない場合であっても、クロック情報に応じて異なる情報を選択情報として生成することが可能である。即ち、暗号鍵の生成に用いられる情報のバリエーションを増やすことができる。また、ハッシュ値から元のデータ（例えば、装置情報の一部）を算出することは困難であることから、選択情報の生成に用いられるデータを秘匿することが可能である。
【００５４】
鍵生成部１０４は、クロック発生部１０２から提供されるクロック情報と、装置情報選択部１０３により生成された選択情報とを用いて、暗号鍵を生成する。
【００５５】
鍵生成部１０４は、例えば、選択情報とクロック情報とをシードとして、暗号論的に安全な周知の疑似乱数生成器を用いて乱数を生成し、当該乱数を暗号鍵として提供してもよい。また、鍵生成部１０４は、例えば、選択情報を鍵として用いて、暗号論的に安全な周知の暗号アルゴリズムを用いてクロック情報を暗号化した結果を、暗号鍵として提供してもよい。また、鍵生成部１０４は、適切なハッシュ関数を用いて算出した選択情報及びクロック情報のハッシュ値を、暗号鍵として提供してもよい。これにより、鍵生成部１０４は、選択情報と、クロック情報とに応じて異なる暗号鍵を生成することができる。
【００５６】
なお、鍵生成部１０４は、装置情報選択部１０３と同様に、クロック発生部１０２から提供されるクロック情報を、当該クロック情報に関する所定の範囲毎に、代表値に変換してもよい。これにより、鍵生成部１０４は、クロック情報が所定の範囲内で変動した場合であっても、代表値をクロック情報として用いることで、変動による影響を吸収することができる。
【００５７】
鍵生成部１０４は、適切なタイミングで暗号鍵を変更（更新）するよう構成される。鍵生成部１０４が暗号鍵を変更（更新）することにより、暗号通信の安全性を適切に維持することが可能である。
【００５８】
具体的には、鍵生成部１０４は、例えば、定期的に暗号鍵を生成して暗号処理部１０５（後述）に提供してもよい。鍵生成部１０４は、例えば、ある特定のタイミングで暗号鍵を生成して暗号処理部１０５に提供してもよい。鍵生成部１０４は、例えば、暗号処理部１０５からの要求に応じて暗号鍵を生成して、暗号処理部１０５に提供してもよい。
【００５９】
鍵生成部１０４は、暗号鍵を変更するタイミングを表す設定値を保持してもよい。例えば、クロック情報が時刻情報を含む場合、係る設定値には、暗号鍵が変更される時刻が設定されてもよい。例えば、クロック情報がカウンタ値を含む場合、係る設定には、暗号鍵が変更される際のカウンタ値が設定されてもよい。
【００６０】
暗号処理部１０５は、鍵生成部１０４が生成した暗号鍵を用いて、暗号処理を実行する。暗号処理部１０５が暗号処理に用いる暗号アルゴリズムは特に限定されず、例えば、暗号論的に安全性が確認された周知の暗号アルゴリズムを採用可能である。
【００６１】
暗号処理部１０５は、通信部１０６から暗号化された通信データを受け取り、鍵生成部１０４が生成した鍵データを用いて、当該通信データを復号する。暗号処理部１０５は、復号した通信データをデータ転送部１０７に提供してもよい。また、暗号処理部１０５は、鍵生成部１０４が生成した暗号鍵を用いて、データ転送部１０７から提供された平文の通信データを暗号化し、通信部１０６に提供する。
【００６２】
暗号処理部１０５は、通信部１０６（後述）が複数存在する場合、図１Ｂに例示するように、通信部１０６毎に暗号処理を並列に実行するよう構成されてもよい。例えば、暗号化実行部１０５ａは、暗号鍵を用いて、平文の通信データを暗号化する処理を実行する。また、復号実行部１０５ｂは、暗号化された通信データを通信部１０６から受け付け、暗号鍵を用いて当該通信データを復号する。暗号化実行部１０５ａ、復号実行部１０５ｂは、例えば、スレッド、プロセス、タスク等のソフトウェア・プログラムとして実現されてもよい。また、暗号化実行部１０５ａ、復号実行部１０５ｂは、例えば、並列処理を実行可能なハードウェアの回路要素として実現されてもよい。
【００６３】
暗号処理部１０５は、他の通信装置１００から受信した通信データを正しく復号できたか否かを、通信部１０６を用いて他の通信装置１００に対して通知するよう構成されてもよい。
【００６４】
通信部１０６は、暗号処理部１０５により暗号化された通信データを、他の通信装置１００との間で送受信する。具体的には、通信部１０６は、暗号処理部１０５から暗号化された通信データを受け付け、他の通信装置１００に送信する。通信部１０６は、他の通信装置１００から受信した暗号化された通信データを、暗号処理部１０５に提供する。
【００６５】
通信装置１００には、１以上の通信部１０６が設けられていてもよい。各通信部１０６は、それぞれ別の他の通信装置１００との間で通信データを送受信してもよい。即ち、通信部１０６と、当該通信部１０６が通信データを送受信する他の通信装置１００とは、１対１に対応していてもよい。また、一つの通信部１０６が、複数の他の通信装置１００に通信可能に接続されていてもよい。
【００６６】
通信部１０６は、当該通信部１０６が通信データを送受信する他の通信装置１００との間の通信路において生じる遅延を測定してもよい。通信路における遅延を測定する方法は、周知の技術を採用してよい。
【００６７】
データ転送部１０７は、通信データに関する転送処理を実行する。データ転送部１０７は、例えば暗号処理部１０５から提供された平文の通信データを解析し、当該通信データに関するルーティング、あるいは、スイッチング等の処理を実行する。
【００６８】
データ転送部１０７は、通信装置１００の内部又は外部で生成されたデータを受け付け、当該データを暗号処理部１０５により暗号化し、通信部１０６を介して他の通信装置１００に送信するよう構成されてもよい。
【００６９】
［ハードウェア構成］
上記のような機能的な構成を有する通信装置１００を実現可能なハードウェア構成の具体例について、図２Ａ乃至図２Ｃを参照して説明する。なお、図２Ａ乃至図２Ｃに例示するハードウェアは、通信装置１００を実現可能な具体例の一つであり、通信装置１００を実現可能なハードウェアはこれらに限定されない。また、図２Ａ乃至図２Ｃに例示するハードウェア構成は、物理的なハードウェアにより実現されてもよく、仮想化されたハードウェアにより実現されてもよい。以下、各図に例示した構成について説明する。
【００７０】
図２Ａに例示する通信装置１００は、プロセッサ２０１と、メモリ２０２と、クロック発生器２０３と、通信ポートを含む通信インタフェース２０４と、を含む。通信装置１００は、ストレージ２０５と、入出力インタフェース２０６と、ドライブ装置２０８と、更に含んでもよい。これらの構成要素は、例えば、適切な通信回線（通信バス等）を介して相互に接続されている。
【００７１】
図２Ａ乃至図２Ｃに例示される通信装置１００の、各構成要素は、例えば、それぞれの機能を提供可能な回路構成（ｃｉｒｃｕｉｔｒｙ）により実現されてもよい。係る回路構成は、例えば、ＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）等の集積回路や、当該集積回路を用いて実現されたチップセット等を含む。この場合、通信装置１００の構成要素が保持するデータは、例えば、ＳｏＣとして統合されたＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）領域やフラッシュメモリ領域、あるいは、当該ＳｏＣに接続された記憶デバイス（半導体記憶装置等）に記憶されてもよい。以下、各構成要素について説明する。
【００７２】
プロセッサ２０１は、汎用のＣＰＵやマイクロプロセッサであってもよく、プログラマブル素子を用いて実現された論理回路であってもよい。プロセッサ２０１は、メモリ２０２に読み出されたソフトウェア・プログラムに従って、処理を実行する。
【００７３】
メモリ２０２は、例えば、プロセッサ２０１から参照可能なＲＡＭ等のメモリデバイスである。メモリ２０２には、例えば、上記説明した通信装置１００の各構成要素を実現可能なソフトウェア・プログラムが記憶される。
【００７４】
例えば、装置情報管理部１０１は、プロセッサ２０１が装置情報管理プログラムを実行することにより実現されてもよい。装置情報管理部１０１が保持する装置情報は、例えば、後述するストレージ２０５に保持されてもよい。
【００７５】
例えば、クロック発生部１０２は、プロセッサ２０１がクロック発生プログラムを実行することにより実現されてもよい。この場合、クロック発生プログラムは、後述するクロック発生器２０３が提供するデータを用いて、クロック情報を生成する。なお、クロック発生プログラムに相当する機能が、クロック発生器２０３に組み込まれてもよい。
【００７６】
例えば、装置情報選択部１０３は、プロセッサ２０１が装置情報選択プログラムを実行することにより実現されてもよい。装置情報選択プログラムは、クロック発生プログラムからクロック情報を表すデータを取得し、装置情報管理プログラムにより提供される装置情報を取得する。
【００７７】
例えば、鍵生成部１０４は、プロセッサ２０１が鍵生成プログラムを実行することにより実現されてもよい。この場合、鍵生成プログラムは、クロック発生プログラムからクロック情報を取得し、装置情報選択プログラムにより提供される選択情報を取得する。
【００７８】
例えば、暗号処理部１０５は、プロセッサ２０１が暗号処理プログラムを実行することにより実現されてもよい。この場合、暗号処理プログラムは、例えば、鍵生成プログラムが提供する暗号鍵を取得する。また、暗号処理プログラムは、例えば、通信インタフェース２０４から暗号化された通信データを取得してよい。
【００７９】
データ転送部１０７は、プロセッサ２０１がデータ転送プログラムを実行することにより実現されてもよい。この場合、データ転送部は、例えば、暗号処理プログラムが提供する平文データを取得する。
【００８０】
プロセッサ２０１により実行される各ソフトウェア・プログラムは、例えば、共有メモリやプロセス間通信等の適宜の方法により、相互に各種データを伝達できるように構成されてもよい。
【００８１】
クロック発生器２０３は、例えば、クロック信号を生成するデバイス（例えば原子時計等）を含むデバイスである。また、クロック発生器２０３は、時刻情報を取得するデバイス（例えば、ＧＰＳユニット、標準電波受信ユニット等）を含んでもよい。クロック発生器２０３は、生成したクロック信号あるいは時刻情報を、他の構成要素に提供してよい。
【００８２】
通信インタフェース２０４は、通信ネットワークに接続される通信ポートと、データの送受信を制御するコントローラとを含むデバイスである。通信装置１００が有線通信回線に接続される場合、通信インタフェースには通信ケーブルが接続されてもよい。通信装置１００が無線通信回線に接続される場合、通信インタフェースには通信用のアンテナ等が接続されてもよい。図１Ａ、図１Ｂにおける通信部１０６は、通信インタフェース２０４を用いて実現されてよい。
【００８３】
ストレージ２０５は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置等の、不揮発性の記憶装置である。ストレージ２０５は、各種ソフトウェア・プログラム及び、当該ソフトウェア・プログラムが使用するデータ等を記憶可能である。
【００８４】
入出力インタフェース２０６は、例えば、入出力装置２０７との間の入出力を制御するデバイスである。入出力装置２０７は、例えば、通信装置１００と、ユーザとの間のインタフェースを実現するデバイス（ディスプレイ、操作ボタン、音声入出力デバイス等）であってもよい。なお、通信装置１００は、入出力インタフェース２０６を含まなくともよい。
【００８５】
ドライブ装置２０８は、例えば、後述する記憶媒体２０９に対するデータの読み込みや書き込みを処理する装置である。なお、通信装置１００は、ドライブ装置２０８を含まなくともよい。
【００８６】
記憶媒体２０９は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な記憶媒体である。上記ソフトウェア・プログラムは記憶媒体２０９に記録され、通信装置１００の出荷段階、あるいは運用段階等において、適宜ドライブ装置２０８を通じてストレージ２０５に格納されてもよい。上記の場合において、各種ソフトウェア・プログラムは、適当なツールを利用して通信装置１００にインストールされてもよい。上記の場合において、通信装置１００の構成要素は、上記各ソフトウェア・プログラムを構成するコード、あるいは係るコードが記録されたところの、コンピュータ読み取り可能な記憶媒体によって構成されると捉えることができる。
【００８７】
なお、各通信装置に対して手動で暗号鍵（例えば、事前共有鍵）を設定する場合、係る暗号鍵は、記憶媒体２０９を用いて各通信装置１００に配布されてもよい。
【００８８】
上記に限定されず、通信装置１００は、図２Ｂに例示するような構成により実現することも可能である。図２Ｂは、図２Ａの構成に対して、暗号処理デバイス２１０を更に含む。
【００８９】
暗号処理デバイス２１０は、暗号処理を実行する回路構成と、鍵生成処理を実行する回路構成等を含むデバイスである。暗号処理デバイス２１０は、例えば、ＦＰＧＡ（ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）や、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）を用いて実現されてもよい。
【００９０】
暗号処理デバイス２１０には、例えば、図１Ｂに例示する暗号化実行部１０５ａ及び復号実行部１０５ｂの処理を実行可能な回路が複数実装されてもよい。これらの回路は、通信インタフェース２０４が有する通信ポート毎に、当該通信ポートにおいて送受信される通信データに関する暗号処理を並列に実行してもよい。
【００９１】
なお、暗号処理デバイス２１０は、例えば、図２Ｃに例示するように、通信インタフェース２０４内に実装されてもよい。この場合、各通信インタフェース２０４に実装された暗号処理デバイス２１０は、当該通信インタフェース２０４に含まれる通信ポートにおいて送受信される通信データに関する暗号処理を実行する。
【００９２】
［動作］
上記のように構成された通信装置１００の動作について説明する。
【００９３】
（暗号鍵の生成及び暗号処理）
以下、通信装置１００における、暗号処理の実行について説明する。以下においては、説明の便宜上、ある通信装置１００（仮に「通信装置Ｘ」と記載する）と、他の通信装置１００（仮に「通信装置Ｙ」と記載する）とが同じ内容の装置情報を有することを想定する。また、それぞれの通信装置１００が原子時計を用いてクロック信号を生成すること、及び、当該クロック信号を用いて生成するクロック情報が同期していることを想定する。なお、２以上のクロック情報が同期しているとは、それらのクロック情報が同一であるか（即ち差分（ズレ）がない）、あるいは、それらの間の差分がある基準範囲内にあることを意味する。また、各通信装置は、共通鍵暗号方式を用いて通信データを暗号化することを想定する。
【００９４】
図３は、通信装置１００が他の通信装置１００と暗号通信を実行する際の動作の一例を表すフローチャートである。
【００９５】
ステップＳ３０１において、通信装置１００に装置情報が登録される。装置情報管理部１０１は、当該装置情報を保持する。例えば、通信装置に予め装置情報が設定されている場合、ステップＳ３０１は実行されなくともよい。各通信装置１００（例えば、通信装置Ｘ及び通信装置Ｙ）には、同じ内容の装置情報が登録されることを想定する。
【００９６】
通信装置１００におけるクロック発生部１０２は、クロック情報を生成する（ステップＳ３０２）。クロック発生部１０２は、上記したように、原子時計を用いてクロック信号を生成し、当該クロック信号を用いてクロック情報を生成する。原子時計は、精度の高いクロック信号を生成可能であり、短期間で誤差が蓄積する（即ちクロックのずれ（差分）が生じる）可能性は低い。よって、各通信装置１００のクロック信号が同期されている場合、係るクロック信号を用いて各通信装置１００は同じ内容のクロック情報を生成可能であると考えられる。よって、原子時計等を用いて高精度なクロック信号を生成できる場合、各通信装置１００は、他の通信装置１００との間のクロック情報の差分を頻繁に調整しなくてもよい。
【００９７】
クロック発生部１０２は、生成したクロック信号を計数したカウンタを表す情報を、クロック情報としてもよい。クロック信号の計数を開始するタイミングは適宜定められてよい。上記に限らず、クロック発生部１０２は、時刻を表す情報を含むクロック情報を生成してもよい。
【００９８】
通信装置１００は、ステップＳ３０１において登録された装置情報と、ステップＳ３０２において生成されたクロック情報とから、暗号鍵を生成する（ステップＳ３０３）。以下、図４を参照して、暗号鍵の生成処理について説明する。
【００９９】
通信装置１００における装置情報選択部１０３は、ステップＳ３０１において登録された装置情報と、ステップＳ３０２において生成されたクロック情報とから、選択情報を生成する（ステップＳ４０１）。装置情報選択部１０３は、クロック情報に応じて、装置情報管理部１０１に保持された装置情報の少なくとも一部を選択する。装置情報選択部１０３が装置情報の少なくとも一部を選択する動作の具体例は、上記において説明した通りである。
【０１００】
装置情報選択部１０３は、選択した装置情報の少なくとも一部を用いて、クロック情報毎に異なる選択情報を生成する。装置情報選択部１０３が選択情報を生成する動作の具体例は、上記において説明した通りである。
【０１０１】
装置情報選択部１０３は、上記説明したように、クロック発生部１０２から取得したクロック情報を、代表値に変換してもよい。これにより、各通信装置１００のクロック情報に微小な差分が生じた場合であっても係る差分を吸収することが可能であり、各通信装置１００（通信装置Ｘ及び通信装置Ｙ）が同じ選択情報を生成可能である。
【０１０２】
通信装置１００における鍵生成部１０４は、ステップＳ４０１において生成された選択情報と、クロック情報とから、暗号処理に用いられる暗号アルゴリズムに応じた暗号鍵を生成する（ステップＳ４０２）。鍵生成部１０４が、暗号鍵を生成する動作の具体例は、上記において説明した通りである。係る処理により、各通信装置１００（通信装置Ｘ及び通信装置Ｙ）は、同じ内容の暗号鍵を生成することができる。
【０１０３】
鍵生成部１０４は、上記説明したように、クロック発生部１０２から取得したクロック情報を、代表値に変換してもよい。これにより、各通信装置１００のクロック情報に微小な差分が生じた場合であっても係る差分を吸収することが可能である。
【０１０４】
上記処理により、通信装置１００は、クロック情報及び装置情報に応じて多様なバリエーションの暗号鍵を生成することが可能である。その理由は、クロック情報に応じて装置情報の一部が選択することにより、暗号鍵を生成する際に用いられる選択情報のバリエーションを増やせるからである。装置情報管理部１０１が保持する装置情報が比較的少量な場合でも、クロック情報を用いて選択情報を生成することにより、暗号鍵のバリエーションを増やすことができる。
【０１０５】
通信装置１００における暗号処理部１０５は、ステップＳ３０３（ステップＳ４０１乃至Ｓ４０２）において生成された暗号鍵を用いて暗号処理を実行する（ステップＳ３０４）。
【０１０６】
暗号処理部１０５は、例えば、データ転送部１０７から提供された平文データを暗号化し、通信部１０６に提供する。例えば、通信装置Ｘにおける通信部１０６は、暗号化された通信データを通信装置Ｙに送信する。
【０１０７】
暗号処理部１０５は、例えば、通信部１０６が受信した暗号化された通信データを復号し、データ転送部１０７に提供してよい。例えば、通信装置Ｘにおける通信部１０６は、通信装置Ｙから受信した暗号化されたデータを、通信装置Ｘにおける暗号処理部１０５に提供する。通信装置Ｘにおける暗号処理部１０５は、その通信データを復号し、通信装置Ｘにおけるデータ転送部１０７に提供する。
【０１０８】
（暗号鍵の更新）
以下、図５を参照して、暗号鍵の変更（更新）について説明する。以下において説明する、通信装置１００の各構成要素の処理（動作）は一つの具体例であり、ある処理（動作）を実行する構成要素は適宜選択可能である。一例として、以下の処理は、装置情報管理部１０１が、他の構成要素に指示を与えることにより実行されてもよい。
【０１０９】
鍵生成部１０４はクロック発生部１０２が生成するクロック情報を確認する（ステップＳ５０１）。
【０１１０】
鍵生成部１０４は、ステップＳ５０１における確認の結果、鍵変更タイミングが到来したか否かを判定する。鍵生成部１０４は、例えば、クロック発生部１０２から取得したクロック情報と、暗号鍵を変更するタイミングを表す設定値とを比較することで、鍵変更タイミングが到来したか否かを判定してもよい。
【０１１１】
例えば、クロック情報がカウンタ値を表す場合、鍵生成部１０４は、クロック情報に含まれるカウンタ値と、設定値に含まれるカウンタ値とを比較することで、鍵変更タイミングが到来したか否かを判定してもよい。
【０１１２】
また、例えば、クロック情報が時刻情報を表す場合、鍵生成部１０４は、クロック情報に含まれる時刻と、設定値に含まれる時刻とを比較することで、鍵変更タイミングが到来したか否かを判定してもよい。
【０１１３】
鍵変更タイミングが到来した場合（ステップＳ５０２においてＹＥＳ）、鍵生成部１０４は、暗号鍵生成処理を実行する（ステップＳ５０３）。ステップＳ５０３において実行される処理は、図４に例示するステップＳ４０１及びステップＳ４０２と同様としてよい。鍵生成部１０４は、生成した新たな暗号鍵を、暗号処理部１０５に提供してよい。
【０１１４】
鍵変更タイミングが到来していない場合（ステップＳ５０２においてＮＯ）、鍵生成部１０４は、ステップＳ５０１から処理を続行する。
【０１１５】
鍵生成部１０４は、鍵変更タイミングを更新する（ステップＳ５０４）。鍵生成部１０４は、例えば、暗号鍵を変更するタイミングを表す設定値に、暗号鍵を変更する次回のタイミングを設定する。
【０１１６】
鍵生成部１０４は、鍵更新処理を継続する場合（ステップＳ５０５においてＹＥＳ）、ステップＳ５０１から処理を続行する。鍵更新処理を継続しない場合（ステップＳ５０５においてＮＯ）、鍵生成部１０４は処理を終了する。
【０１１７】
上記説明した処理により、鍵生成部１０４は、適切なタイミングで暗号鍵を変更（更新）することができる。また、暗号鍵が変更される際、各通信装置１００に暗号鍵を明示的に配布しなくてもよい。その理由は、各通信装置１００が、同じ内容の装置情報と、クロック情報とを用いて暗号鍵を生成できるからである。具体的には、例えば、各通信装置１００が生成するクロック信号が同期していれば、各通信装置１００は、同じ内容のクロック情報を生成することができる。各通信装置１００は、同じタイミング（即ち同じクロック情報）で、同じ内容の装置情報を用いることで、同じ内容の暗号鍵を生成することができる。よって、暗号鍵を変更（更新）する際、各通信装置１００に対して暗号鍵を配布しなくてもよい。
【０１１８】
以上より、本実施形態における通信装置１００は、他の通信装置１００と、適切な暗号鍵を用いて暗号通信を実行することが可能である。
【０１１９】
なお、鍵生成部１４０が暗号鍵を変更した場合、暗号処理部１０５は、暗号処理に用いる暗号鍵を適宜変更してよい。例えば、送信側の通信装置１００から送信する１つのデータが、”Ｍ”（”Ｍ”は自然数）個の通信データ（例えば”Ｍ”個のパケット）に分割して送信される場合を想定する。１個目〜”ｍ”個目（”ｍ”は”Ｍ”未満の自然数）までのパケットを送信したタイミングで暗号鍵が変更された場合、暗号処理部１０５は、（”ｍ＋１”）個目〜”Ｍ”個目までのパケットを、変更された後の暗号鍵を用いて暗号化する。これにより、一つのデータが複数の部分（パケット）に分割され、部分毎に異なる暗号鍵を用いて暗号化される。これにより、仮にある部分の暗号化に用いられた暗号鍵が危殆化した場合であっても、データ全体が復号されることがない。
【０１２０】
各通信装置１００は、例えば、原子時計を用いて生成した高精度なクロック信号を用いてクロック情報を生成することから、各通信装置１００において暗号鍵が変更されるタイミングも、高い精度で同期され得る。よって、各通信装置１００は、暗号鍵が変更されたタイミングに応じて、一つのデータを、部分毎に異なる暗号鍵を用いて暗号化することが可能である。
【０１２１】
更に、暗号処理部１０５は、一つの通信データ（例えば一つのパケット）に対する暗号処理の途中で、暗号鍵を変更してもよい。仮に、”Ｍ”（”Ｍ”は自然数）バイト（ｂｙｔｅ）の通信データのうち、”ｍ”（”ｍ”は”Ｍ”未満の自然数）バイト目までのデータが暗号化されたタイミングで、暗号鍵が変更されることを想定する。具体的には、１〜”ｍ”バイトまでのデータはクロック情報ＣＫＬＩ（ｔ１）を用いて生成された暗号鍵ＫＥＹ（ｔ１）により暗号化され、（”ｍ＋１”）〜”Ｍ”バイトまでのデータは、クロック情報ＣＬＫＩ（ｔ１＋１）を用いて生成された暗号鍵ＫＥＹ（ｔ１＋１）により暗号化されることを想定する。
【０１２２】
この場合、送信側の通信装置１００は、例えば、異なる暗号鍵により暗号化された各部分を特定可能なデータと、各部分の暗号化に用いられた暗号鍵を特定可能なデータとを、ＫＥＹ（ｔ１＋１）により暗号化して、通信データに付加する。以下、付加されたデータを「付加データ」と記載する。異なる暗号鍵により暗号化された各部分を特定可能なデータは、例えば、先頭からのオフセットと、サイズとの組合せ（例えばオフセットが「０バイト」、サイズが「ｍバイト」等）とを含んでもよい。通信データの各部分の暗号化に用いられた暗号鍵を特定可能な情報は、例えば、当該暗号鍵の生成に用いられたクロック情報（例えば、ＣＬＫＩ（ｔ１））を表してもよい。
【０１２３】
上記のように暗号化された通信データは、送信側の通信装置１００におけるクロック情報がＣＬＫＩ（ｔ１＋１）のタイミングで送信される。この場合、受信側の通信装置１００は、例えば、クロック情報がＣＬＫＩ（ｔ１＋１）のタイミングで当該通信データを受信する。
【０１２４】
受信側の通信装置１００は、クロック情報ＣＬＫＩ（ｔ１＋１）を用いて、上記付加データを復号する。これにより、受信側の通信装置１００は、受信した通信データのうち、異なる暗号鍵により暗号化された各部分（例えば１〜ｍバイト目の部分、（ｍ＋１）〜Ｍバイト目の部分）を特定可能である。また、受信側の通信装置１００は、各部分の暗号化に用いられた暗号鍵を特定可能なデータから、暗号鍵（例えば、ＫＥＹ（ｔ１））を生成することができる。上記のような処理により、受信側の通信装置１００は、通信データの各部分を、適切な暗号鍵を用いて復号可能である。
【０１２５】
なお、暗号鍵を変更するタイミングは、暗号処理部１０５において用いられる暗号アルゴリズムに応じて適宜微調整されてもよい。例えば、ブロック暗号アルゴリズムが採用される場合、暗号鍵はブロック単位で変更されてもよい。例えば、ストリーム暗号アルゴリズムが採用される場合、疑似乱数生成器のシードとなる暗号鍵を適宜変更してもよい。
【０１２６】
（クロック情報の調整）
以下、通信を実行する通信装置１００の間で、暗号鍵の生成に用いられるクロック情報に差分（ずれ）が生じた場合に、係る差分を調整する動作について説明する。以下において説明する、通信装置１００の各構成要素の処理（動作）は一つの具体例であり、ある処理（動作）を実行する構成要素は適宜選択可能である。一例として、以下の処理は、装置情報管理部１０１が、他の構成要素に指示を与えることにより実行されてもよい。
【０１２７】
上記説明したように、暗号鍵はクロック情報を用いて生成される。例えば、送信側の通信装置１００（例えば通信装置Ｘ）において生成されるクロック情報と、受信側の通信装置１００（例えば通信装置Ｙ）において生成されるクロック情報とが異なる場合、通信データを暗号化する際に用いられる暗号鍵と、復号する際に用いられる暗号鍵とが異なる可能性がある。
【０１２８】
また、各通信装置１００の間の通信路において遅延が生じることがある。この結果、送信側の通信装置１００が送信した通信データが、受信側の通信装置１００に到着するまでの間に、受信側の通信装置１００において暗号鍵が更新される可能性がある。即ち、通信データを暗号化する際に用いられる暗号鍵と、復号する際に用いられる暗号鍵とが異なる場合がある。
【０１２９】
これに対して、例えば、ある通信装置１００が、他の通信装置１００のクロック情報を推定し、推定したクロック情報を用いて暗号鍵を生成することで、上記のような状況においても暗号通信を実行することが可能である。
【０１３０】
なお、各通信装置１００がクロック情報を調整するタイミングは、適宜選択可能である。即ち、各通信装置１００は、定期的にクロック情報を調整してもよく、設定値等により定められた所定のタイミングでクロック情報を調整してもよい。また、各通信装置１００は、受信側の通信装置１００において通信データの復号に失敗した際に、クロック情報を調整してもよい。
【０１３１】
以下、各通信装置１００が暗号鍵の生成に用いるクロック情報を調整する動作について、具体例を用いて説明する。
【０１３２】
各通信装置１００（例えば通信装置Ｘ及び通信装置Ｙ）がクロック情報の差分を調整する一つの方法として、少なくとも一方の通信装置が、他方の通信装置１００に対して、自装置のクロック情報を直接送信する方法が考えられる。以下、クロック情報の調整に用いられる通信データを、クロック調整データと記載する場合がある。
【０１３３】
他の通信装置１００（通信装置Ｘ）から、クロック調整データを受信した通信装置１００（通信装置Ｙ）は、例えば、クロック調整データに含まれるクロック情報と、クロック調整データを受信した際の自装置のクロック情報との差分を算出してよい。通信装置Ｙは、例えば、自装置において生成したクロック情報に当該差分を反映（例えば加算又は減算）することで、調整されたクロック情報を生成する。
【０１３４】
通信装置Ｙは、上記のように調整されたクロック情報を用いて、通信装置Ｘとの間で送受信する通信データに関する暗号処理に用いる暗号鍵を生成してよい。これにより、通信装置Ｘと、通信装置Ｙとは、同じ暗号鍵を用いて暗号処理を実行することが可能である。
【０１３５】
上記説明した方法の場合、通信装置１００の間でクロック調整データが転送されることから、通信路におけるクロック情報が漏洩する可能性がある。そのため、通信路におけるクロック情報の漏洩を防止するべく、各通信装置１００が、クロック調整データを暗号化して送受信することが考えられる。しかしながら、例えば、各通信装置１００においてクロック情報を用いて生成された暗号鍵は、クロック調整データを暗号化する暗号鍵として用いることができない場合がある。なぜならば、各通信装置１００におけるクロック情報に差分がある場合、各通信装置１００において生成される暗号鍵が異なるからである。
【０１３６】
そこで、各通信装置１００は、全ての通信装置１００が同じ装置情報を保持している場合には、当該装置情報を用いて、クロック調整データを暗号化する。例えば、各通信装置１００が装置情報として事前に共通の鍵（例えば、上記した事前共有鍵）を保持している場合、各通信装置１００は、係る事前共有鍵を用いてクロック調整データを暗号化し、他の通信装置１００に送信してもよい。
【０１３７】
具体的には、暗号処理部１０５は、事前共有鍵を用いて、クロック情報を暗号化し、通信部１０６が当該暗号化された通信データを他の通信装置１００に送信する。
【０１３８】
この場合、事前共有鍵はクロック調整データに関する暗号処理に用いられる。即ち、クロック調整データ以外の（通常の）通信データの暗号化に用いられる暗号鍵は、クロック調整データにより調整されたクロック情報を用いて生成される。換言すると、事前共有鍵は、通常の通信データの暗号化には使用されない。
【０１３９】
クロック情報の調整に必要なデータのサイズは比較的小さいと考えられることから、クロック調整データのサイズは比較的小さいと考えられる。また、原子時計等を用いて高精度なクロック信号を生成する場合、通信装置１００の間でクロック情報の差分（ズレ）が生じる頻度は低いと考えられる。従って、通信装置１００の間でクロック調整データが送信される回数も比較的少ないと考えられる。
【０１４０】
以上より、事前共有鍵を用いて暗号化される暗号文データの総量は比較的少ないことから、係る暗号文データを大量に収集することは容易ではなく、長時間を要すると考えられる。仮に事前共有鍵自体の変更（更新）頻度が低い場合であっても、暗号通信の安全性に関する問題が引き起こされる可能性は低いと考えられる。
【０１４１】
以下、各通信装置１００がクロック情報を調整する他の方法について説明する。各通信装置１００がクロック情報を調整するもう一つの方法として、受信側の通信装置１００が、送信側の通信装置１００におけるクロック情報を予測する方法が考えられる。以下、図６及び図７に示す具体例を参照して、係る方法について説明する。図６は、各通信装置１００がクロック情報を同期する過程を例示するシーケンス図である。図７は、通信装置１００のクロック情報を推定する方法を概念的に示す説明図である。なお、本実施形態は図６及び図７に示す具体例に限定されるものではない。
【０１４２】
図６及び図７に示す具体例においては、あるタイミングにおいて、送信側の通信装置１００（通信装置Ｘ）がクロック情報（ＣＬＫＩ（ｔ１））を生成し、受信側の通信装置１００（通信装置Ｙ）がクロック情報（ＣＬＫＩ（ｔ２））を生成することを想定する。即ち、各通信装置１００において生成されたクロック情報の間に差分がある。以下、受信側の通信装置Ｙが、送信側の通信装置Ｘにおいて生成されたクロック情報を推定する方法を説明する。
【０１４３】
通信装置Ｘは、適切なタイミングでクロック情報ＣＬＫＩ（ｔ１）を生成し（図６のステップＳ６０１）、当該クロック情報ＣＬＫＩ（ｔ１）を用いて暗号鍵（以下「ＫＥＹ（ｔ１）」と記載する）を生成する（図６のステップＳ６０２）。暗号鍵を生成する具体的な処理は上記説明した通りであり、係る処理には、クロック情報ＣＬＫＩ（ｔ１）に応じて選択情報を生成する処理も含まれてよい（以下同様）。
【０１４４】
通信装置Ｙは、適切なタイミングでクロック情報ＣＬＫＩ（ｔ２）を生成し（図６のステップＳ６０３）、当該クロック情報ＣＬＫＩ（ｔ２）を用いて暗号鍵（以下「ＫＥＹ（ｔ２）」と記載する）を生成する（図６のステップＳ６０４）。
【０１４５】
通信装置Ｘは、暗号鍵ＫＥＹ（ｔ１）を用いて通信データを暗号化し（図６のステップＳ６０５）、暗号化した通信データ（以下「Ｃ（ｔ１）」と記載する）を通信装置Ｙに送信する（図６のステップＳ６０６）。
【０１４６】
ステップＳ６０５において通信データＣ（ｔ１）を作成する際、通信装置Ｘは、通信データＣ（ｔ１）を正しく復号できたか否かを判定可能なデータ（検証用データ）を、通信データに付加してもよい。例えば、通信装置Ｘは、検証用データとして、暗号化する前の通信データのペイロードのハッシュ値を計算してもよい。通信装置Ｘは、当該ハッシュ値を通信データに結合してから、それら全体を暗号化することで、通信データＣ（ｔ１）を作成してもよい。あるいは、通信装置Ｘは、通信データにメッセージ認証コード又はメッセージ完全性符号を付加してもよい。メッセージ認証コード又はメッセージ完全性符号は、周知の技術を用いて生成可能である。
【０１４７】
通信装置Ｙは、暗号化された通信データＣ（ｔ１）を受信し（図６のステップＳ６０７）、暗号鍵ＫＥＹ（ｔ２）を用いて通信データＣ（ｔ１）を復号する（図６のステップＳ６０８）。係る復号処理は、例えば、通信装置Ｙにおける暗号処理部１０５が実行してよい。この際、通信装置Ｙ（暗号処理部１０５）は、通信データＣ（ｔ１）が正しく復号できたか否かを判定してよい。
【０１４８】
例えば、通信装置Ｙは、暗号鍵ＫＥＹ（ｔ２）を用いて復号した通信データＣ（ｔ１）のペイロードから算出したハッシュ値と、通信データＣ（ｔ１）に付加された検証用データとが等しい場合、通信データＣ（ｔ１）を正しく復号できたと判定してもよい。なお、通信データにメッセージ認証コードが設定されている場合、通信装置Ｙは、係るメッセージ認証コードを検証することで、通信データＣ（ｔ１）を正しく復号できたか否かを判定可能である。
【０１４９】
図６の具体例では、暗号鍵ＫＥＹ（ｔ２）は、暗号鍵ＫＥＹ（ｔ１）とは異なる暗号鍵であることから、通信装置Ｙは、ステップＳ６０８において、通信データＣ（ｔ１）を正しく復号することができない。
【０１５０】
この場合、通信装置Ｙは、例えば、クロック情報ＣＬＫＩ（ｔ２）とは異なるクロック情報ＣＬＫＩ（ｔｘ）を更に生成する（図６のステップＳ６０９）。例えば、通信装置Ｙにおける暗号処理部１０５は、クロック発生部１０２に係るクロック情報の生成を指示してもよい。以下、クロック情報ＣＬＫＩ（ｔ２）とは異なるクロック情報ＣＬＫＩ（ｔｘ）を、「第１の推定クロック情報」と記載する場合がある。図７を参照して具体的に説明する。
【０１５１】
通信装置Ｙ（クロック発生部１０２）は、例えば、クロック情報ＣＬＫＩ（ｔ２）を含む特定の範囲（より具体的には、例えば、クロック情報ＣＬＫＩ（ｔ２）を中心とした範囲）において、第１の推定クロック情報を生成してもよい。上記したように、通信装置Ｘ及び通信装置Ｙは高精度なクロック信号を用いてクロック情報を生成することから、それらの間に生じる差分（差異）は比較的小さいと考えられるからである。通信装置Ｘと、通信装置Ｙとの間のクロック情報の差分が小さい場合、通信装置Ｘのクロック情報ＣＬＫＩ（ｔ１）は、クロック情報ＣＬＫＩ（ｔ２）を中心とした特定の範囲に分布すると考えられる。なお、係る特定の範囲は、例えば、通信装置１００の開発段階における実験（あるいは配備段階における実測）等により適宜求めることが可能であり、通信装置１００に対して予め設定されていてもよい。
【０１５２】
図７に示す具体例の場合、通信装置Ｙ（クロック発生部１０２）は、例えば、クロック情報ＣＬＫＩ（ｔ２）とは異なるクロック情報（第１の推定クロック情報）として、クロック情報ＣＬＫＩ（ｔ２＿１）及びＣＬＫＩ（ｔ２＿２）を生成する。クロック情報ＣＬＫＩ（ｔ２＿１）及びＣＬＫＩ（ｔ２＿２）は、例えば、クロック情報ＣＬＫＩ（ｔ２）を含む特定のクロック情報の範囲に含まれてもよい。
【０１５３】
例えば、クロック情報ＣＬＫＩ（ｔ２）が、カウンタ値”Ｎ”（例えば、Ｎは正整数）を表す場合を想定する。この場合、通信装置Ｙは、例えば、カウンタ値”Ｎ”を含む特定の範囲（例えば、カウンタ値”Ｎ−ｎ”から、カウンタ値”Ｎ＋ｎ”の範囲、但し”ｎ”は正整数）に含まれるクロック情報を生成してもよい。図７に例示する具体例の場合、通信装置Ｙは、カウンタ値”Ｎ−１”を表すクロック情報ＣＬＫＩ（ｔ２＿１）、カウンタ値”Ｎ＋１”を表すクロック情報ＣＬＫＩ（ｔ２＿２）、を生成する。
【０１５４】
例えば、クロック情報ＣＬＫＩ（ｔ２）が、時刻”ｔ”を表す場合を想定する。この場合、通信装置Ｙは、例えば、時刻”ｔ”を含む特定の範囲（例えば、時刻”ｔ”から”Δｔ”（”Δｔ”：正整数）前の時刻から、時刻”ｔ”から”Δｔ”後の時刻まで、等）に含まれるクロック情報を生成してもよい。図７に例示する具体例の場合、通信装置Ｙは、時刻”ｔ−１”を表すクロック情報ＣＬＫＩ（ｔ２＿１）、時刻”ｔ＋１”を表すクロック情報ＣＬＫＩ（ｔ２＿２）を生成する。時刻の単位は適宜選択してよい（例えば、ミリ秒、秒、分等）。
【０１５５】
通信装置Ｙ（装置情報選択部１０３）は、は上記のように生成した第１の推定クロック情報を用いて、選択情報を生成する。通信装置Ｙ（鍵生成部１０４）は、生成された選択情報と、第１の推定クロック情報とを用いて、それぞれ暗号鍵（例えば、暗号鍵ＫＥＹ（ｔ２＿１）、暗号鍵ＫＥＹ（ｔ２＿２））を生成する（図６のステップＳ６１０）。以下、第１の推定クロック情報を用いて生成された暗号鍵を「第１の推定暗号鍵」と記載する場合がある。
【０１５６】
通信装置Ｙ（暗号処理部１０５）は、生成した暗号鍵（第１の推定暗号鍵）を用いて、通信データＣ（ｔ１）を復号する（図６のステップＳ６１１）。通信データＣ（ｔ１）の復号に成功したか否かを判定する方法は、上記説明した通りである。
【０１５７】
通信データＣ（ｔ１）を復号できた場合、通信装置Ｙ（暗号処理部１０５）は、復号に成功した暗号鍵の生成に用いられたクロック情報を、通信装置Ｘのクロック情報として推定する（図６のステップＳ６１２）。図７に示す具体例の場合、暗号鍵ＫＥＹ（ｔ２＿２）を用いて、通信データＣ（ｔ１）を正しく復号することが可能である。暗号鍵ＫＥＹ（ｔ２＿２）の生成に用いられたクロック情報は、クロック情報ＣＬＫＩ（ｔ２＿２）である。この場合、通信装置Ｙは、通信装置Ｘのクロック情報を、ＣＬＫＩ（ｔ２＿２）であると推定する。
【０１５８】
なお、通信装置Ｙは、特定のクロック情報の範囲に含まれるクロック情報（例えば、上記ＣＬＫＩ（ｔ２＿１）及びＣＬＫＩ（ｔ２＿２））を一つずつ生成し、当該クロック情報を用いて生成した暗号鍵により、通信データＣ（ｔ１）を復号可能か確認してもよい。
【０１５９】
上記方法により、通信装置１００は、クロック調整データを送受信することなく、他の通信装置１００におけるクロック情報を推定することができる。
【０１６０】
通信装置Ｙにおける鍵生成部１０４は、例えば、クロック情報ＣＬＫＩ（ｔ２）と、クロック情報ＣＬＫＩ（ｔ２＿２）との差分を、通信装置Ｘと通信装置Ｙとのクロック情報の差分として保存（記憶）してもよい。通信装置Ｙにおける鍵生成部１０４は、通信装置Ｘとの間の暗号通信に用いられる暗号鍵を生成する場合、クロック発生部１０２から取得したクロック情報を、当該差分を用いて調整し、調整後のクロック情報を用いて暗号鍵を生成してもよい。
【０１６１】
以下、各通信装置１００がクロック情報を調整する更にもう一つ方法について説明する。各通信装置１００がクロック情報を調整する更にもう一つの方法として、送信側の通信装置１００が、受信側の通信装置１００におけるクロック情報を予測する方法が考えられる。例えば、送信側の通信装置１００は、自装置から送信された通信データを正しく復号できないことを表す通知を受信側の通信装置１００から受け付けた場合に、受信側の通信装置１００におけるクロック情報を予測してもよい。
【０１６２】
以下、図８に例示するシーケンス図を参照して、係る方法について説明する。以下の説明においては、通信装置Ｘが生成するクロック情報をＣＬＫＩ（ｔ１）、通信装置Ｘが予測した通信装置Ｙのクロック情報をＣＬＫＩ（ｔ１＋Δｔ）と記載する。また、通信装置Ｘが予測した通信装置Ｙのクロック情報を、第２の推定クロック情報と記載する場合がある。
【０１６３】
送信側の通信装置１００（通信装置Ｘ）は、通信路における遅延、前回クロック情報を調整してから経過した時間、等を考慮して、受信側の通信装置１００（通信装置Ｙ）におけるクロック情報（第２の推定クロック情報）を推定する（ステップＳ８０１）。なお、通信路における遅延を計測する方法は、周知技術を採用可能である。
【０１６４】
通信装置Ｘは、例えば、自装置において生成したクロック情報ＣＬＫＩ（ｔ１）を含む特定のクロック情報の範囲において、第２の推定クロック情報を予測してもよい。例えば、通信装置Ｘにおける鍵生成部１０４が、クロック発生部１０２に対して、第２の推定クロック情報を生成するよう指示してもよい。
【０１６５】
通信装置Ｘ（装置情報選択部１０３）は、クロック情報ＣＬＫＩ（ｔ１＋Δｔ）を用いて選択情報を生成する。そして、通信装置Ｘ（鍵生成部１０４）は、クロック情報ＣＬＫＩ（ｔ１＋Δｔ）と、生成された選択情報と、から暗号鍵（ＫＥＹ（ｔ１＋Δｔ））を生成する（ステップＳ８０２）。以下、係る暗号鍵を「第２の推定暗号鍵」と記載する場合がある。通信装置Ｘ（暗号処理部１０５）は、生成した暗号鍵（第２の推定暗号鍵）を用いて、通信データを暗号化する（ステップＳ８０３）。
【０１６６】
通信装置Ｘ（通信部１０６）は、暗号化した通信データＣ（ｔ１＋Δｔ）を、通信装置Ｙに送信する（ステップＳ８０４）。
【０１６７】
通信装置Ｙにおいては、適切なタイミングでクロック情報ＣＬＫＩ（ｔ２）が生成され（ステップＳ８０５）、当該クロック情報ＣＬＫＩ（ｔ２）を用いて暗号鍵ＫＥＹ（ｔ２）が生成されている（ステップＳ８０６）。
【０１６８】
通信装置Ｙは、通信装置Ｘから通信データＣ（ｔ１＋Δｔ）を受信し（ステップＳ８０７）、暗号鍵ＫＥＹ（ｔ２）を用いて復号する（ステップＳ８０８）。
【０１６９】
通信装置Ｙは、ステップＳ８０８において通信データＣ（ｔ１＋Δｔ）を正しく復号できたか否かを、通信装置Ｘに通知する（ステップＳ８０９）。
【０１７０】
通信装置Ｘは、通信装置Ｙから受信した通知を確認する（ステップＳ８１０）。通信装置Ｙが通信データＣ（ｔ１＋Δｔ）を正しく復号できた場合、通信装置Ｘは、通信装置Ｙのクロックが（ｔ１＋Δｔ）であると推定する。この場合、通信装置Ｘは、自装置と、通信装置Ｙとのクロック情報の差分（Δｔ）を保存（記憶）してもよい。
【０１７１】
通信装置Ｘは、通信装置Ｙとの間で暗号通信を実行する際、自装置が生成するクロック情報に上記差分を反映することで、クロック情報を調整することができる。通信装置Ｘは、当該調整したクロック情報を用いて暗号鍵を生成することで、通信装置Ｙとの間で暗号通信を実行することができる。
【０１７２】
通信装置Ｙが通信データＣ（ｔ１＋Δｔ）の復号に失敗した場合、通信装置Ｘは、通信装置Ｙに関して予測したクロック情報を変更して（例えば、ＣＬＫＩ（ｔ１＋Δｔ２）に変更）する（ステップＳ８１２）。通信装置Ｘは、例えば、通信装置Ｙにおける復号処理が成功するまで、ステップＳ８０１乃至ステップＳ８１２を繰り返し実行してもよい。
【０１７３】
以上、各通信装置１００が、他の通信装置１００との間でクロック情報を調整する方法の具体例について説明した。
【０１７４】
各通信装置１００が複数の他の通信装置１００と通信する場合、通信装置１００における鍵生成部１０４は、クロック情報の調整に用いる調整情報を、他の通信装置１００と関連付けて保持してもよい（例えば、図９）。係る調整情報は、典型的には、ある通信装置１００において生成されるクロック情報と、他の通信装置１００において生成されるクロック情報との間の差分を表してもよい。
【０１７５】
（暗号鍵の調整）
以下、上記のように調整されるクロック信号を用いて、送信側の通信装置１００（通信装置Ｘ）と、受信側の通信装置１００（通信装置Ｙ）との間で用いられる暗号鍵を調整する方法について、図１０に示す具体例を用いて説明する。なお、図１０に示す具体例は、説明のための一例であり、本実施形態はこれに限定されない。以下において説明する、通信装置１００の各構成要素の処理（動作）は一つの具体例であり、ある処理（動作）を実行する構成要素は適宜選択可能である。
【０１７６】
上記説明したクロック情報の調整処理を実行した場合、図１０に例示するように、各通信装置１００は、他の通信装置１００に関するクロック情報の調整情報を保持する。即ち、通信装置Ｘは、通信装置Ｙに関するクロック情報の調整情報を保持し、通信装置Ｙは、通信装置Ｘに関するクロック情報の調整情報を保持する。
【０１７７】
この場合、通信データの送信側となる通信装置１００と、通信データの受信側となる通信装置１００とのいずれか一方が、調整したクロック情報を用いて暗号鍵を生成し、当該暗号鍵を用いて暗号処理を実行する。
【０１７８】
通信データの送信側となる通信装置１００と、通信データの受信側となる通信装置１００とのどちらが調整したクロック情報を用いて暗号鍵を生成するかは、予め定められていてもよく、各通信装置１００が他の通信装置１００と通信する際に選択してもよい。
【０１７９】
以下、通信データの送信側となる通信装置１００がクロック情報を調整する場合について説明する。
【０１８０】
通信装置Ｘから通信装置Ｙに通信データを送信する場合、通信装置Ｘ（特には、装置情報選択部１０３及び鍵生成部１０４）は、自装置が生成したクロック情報を、通信装置Ｙに対する調整情報（ｔ＿ｘｙ）を用いて調整する。具体的には、通信装置Ｘは、自装置が生成したクロック情報に調整情報を加算（又は減算）することで、クロック情報を調整してよい。通信装置Ｘは、調整したクロック情報を用いて、上記説明した方法により暗号鍵を生成し、当該暗号鍵を用いて通信データを暗号化する。一方、この場合、受信側の通信装置Ｙは、クロック情報を調整することなく暗号鍵を生成する。通信装置Ｙは、当該暗号鍵を用いて、通信装置Ｘから受信した暗号データを復号することができる。
【０１８１】
同様に、通信装置Ｙから通信装置Ｘに通信データを送信する場合、通信装置Ｙは、自装置が生成したクロック情報を、通信装置Ｘに対する調整情報（ｔ＿ｙｘ）を用いて調整する。通信装置Ｙは、調整したクロック情報を用いて、上記説明した方法により暗号鍵を生成し、当該暗号鍵を用いて通信データを暗号化する。一方、この場合、受信側の通信装置Ｘは、クロック情報を調整することなく暗号鍵を生成する。通信装置Ｘは、当該暗号鍵を用いて、通信装置Ｙから受信した暗号データを復号することができる。
【０１８２】
上記説明した動作により、送信側の通信装置１００がクロック情報を調整することで、受信側の通信装置１００がクロック情報を調整することなく、暗号通信を実行可能である。
【０１８３】
以下、通信データの受信側となる通信装置１００がクロック情報を調整する場合について説明する。
【０１８４】
例えば、通信装置Ｘから通信装置Ｙに通信データを送信する場合、通信装置Ｘは、自装置が生成したクロック情報を調整せずに、上記説明した方法により暗号鍵を生成し、当該暗号鍵を用いて通信データを暗号化する。一方、この場合、受信側の通信装置Ｙは、自装置が生成したクロック情報を、通信装置Ｘに対する調整情報（ｔ＿ｙｘ）を用いて調整する。通信装置Ｙは、当該暗号鍵を用いて、通信装置Ｘから受信した暗号データを復号することができる。
【０１８５】
例えば、通信装置Ｙから通信装置Ｘに通信データを送信する場合、通信装置Ｙは、自装置が生成したクロック情報を調整せずに、上記説明した方法により暗号鍵を生成し、当該暗号鍵を用いて通信データを暗号化する。一方、この場合の受信側の通信装置Ｘは、自装置が生成したクロック情報を、通信装置Ｙに対する調整情報（ｔ＿ｘｙ）を用いて調整する。通信装置Ｘは、当該暗号鍵を用いて、通信装置Ｙから受信した暗号データを復号することができる。
【０１８６】
上記説明した動作により、送信側の通信装置１００がクロック情報を調整せず、受信側の通信装置１００がクロック情報を調整することで、暗号通信を実行可能である。
【０１８７】
以上、通信装置１００の動作について説明した。以上のように構成された通信装置１００は、適切な暗号鍵を用いて、他の通信装置１００と暗号通信を実行することができる。その理由は、以下の通りである。
【０１８８】
即ち、各通信装置１００は、各通信装置１００が保持する装置情報の少なくとも一部と、クロック情報とを用いて、暗号鍵を生成する。各通信装置１００が、同じ内容の装置情報を保持しており、各通信装置において生成されるクロック情報が同期していれば、各通信装置１００は、同じ暗号鍵を生成可能である。即ち、各通信装置１００に対して、暗号鍵を明示的に配布しなくてもよい。
【０１８９】
各通信装置１００は、装置情報の少なくとも一部とクロック情報とを用いて暗号鍵を生成することから、予め定められた暗号鍵を共有する必要がない。また、生成される暗号鍵のバリエーションは、例えば、既知の暗号鍵のバリエーションに制限されることがない。
【０１９０】
各通信装置１００は、例えば原子時計等を用いて生成された高精度なクロック信号を用いてクロック情報を生成することから、各通信装置１００のクロック情報を、高い精度で同期することができる。よって、各通信装置１００は、例えば、係るクロック情報に応じて、同じタイミングで適宜暗号鍵を変更することができる。また、係る暗号鍵の変更に際して、変更後の暗号鍵を明示的に配布しなくてもよい。
【０１９１】
各通信装置１００は、クロック情報に差異が生じた場合には、上記説明したように、当該差異を調整する処理を実行可能である。仮にクロック情報に差異が生じた場合であっても、当該差異を調整することで、各通信装置１００は、他の通信装置１００との暗号通信に使用可能な暗号鍵を生成することができる。また、送信側の通信装置１００又は受信側の通信装置１００が適宜調整されたクロック情報を用いて暗号鍵を生成することで、他の通信装置１００と暗号通信を実行することができる。
【０１９２】
［第１の変形例］
以下、本実施形態における通信装置１００の第１の変形例について説明する。本変形例における通信装置１００を実現可能な機能的な構成は、第１の実施形態と同様としてよい。
【０１９３】
本変形例においては、装置情報管理部１０１及び暗号処理部１０５の動作が、上記第１の実施形態と相違する。以下、係る相違点について、図１１Ａ及び図１１Ｂに例示する具体例を用いて説明する。
【０１９４】
図１１Ａに示す具体例の場合、各通信装置１００（通信装置Ａ乃至通信装置Ｄ）における装置情報管理部１０１は、それぞれ当該通信装置１００に固有のデータ（ｄａｔａ１、ｄａｔａ２、ｄａｔａ３、ｄａｔａ４）を保持する。また、各通信装置１００における装置情報管理部１０１は、各機器に共通する装置情報を少なくとも１つ保持する。各機器に共通する装置情報は、例えば、上記説明した事前共有鍵であってもよい。上記説明したように、事前共有鍵は、各通信装置に共通する暗号鍵である。
【０１９５】
各通信装置１００における装置情報管理部１０１は、例えば、他の通信装置１００と通信を開始するタイミングにおいて、それぞれが保持する固有の装置情報を、相互に送受信する。この際、各通信装置１００は、例えば、事前共有鍵を用いて、固有の装置情報を含む通信データを暗号化する。
【０１９６】
具体的には、暗号処理部１０５が、事前共有鍵を用いて、装置情報管理部１０１が保持する各通信装置１００に固有の装置情報を含む通信データを暗号化する。通信部１０６が当該暗号化された通信データを他の通信装置１００に送信する。
【０１９７】
通信部１０６が、他の通信装置１００から、固有の装置情報を含む通信データを受信した場合、暗号処理部１０５は、事前共有鍵を用いて当該通信データを復号する。暗号処理部１０５は、復号した通信データに含まれる、他の通信装置１００に固有の装置情報を装置情報管理部１０１に提供してもよい。
【０１９８】
上記処理の結果、図１１Ｂに例示するように、各通信装置１００は、他の通信装置１００毎に、同じ内容の装置情報を保持することができる。例えば、通信装置Ａ及び通信装置Ｃは、装置情報として、それぞれｄａｔａ１及びｄａｔａ３を保持する。通信装置Ａ及び通信装置Ｄは、装置情報として、それぞれｄａｔａ１及びｄａｔａ４を保持する。通信装置Ｂ及び通信装置Ｄは、装置情報として、それぞれｄａｔａ２及びｄａｔａ４を保持する。
【０１９９】
以降の通信においては、例えば、通信装置Ａ及び通信装置Ｃにおける装置情報選択部１０３は、クロック情報と、装置情報（ｄａｔａ１及びｄａｔａ３）とを用いて、選択情報を生成する。通信装置Ａ及び通信装置Ｄにおける装置情報選択部１０３は、クロック情報と、装置情報（ｄａｔａ１及びｄａｔａ４）とを用いて、選択情報を生成する。通信装置Ｂ及び通信装置Ｄにおける装置情報選択部１０３は、クロック情報と、装置情報（ｄａｔａ２及びｄａｔａ４）とを用いて、選択情報を生成する。各通信装置１００における鍵生成部１０４は、上記のように生成された選択情報と、クロック情報とを用いて、暗号鍵を生成する。
【０２００】
上記処理により、各通信装置１００は、他の通信装置１００と通信する際、当該他の通信装置１００毎に異なる暗号鍵を使用することができる。図１１Ａ、図１１Ｂに例示する具体例の場合、通信装置Ａは、通信装置Ｃとの暗号通信と、通信装置Ｄとの暗号通信とにおいて、異なる暗号鍵を使用可能である。通信装置Ｄは、通信装置Ａとの間の暗号通信と、通信装置Ｂとの間の暗号通信とにおいて、異なる暗号鍵を使用可能である。
【０２０１】
これより、本変形例によれば、ある通信装置間（例えば通信装置Ａと通信装置Ｃ）の暗号鍵が危殆化しても、他の通信装置間（例えば通信装置Ａと通信装置Ｄ）の暗号通信に関する安全性への影響を低減可能である。
【０２０２】
なお、事前共有鍵は、各通信装置１００が送受信する装置情報の暗号化に用いられ、通常の通信データの暗号化には用いられない。即ち、事前共有鍵を用いて暗号化される暗号文データの総量は比較的少ないことから、係る暗号文データを大量に収集することは容易ではないと考えられる。よって、事前共有鍵に対する攻撃は、比較的困難であると考えられる。
【０２０３】
［第２の変形例］
以下、本実施形態における通信装置１００の第１の変形例について説明する。本変形例における通信装置１００を実現可能な機能的な構成は、第１の実施形態と同様としてよい。
【０２０４】
本変形例においては、装置情報選択部１０３の動作が、上記第１の実施形態と相違する。以下、係る相違点について説明する。
【０２０５】
本変形例における装置情報選択部１０３の構成例を図１２に示す。本変形例における装置情報選択部１０３は、それぞれが異なる選択アルゴリズムに従って装置情報の少なくとも一部を選択する選択処理部１２０１を複数有する。本変形例における装置情報選択部１０３は、クロック情報に応じて、複数の選択処理部１２０１から少なくとも１以上の選択処理部１２０１を選択し、その選択処理部１２０１により選択された装置情報の少なくとも一部を用いて、選択情報を生成する。
【０２０６】
図１２に例示する構成の場合、装置情報選択部１０３は、一例として、選択処理部Ａ、選択処理部Ｂ、選択処理部Ｃを有する。なお、選択処理部１２０１の数は特に限定されず、適宜定められてよい。各選択処理部１２０１（選択処理部Ａ〜選択処理部Ｃ）は、それぞれが異なる選択アルゴリズムに従って装置情報の一部を選択する。
【０２０７】
図１２に例示する構成の場合、選択処理部Ａは、例えば、クロック情報に応じて、装置情報管理部１０１に保持された複数の装置情報から一部の装置情報を選択する。選択処理部Ｂは、例えば、１以上の装置情報を複数の部分に分割し、クロック情報に応じて分割された部分を適宜選択して結合する。選択処理部Ｃは、例えば、装置情報管理部１０１に保持された複数の装置情報をクロック情報に応じて適宜並べ替える。
【０２０８】
装置情報選択部１０３は、上記各選択処理部１２０１（選択処理部Ａ〜選択処理部Ｃ）が選択した装置情報（またはその一部）を、そのまま選択情報として提供してもよい。装置情報選択部１０３は、例えば、上記各選択処理部１２０１により選択された装置情報（またはその一部）に対して所定の演算（例えばハッシュ関数等）を実行した結果を、選択情報として提供してもよい。
【０２０９】
本変形例における暗号鍵の生成処理について、図１３に例示するフローチャートを用いて説明する。
【０２１０】
装置情報選択部１０３は、クロック情報に応じて、選択処理部１２０１を選択する（ステップＳ１３０１）。選択処理部１２０１を選択する方法は適宜定められてよい。装置情報選択部１０３は、クロック情報に応じて、選択処理部１２０１を逐次選択してもよい。装置情報選択部１０３は、クロック情報をシードとした乱数を生成することにより、選択処理部１２０１をランダムに選択してもよい。
【０２１１】
ステップＳ１３０１において選択された選択処理部１２０１は、クロック情報に応じて、装置情報の少なくとも一部を取得する（ステップＳ１３０２）。
【０２１２】
装置情報選択部１０３は、ステップＳ１３０２において取得した装置情報を用いて選択情報を生成する（ステップＳ１３０３）。
【０２１３】
鍵生成部１０４は、生成された選択情報と、クロック情報とを用いて、暗号アルゴリズムに応じた暗号鍵を生成する（ステップＳ１３０４）。ステップＳ１３０４における処理は、ステップＳ４０２における処理と同様としてよい。
【０２１４】
上記のように構成された本変形例によれば、クロック情報に応じて、異なった選択アルゴリズムを用いて選択情報が生成される。即ち、選択情報を生成する方法のバリエーションを増やすことができる。これにより、暗号鍵の生成に用いられる元のデータを予測しにくくなると考えられる。
【０２１５】
＜第２の実施形態＞
以下、本開示の第２の実施形態について記載する。第２の実施形態は、上記第１の実施形態及びその変形例に共通する基本的な実施形態である。
【０２１６】
図１４Ａは、本実施形態における通信装置１４００の機能的な構成を例示するブロック図である。なお、通信装置１４００は、例えば、図２Ａ乃至図２Ｃに例示するハードウェアにより実現可能である。
【０２１７】
図１４Ａに例示するように、通信装置１４００は、装置情報管理部１４０１と、クロック発生部１４０２と、装置情報選択部１４０３と、鍵生成部１４０４と、暗号処理部１４０５と、を備える。通信装置１４００は、図１４Ｂに例示するように、通信部１４０６を備えてもよい。通信装置１４００を構成するこれらの構成要素の間は、相互にデータを受け渡せるよう、適切な方法を用いて接続されていてもよい。以下、各構成要素について説明する。
【０２１８】
装置情報管理部１４０１（装置情報管理手段）は、１以上の通信装置に共通して保存される情報である装置情報を記憶する。係る装置情報は、例えば、上記第１の実施形態における装置情報と同様の情報であってもよい。装置情報管理部１４０１は、例えば、自装置が通信する他の通信装置１４００毎に、個別の装置情報を記憶してもよい。装置情報管理部１４０１は、例えば、上記第１の実施形態における装置情報管理部１０１と同様の処理を実行できるよう構成されてもよい。
【０２１９】
クロック発生部１４０２（クロック発生手段）は、周期的なクロック信号を用いて、タイミングを表すクロック情報を生成する。クロック発生部１４０２は、例えば、原子時計等を用いて生成された高精度なクロック信号を用いて、クロック情報を生成してもよい。クロック発生部１４０２により生成されるクロック情報は、例えば、上記第１の実施形態と同様、時刻を表す情報を含んでもよく、カウンタ値を表す情報を含んでもよい。クロック発生部１４０２は、例えば、第１の実施形態におけるクロック発生部１０２と同様の処理を実行できるよう構成されてもよい。
【０２２０】
装置情報選択部１４０３（装置情報選択手段）は、クロック発生部１４０２により生成されたクロック情報に応じて、１以上の装置情報の少なくとも一部を選択する。また、装置情報選択部１４０３は、選択した装置情報の少なくとも一部から、クロック情報毎に異なる情報である選択情報を生成する。装置情報選択部１４０３は、例えば、第１の実施形態において説明した選択アルゴリズムにより選択した装置情報を用いて、選択情報を生成してもよい。装置情報選択部１４０３は、第１の実施形態における装置情報選択部１０３と同様の処理を実行できるよう構成されてもよい。
【０２２１】
鍵生成部１４０４（鍵生成手段）は、クロック情報と、装置情報選択部により生成された選択情報とを少なくとも用いて、暗号鍵を生成する。これにより、鍵生成部１４０４は、選択情報と、クロック情報とに応じて、異なる暗号鍵を生成することができる。鍵生成部１４０４は、例えば、第１の実施形態における鍵生成部１０４と同様の処理を実行できるよう構成されてもよい。
【０２２２】
暗号処理部１４０５（暗号処理手段）は、鍵生成部１４０４において生成された暗号鍵を用いて、暗号化処理と復号処理との少なくとも一方を実行する。暗号処理部１４０５は、例えば、第１の実施形態における暗号処理部１０５と同様の処理を実行できるよう構成されてもよい。
【０２２３】
通信部１４０６（通信手段）は、他の通信装置１４００との間で通信データを送受信するよう構成される。通信部１４０６は、例えば、暗号処理部１４０５において暗号化された通信データを他の通信装置１４００に送信する。通信部１４０６は、例えば、他の通信装置１４００から暗号化された通信データを受信し、暗号処理部１４０５に提供する。通信部１４０６は、例えば、第１の実施形態における通信部１０６と同様の処理を実行するよう構成されてもよい。
【０２２４】
上記のように構成された通信装置１４００は、暗号通信に用いられる暗号鍵を他の通信装置１４００に明示的に配布せずとも、他の通信装置１４００との間で暗号通信を実行可能である。また、上記のように構成された通信装置１４００は、事前に暗号鍵を共有することなく、暗号通信を実行可能である。その理由は、各通信装置が生成するクロック情報が同じ内容である場合、各通信装置１４００は、他の通信装置１４００と共通する装置情報と、クロック情報とに基づいて、他の通信装置１４００と同じ暗号鍵を生成できるからである。また、通信装置１４００は、暗号鍵を更新する際にクロック情報に応じて異なる暗号鍵を生成することが可能である。以上より、各通信装置１４００は、他の通信装置１４００との間で、適切な暗号鍵を用いて暗号通信を実行することができる。
【０２２５】
以上、本開示を、上述した模範的な実施形態に適用した例として説明した。上記各実施形態においては、本開示に関する技術を通信装置（１００、１４００）に適用した例を説明した。例えば、上記各実施形態における通信装置（１００、１４００）を動作させることによって、本開示に関する通信方法を実現することができる。本開示に係る通信方法を実現する方法は上記に限定されない。本開示に係る通信方法は、例えば、通信装置（１００、１４００）と同様の動作を実行可能な、適切な装置（コンピュータ等の情報処理装置、又は、専用の組み込み機器等）によって実現することも可能である。なお、本開示は複数の通信装置（１００、１４００）を含むシステムとして実現されてもよい。
【０２２６】
また、本開示の技術的範囲は、上述した各実施形態及び変形例に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。そのような場合、係る変更又は改良を加えた新たな実施形態も、本開示の技術的範囲に含まれ得る。更に、上述した各実施形態及び変形例、あるいは、係る変更又は改良を加えた新たな実施形態を組み合わせた実施形態も、本開示の技術的範囲に含まれ得る。そしてこのことは、特許請求の範囲に記載した事項から明らかである。
【０２２７】
なお、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限定されない。
（付記１）
１以上の通信装置に共通して保存される情報である装置情報を記憶可能な装置情報管理手段と、
周期的なクロック信号を用いて、タイミングを表すクロック情報を生成するクロック発生手段と、
前記クロック情報に応じて前記装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記クロック情報毎に異なる情報である選択情報を生成する装置情報選択手段と、
前記クロック情報と、前記装置情報選択手段により生成された前記選択情報とを少なくとも用いて、暗号鍵を生成する鍵生成手段と、
生成された暗号鍵を用いて、通信データに関する暗号化処理と復号処理との少なくとも一方を実行する暗号処理手段と、を備える通信装置。
（付記２）
前記装置情報管理手段は、複数の前記装置情報を記憶し、
前記装置情報選択手段は、前記クロック情報に応じて、
複数の前記装置情報のうち、少なくとも１以上の前記装置情報を選択する処理と、
複数の前記装置情報から少なくとも１以上の前記装置情報を選択するとともに、選択したそれぞれの前記装置情報を複数の部分に分割し、選択したそれぞれの前記装置情報から１以上の部分を選択する処理と、の少なくとも一方を実行することにより、前記装置情報の少なくとも一部を選択する付記１に記載の通信装置。
（付記３）
前記クロック発生手段は、原子時計を備え、他の前記通信装置と同期された前記クロック信号を前記原子時計を用いて発生する、付記１又は付記２に記載の通信装置。
（付記４）
前記クロック発生手段は、自装置の外部から提供される、原子時計を用いて生成された時刻情報により、前記クロック信号のタイミングを調整する付記１又は付記２に記載の通信装置。
（付記５）
他の前記通信装置との間で通信データを送受信する通信手段を更に備え、
前記通信手段が他の前記通信装置から受信した通信データを、前記暗号処理手段が正しく復号できない場合、
前記クロック発生手段は、その通信データを受信した際の自装置における前記クロック情報とは異なる前記クロック情報である第１の推定クロック情報を１以上生成し、
前記装置情報選択手段は、前記第１の推定クロック情報に応じて前記装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記選択情報を生成し、
前記鍵生成手段は、
前記第１の推定クロック情報と、前記選択情報とを少なくとも用いて第１の推定暗号鍵を生成し、
前記暗号処理手段が、生成された前記第１の推定暗号鍵を用いて、前記通信装置から受信した通信データを正しく復号できたか否かを判定した結果に応じて、他の前記通信装置において生成された前記クロック情報を推定する、付記１乃至付記４のいずれかに記載の通信装置。
（付記６）
他の前記通信装置との間で通信データを送受信する通信手段を更に備え、
前記通信手段が、自装置から送信された通信データを正しく復号できないことを表す通知を、他の前記通信装置から受信した場合、
前記クロック発生手段は、自装置における前記クロック情報とは異なる前記クロック情報である第２の推定クロック情報を１以上生成し、
前記装置情報選択手段は、前記第２の推定クロック情報に応じて前記装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記選択情報を生成し、
前記鍵生成手段は、前記第２の推定クロック情報と、前記選択情報とを少なくとも用いて第２の推定暗号鍵を生成し、
前記通信手段は、前記第２の推定暗号鍵を用いて前記暗号処理手段により暗号化された通信データを他の前記通信装置に送信し、
前記鍵生成手段は、前記第２の推定暗号鍵を用いて暗号化された通信データを正しく復号できたことを表す通知を、前記通信手段が他の前記通信装置から受信した場合、前記第２の推定クロック情報を、他の前記通信装置において生成された前記クロック情報と推定する付記１乃至付記４のいずれかに記載の通信装置。
（付記７）
前記鍵生成手段は、他の前記通信装置について推定した前記クロック情報と、自装置における前記クロック発生手段が生成した前記クロック情報との差分を表す調整情報を、他の前記通信装置に関連付けて保持し、
自装置が、他の前記通信装置から通信データを受信する受信側の通信装置である場合、
前記装置情報選択手段は、前記クロック発生手段により生成された前記クロック情報を、前記調整情報を用いて調整するとともに、調整後の前記クロック情報を用いて前記選択情報を生成し、
前記鍵生成手段は、前記クロック発生手段により生成された前記クロック情報を、前記調整情報を用いて調整するとともに、調整後の前記クロック情報及び前記装置情報選択手段により生成された前記選択情報を用いて暗号鍵を生成し、
前記暗号処理手段は、前記鍵生成手段により生成された暗号鍵を用いて、前記通信手段が受信した通信データを復号する、付記５又は付記６に記載の通信装置。
（付記８）
前記鍵生成手段は、他の前記通信装置について推定した前記クロック情報と、自装置における前記クロック発生手段が生成した前記クロック情報との差分を表す調整情報を、他の前記通信装置に関連付けて保持し、
自装置が、他の前記通信装置に対して通信データを送信する送信側の通信装置である場合、
前記装置情報選択手段は、前記クロック発生手段により生成された前記クロック情報を、前記調整情報を用いて調整するとともに、調整後の前記クロック情報を用いて前記選択情報を生成し、
前記鍵生成手段は、前記クロック発生手段により生成された前記クロック情報を、前記調整情報を用いて調整するとともに、調整後の前記クロック情報及び前記装置情報選択手段により生成された前記選択情報を用いて暗号鍵を生成し、
前記暗号処理手段は、前記鍵生成手段により生成された暗号鍵を用いて、前記通信手段から送信される通信データを暗号化する付記５又は付記６に記載の通信装置。
（付記９）
前記装置情報管理手段は、全ての前記通信装置が共通して保持する事前共有鍵と、自装置に固有の情報と、を前記装置情報として記憶し
前記暗号処理手段は、事前共有鍵を用いて、自装置に固有の情報を含む通信データを暗号化し、
前記通信手段は、前記暗号化された通信データを他の通信装置に送信し、
前記通信手段が、他の前記通信装置から、他の前記通信装置に固有の情報を含む通信データを受信した場合、前記暗号処理手段は、前記事前共有鍵を用いて、前記通信手段が受信した通信データを復号し、復号された通信データに含まれる他の前記通信装置に固有の情報を、前記装置情報管理手段に提供する、付記５乃至付記８のいずれかに記載の通信装置。
（付記１０）
前記装置情報選択手段は、選択した前記装置情報の少なくとも一部と、前記クロック発生手段により生成された前記クロック情報とを含むデータのハッシュ値を算出し、算出したハッシュ値を前記選択情報として提供する付記２に記載の通信装置。
（付記１１）
前記装置情報選択手段は、
前記クロック情報に応じて、それぞれが異なる前記装置情報の少なくとも一部を選択する選択処理手段を複数有し、
前記クロック情報に応じて１以上の前記選択処理手段を選択し、その選択処理手段により選択された前記装置情報の少なくとも一部を用いて、前記選択情報を生成する付記２又は付記１０に記載の通信装置。
（付記１２）
付記７に記載の前記通信装置である送信側通信装置と、付記７に記載の前記通信装置である受信側通信装置と、を有し、
前記送信側通信装置における前記暗号処理手段は、その送信側通信装置における前記クロック発生手段により生成された前記クロック情報に応じて前記鍵生成手段により生成された暗号鍵を用いて通信データを暗号化し、その送信側通信装置における前記通信手段が、暗号化された通信データを前記受信側通信装置に送信し、
前記受信側通信装置における前記暗号処理手段は、その受信側通信装置における前記クロック発生手段により生成された前記クロック情報を、前記調整情報を用いて調整し、調整後の前記クロック情報を用いて前記鍵生成手段により生成された暗号鍵を用いて、前記送信側通信装置から受信した通信データを復号する通信システム。
（付記１３）
付記８に記載の前記通信装置である送信側通信装置と、付記８に記載の前記通信装置である受信側通信装置と、を有し、
前記送信側通信装置における前記暗号処理手段は、その送信側通信装置における前記クロック発生手段により生成された前記クロック情報を前記調整情報を用いて調整し、調整した後の前記クロック情報に応じて前記鍵生成手段により生成された暗号鍵を用いて通信データを暗号化し、その送信側通信装置における前記通信手段が暗号化された通信データを前記受信側通信装置に送信し、
前記受信側通信装置における前記暗号処理手段は、その受信側通信装置における前記クロック発生手段により生成された前記クロック情報に応じて前記鍵生成手段により生成された暗号鍵を用いて、前記送信側通信装置から受信した通信データを復号する通信システム。
（付記１４）
周期的なクロック信号を用いて、タイミングを表すクロック情報を生成し、
前記クロック情報に応じて、１以上の通信装置に共通して保存される情報である装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記クロック情報毎に異なる情報である選択情報を生成し、
前記クロック情報と、生成された前記選択情報とを少なくとも用いて、暗号鍵を生成し、
生成された暗号鍵を用いて、通信データに関する暗号化処理と復号処理との少なくとも一方を実行する通信方法。
（付記１５）
通信装置を構成するコンピュータに、
周期的なクロック信号を用いて、タイミングを表すクロック情報を生成する処理と、
前記クロック情報に応じて、１以上の通信装置に共通して保存される情報である装置情報の少なくとも一部を選択し、選択した前記装置情報の少なくとも一部から、前記クロック情報毎に異なる情報である選択情報を生成する処理と、
前記クロック情報と、生成された前記選択情報とを少なくとも用いて、暗号鍵を生成する処理と、
生成された暗号鍵を用いて、通信データに関する暗号化処理と復号処理との少なくとも一方を実行する処理と、を実行させる通信プログラムが記録された記録媒体。
【０２２８】
この出願は、２０１６年１０月３日に出願された日本出願特願２０１６−１９５７７５を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０２２９】
１００    通信装置
１０１    装置情報管理部
１０２    クロック発生部
１０３    装置情報選択部
１０４    鍵生成部
１０５    暗号処理部
１０６    通信部
１０７    データ転送部
２０１    プロセッサ
２０２    メモリ
２０３    クロック発生器
２０４    通信インタフェース
２０５    ストレージ
２０６    入出力インタフェース
２０７    入出力装置
２０８    ドライブ装置
２０９    記憶媒体
２１０    暗号処理デバイス
１４００    通信装置
１４０１    装置情報管理部
１４０２    クロック発生部
１４０３    装置情報選択部
１４０４    鍵生成部
１４０５    暗号処理部
【図１Ａ】
0006743898.tif 000002
【図１Ｂ】
0006743898.tif 000003
【図２Ａ】
0006743898.tif 000004
【図２Ｂ】
0006743898.tif 000005
【図２Ｃ】
0006743898.tif 000006
【図３】
0006743898.tif 000007
【図４】
0006743898.tif 000008
【図５】
0006743898.tif 000009
【図６】
0006743898.tif 000010
【図７】
0006743898.tif 000011
【図８】
0006743898.tif 000012
【図９】
0006743898.tif 000013
【図１０】
0006743898.tif 000014
【図１１Ａ】
0006743898.tif 000015
【図１１Ｂ】
0006743898.tif 000016
【図１２】
0006743898.tif 000017
【図１３】
0006743898.tif 000018
【図１４Ａ】
0006743898.tif 000019
【図１４Ｂ】
0006743898.tif 000020