(57)【要約】【課題】複数のノード（通信装置）間で共有する暗号鍵が一致するか検証すること、および、不一致を解消することが可能な通信装置を提供する。【解決手段】通信装置は、鍵記憶部と、送信部と、受信部と、共有制御部と、を備える。鍵記憶部は、外部装置との間で共有する１以上の暗号鍵を記憶する。送信部は、少なくとも１の暗号鍵を特定する特定情報を外部装置に送信する。受信部は、共有する暗号鍵が一致するか否かを特定情報に基づいて外部装置が判定した結果を示す判定情報を受信する。共有制御部は、暗号鍵が一致しないことを示す判定情報が受信された場合に、特定情報で特定される暗号鍵を鍵記憶部から削除する。【選択図】図１
2015032962.tif 000002
【特許請求の範囲】
【請求項１】
外部装置との間で共有する１以上の暗号鍵を記憶する鍵記憶部と、
少なくとも１の前記暗号鍵を特定する特定情報を前記外部装置に送信する送信部と、
共有する前記暗号鍵が一致するか否かを前記特定情報に基づいて前記外部装置が判定した結果を示す判定情報を受信する受信部と、
前記暗号鍵が一致しないことを示す前記判定情報が受信された場合に、前記特定情報で特定される前記暗号鍵を前記鍵記憶部から削除する共有制御部と、
を備える通信装置。
【請求項２】
前記特定情報は、前記暗号鍵のハッシュである、
請求項１に記載の通信装置。
【請求項３】
前記特定情報は、前記暗号鍵を識別する識別情報である、
請求項１に記載の通信装置。
【請求項４】
前記特定情報は、前記鍵記憶部に記憶されているすべての前記暗号鍵を特定する情報である、
請求項１に記載の通信装置。
【請求項５】
前記特定情報は、前記鍵記憶部に記憶されている前記暗号鍵のうち一部の前記暗号鍵を特定する情報である、
請求項１に記載の通信装置。
【請求項６】
前記送信部は、前記暗号鍵が一致しないことを示す前記判定情報が受信された場合に、送信済みの前記特定情報で特定される前記暗号鍵と異なる前記暗号鍵を特定する特定情報を前記外部装置にさらに送信する、
請求項１に記載の通信装置。
【請求項７】
前記送信部は、暗号鍵で暗号化された前記特定情報を前記外部装置に送信する、
請求項１に記載の通信装置。
【請求項８】
前記共有制御部は、外部装置との間で共有する新たな暗号鍵を生成し、
前記送信部は、前記共有制御部によって生成された暗号鍵で暗号化された前記特定情報を前記外部装置に送信する、
請求項７に記載の通信装置。
【請求項９】
前記送信部は、さらに、前記鍵記憶部から削除する前記暗号鍵を識別する識別情報を前記外部装置に送信し、
前記共有制御部は、送信した前記識別情報で識別される前記暗号鍵を前記鍵記憶部から削除する、
請求項１に記載の通信装置。
【請求項１０】
前記鍵記憶部は、量子鍵配送により前記外部装置との間で生成される前記暗号鍵を記憶する、
請求項１に記載の通信装置。
【請求項１１】
前記鍵記憶部は、量子鍵配送により生成される第１暗号鍵を用いて生成される第２暗号鍵を記憶する、
請求項１に記載の通信装置。
【請求項１２】
外部装置との間で共有する１以上の暗号鍵を記憶する鍵記憶部を備える通信装置で実行される鍵共有方法であって、
少なくとも１の前記暗号鍵を特定する特定情報を前記外部装置に送信する送信ステップと、
共有する前記暗号鍵が一致するか否かを前記特定情報に基づいて前記外部装置が判定した結果を示す判定情報を受信する受信ステップと、
前記暗号鍵が一致しないことを示す前記判定情報が受信された場合に、前記特定情報で特定される前記暗号鍵を前記鍵記憶部から削除する共有制御ステップと、
を含む鍵共有方法。
【請求項１３】
外部装置との間で共有する１以上の暗号鍵を記憶する鍵記憶部を備えるコンピュータを、
少なくとも１の前記暗号鍵を特定する特定情報を前記外部装置に送信する送信部と、
共有する前記暗号鍵が一致するか否かを前記特定情報に基づいて前記外部装置が判定した結果を示す判定情報を受信する受信部と、
前記暗号鍵が一致しないことを示す前記判定情報が受信された場合に、前記特定情報で特定される前記暗号鍵を前記鍵記憶部から削除する共有制御部、
として機能させるためのプログラム。
【請求項１４】
複数の通信装置を備える通信システムであって、
前記通信装置それぞれは、
他の通信装置との間で共有する１以上の暗号鍵を記憶する鍵記憶部と、
少なくとも１の前記暗号鍵を特定する特定情報を前記他の通信装置に送信する送信部と、
共有する前記暗号鍵が一致するか否かを前記特定情報に基づいて前記他の通信装置が判定した結果を示す判定情報を受信する受信部と、
前記暗号鍵が一致しないことを示す前記判定情報が受信された場合に、前記特定情報で特定される前記暗号鍵を前記鍵記憶部から削除する共有制御部と、を備える、
通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信装置、鍵共有方法、プログラムおよび通信システムに関する。
【背景技術】
【０００２】
鍵生成・共有システムには、２つのネットワーク（鍵共有ネットワーク、アプリケーションネットワーク）が存在する。鍵共有ネットワークは、複数のリンクによって相互に接続され、ネットワーク化された複数のノードから構成される。各ノードは、リンクによって接続された対向ノードとの間で乱数を生成および共有する機能と、生成および共有した乱数を暗号鍵（以下、リンク鍵）として利用して、リンク上で暗号通信を行う機能とを備える。
【０００３】
ノードにおいて、リンクによって接続された対向ノードとの間で乱数（リンク鍵）を生成および共有する機能は、例えば、一般に量子暗号または量子鍵配送（ＱＫＤ（Quantum  Key  Distribution））と呼ばれる技術によっても実現できる。
【先行技術文献】
【特許文献】
【０００４】
【非特許文献１】Dianati,  M.,  Alleaume,  R.,  Gagnaire,  M.  and  Shen,  X.  （2008）,    Architecture  and  protocols  of  the  future  European  quantum  key  distribution  network.  Security  and  Communication  Networks,  1:  57-74.  DOI:  10.1002/sec.13
【非特許文献２】Kollmitzer  C.,  Pivk  M.  （Eds.）,  Applied  Quantum  Cryptography,  Lect.  Notes  Phys.  797  （Springer,  Berlin  Heidelberg  2010）,  p155-p168,  DOI  10.1007/978-3-642-04831-9
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、ノードの障害やネットワークのエラーが発生した場合等に、ノード間で共有した暗号鍵の情報に不一致が生じる可能性があるという問題があった。
【課題を解決するための手段】
【０００６】
実施形態の通信装置は、鍵記憶部と、送信部と、受信部と、共有制御部と、を備える。鍵記憶部は、外部装置との間で共有する１以上の暗号鍵を記憶する。送信部は、少なくとも１の暗号鍵を特定する特定情報を外部装置に送信する。受信部は、共有する暗号鍵が一致するか否かを特定情報に基づいて外部装置が判定した結果を示す判定情報を受信する。共有制御部は、暗号鍵が一致しないことを示す判定情報が受信された場合に、特定情報で特定される暗号鍵を鍵記憶部から削除する。
【図面の簡単な説明】
【０００７】
【図１】本実施形態にかかる通信システムのネットワーク構成図。
【図２】本実施形態にかかる通信システムのネットワーク構成図。
【図３】本実施形態におけるノードのブロック図。
【図４】本実施形態における鍵検証処理のシーケンス図。
【図５】本実施形態における鍵検証処理のシーケンス図。
【図６】本実施形態における暗号鍵削除処理のシーケンス図。
【図７】本実施形態にかかる通信装置のハードウェア構成図。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、この発明にかかる通信装置の好適な実施形態を詳細に説明する。
【０００９】
上述のように、鍵生成・共有システムでは、障害発生時などにノード間で共有した暗号鍵の情報に不一致が生じる可能性があった。また、不一致が生じたか否かの検証方法や、不一致の解消方法は明らかではなかった。不一致の解消方法として、障害やエラーが発生した場合に、ノード間で共有されているすべての暗号鍵を破棄し、暗号鍵の共有処理を再開する方法が考えられる。しかし、このような方法では、共有済みの多くの暗号鍵が無駄になるため、非効率的である。
【００１０】
本実施形態では、暗号鍵を共有する通信装置（ノード）の組があるとき、ノードの障害や通信経路の障害等によって、その暗号鍵の共有動作が正常に実行できなくなった際に、共有する暗号鍵が一致しているか確認する。例えば、暗号鍵の共有動作が再開可能となった後に、今まで共有していた暗号鍵を廃棄せずそのまま保持して利用可能とするために、ノード間で共有済みの暗号鍵の確認動作を行う。本実施形態のノードは、ノード間で暗号鍵が一致しない場合には、一致しない暗号鍵を削除する。これにより、複数のノード間で共有する暗号鍵が一致するか検証すること、および、不一致を解消することが可能となる。
【００１１】
本実施形態のノードは、主に以下のような機能を備える。
（１）ノードは、暗号鍵の共有動作を再開する際に、対向ノードとの間で共有済みの暗号鍵のハッシュ（ハッシュ値）を交換し、両者のハッシュが一致しているかどうかを確認する。これによりノードは、現在保持している暗号鍵が共有動作再開後(例えば再起動後)
も利用可能であるか否かを確認する。
（２）上記確認処理の前提として、ノードにおける交換済みの暗号鍵は、常に一致している必要がある。ノードから暗号鍵を削除されるタイミングは、特に規程はないが、一般的には、ノードからアプリケーションに対する暗号鍵の提供が完了した際に、ノードは、提供した暗号鍵を自装置から削除する。このような暗号鍵の削除方法では、ノードと対向ノードとに接続されるアプリケーションの暗号鍵取得ポリシによって、ノードと対向ノードに保持される暗号鍵のデータが異なる状態が容易に発生し得る。これを回避するため、本実施形態のノードは、アプリケーションへ暗号鍵を提供した直後に該当暗号鍵を削除するのではなく、削除する暗号鍵およびそのタイミングについて対向ノードに通知し、対向ノードとの間で同期して暗号鍵を削除する。
【００１２】
図１は、本実施形態にかかる通信システムのネットワーク構成例を示す図である。通信システムは、鍵共有ネットワーク３０１と、アプリケーションネットワーク３０２と、プライベートネットワーク３０３ａ、３０３ｂと、を含む。また、通信システムは、通信装置としてのノード１００ａ、１００ｂと、アプリケーション２００ａ〜２００ｄと、を含む。
【００１３】
ノード１００ａ、１００ｂを区別する必要がない場合は、単にノード１００という場合がある。アプリケーション２００ａ〜２００ｄを区別する必要がない場合は、単にアプリケーション２００という場合がある。ノード１００の個数は２に限られるものではない。また、アプリケーション２００の個数は４に限られるものではない。
【００１４】
ノード１００ａ、１００ｂは、上述のように、対向ノードとの間で乱数を生成して共有する機能と、生成した乱数をリンク鍵として利用して、リンク上で暗号通信を行う機能とを備える。
【００１５】
ノード１００は、リンクとは独立に乱数を生成する機能と、別のノードに対して生成した乱数を送信する機能とを備えてもよい。
【００１６】
アプリケーション２００は、ノード１００に接続し、ノード１００から、リンク鍵を取得し、これを暗号鍵として利用して、別のアプリケーション（対向ノードに接続して同一のリンク鍵を取得できる）との間で暗号データ通信を行う機能を備える。このときの暗号データ通信は、鍵共有ネットワークとは異なるインターネット等のネットワーク（アプリケーションネットワーク）によって実現されてよい。また、ノード１００とアプリケーション２００は、一体として実現されてもよいし、ノード１００とアプリケーション２００を独立した端末として構成し、その間でアプリケーション鍵を送受信するようにしてもよい。図１は、ノード１００毎に運用されるプライベートネットワーク３０３ａ、３０３ｂ上に、ノード１００とアプリケーション２００とが独立に設置される場合の一例である。
【００１７】
プライベートネットワーク３０３ａ、３０３ｂは、あるノード１００と、このノード１００がアプリケーション鍵を提供するアプリケーション２００とを接続するためのネットワークである。
【００１８】
図２は、本実施形態にかかる通信システムのネットワーク構成の別の例を示す図である。通信システムは、鍵共有ネットワーク３０１と、アプリケーションネットワーク３０２と、プライベートネットワーク３０３ａ、３０３ｂと、を含む。また、通信システムは、通信装置としてのノード１００−２ａ〜１００−２ｃと、アプリケーション２００−２ａ〜２００−２ｄと、を含む。
【００１９】
ノード１００−２ａ〜１００−２ｃを区別する必要がない場合は、単にノード１００−２という場合がある。アプリケーション２００−２ａ〜２００−２ｄを区別する必要がない場合は、単にアプリケーション２００−２という場合がある。図２の例は、ノード１００−２およびアプリケーション２００−２の機能が図１のノード１００と異なる。他の構成は図１と同様であるため同一の符号を付し説明を省略する。
【００２０】
ノード１００−２は、リンクとは独立に乱数である暗号鍵（以下、アプリケーション鍵）を生成する機能と、生成したネットワーク鍵を、リンクを介して別のノード１００−２に対して送信する機能と、を備える。
【００２１】
アプリケーション２００−２は、ノード１００−２から、アプリケーション鍵を取得し、取得したアプリケーション鍵を暗号鍵として利用して、別のアプリケーション２００−２との間で暗号データ通信を行う機能を備える。
【００２２】
以上のように、図１では、ノード１００は、リンク鍵をノード１００間で共有する。図２では、ノード１００−２は、リンク鍵およびアプリケーション鍵をノード１００−２間で共有する。このように、共有する暗号鍵はリンク鍵（第１暗号鍵）であっても、リンク鍵から生成されるアプリケーション鍵（第２暗号鍵）であってもよい。以下では、暗号鍵という表現を、リンク鍵とアプリケーション鍵の両方を示す言葉として使用する。また以下では、図１の構成を例にさらに詳細を説明するが、図２の構成についても同様に適用できる。すなわち、共有する暗号鍵が異なるのみであり、以下の各機能は図１および図２の両方に共通に適用できる。
【００２３】
図３は、本実施形態におけるノード１００の構成例を示すブロック図である。ノード１００は、プラットフォーム部１０１と、共有制御部１０２と、鍵記憶部１０３と、提供部１０４と、算出部１０５と、送信部１０６と、受信部１０７と、制御部１０８と、を備える。
【００２４】
プラットフォーム部１０１は、ノード１００を実現するコンピュータのオペレーティングシステムとして、基本的なプロセス管理機能、ネットワーク機能、および、セキュリティ機能等を提供するものである。
【００２５】
共有制御部１０２は、他のノード１００との間で暗号鍵の共有動作（量子鍵配送技術を含んでもよい）の制御を行う。共有された暗号鍵は鍵記憶部１０３に蓄積される。また、共有制御部１０２は、暗号鍵の共有動作の再開制御や暗号鍵の削除に関する同期も行う。
【００２６】
鍵記憶部１０３は、他のノード１００との間で共有した１以上の暗号鍵を蓄積・記憶する。
【００２７】
提供部１０４は、アプリケーション２００との間の通信インタフェースである。提供部１０４は、例えばアプリケーション２００からの要求に応じ、アプリケーション２００に対して鍵記憶部１０３に保持されている暗号鍵を提供する。
【００２８】
算出部１０５は、共有制御部１０２の再開制御において必要な暗号鍵のハッシュを計算する。例えば算出部１０５は、鍵記憶部１０３に保持される暗号鍵を参照し、暗号鍵単体または暗号鍵のグループに対してハッシュを計算し、計算したハッシュを共有制御部１０２に提供する。
【００２９】
ハッシュは、少なくとも１の暗号鍵を特定する特定情報の一例である。他のノード１００は、算出部１０５により算出されたハッシュと、自身が記憶する暗号鍵から算出したハッシュとを比較することにより、共有する暗号鍵が一致するか判定することができる。
【００３０】
特定情報は、ハッシュに限られるものではなく、暗号鍵を特定する情報であればどのような情報であってもよい。例えば、複数のノード１００間で共通に用いられるハッシュ以外のアルゴリズムにより、暗号鍵から算出される特定情報を用いてもよい。また例えば、暗号鍵に付与される識別情報（暗号鍵ＩＤ）を特定情報としてもよい。暗号鍵ＩＤを特定情報として用いる場合、暗号鍵ＩＤは一致しているが暗号鍵自体が異なる場合には異常（不一致）を検知できない。ハッシュを用いる特定情報として用いれば、このような問題を回避しうる。
【００３１】
送信部１０６は、特定情報（算出部１０５が算出したハッシュ）を他のノード１００に送信する。受信部１０７は、他のノード１００から判定情報を受信する。判定情報は、送信部１０６が送信した特定情報に基づき、相互に共有する暗号鍵が一致するか否かを他のノード１００が判定した結果を示す情報である。
【００３２】
なお、上述の共有制御部１０２は、暗号鍵が一致しないことを示す判定情報が受信された場合に、特定情報で特定される暗号鍵を鍵記憶部１０３から削除する処理などを制御する。
【００３３】
制御部１０８は、ノード１００全体を制御する。
【００３４】
プラットフォーム部１０１、共有制御部１０２、提供部１０４、算出部１０５、送信部１０６、受信部１０７、および、制御部１０８は、例えば、ＣＰＵ（Central  Processing  Unit）などの処理装置にプログラムを実行させること、すなわち、ソフトウェアにより実現してもよいし、ＩＣ（Integrated  Circuit）などのハードウェアにより実現してもよいし、ソフトウェアおよびハードウェアを併用して実現してもよい。
【００３５】
なお、鍵記憶部１０３は、ＨＤＤ（Hard  Disk  Drive）、光ディスク、メモリカード、ＲＡＭ（Random  Access  Memory）などの一般的に利用されているあらゆる記憶媒体により構成することができる。
【００３６】
次に、このように構成された本実施形態にかかるノード１００による鍵検証処理について図４を用いて説明する。図４は、本実施形態における鍵検証処理の一例を示すシーケンス図である。
【００３７】
まず、ノード１００ａとノード１００ｂとが暗号鍵の共有を行うことを前提とする。暗号鍵の共有動作は、量子鍵配送技術等をベースとして行われる。ノード１００ａとノード１００ｂとの間で暗号鍵が共有されるタイミングは基本的に同期されている。このため、共有されている暗号鍵の内容が不一致となることは通常であれば起こり得ない。暗号鍵は、ノード１００ａおよびノード１００ｂそれぞれが備える鍵記憶部１０３に保持される。
【００３８】
本実施形態が想定している状況は、例えば以下の（α）および（β）等によって、暗号鍵共有の同期が維持できていない恐れのあるまたは暗号鍵共有動作を停止せざるを得ない状況である。
（α）ノード１００ａとノード１００ｂの一方または両方が暗号鍵の共有動作中に電源障害等の影響で突然停止する。
（β）ノード１００ａとノード１００ｂが暗号鍵共有を行うためのリンク（またはネットワーク）の一部に何らかの障害が発生し、一方のノードから他方のノードが一時的にアクセス不可状態となりその状態が把握できなくなる。
【００３９】
このような状態において、ノード１００は、同期した暗号鍵共有動作を再開するため、何らかの処理を行う。例えば（α）の状況においては、停止したノード１００は管理者によって手動で、または自動的に再起動し、暗号鍵共有動作を再開する。また例えば（β）の状況においては、リンク（またはネットワーク）の復旧を確認した状態で、暗号鍵共有動作を再度初期化する。ただし、この暗号鍵共有の再初期化または再開の状態で、ノード間の暗号鍵の同期が保たれている保証はない。
【００４０】
なお、鍵検証処理は、共有動作の再開時に限られるものではない。例えば鍵検証処理は、ノード１００の初回の起動時に実行してもよいし、定期的に実行してもよい。
【００４１】
暗号鍵共有動作の再開（または再初期化）を決定したノード１００ａは、ノード１００ｂに対して、暗号鍵共有動作を再開するために再起動通知データを送信する（ステップＳ１０２）。再起動通知データは、例えばノード１００ａを識別するＩＤ情報を含む。再起動通知データが、さらにノード１００ｂのＩＤ情報を含んでいてもよい。再起動通知データは、鍵共有ネットワークの制御信号として交換されてもよい。例えば、量子鍵配送技術により暗号鍵を共有する場合であれば、暗号鍵を送信する伝送路と異なる、制御信号を送信する伝送路を用いて再起動通知データを送信してもよい。
【００４２】
また、再開前に共有済みであるはずの暗号鍵を利用して再起動通知データを暗号化（または、および認証）してもよい。一方、このときの再起動通知データは、アプリケーションネットワーク３０２を介して交換されてもよい。このときも、再開前に共有済みであるはずの暗号鍵を利用して再起動通知データを暗号化（または、および認証）してもよい。
【００４３】
再起動通知データを受信したノード１００ｂは、再起動通知データに含まれるＩＤ情報を検証し、再起動通知データが正規のものであるか否かを確認する（ステップＳ１０３）。例えば、ノード１００ｂは、ＩＤ情報がノード１００ａのＩＤ情報であるかを確認する。
【００４４】
再起動通知データに問題がなければ、ノード１００ｂは、再起動処理を受諾する旨を通知するＯＫ信号（検証結果）を応答する（ステップＳ１０４）。検証結果の送信方法に関しては、ステップＳ１０２に述べたものと同様のバリエーションがありえる。
【００４５】
ＯＫ信号を受信したノード１００ａの算出部１０５は、現在保有している暗号鍵（すべてであっても一部であってもよい）のハッシュを計算する（ステップＳ１０５）。なお、少なくとも一部の暗号鍵のハッシュは予め計算されていてもよい。利用するハッシュのアルゴリズムは、予め設定されているものとする。
【００４６】
ノード１００ａの送信部１０６は、計算したハッシュと、計算に用いた暗号鍵の暗号鍵ＩＤ（複数の暗号鍵を合わせてハッシュを計算した場合は暗号鍵ＩＤの範囲となる）をノード１００ｂへと通知する（ステップＳ１０６）。通知の送信方法に関しては、ステップＳ１０２に述べたものと同様のバリエーションがありえる。
【００４７】
ノード１００ｂは、受信した暗号鍵ＩＤに相当する、自装置内の鍵記憶部１０３に記憶された暗号鍵のハッシュを計算する（ステップＳ１０７）。なお、少なくとも一部の暗号鍵のハッシュは予め計算されていてもよい。利用するハッシュのアルゴリズムは、予め設定されているものとする。ノード１００ｂは、計算したハッシュの値と、ノード１００ａから受信したハッシュの値とを比較し、両者が一致するか検証（判定）する（ステップＳ１０８）。
【００４８】
ノード１００ｂは、判定の結果を示す判定情報をノード１００ａに通知する（ステップＳ１０９）。例えば両者が一致している場合は、ハッシュが合致していることを示すＯＫ信号を応答する。ＯＫ信号は、ハッシュが合致した暗号鍵の暗号鍵ＩＤ（または暗号鍵ＩＤの範囲）を含んでもよい。一方、両者が一致していない場合は、ハッシュが合致しなかったことを示すＮＧ信号を応答する。ＮＧ信号は、ハッシュが合致しなかった暗号鍵の暗号鍵ＩＤ（または暗号鍵ＩＤの範囲）を含んでもよい。また、ＮＧ信号は、ノード１００ｂが保持する暗号鍵の暗号鍵ＩＤ（または暗号鍵ＩＤの範囲）と、保持する暗号鍵のハッシュの値とを含んでもよい。
【００４９】
ノード１００ａが保有するすべての暗号鍵が合致することが確認されれば、鍵検証処理は終了となる。この結果、再起動または再開前に共有された暗号鍵に関しては、すべて合致しており、同期ずれ等によって暗号鍵データに誤りが発生したことは無かったことが確認できる。
【００５０】
一方、一部の暗号鍵が合致することが確認された場合は、さらに別の一部の暗号鍵の合致を確認するために、対象とする暗号鍵を変更してステップＳ１０５からステップＳ１０９の処理を繰り返してもよい。
【００５１】
また、一部の暗号鍵が合致しなかったことが確認された場合、その一部の暗号鍵については、障害による同期ずれ等の理由により暗号鍵データが破損していることが確認される。従って、この場合、対象の暗号鍵については破棄（削除）した上で、さらに対象とする暗号鍵を変更してステップＳ１０５からステップＳ１０９の処理を繰り返す。なお、合致しなかった一部の暗号鍵をすべて破棄するのではなく、暗号鍵の範囲を変更（例えば範囲を小さくする）してステップＳ１０５からステップＳ１０９の処理を繰り返してもよい。
【００５２】
このようにして、ノード１００ａとノード１００ｂとの間で共有されている暗号鍵の合致について確認してゆき、破損している暗号鍵を特定して破棄することで、合致する暗号鍵のみを保有している状態を最終的に再現することができる。
【００５３】
以上のように鍵検証処理が完了すると、再初期化または再開前に共有されていた暗号鍵をそのまま利用することができるようになる。なお、暗号鍵共有動作自身は、鍵検証処理の完了後に開始してもよいし、例えばステップＳ１０２以降に開始してもよい。
【００５４】
次に、図５を用いて、鍵検証処理の他の例を説明する。図５は、本実施形態における鍵検証処理の他の例を示すシーケンス図である。ステップＳ２０１からステップＳ２０４は、図４のステップＳ１０１からステップＳ１０４までと同様の処理であるため説明を省略する。
【００５５】
再起動処理を受諾する旨のＯＫ信号を受信した後、ノード１００ａの共有制御部１０２は、ノード１００ｂの共有制御部１０２との間で暗号鍵共有動作を再開する（ステップＳ２０５）。これにより、再開した暗号鍵共有によって新たに共有された暗号鍵を使って、その後に送信するデータを暗号化（または、および認証）することが可能になる。
【００５６】
すなわち、例えば、ノード１００ａは、新たに共有された暗号鍵により暗号化されたハッシュおよび暗号鍵ＩＤを、ノード１００ｂに送信する（ステップＳ２０７）。また例えば、ノード１００ｂは、新たに共有された暗号鍵により暗号化された検証結果（判定情報）を、ノード１００ａに送信する（ステップＳ２１０）。ステップＳ２０６からステップＳ２１０は、データを暗号化する以外は、図４のステップＳ１０５からステップＳ１０９までと同様の処理である。
【００５７】
図４の例では、再開前に共有した暗号鍵を利用してハッシュを暗号化（または、および認証）を行ってもよいものとしていた。しかし実際には、例えば再起動に伴い、再開前に共有していた暗号鍵が破損している可能性もある。図５の例のように新たに共有した暗号鍵を用いれば、暗号鍵が破損している可能性がない。このため、例えばステップＳ２０７からステップＳ２１０でのデータ交換に伴うエラー発生の可能性が低減される。
【００５８】
次に、図６を用いて暗号鍵削除処理について説明する。図６は、本実施形態における暗号鍵削除処理の一例を示すシーケンス図である。
【００５９】
最初に暗号鍵削除処理が必要となる理由を説明する。本実施形態は、ノード１００ａとノード１００ｂとの間で共有された暗号鍵が、再起動後も一致しており、暗号鍵として利用できることを確認することを目的としている。そのため、ノード１００ａが保持する暗号鍵とノード１００ｂが保持する暗号鍵は、基本的には同期（一致）している必要がある。暗号鍵が増加する（生成する）タイミングは、暗号鍵共有のプロトコルによって定められており、（エラーによってずれることがありえるが）基本的には同期している。
【００６０】
一方、暗号鍵が減少する（これはすなわち、一般的にはノード１００が接続しているアプリケーション２００に対して暗号鍵を提供するときに発生する）タイミングは、ノードに接続しているアプリケーションの実装やその振る舞いによって異なる。これは、一般的に、ノード１００から暗号鍵を削除するタイミングが、ノード１００が接続しているアプリケーション２００に対して暗号鍵を提供することと同期している（すなわち、アプリケーションに提供した暗号鍵を直後にノード１００上から削除している）ことが原因となっている。
【００６１】
このため、ノード１００ａとノード１００ｂが保持している暗号鍵の集合が常に一致しているかと言えば、接続しているアプリケーション２００の振る舞いによって、一致していないと言わざるを得ない。このような一般的な暗号鍵の削除方法とは異なり、本実施形態では、アプリケーション２００がどのような振る舞いや実装であっても、ノード１００が暗号鍵を削除するタイミングを概ね同期させる。これにより、エラー発生等に起因する再起動時にも概ね暗号鍵のデータ内容が合致しているという状況を作ることができる。
【００６２】
逆に言えば、このような暗号鍵削除タイミングの同期手法がなければ、上記のような鍵検証処理の実行時に、一方のノード１００は保持しているが他方のノード１００は保持していないような暗号鍵が多く発見されることになる。
【００６３】
ノード１００ａは、アプリケーション２００（例えば図１のアプリケーション２００ａ）からの要求に従い、暗号鍵をアプリケーション２００に提供する（ステップＳ３０１）。ノード１００ｂもアプリケーション２００（例えば図１のアプリケーション２００ｄ）からの要求に従い、暗号鍵をアプリケーション２００に提供する。これらの暗号鍵提供は、ノード１００ａおよびノード１００ｂにおいて非同期に発生する。
【００６４】
ノード１００は、暗号鍵の削除を行う際は、対向ノードに対して、暗号鍵を削除する旨と、削除対象の暗号鍵ＩＤを通知する。例えばノード１００ａは、暗号鍵削除の要求および暗号鍵ＩＤをノード１００ｂに送信する（ステップＳ３０２）。なお、この暗号鍵削除のためのデータ交換は、暗号鍵の提供（ステップＳ３０１）とは独立に行う。また、暗号鍵の提供を実行するたびにステップＳ３０２を毎回実行してもよいし、暗号鍵の提供を複数回実行した後、ステップＳ３０２の暗号鍵の削除要求をまとめて実行してもよい。
【００６５】
暗号鍵削除の要求および削除対象の暗号鍵ＩＤを受信した対向ノード（ノード１００ｂ）は、通知された暗号鍵ＩＤの暗号鍵を削除可能か否かを検証する（ステップＳ３０３）。例えば、ノード１００ｂは、通知された暗号鍵ＩＤの暗号鍵が既に使用済みとなっているかを確認する。ノード１００ｂは、検証結果をノード１００ａに通知する（ステップＳ３０４）。例えば、通知された暗号鍵ＩＤの暗号鍵を削除可能であれば、ノード１００ｂは、削除可能であることを示す検証結果（ＯＫ応答）を通知する。
【００６６】
ノード間で暗号鍵の削除が問題ないことが確認された上で、両ノード（ノード１００ａ、ノード１００ｂ）は、削除対象の暗号鍵を削除する（ステップＳ３０５、ステップＳ３０６）。
【００６７】
このように、本実施形態にかかる通信装置では、複数のノード間で共有する暗号鍵が一致するか検証すること、および、不一致を解消することが可能となる。例えば量子鍵配送技術をベースとした暗号鍵の交換・共有システムでは、暗号鍵は最も重要なシステムリソースの１つである。従って、この重要なシステムリソースである暗号鍵を、障害復旧後も破棄せずに引き続き利用できるようにすることにより、システム動作時間およびコストを大幅に削減することが可能となる。
【００６８】
次に、本実施形態にかかる通信装置のハードウェア構成について図７を用いて説明する。図７は、本実施形態にかかる通信装置のハードウェア構成を示す説明図である。
【００６９】
本実施形態にかかる通信装置は、ＣＰＵ（Central  Processing  Unit）５１などの制御装置と、ＲＯＭ（Read  Only  Memory）５２やＲＡＭ（Random  Access  Memory）５３などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５４と、各部を接続するバス６１を備えている。
【００７０】
本実施形態にかかる通信装置で実行されるプログラムは、ＲＯＭ５２等に予め組み込まれて提供される。
【００７１】
本実施形態にかかる通信装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【００７２】
さらに、本実施形態にかかる通信装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態にかかる通信装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【００７３】
本実施形態にかかる通信装置で実行されるプログラムは、コンピュータを上述した通信装置の各部（プラットフォーム部１０１、共有制御部１０２、提供部１０４、算出部１０５、送信部１０６、受信部１０７、制御部１０８）として機能させうる。このコンピュータは、ＣＰＵ５１がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【００７４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７５】
１００ａ、１００ｂ、１００ｃ  ノード
１０１  プラットフォーム部
１０２  共有制御部
１０３  鍵記憶部
１０４  提供部
１０５  算出部
１０６  送信部
１０７  受信部
１０８  制御部
２００ａ〜２００ｄ  アプリケーション
３０１  鍵共有ネットワーク
３０２  アプリケーションネットワーク
３０３ａ  プライベートネットワーク
【図１】
2015032962.tif 000003
【図２】
2015032962.tif 000004
【図３】
2015032962.tif 000005
【図４】
2015032962.tif 000006
【図５】
2015032962.tif 000007
【図６】
2015032962.tif 000008
【図７】
2015032962.tif 000009