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