【文献】
谷澤 佳道 ほか,量子鍵配送技術をモチーフとしたセキュアネットワークの一提案,2012年電子情報通信学会通信ソサイエティ大会論文集2,日本,一般社団法人電子情報通信学会,2012年 8月28日,B−7−60,p. 139
(58)【調査した分野】(Int.Cl.,DB名)
前記判断部は、前記第1管理部が前記第1暗号鍵を共有する処理の設定情報を参照して、前記アプリケーションが暗号化通信を行う装置が前記第1外部装置であるか否かを判断する、
請求項1に記載の通信装置。
【発明を実施するための形態】
【0008】
以下に添付図面を参照して、この発明にかかる通信装置の好適な実施形態を詳細に説明する。
【0009】
量子鍵配送技術は、光ファイバーで接続された、単一光子を連続的に送信する送信ノードと、これを受信する受信ノードと、の間で、安全に暗号鍵を共有する手法である。ここで共有される暗号鍵は、量子力学の原理に基づいて、盗聴されていないことが保証されている。共有された暗号鍵を用いて、ワンタイムパッドと呼ばれる暗号通信方式を利用して暗号データ通信を行うと、このときのデータは、如何なる知識を有する盗聴者によっても解読できないことが情報理論によって保証されている。
【0010】
図1は、量子鍵配送による暗号鍵共有処理の一例を示すシーケンス図である。量子鍵配送を実現する通信システム(量子鍵配送システム)は、ノード10a、10bと、アプリケーション20a、20bと、を含む。ノード10a、10bは、送信ノードおよび受信ノードの少なくとも一方に対応する。以下では、送信ノードおよび受信ノードを、ノードと総称する場合がある。アプリケーション20a、20bは、共有された暗号鍵を用いて暗号データ通信する機能である。上述のように、アプリケーション20a、20bは、それぞれノード10a、10bと一体として実現されてもよい。
【0011】
ノード10a、10bは、リンク鍵の共有を開始する(ステップS101)。ノード10aは、共有したリンク鍵をアプリケーション20aに提供する(ステップS102)。同様に、ノード10bは、共有したリンク鍵をアプリケーション20bに提供する(ステップS103)。
【0012】
このように、ノード10a、10b間で共有された暗号鍵(リンク鍵)は、それぞれアプリケーション20aとアプリケーション20bに提供される。アプリケーション20aおよびアプリケーション20bは、この後、取得した暗号鍵を用いてデータを暗号化し、暗号データ通信を行う。ただし、QKD技術で暗号鍵を共有する方式は、単一光子をメディアとして利用することに起因する、暗号鍵共有可能な距離の制約がある。
【0013】
次に、本実施形態の鍵共有ネットワーク(QKDネットワーク)について説明する。
図2は、鍵共有ネットワークを含む量子鍵配送システムの構成例を示す図である。なお、
図2は、ノードとアプリケーションとが独立に実現される場合の一例である。量子鍵配送システムは、通信装置としてのノード100a〜100eと、アプリケーション200a、200bと、を含む。ノード100a〜100eは、鍵共有ネットワーク301によりリンク鍵を共有する。
【0014】
ノード100a〜100eを区別する必要がない場合は、単にノード100という場合がある。アプリケーション200a、200bを区別する必要がない場合は、単にアプリケーション200という場合がある。ノード100の個数は5に限られるものではない。また、アプリケーション200の個数は2に限られるものではない。
【0015】
鍵共有ネットワーク301は、複数のノード100間が、それぞれ光ファイバーなどによるリンク(リンク401〜406)によって接続されるネットワークである。
【0016】
なお、
図2では、1つのノード100が、送信ノードまたは受信ノードの機能を複数備えるような構成を例示している(例えば、ノード100a、100c、100dは2つ、ノード100b、100eは3つ)。各ノード100が、送信ノードおよび受信ノードを一体化した機能を備えるように構成してもよい。以下では主に後者の構成を例に説明する。
【0017】
各ノード100は、リンクによって接続されるノード100(隣接ノード)との間でQKDによって暗号鍵を共有する。リンクによって接続されるノード100間でQKDにより共有される暗号鍵がリンク鍵(第1暗号鍵)に相当する。さらにノード100は、QKDとは無関係に、別途乱数情報等から、別の暗号鍵(アプリ鍵(第2暗号鍵))を生成し、暗号鍵をリンク鍵で暗号化して隣接ノードに転送する機能を有する。
【0018】
リンク鍵によってアプリ鍵を暗号化してアプリ鍵を転送する処理を繰り返すことによって、ノード100は、鍵共有ネットワーク301上の任意のノード100との間でアプリ鍵を共有することができる。このときアプリ鍵は、QKDによって共有されるリンク鍵によって暗号化された状態でリンク上を転送される。従って、ノード100自体の安全性を仮定すると、アプリ鍵の安全性は、リンク鍵と同様に保証されると言える。
【0019】
以下、アプリケーション200が、鍵共有ネットワーク301を利用して暗号鍵を取得および共有し、暗号データ通信を行うシーケンスの例を説明する。
図3は、3つのノード100を介してアプリ鍵を共有する場合の暗号鍵共有処理の一例を示すシーケンス図である。
【0020】
ノード100a、100b、100cは、事前にリンク鍵を共有している(ステップS201、ステップS202)。なお、リンク鍵の共有動作はこの後も繰り返されてよい。暗号通信を行いたいアプリケーション200は、鍵共有ネットワーク301上のノード100に接続する。例えば
図2の例では、アプリケーション200aはノード100aに接続し、アプリケーション200bはノード100cに接続している。
【0021】
アプリケーション200aは、ノード100aに対して、アプリケーション200bと通信するために暗号鍵が利用したい旨を通知する(ステップS203)。この通知を受けたノード100aは、アプリケーション200aが通信したいアプリケーション200bが接続しているノード100cを特定し(ステップS204)、ノード100cとの間でアプリ鍵を共有する。
【0022】
具体的には、ノード100aは、アプリ鍵の共有制御を開始すると(ステップS205)、共有するアプリ鍵を生成する(ステップS206)。ノード100aは、リンク鍵(ノード100bと共有するリンク鍵)を用いてアプリ鍵を暗号化し(ステップS207)、ノード100bに送信する(ステップS208)。ノード100bは、受信したアプリ鍵をリンク鍵(ノード100aと共有するリンク鍵)で復号化し、復号化したアプリ鍵をリンク鍵(ノード100cと共有するリンク鍵)で暗号化する(ステップS209)。ノード100bは、暗号化したアプリ鍵をノード100cに送信する(ステップS210)。ノード100cは、受信したアプリ鍵をリンク鍵(ノード100bと共有するリンク鍵)で復号化し(ステップS211)、記憶部等に記憶する(ステップS212)。ノード100cは、アプリ鍵の記憶が完了したことをノード100aに通知する(ステップS213)。
【0023】
ノード100aは、共有したアプリ鍵をアプリケーション200aへ提供し(ステップS214)、ノード100cは、アプリケーション200bからの要求を受け(ステップS215)、共有したアプリ鍵をアプリケーション200bへ提供する(ステップS216)。これによって、アプリケーション200aとアプリケーション200bは、同一の暗号鍵(アプリ鍵)を共有することができる。この後、アプリケーション200aとアプリケーション200bは、暗号データ通信ネットワーク302を介して安全な暗号データ通信を行うことができる。
【0024】
以上のような、アプリ鍵とリンク鍵を組み合わせた暗号鍵共有方式は、QKDを使うことに起因する暗号鍵共有可能な距離の制約を克服できる。また、アプリケーション200から接続されたノード100が暗号鍵(アプリ鍵)の生成、共有、および、ルーティングを制御する本方式は、既存のネットワーク技術を活用してシンプルな構成要素によって実現することが可能である。ここでは、ノード100aが乱数等によって暗号鍵(アプリ鍵)を生成してこれを共有するシナリオを説明した。共有する情報はこれに限られるものではない。本方式は、ノード100aが、他のシステムで生成した暗号鍵、デジタル証明書、および、公開鍵方式における秘密鍵など、任意の秘密情報を共有する仕組みとして利用できる。
【0025】
図4は、2つのノード100を介してアプリ鍵を共有する場合の暗号鍵共有処理の一例を示すシーケンス図である。
図3とは、中継するノード100(
図3のノード100b)が存在しない点が異なるのみである。例えば、ステップS301はステップS201に対応する。ステップS302からステップS307はステップS203からステップS208に対応する。ステップS308からステップS313はステップS211からステップS216に対応する。
【0026】
図3および
図4に示すように、アプリ鍵とリンク鍵を組み合わせた暗号鍵共有方式は、例えば
図1に示すような通常のQKDによる暗号鍵共有と比較すると、乱数生成、リンク鍵によるアプリ鍵の暗号化、および、リンク鍵による復号化等の手順の分、処理遅延および処理負荷が大きくなる。このように、アプリ鍵とリンク鍵を組み合わせた暗号鍵共有方式は、距離制約なく任意のノードとの間で暗号鍵(アプリ鍵)を共有できる機能を提供できるが、暗号鍵共有の処理遅延が大きくなる。一方、
図1のような方式を用いる場合は、暗号鍵共有の処理遅延が小さいが、暗号鍵共有できる距離(ノード接続形態)に制約がある。すなわち、暗号鍵を共有可能な距離の制約と、共有処理の処理負荷(処理遅延)との間にはトレードオフの関係がある。
【0027】
そこで、本実施形態にかかるノード100は、可能な場合は、
図1のような方式によって単純に共有した暗号鍵(リンク鍵)をアプリケーション200に提供することで、暗号鍵共有に要する処理遅延を短くする。一方、それ以外の場合は、アプリ鍵とリンク鍵を組み合わせた暗号鍵共有方式によって、暗号鍵(アプリ鍵)を共有し、これをアプリケーション200に提供する。これにより、上記のようなトレードオフを解消することが可能となる。また、シンプルな実装を維持しながら、ネットワーク上の任意のノードとの間で暗号鍵を共有することができる。
【0028】
図5は、本実施形態におけるノード100の機能構成例を示すブロック図である。ノード100は、プラットフォーム部140と、第1共有処理部110と、第2共有処理部120と、を備える。
【0029】
プラットフォーム部140は、ノード100における基本的なネットワーク機能(ルーティング機能を含む)、セキュリティ機能、および、データ保持機能等の、コンピュータのオペレーティングシステムに相当する基本機能を提供する。
【0030】
第1共有処理部110は、アプリ鍵の共有に関する処理を行う。第1共有処理部110は、アプリ鍵DB131と、アプリ鍵管理部111(第2管理部)と、アプリ鍵共有部112と、アプリ通信I/F(インタフェース)部113(第2通信部)と、制御部114と、判断部115と、を含む。
【0031】
第2共有処理部120は、リンク鍵の共有に関する処理を行う。第2共有処理部120は、リンク鍵DB132と、リンク鍵管理部121(第1管理部)と、リンク鍵共有部122と、古典通信I/F部(第1通信部)123と、量子通信I/F部124と、を含む。
【0032】
リンク鍵管理部121は、ノード100における、リンク鍵の共有、記憶、および利用を管理する。
【0033】
リンク鍵共有部122は、QKDの技術を用いて、光ファイバーで接続される隣接ノードとの間で、リンク鍵を生成および共有する機能を備える。そのためリンク鍵共有部122は、光学部品等からなるQKD装置を備えている。
【0034】
リンク鍵DB132は、リンク鍵共有部122によって共有されたリンク鍵を記憶する。
【0035】
光ファイバーによる隣接ノードとの接続は、古典通信I/F部123と量子通信I/F部124によって実現される。量子通信I/F部124は、リンク鍵共有部122が単一光子の送信または受信を行うために用いられる。古典通信I/F部123は、リンク鍵を共有するために、リンク鍵共有部122が、隣接ノードとの間で実行すべき制御データの通信等に用いられる。
【0036】
なお、量子通信I/F部124と古典通信I/F部123は、同一かつ単一の光ファイバーを利用する通信路であってもよいし、異なる光ファイバーを利用する通信路であってもよい。ただし、接続するノード100は、量子通信I/F部124および古典通信I/F部123で同一である。
【0037】
第2共有処理部120は、隣接ノードごとに存在してもよい。
図2の例では、ノード100aは、ノード100bおよびノード100dとの間でリンクを構成しているため、第2共有処理部120が2セット存在する。ノード100bは、ノード100a、100cおよびノード100eとの間でリンクを構成しているため、第2共有処理部120が3セット存在する。ただし、リンク鍵DB132は、異なるリンクであっても同一のデータベースシステムを利用していてもよい。
【0038】
なお、古典通信I/F部123は、第2共有処理部120の外側(例えば第1共有処理部110内の各機能部)からも利用される。第2共有処理部120外の機能部が、隣接ノードに対して制御データやアプリ鍵を送信すべく、リンクを介してデータ転送する場合、この機能部から、リンク鍵管理部121にデータが通知される。リンク鍵管理部121は、リンク鍵DB132からリンク鍵を取得し、データを取得したリンク鍵によって暗号化する。暗号化されたデータが、古典通信I/F部123を介して隣接ノードへと転送される。
【0039】
また、古典通信I/F部123を介して受信した暗号データも、第2共有処理部120外の機能部宛てのデータである場合、リンク鍵管理部121によって復号化される。例えば、リンク鍵管理部121は、リンク鍵DB132からリンク鍵を取得し、取得したリンク鍵を用いて受信された暗号データを復号化し、復号化したデータを宛先となる機能部へと受け渡す。
【0040】
次に、第1共有処理部110の各機能部について説明する。
【0041】
アプリ鍵DB131は、アプリ鍵共有部112によって共有されたリンク鍵を記憶する。
【0042】
アプリ鍵管理部111は、ノード100における、アプリ鍵の共有、記憶、および利用を管理する。アプリ鍵共有部112は、鍵共有ネットワーク301を介してノード100間でアプリ鍵を共有するための機能部である。アプリ鍵共有部112は、乱数からアプリ鍵を生成する機能、生成したアプリ鍵をネットワークを介して送信する機能、他のノード100が生成したアプリ鍵をネットワークを介して受信する機能、および、これらの制御を行う上で必要な制御データを他のノード100との間で交換する機能、を備える。
【0043】
ここで、共有されるアプリ鍵は、上述の仕組みを用いて、リンク上では暗号化されて転送される。同様に、交換される制御データは、上述の仕組みを用いて、リンク上で暗号化されて転送されてもよい。共有されたアプリ鍵は、アプリ鍵DB131に記憶される。
【0044】
また、本実施形態では、アプリ鍵管理部111は、リンク鍵DB132から一部のリンク鍵を取得し、取得したリンク鍵をアプリ鍵に変換し、変換したアプリ鍵をアプリ鍵DB131に記憶する機能を有する。
【0045】
判断部115は、アプリ鍵を共有するノード100が、リンク鍵を共有しているノード100であるか否かを判断する。例えば判断部115は、あるノード100の情報(ノードを識別する情報(ノードID)、アドレス等)が示された場合、このノード100と単一リンクによって接続されているか、そうでなく、複数のリンクを介して接続されているか、を判断する。判断方法の詳細は後述する。
【0046】
アプリ通信I/F部113は、暗号データ通信ネットワーク302に収容されているアプリケーション200からの接続を受け付け、アプリケーション200との間で制御データを交換する機能部である。
【0047】
制御部114は、ノード100全体の制御を行う。例えば、制御部114は、接続してきたアプリケーション200から受信する制御データ、現在保有しているアプリ鍵量、および、リンク鍵量等を考慮して、アプリ鍵の生成および交換動作を制御(開始、変更、停止など)したり、アプリ鍵を交換すべきノード100を特定したりする。
【0048】
また制御部114は、アプリケーション200からの要求を受けて、アプリ鍵を生成および共有を行う前に、判断部115によって、アプリ鍵を共有すべきノード100との接続関係を判断させ、その判断結果に基づいて、アプリ鍵の共有方法を選択する機能を有する。
【0049】
アプリ鍵の共有方法は、上述のように、以下の方法(A1)および(A2)を含む。
(A1)アプリ鍵を乱数から生成し、アプリ鍵をリンク鍵で暗号化しながら複数リンクおよびノード100を介して、転送、中継および交換する方法
(A2)リンク鍵またはその一部を、アプリ鍵に転用する方法
【0050】
なお、制御部114は、アプリ鍵の共有方法を選択し、選択した共有方法を実行するために必要な付加的な制御データの送受信、および、ノード100の動作変更も行う。例えば制御部114は、アプリ鍵を交換すべきノード100が隣接ノードであった場合に、どのリンク鍵の範囲をアプリ鍵として利用すべきかを決定し、決定した範囲を特定する特定情報を隣接ノードに通知するための制御データを送信するように古典通信I/F部123を制御する。
【0051】
また制御部114は、同様の制御データを隣接ノードから受信した場合に、隣接ノードの要求に従って該当リンク鍵をアプリ鍵として利用可能か否かを判断する。利用可能であれば、制御部114は、アプリ鍵共有部112に指示してリンク鍵をアプリ鍵に変換する動作を行わせる。
【0052】
制御部114は、アプリ鍵を要求したノード100との接続関係以外のパラメータも考慮して、アプリ鍵の共有方法を決定してもよい。例えば制御部114は、アプリ鍵を要求したノード100が隣接ノードであると判断部115によって判断された場合であっても、現在蓄積しているリンク鍵の量(リンク鍵の残量)がある一定の閾値(第1閾値)未満であった場合には、リンク鍵をアプリ鍵に転用する方式(上記(A2))を採用しない判断を行ってもよい。すなわち、リンク鍵の残量が一定の閾値以上であった場合にのみ、リンク鍵をアプリ鍵に転用する方式(上記(A2))を採用する判断を行ってもよい。
【0053】
ノード100上で動作するアプリケーション200が利用するアプリ鍵をネットワーク上の他のノード100と共有するための処理でリンク鍵を利用することも重要である。このため、リンク鍵をアプリ鍵に転用する方式を採用しない判断を行ってもよい。
【0054】
ここで、リンク鍵を、あるアプリケーション200(アプリεとする)が利用するアプリ鍵として転用すべきか、または、別のアプリケーション200(アプリζとする)が利用するアプリ鍵をネットワーク上のノード100と共有するためのリンク鍵として消費すべきか、という判断を行う必要が生じる。
【0055】
この判断には様々な判断基準が適用できる。例えば、アプリ鍵を共有するための処理にリンク鍵が利用されている頻度が一定の閾値(第2閾値)より大きい場合には、リンク鍵をアプリ鍵に転用する方式(上記(A2))を採用しない判断を行ってもよい。すなわち、リンク鍵の利用頻度が一定の閾値以下であった場合にのみ、リンク鍵をアプリ鍵に転用する方式(上記(A2))を採用する判断を行ってもよい。また例えば、単純に該当ノード100における、アプリεとアプリζの優先度によって判断してもよい。または、稼働しているアプリケーション200によって公平に利用されるように、アプリεのためのアプリ鍵に転用するリンク鍵の量と、アプリζのためのアプリ鍵を転送するために利用するリンク鍵の量を同じにするように制御してもよい。
【0056】
ただし、一般には、新規にアプリケーション200が追加される可能性があり、その場合にリンク鍵をリンク鍵として利用してアプリ鍵を転送する必要が生じる。このため、すべてのリンク鍵を特定のアプリケーション200のためにアプリ鍵に転用することは避けることが望ましい。
【0057】
なお、アプリ鍵DB131において、アプリ鍵は、このアプリ鍵を共有する宛先のノード100ごとに別々に管理される。また、アプリ鍵DB131とリンク鍵DB132(第2共有処理部120ごとに複数存在する)は、単一のデータベースシステムによって実現されていてもよいし、異なるデータベースシステムによって実現されていてもよい。ただし、アプリ鍵とリンク鍵は以下のように性質が異なる点に注意が必要である。
リンク鍵:QKDによってリンク接続されたノード100間で共有され、ノード100がリンクごとに記憶する。古典通信I/F部123を介した通信(アプリ鍵や制御データの交換)の暗号化のために利用(消費)される。
アプリ鍵:ノード100の乱数生成によって生成され、鍵共有ネットワーク301を介して任意のノード100との間で共有される。ノード100が共有先のノード100ごとに記憶する。さらに、各ノード100において、接続しているアプリケーション200の数や特性(優先度等)を考慮して、個別のアプリケーション200へ事前に割当てられてもよい。アプリケーション200からの要求を受け、アプリケーション200に提供することで利用(消費)される。
【0058】
なお、アプリ鍵管理部111、アプリ鍵共有部112、アプリ通信I/F(インタフェース)部113、制御部114、判断部115、リンク鍵管理部121、リンク鍵共有部122、古典通信I/F部123、および、量子通信I/F部124は、例えば、CPU(Central Processing Unit)などの処理装置にプログラムを実行させること、すなわち、ソフトウェアにより実現してもよいし、IC(Integrated Circuit)などのハードウェアにより実現してもよいし、ソフトウェアおよびハードウェアを併用して実現してもよい。またリンク鍵共有部122の一部は、光学回路装置によって実現してもよい。
【0059】
また、アプリ鍵DB131およびリンク鍵DB132は、HDD(Hard Disk Drive)、光ディスク、メモリカード、RAM(Random Access Memory)などの一般的に利用されているあらゆる記憶媒体により構成することができる。
【0060】
次に、このように構成された本実施形態にかかるノード100による暗号鍵共有処理について
図6を用いて説明する。
図6は、本実施形態における暗号鍵共有処理の一例を示すシーケンス図である。
【0061】
図6の例では、ノード100aにアプリケーション200aが接続され、ノード100bにアプリケーション200bが接続される。アプリケーション200aとアプリケーション200bが暗号データ通信を行いたいものとする。また、ノード100aとノード100bは、QKDによって暗号鍵(リンク鍵)を共有する動作を繰り返している(ステップS401)。
【0062】
アプリケーション200aは、ノード100aへ接続し、ノード100aに対して、アプリケーション200bと通信したい旨(暗号鍵の要求)を通知する(ステップS402)。なお、アプリケーション200とノード100との間の通信は、何らかのセキュリティによって保護されているものとする。例えば、物理的に外部者が侵入できないように保護する等、任意の方法を適用できる。
【0063】
アプリケーション200aからの接続を受けたノード100aは、アプリケーション200aがアプリケーション200bと通信するためにいずれのノード100との間で暗号鍵(アプリ鍵)を共有すべきかを決定する(ステップS403)。
【0064】
例えばノード100aは、ディレクトリサービス機能等を参照することによって、各ノード100と、各アプリケーション200との接続関係を把握し、暗号鍵を共有すべきノード100を特定する。この例では、ノード100aは、暗号鍵(アプリ鍵)を共有すべきノード100が、アプリケーション200bが接続しているノード100bであると特定する。
【0065】
次にノード100aの判断部115は、暗号鍵を共有すべきノード100bとの接続関係(接続形態)を確認する(ステップS404)。接続関係は、例えば以下の(B1)および(B2)を含む。
(B1)自ノードと他のノード100(以下、該当ノードともいう)との間が単一リンクで接続されており、QKDにより暗号鍵(すなわちリンク鍵)が共有されている状態にある
(B2)複数のリンクを介したネットワークによって接続されている状態にある
【0066】
接続関係を確認する方法には様々な方法が利用可能である。以下、列挙する。
(C1)QKDの設定情報を参照する
(C2)リンク鍵のデータベース(リンク鍵DB132)を参照する
(C3)リンク情報を収集するプロトコルを利用する、または、プロトコルの実行結果を参照する
(C4)外部データベース・ディレクトリを参照する
【0067】
(C1)は、QKDの設定情報を参照する方法である。リンク接続されており、QKDがセットアップされているのであれば事前に管理者等によって、リンク接続されているノード100の情報(ノードID、アドレス等)が自ノードに設定されているはずである。従って、判断部115は、QKDの設定情報を参照し、該当ノードのノードIDまたはアドレスがQKDの設定情報に含まれていれば、該当ノードとの接続は単一リンクであることが判断できる。
【0068】
(C2)は、QKDによって生成されるリンク鍵が蓄積されているリンク鍵DB132を参照する方法である。リンク鍵は、単一リンクによって接続され、QKDによって直接生成される暗号鍵である。リンク鍵DB132は、単一リンクによって接続されたノード100との間で共有された暗号鍵(リンク鍵)のみを記憶する。該当ノードとの間で暗号鍵(リンク鍵)が共有されていれば、判断部115は、該当ノードとの接続関係は、単一リンクであると判断できる。
【0069】
(C3)は、外部のプロトコルまたはネットワーク情報を参照するものである。例えば判断部115は、利用しているデータリンク層の仕組みを用いて、隣接関係にあるノード100を特定することができる。また、判断部115は、隣接関係にあるノード100を特定した結果を記憶しているデータベースを参照することにより、隣接関係にあるノード100を特定することができる。
【0070】
例えば判断部115は、CDP(Cisco Discovery Protocol)を用いることにより、リンク接続している機器の情報を取得できる。判断部115は、CDP(またはCDPと類似のプロトコル)を実行することによって隣接ノードを特定できる。判断部115は、このようなプロトコルの実行またはその結果を記憶しているデータベースを参照することによって、該当ノードとの接続関係を判断できる。
【0071】
(C4)は、外部のデータベース・ディレクトリを参照するものである。ノード100の隣接関係に関する情報を収集している外部のデータベースやディレクトリサービスが存在する場合、判断部115は、このようなデータベースまたはサービスに該当ノードのノードIDまたはアドレスを問い合わせることで、接続関係の情報を取得することができる。
【0072】
この例では、判断の結果、自ノード(ノード100a)と該当ノード(ノード100b)の接続関係は、隣接であると判断できる(上記(B1))。
【0073】
本実施形態では、ノード100aの制御部114は、ノード100bに対してアプリ鍵を共有する際に、実際に乱数から暗号鍵(アプリ鍵)を生成してこれを転送するのではなく、既に共有しているであろう、リンク鍵を暗号鍵(アプリ鍵)として用い、このアプリ鍵を各アプリケーション200に提供するように制御する。
【0074】
さらに、ノード100aの制御部114は、該当ノード(ノード100b)との間で共有されている暗号鍵の量を元に、実際にリンク鍵を暗号鍵(アプリ鍵)として用いるようにするか、または、乱数から暗号鍵(アプリ鍵)を生成してこれを転送するように動作するか、を改めて決定してもよい。
【0075】
さらに、ノード100aの制御部114は、現在該当リンク鍵を用いてアプリ鍵の転送を行っている可能性があるが、この場合、リンク鍵を用いたアプリ鍵の転送動作を優先し、リンク鍵をアプリ鍵として用いることを行わない判断を行ってもよい。
【0076】
引き続き、本実施形態のシーケンスの説明を進める。ノード100aは、ノード100bに対して、アプリ鍵共有制御データを送信する(ステップS405)。この制御データは、少なくとも、「リンク鍵をアプリ鍵として利用する」旨を示すデータを含む。制御データがさらに、アプリ鍵として利用すべきリンク鍵の識別情報(鍵ID、シーケンス番号等)、および、該当リンク鍵をアプリ鍵として利用する場合に実施すべき、何らかの変換処理を特定する情報を含んでもよい。変換処理としては、例えば、複数のリンク鍵を結合して1つのアプリ鍵とする処理、および、リンク鍵を分割して複数のアプリ鍵に変換する処理などがある。制御データが、ノード100が暗号鍵をアプリ鍵として管理する上で必要な鍵IDやシーケンス番号の値をどのような値にするかを示す情報、該当する暗号鍵を利用させるアプリケーション200のペアを識別する識別情報、および、セッション情報を識別する情報を含んでもよい。
【0077】
この後、ノード100bは、ノード100aに対して、応答情報を通知してもよい。応答情報は、単純に、ノード100aから指示されたリンク鍵をアプリ鍵として扱うことに同意するか、またはそれが可能か否か、の情報のみでもよい。
【0078】
応答情報がその他の情報を含んでもよい。例えば、ノード100aがアプリ鍵として利用するリンク鍵の鍵IDを含めてアプリ鍵共有制御データを送信し、この制御データをノード100bが受け取ったとする。可能性として、この時すでに、ノード100bは、ノード100aから指定されたリンク鍵の一部を使用してしまっており、これをアプリ鍵として利用することができないことがある。この場合、ノード100bは、単純に、このアプリ鍵共有制御データに対して、対応できない旨を通知してもよい(すなわち、negative ackの通知)し、アプリ鍵として利用できるリンク鍵の範囲を改めてノード100aに提示してもよい。
【0079】
以上の手続きのもと、ノード100aおよびノード100bは、同一の範囲のリンク鍵を、アプリ鍵として記憶するように変換する(ステップS406、ステップS407)。ここで、リンク鍵をアプリ鍵に変換する際に、必ずしもデータの変換処理や、データのコピーが発生するとは限らない。例えば、リンク鍵とアプリ鍵が同一のデータベースシステムにおいて管理されている場合も考えられる。この場合、データベース上のエントリの管理を変更するのみで、リンク鍵からアプリ鍵への変換が行えることがある。
【0080】
リンク鍵のアプリ鍵への変換が実施できた場合、ノード100bは変換結果をノード100aに通知してもよい(ステップS408)。同様にノード100aは、変換結果をノード100bに通知してもよい。
【0081】
以上の手順によって、ノード100aとノード100bは、乱数(アプリ鍵)の生成、リンク鍵を用いた乱数(アプリ鍵)の暗号化、暗号化したアプリ鍵の転送処理、および、ノード100bにおける復号処理、といった処理手順および処理負荷を回避しつつ、既に共有しているリンク鍵を用いて、アプリ鍵を共有することができる。端的には、
図4の手順であったものが
図6の手順としてより低処理負荷および少手順で実施できるようになる。
【0082】
この後、共有されたアプリ鍵は、ノード100aからアプリケーション200aへ提供される(ステップS409)。また、ノード100bからアプリケーション200bへ、アプリケーション200bの要求に応じてアプリ鍵が提供される(ステップS410、ステップS411)。
【0083】
次に
図7を用いて、本実施形態における、暗号鍵共有処理の別の例を示す。
図7は、本実施形態における暗号鍵共有処理の別の例を示すシーケンス図である。
図7の例では、ノード100aにアプリケーション200aが接続され、ノード100cにアプリケーション200bが接続される。アプリケーション200aとアプリケーション200bが暗号データ通信を行いたいものとする。また、ノード100aとノード100bの間、および、ノード100bとノード100cとの間では、QKDによって暗号鍵(リンク鍵)を共有する動作が繰り返される(ステップS501、ステップS502)。
【0084】
アプリケーション200aは、ノード100aへ接続し、ノード100aに対して、アプリケーション200bと通信したい旨(暗号鍵の要求)を通知する(ステップS503)。アプリケーション200aからの接続を受けたノード100aは、アプリケーション200aがアプリケーション200bと通信するためにいずれのノード100との間で暗号鍵(アプリ鍵)を共有すべきかを決定する(ステップS504)。この例では、ノード100aは暗号鍵(アプリ鍵)を共有すべきノード100が、アプリケーション200bが接続しているノード100cであると特定する。
【0085】
次にノード100aの判断部115は、暗号鍵を共有すべきノード100cとの「接続関係」を確認する(ステップS505)。接続関係の特定方法は、既に示したとおりである。ここでは、自ノード(ノード100a)と該当ノード(ノード100c)の接続関係は、ネットワークを介した接続関係(B1)である、すなわち隣接(B2)ではないと判断される。
【0086】
ノード100aの制御部114は、ノード100bに対して、アプリ鍵を共有する際に、リンク鍵を活用した上述の方法(A2)が利用できないことを判断し、例えば、乱数から暗号鍵(アプリ鍵)を生成してこれを転送する方法(A1)を採用することを決定する。すなわち、以下の手順を実行する。
【0087】
ノード100aは、アプリ鍵の共有制御を開始する(ステップS506)。アプリ鍵共有部112は、乱数から暗号鍵(アプリ鍵)を生成する(ステップS507)。アプリ鍵共有部112は、別途ノード100において動作しているルーティング機構によって生成されるルーティングテーブルを参照し、該当ノードであるノード100cへアプリ鍵を転送する際のネクストホップに相当するノード100がノード100bであることを特定する。
【0088】
アプリ鍵共有部112は、アプリ鍵を、ノード100bとの間で共有しているリンク鍵を用いて暗号化し(ステップS508)、ノード100bと接続されているリンク上に転送する(ステップS509)。
【0089】
暗号化されたアプリ鍵を受信したノード100bは、受信したリンクを共有しているノード100aとの間で共有しているリンク鍵を用いて、受信したアプリ鍵を復号化する(ステップS510)。さらにノード100bは、該当アプリ鍵をノード100cへ転送するために、復号化したアプリ鍵を送信すべきリンクを特定し、ネクストホップに相当するノード100がノード100cそのものであることを特定する。
【0090】
ノード100bは、復号化したアプリ鍵をノード100cとの間で共有しているリンク鍵を用いて暗号化し(ステップS510)、ノード100cと接続されているリンク上に転送する(ステップS511)。
【0091】
暗号化されたアプリ鍵を受信したノード100cは、受信したリンクを共有しているノード100bとの間で共有しているリンク鍵を用いて、受信したアプリ鍵を復号化する(ステップS512)。ノード100cは、復号化した暗号鍵を、ノード100aと共有するアプリ鍵として記憶する(ステップS513)。
【0092】
以上の説明では、直接アプリ鍵を転送する手順を示したが、実際には、アプリ鍵を送信する前、送信した後、または、送信前後の両方、のタイミングで、アプリ鍵共有制御データとして、ノード100aが、送信するアプリ鍵のサイズ、アプリ鍵に付与すべき鍵ID(またはシーケンス番号)、および、アプリ鍵を提供するアプリケーション200に関する情報、等の付加データをノード100cに送信してもよい。
【0093】
ノード100cは、アプリ鍵共有制御データを受信した後、実際のアプリ鍵を受信するよりも前に、アプリ鍵共有制御データに対して、対応できない旨を通知(すなわちnegative ack)し、アプリ鍵の共有を拒否してもよい。または、ノード100cは、アプリ鍵共有制御データを受信した後、実際のアプリ鍵を受信するよりも前に、アプリ鍵共有制御データに対して、アプリ鍵共有制御データに含まれる情報の少なくとも一部を修正したい旨を含む応答メッセージをノード100aに送信してもよい。
【0094】
ノード100cは、ノード100aからアプリ鍵を受信して記憶した後、ノード100aに対して、応答情報を通知してもよい(ステップS514)。応答情報は、単純に、ノード100aから送信されたアプリ鍵を受信したこと、を示す情報のみでもよい。
【0095】
以上の手続きのもと、ノード100aおよびノード100cは、同一のアプリ鍵をそれぞれ記憶する。この後、共有されたアプリ鍵は、ノード100aからアプリケーション200aへ提供される(ステップS515)。また、ノード100cからアプリケーション200bへ、アプリケーション200bの要求に応じてアプリ鍵が提供される(ステップS516、ステップS517)。
【0096】
このように、本実施形態にかかる通信装置では、暗号鍵共有に要する処理遅延を抑制することができる。
【0097】
次に、本実施形態にかかる通信装置のハードウェア構成について
図8を用いて説明する。
図8は、本実施形態にかかる通信装置のハードウェア構成を示す説明図である。
【0098】
本実施形態にかかる通信装置は、CPU(Central Processing Unit)51などの制御装置と、ROM(Read Only Memory)52やRAM(Random Access Memory)53などの記憶装置と、ネットワークに接続して通信を行う通信I/F54と、各部を接続するバス61を備えている。さらに量子鍵配送を実現するための光回路装置55をバス61に接続していてもよい。
【0099】
本実施形態にかかる通信装置で実行されるプログラムは、ROM52等に予め組み込まれて提供される。
【0100】
本実施形態にかかる通信装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【0101】
さらに、本実施形態にかかる通信装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態にかかる通信装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【0102】
本実施形態にかかる通信装置で実行されるプログラムは、コンピュータを上述した通信装置の各部として機能させうる。このコンピュータは、CPU51がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【0103】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。