(57)【特許請求の範囲】
【請求項１】
１以上の外部装置と量子通信路および古典通信路で接続され、前記量子通信路を介した光子により暗号鍵を生成する通信装置であって、
前記１以上の外部装置と接続する前記量子通信路ごとの量子誤り率を取得する取得部と、
前記量子誤り率に基づいて、前記通信装置から前記１以上の外部装置までの前記量子通信路上の第１経路のメトリックを算出する算出部と、
前記メトリックに基づいて、前記通信装置から、前記１以上の外部装置のうち特定の外部装置までの前記古典通信路上の第２経路を選択する選択部と、
を備えた通信装置。
【請求項２】
前記第２経路上でアプリケーション鍵を前記特定の外部装置に送信する通信部を、さらに備えた請求項１に記載の通信装置。
【請求項３】
前記メトリックは、前記第１経路に含まれる前記各量子通信路の前記量子誤り率の和である請求項１に記載の通信装置。
【請求項４】
前記メトリックは、前記第１経路に含まれる前記各量子通信路の前記量子誤り率のうち最も高い前記量子誤り率である請求項１に記載の通信装置。
【請求項５】
前記メトリックは、前記第１経路に含まれる前記各量子通信路の前記量子誤り率のうち最も低い前記量子誤り率である請求項１に記載の通信装置。
【請求項６】
前記メトリックは、前記第１経路に含まれる前記各量子通信路の前記量子誤り率を加重平均した平均量子誤り率である請求項１に記載の通信装置。
【請求項７】
前記算出部は、前記第１経路に含まれる前記各量子通信路のカウントレート、生成した暗号鍵のビット数、および該暗号鍵を生成する途中のビット列のビット数のうち少なくともいずれかを使用し、前記量子誤り率を加重平均して前記平均量子誤り率を算出する請求項６に記載の通信装置。
【請求項８】
前記算出部は、前記第１経路に含まれる前記各量子通信路のカウントレート、生成した暗号鍵のビット数、および該暗号鍵を生成する途中のビット列のビット数のうち少なくともいずれかに基づいて、前記メトリックを算出する請求項１に記載の通信装置。
【請求項９】
前記選択部は、前記メトリック、および、前記通信装置から前記特定の外部装置までのホップ数に基づいて、前記第２経路を選択する請求項１に記載の通信装置。
【請求項１０】
前記選択部は、前記通信装置から前記特定の外部装置までの前記古典通信路上の複数の経路のうち、前記メトリックが前記量子通信路の盗聴に対する安全性が最も高いこと示す経路を前記第２経路として選択し、前記メトリックが前記安全性が最も高いこと示す経路が複数存在する場合は、前記メトリックが前記安全性が最も高いこと示す複数の経路のうち、前記ホップ数が最小の経路を前記第２経路として選択する請求項９に記載の通信装置。
【請求項１１】
前記選択部は、前記通信装置から前記特定の外部装置までの前記古典通信路上の複数の経路のうち、前記ホップ数が最小となる経路を前記第２経路として選択し、前記ホップ数が最小となる経路が複数存在する場合は、前記ホップ数が最小となる複数の経路のうち、前記メトリックが前記量子通信路の盗聴に対する安全性が最も高いこと示す経路を前記第２経路として選択する請求項９に記載の通信装置。
【請求項１２】
前記量子誤り率が第１閾値以上であるか否かを判断する判断部を、さらに備え、
前記算出部は、前記判断部により前記第１閾値以上と判断された前記量子誤り率の前記量子通信路を前記第１経路から除外して、前記メトリックを算出する請求項１に記載の通信装置。
【請求項１３】
前記取得部は、前記外部装置と接続する前記量子通信路の前記量子誤り率である第１量子誤り率を取得し、前記第１量子誤り率を取得した時刻と異なる時刻に、該外部装置と接続する前記量子通信路の前記量子誤り率である第２量子誤り率を取得して、前記第２量子誤り率と前記第１量子誤り率との変化量を求め、
前記変化量が第２閾値以上である場合、前記算出部は、再び前記メトリックを算出し、前記選択部は、再び前記第２経路を選択する請求項１に記載の通信装置。
【請求項１４】
暗号鍵を生成する複数の通信装置を備える通信システムであって、
前記通信装置は、それぞれ、
１以上の他の前記通信装置と接続する量子通信路ごとの量子誤り率を取得する取得部と、
前記量子誤り率に基づいて、前記通信装置から１以上の他の前記通信装置までの前記量子通信路上の第１経路のメトリックを算出する算出部と、
前記メトリックに基づいて、前記通信装置から、１以上の他の前記通信装置のうち特定の通信装置までの古典通信路上の第２経路を選択する選択部と、
前記第２経路上でアプリケーション鍵を前記特定の通信装置に送信する通信部と、
を備えた通信システム。
【請求項１５】
複数の外部装置と接続されるコンピュータを、
前記複数の外部装置と接続する量子通信路ごとの量子誤り率を取得する取得部と、
前記量子誤り率に基づいて、前記コンピュータから前記複数の外部装置までの前記量子通信路上の第１経路のメトリックを算出する算出部と、
前記メトリックに基づいて、前記コンピュータから、前記複数の外部装置のうち特定の外部装置までの古典通信路上の第２経路を、通信部がアプリケーション鍵を前記特定の外部装置に送信するための経路として選択する選択部と、
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信装置、通信システムおよびプログラムに関する。
【背景技術】
【０００２】
複数のリンクによって相互に接続され、ネットワーク化された複数のノードから構成される鍵共有ネットワークが知られている。各ノードは、リンク（量子通信路）によって接続されたノード間で乱数を生成して共有する機能と、生成された乱数を暗号鍵（以下、リンク鍵という）として利用して、リンク（古典通信路）上で暗号通信を行う機能とを備える。また、ノードのうちの幾つかは、リンクとは独立に乱数である暗号鍵（以下、アプリケーション鍵という）を生成する機能と、別のノードに対し、生成したアプリケーション鍵をリンク（古典通信路）を介してルーティングして共有する機能と、を備える。ノードにおいて、リンク（量子通信路）によって接続されたノード間でリンク鍵を生成および共有する機能は、一般に、量子鍵配送（ＱＫＤ：Ｑｕａｎｔｕｍ  Ｋｅｙ  Ｄｉｓｔｒｉｂｕｔｉｏｎ）と呼ばれる技術により実現される。
【０００３】
このような鍵共有ネットワークにおいて、ノードで生成されるリンク鍵の枯渇を抑制するために、各リンクに対応させたリンク鍵の生成量をコストとして、他のノードまでのパス（経路）のメトリックを算出して、特定のノードまでの最適なパスを選択するという技術が提案されている。
【０００４】
しかし、量子通信路上に盗聴者が存在し、量子鍵配送により共有するリンク鍵が盗まれると、暗号通信に利用するアプリケーション鍵もリンク鍵を用いて暗号化されているため、アプリケーション鍵も盗まれる（復号される）ことになる。アプリケーション鍵により暗号化されたデータが古典通信路上で暗号通信されている場合、そのアプリケーション鍵が盗まれると、暗号化されたデータが復号されてデータが盗まれることになる。ただし、量子力学の基本原理である不確定性原理により、量子通信路上で送受信される光子を盗聴者が観測すると、光子の状態が変化し、光子を受信したノードは、盗聴者に光子を観測されたことを知ることができる。これによって、盗聴された可能性があるリンク鍵を破棄することは可能となるが、盗聴者がいる可能性がある量子通信路と同じ経路の古典通信路を経由してアプリケーション鍵をルーティングすることも避けることが望ましい。たとえ、盗聴されていないリンク鍵でアプリケーション鍵を暗号化してルーティングしても、ワンタイムパッドではないリンク鍵でアプリケーション鍵を暗号化している場合、暗号通信されているデータが盗まれる可能性があるからである。
【０００５】
上述の、提案されている技術は、生成したリンク鍵の枯渇を抑制するための古典通信路のパスを選択することはできても、上述のように、盗聴者による古典通信路の盗聴の可能性があるリンクを回避する点については考慮されていないという問題があった。また、量子通信路および古典通信路を、ＷＤＭ（Ｗａｖｅｌｅｎｇｔｈ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅｘ：光波長多重化）技術により光ファイバで一本化した場合、その光ファイバを介して、古典通信の波長帯でアプリケーション鍵を盗まれる場合もある。その場合、量子通信路上で送受信される光子に影響を及ぼし、エラーレートが高くなる可能性がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】ＵＳ７７０６５３５Ｂ１（Ｓｙｓｔｅｍｓ  ａｎｄ  ｍｅｔｈｏｄｓ  ｆｏｒ  ｉｍｐｌｅｍｅｎｔｉｎｇ  ｒｏｕｔｉｎｇ  ｐｒｏｔｏｃｏｌｓ  ａｎｄ  ａｌｇｏｒｉｔｈｍｓ  ｆｏｒ  ｑｕａｎｔｕｍ  ｃｒｙｐｔｏｇｒａｐｈｉｃ  ｋｅｙ  ｔｒａｎｓｐｏｒｔ）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、上記に鑑みてなされたものであって、盗聴に対する安全性を向上させた暗号鍵の送受信を実現する通信装置、通信システムおよびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
実施形態の通信装置は、１以上の外部装置と量子通信路および古典通信路で接続され、前記量子通信路を介した光子により暗号鍵を生成する通信装置であって、取得部と、算出部と、選択部と、を備える。取得部は、前記１以上の外部装置と接続する前記量子通信路ごとの量子誤り率を取得する。算出部は、前記量子誤り率に基づいて、前記通信装置から前記１以上の外部装置までの第１経路のメトリックを算出する。選択部は、前記メトリックに基づいて、前記通信装置から、前記１以上の外部装置のうち特定の外部装置までの前記古典通信路上の第２経路を選択する。
【図面の簡単な説明】
【０００９】
【図１】図１は、量子暗号通信システムの構成図である。
【図２】図２は、鍵共有ネットワークでのアプリケーション鍵の共有動作を説明する図である。
【図３】図３は、最小単位の鍵共有ネットワークの構成を示す図である。
【図４】図４は、ＯＳＰＦの手順の一例を示す図である。
【図５】図５は、第１の実施形態の通信装置のハードウェアの構成図である。
【図６】図６は、第１の実施形態の通信装置の機能ブロックの構成図である。
【図７】図７は、メトリックについて説明する図である。
【図８】図８は、第４の実施形態において平均ＱＢＥＲの算出方法を説明する図である。
【図９】図９は、第４の実施形態のネットワーク構成例を示す図である。
【図１０】図１０は、第４の実施形態においてルーティングの手順を示す図である。
【図１１】図１１は、第４の実施形態においてルーティングの手順を示す図である。
【図１２】図１２は、第４の実施形態においてルーティングの手順を示す図である。
【図１３】図１３は、第４の実施形態においてルーティングの手順を示す図である。
【図１４】図１４は、第４の実施形態においてルーティングの手順を示す図である。
【図１５】図１５は、第４の実施形態においてルーティングの手順を示す図である。
【図１６】図１６は、第４の実施形態においてルーティングの手順を示す図である。
【図１７】図１７は、第４の実施形態においてルーティングの手順を示す図である。
【図１８】図１８は、第４の実施形態においてルーティングの手順を示す図である。
【図１９】図１９は、第４の実施形態においてルーティングの手順を示す図である。
【図２０】図２０は、第５の実施形態においてパスのホップ数の比較例を示す図である。
【図２１】図２１は、第５の実施形態の通信装置の機能ブロックの構成図である。
【図２２】図２２は、第５の実施形態のルーティングアルゴリズムを説明する図である。
【図２３】図２３は、第５の実施形態のルーティングアルゴリズムを説明する図である。
【図２４】図２４は、第５の実施形態のネットワーク構成例を示す図である。
【図２５】図２５は、第５の実施形態においてルーティングの手順を示す図である。
【図２６】図２６は、第５の実施形態においてルーティングの手順を示す図である。
【図２７】図２７は、第５の実施形態においてルーティングの手順を示す図である。
【図２８】図２８は、第５の実施形態においてルーティングの手順を示す図である。
【図２９】図２９は、第５の実施形態においてルーティングの手順を示す図である。
【図３０】図３０は、第５の実施形態においてルーティングの手順を示す図である。
【図３１】図３１は、第５の実施形態においてルーティングの手順を示す図である。
【図３２】図３２は、第５の実施形態においてルーティングの手順を示す図である。
【図３３】図３３は、第５の実施形態においてルーティングの手順を示す図である。
【図３４】図３４は、第５の実施形態においてルーティングの手順を示す図である。
【図３５】図３５は、第６の実施形態における量子暗号通信システムの構成図である。
【発明を実施するための形態】
【００１０】
以下に、図面を参照しながら、本発明の実施形態に係る通信装置、通信システムおよびプログラムを詳細に説明する。また、以下の図面において、同一の部分には同一の符号が付してある。ただし、図面は模式的なものであり、厚みと平面寸法との関係、各層の厚みの比率等は現実のものとは異なる場合がある。したがって、具体的な厚みおよび寸法は以下の説明を参酌して判断すべきものである。
【００１１】
量子鍵配送で暗号鍵（アプリケーション鍵）を共有するためのパス（経路）を決定するプロトコル（ルーティングプロトコル）としてはＯＳＰＦ（Ｏｐｅｎ  Ｓｈｏｒｔｅｓｔ  Ｐａｔｈ  Ｆｉｒｓｔ）が用いられることがある。ＯＳＰＦは、ルーティング（経路制御）を行うためのメトリックとして距離（各パスに含まれるリンクのコストの和）を用いる。
【００１２】
量子暗号通信システムの各ノードは、リンクで接続されているノードとの間でリンク鍵の共有を行う。量子暗号通信システムの複数のノードのうち特定のノードは、鍵共有ネットワークを利用してアプリケーション鍵の共有を行う。ノードは、リンク鍵をワンタイムパッドで利用するため、すなわち、一度利用したリンク鍵を捨てるため、アプリケーション鍵をリンク鍵で暗号化して交換する際、リンク鍵を消費する。したがって、リンク鍵を共有する速度以上の速さで、アプリケーション鍵を共有および転送することはできない。複数のノードを介してアプリケーション鍵を共有する場合、アプリケーション鍵の共有速度は、リンク鍵の最も少ないリンク、または、リンク鍵の共有速度が最も低いリンクに律速される。
【００１３】
一方、量子暗号通信システムの各リンク（量子通信路）の量子ビット誤り率（ＱＢＥＲ：Ｑｕａｎｔｕｍ  Ｂｉｔ  Ｅｒｒｏｒ  Ｒａｔｅ）（以下、ＱＢＥＲという）（量子誤り率）に着目した場合、盗聴者によって量子通信路上で送受信される光子が観測されると、上述のように、光子の状態が変化するので、ＱＢＥＲが上昇することになる。すなわち、ＱＢＥＲが高いリンクであるほど、盗聴者によってリンク鍵が盗まれた可能性が高くなると考えることができる。また、量子通信路上に盗聴者が存在する可能性が高いリンクと同じパスの古典通信路を経由してアプリケーション鍵をルーティングすることは避けることが望ましい。このため、盗聴に対する安全性の観点から、アプリケーション鍵を共有するパスに、盗聴者がいる可能性が高いリンクを含めないことが望ましい。
【００１４】
そこで、以下の実施形態に係る通信システムは、盗聴者がいる可能性が高い、すなわち、ＱＢＥＲが高いリンクをできるだけ回避してアプリケーション鍵を共有するためのルーティングアルゴリズムを実現する。これにより、盗聴に対する安全性を向上させることができる。
【００１５】
例えば、以下の実施形態に係る通信システムは、各リンク（量子通信路）において発生するＱＢＥＲをリンクのコストとし、ＱＢＥＲを用いたメトリックを算出するアルゴリズムをルーティングプロトコルの一部として利用する。このように、経路選択（パス選択）のためのメトリックとして、コストであるＱＢＥＲに基づく値とすることにより、盗聴に対する安全性を向上させるパス選択となる。以下の実施形態（第５の実施形態）に係る通信システムは、さらに、ホップ数をメトリックとして採用する。これにより、ルーティングで通るリンクの数が減るので、システム全体としてリンク鍵の消費量を抑える経路を選択することができる。
【００１６】
鍵共有ネットワークを構成する各ノードは、接続されているリンクのＱＢＥＲ、およびネットワーク情報を相互に交換する。各ノードは、アプリケーション鍵を共有するためのパスを選択するために、ＱＢＥＲに関するメトリック（およびホップ数）を算出する。各ノードは、ＱＢＥＲに関するメトリックを用いてパスを選択する場合、以下に述べるアルゴリズムを用いて、盗聴に対する安全性の高いパスを選択する。また、各ノードは、ＱＢＥＲに関するメトリック、およびホップ数を用いてパスを選択する場合、以下に述べるアルゴリズムを用いて、盗聴に対する安全性が高く、リンク鍵の消費量を抑えるパスを選択する。
【００１７】
なお、ＱＢＥＲに関するメトリックと、ホップ数とは、異なるメトリックであり、これを評価する順序や重み付けにより、いくつかのバリエーションがあり得る。ノードは、例えば、以下の（Ａ）または（Ｂ）の手順により、盗聴に対する安全性が高く、リンク鍵の消費量を抑えるパスを選択する。
【００１８】
（Ａ）ＱＢＥＲに関するメトリックが同一であるパスに対して、メトリックとしてのホップ数を考慮したパス選択を行う。
（Ｂ）ＱＢＥＲに関するメトリックおよびホップ数の両方を考慮した単一のメトリックを用いてパス選択を行う。
【００１９】
さらに、ＱＢＥＲに大きな変動が発生したことを契機としてルーティングプロトコルの再実行を行うように構成してもよい。
【００２０】
なお、メトリックの要素として１つ目にＱＢＥＲに関するメトリックを採用し、次の要素としてホップ数を評価したが、これらを評価する順序は逆であっても構わない。すなわち、メトリックとしてのホップ数によってルーティングを行い、ホップ数が等しい場合にＱＢＥＲに関するメトリックを評価してもよい。そして、ＱＢＥＲに関するメトリック、およびパスのホップ数のそれぞれを、単一のメトリックに反映させる度合いを調整することも可能である。これは、例えば、ＱＢＥＲに関するメトリックとパスのホップ数とを重み付けして、単一のメトリックを計算することで実現される。また、ＱＢＥＲに関するメトリック以外にも、リンク鍵の生成速度または蓄積量をコストとしてメトリックに反映させるものとしてもよい。
【００２１】
また、上述のように、ＱＢＥＲに関するメトリックを考慮することは、盗聴に対する安全性の向上に関係する。また、メトリックとしてホップ数を考慮することは、システム全体のリンク鍵の消費量を抑えることに関係する。量子暗号通信システムを適用するアプリケーションに応じて、メトリックを使い分けるとよい。
【００２２】
（第１の実施形態）
図１は、量子暗号通信システムの構成の一例を示す図である。なお、図１は、ノードとアプリケーションとが独立に実現される場合の一例である。図１に示すように、量子暗号通信システムは、通信装置としてのノード１００ａ〜１００ｅと、アプリケーション２００ａ、２００ｂと、を含む。
【００２３】
ノード１００ａ〜１００ｅは、それぞれ、鍵共有ネットワーク５０２によって、リンクにより接続される他のノード（外部装置）との間でリンク鍵（例えば、リンク鍵３０２、３０３）を共有する。また、特定のノードは、リンクとは独立に乱数である暗号鍵をアプリケーション鍵として生成し、アプリケーションに提供する。例えば、ノード１００ａ、１００ｅは、それぞれ、リンクとは独立に乱数である暗号鍵３０１、暗号鍵３０４を生成し、アプリケーション鍵４０１、４０２として、アプリケーション２００ａ、２００ｂに提供する。アプリケーション２００ａ、２００ｂは、アプリケーションネットワーク５０１によりアプリケーション鍵（アプリケーション鍵４０１、４０２）を用いた暗号通信を行う。
【００２４】
なお、ノード１００ａ〜１００ｅを区別する必要がない場合は、単に、ノード１００という場合がある。アプリケーション２００ａ、２００ｂを区別する必要がない場合は、単に、アプリケーション２００という場合がある。
【００２５】
また、図１に示すように、ノード１００の個数は５に限られるものではない。また、図１に示すようにアプリケーション２００の個数は２に限られるものではない。
【００２６】
ノード１００ａ〜１００ｅは、それぞれ、上述のように、リンクで接続されたノードとの間で乱数を生成して共有する機能と、生成した乱数をリンク鍵として利用して、鍵共有ネットワーク５０２上で暗号通信を行う機能とを備える。なお、ノード１００は、リンクとは独立に乱数を生成する機能と、別のノードに対して生成した乱数を送信する機能とを備えてもよい。
【００２７】
図２は、鍵共有ネットワークでのアプリケーション鍵の共有動作を説明する図である。図３は、最小単位の鍵共有ネットワークの構成を示す図である。上述のように、ノード１００は、他のノード１００との間でリンク鍵を生成する。図２では、ノード１００ａとノード１００ｃとの間でリンク鍵３０２が共有され、ノード１００ｃとノード１００ｅとの間でリンク鍵３０３が共有される例が示されている。
【００２８】
また、図２では、ノード１００ａは、リンクとは独立に乱数である暗号鍵３０１を生成し、アプリケーション鍵４０１として、アプリケーション２００ａに提供し、ノード１００ｅは、リンクとは独立に乱数である暗号鍵３０４を生成し、アプリケーション鍵４０２として、アプリケーション２００ｂに提供する例が示されている。この後、各ノード１００は、アプリケーション鍵を共有するためのルーティングを行う。そして、各ノード１００は、ルーティングにより決定されたパスにおいて、リンク鍵を用いてアプリケーション鍵を共有（転送）する。図２では、ノード１００ａおよびノード１００ｅの間でアプリケーション鍵が共有され、それぞれアプリケーション鍵４０１および４０２が提供される例が示されている。
【００２９】
なお、鍵共有ネットワーク５０２の最小のネットワーク構成としては、図３に示すような、ノード１００ｆとノード１００ｇとが接続された２つのノードからなる構成が考えられる。また、図２に示すように、ノード１００と他のノード１００とを接続するリンク（古典通信路および量子通信路の組）は、１つであるものとしているが、これに限定されるものではない。例えば、図３に示すように、２つのノード（ノード１００ｆ、１００ｇ）は、複数のリンク（図３の例では２つ）によって接続される構成であってもよい。
【００３０】
図４は、ＯＳＰＦの手順の一例を示す図である。図４を参照しながら、既存のルーティングプロトコルであるＯＳＰＦを利用して、鍵共有ネットワークのルーティングテーブルを作成する手順について説明する。
【００３１】
ＯＳＰＦでは、ノード１００はリンクステートと呼ばれるメッセージを送信し、ノード１００が接続しているリンクの状態、そのリンクのネットワークアドレス、および、リンクごとのコスト等の情報を他のノード１００と共有する。リンクステートには、あるノード１００が、他のいずれのノード１００に、どのように接続しているか、という情報（ネットワーク情報）が含まれる。リンクステートを受け取った各ノード１００は、リンクステートに基づいて、ネットワーク構成を把握する。そして、ネットワーク構成を表す表（リンクステートデータベース）を構築する。各ノード１００は、リンクステートデータベースからダイクストラ（Ｄｉｊｋｓｔｒａ）アルゴリズムを用いて、自身を始点とした最短パスツリーを作成し、ルーティングテーブルを作成する。
【００３２】
各ノード１００は、図４の（１）〜（４）に示すような手順でＯＳＰＦによってルーティングテーブルを作成してルーティングを行う。
【００３３】
（１）他のノード１００との間でリンクステートを共有する。リンクステートは、例えば接続しているリンクの状態、ネットワークアドレス、および、リンクごとのコストを含む。
（２）リンクステートに基づいて、ネットワーク構成を表す表（リンクステートデータベース）を作成する。
（３）リンクステートデータベースからダイクストラアルゴリズムを用いて、自身を始点とした最短パスツリーを作成する。
（４）最短パスツリーからルーティングテーブル（例えば、ＩＰアドレスとネクストホップとを対応づけたテーブル）を作成する。
【００３４】
以上が、鍵共有ネットワークにおける基本的なルーティングテーブルを作成する手順である。本実施形態は、上述の手順のうち、主に（３）の最短パスツリーの作成に関する。ただし、本実施形態では、距離に関する最短パスツリーではなく、盗聴に対する安全性の高い最適パスツリーの作成を扱う。それ以外の（１）、（２）および（４）は、従来と同様の手順で実行できる。ただし、後述のとおり、（１）の手順によって共有される情報の一部に、本実施形態特有の情報が含まれる。
【００３５】
ここで、本実施形態のルーティングプロトコルにおけるコストおよびメトリックの算出方法について説明する。鍵共有ネットワーク５０２を構成する各リンクと各ノード１００とに対応付けられるデータは以下のとおりとする。
【００３６】
リンクに対応付けられるコストに関するデータ：
・ＱＢＥＲ
・カウントレート
・シフティング処理後の鍵ビット数
・誤り訂正後の鍵ビット数
・生成した暗号鍵のビット数
【００３７】
ノード１００に対応付けられるデータ：
・ネットワークの構成を表すデータベース（リンクステートデータベース）
・最適パスツリーとしての確定情報
・始点から他のノード１００までのＱＢＥＲに関するメトリック
・始点から他のノード１００までのホップ数
・ネクストホップ
【００３８】
ＱＢＥＲは、ノード１００間で量子鍵配送を行うときに送受信するビット情報の誤り率を表したものである。このＱＢＥＲは、リンクに接続して動作させるノード１００の設定パラメータ、環境の影響、および盗聴者の存在等によって、リンクごとに異なる値となる。コストとしてＱＢＥＲを採用した場合、ＱＢＥＲの算出方法としては、一般的には、ある時間間隔で鍵となるビット列からサンプルを取り出して計算するが、サンプルの抽出方法および抽出する時間間隔に関しては特に指定しない。また、抽出するサンプルのＱＢＥＲだけでなく、ＱＢＥＲの算出時までの変化量、または量子鍵配送の開始以降のそれまでの実績等を考慮して決めてもよい。
【００３９】
また、ＱＢＥＲは、量子鍵配送を行う場合に、そのリンク（量子通信路）における盗聴を検知するための参考となる値であり、このＱＢＥＲが閾値を超えたときに盗聴されていると考えるものとする。送信ノードは、光子に鍵となるビットの情報をエンコードさせて、受信ノードにビットの情報がエンコードされた光子を送信する。ここで、盗聴者がその光子を観測すると量子力学の原理によって、光子の偏光状態が変わり、受信ノードは、正しいビットの情報を受け取る確率が減少し、ＱＢＥＲが高くなる。また、光子の送受信の間で生じたノイズによってもＱＢＥＲは高くなるが、このＱＢＥＲの上昇の原因が盗聴者の存在によるものなのか、ノイズによるものなのかを判別する手段はないため、ここでは、すべて盗聴者によるものと考える。ＱＢＥＲが上昇した場合、盗聴者は多くのビット情報を盗むことができた可能性がある。さらに、このビット情報の誤りを訂正するために、送信ノードおよび受信ノードは、誤り訂正処理で古典通信路を通じていくらかのデータのやりとりを行う必要があるため、盗聴者に漏れる情報はさらに増えることになる。これらの盗聴者に洩れる情報量、およびリンク鍵の安全性の強度を考慮して、ＱＢＥＲの閾値が設定される。すなわち、ＱＢＥＲが閾値以上の状態で量子鍵配送を行っても、生成されるリンク鍵の安全性が保証できないため、その状態で共有したビットを破棄するものとする。
【００４０】
また、ＱＢＥＲが閾値を超えており、盗聴者が存在する可能性が高いパスでは、リンク鍵を盗まれている可能性だけでなく、リンク鍵を用いて暗号化して古典通信路上でルーティングを行うアプリケーション鍵も盗まれる可能性がある。このような経路では、たとえ、盗聴されていないリンク鍵でアプリケーション鍵が暗号化されていても、ワンタイムパッドではないリンク鍵でアプリケーション鍵を暗号化している場合、古典通信路上でアプリケーション鍵が盗聴者に漏れる可能性もある。
【００４１】
さらに、量子通信路および古典通信路を、ＷＤＭ技術により光ファイバで一本化した場合、その光ファイバを介して、古典通信の波長帯でアプリケーション鍵が盗まれる場合もある。その場合、量子通信路上で送受信される光子に影響を及ぼし、ＱＢＥＲが高くなる可能性があるので、ＱＢＥＲを閾値により監視する必要がある。また、一般的に、ＱＢＥＲが低ければビットの反転する確率が小さいため、送受信ノード間で共有するビット数が増えるのでリンク鍵の生成量は多くなる。また、ＱＢＥＲが高ければビットの反転する確率が大きいため、送受信ノード間で共有するビット数が減るのでリンク鍵の生成量は少なくなる。そのため、本実施形態のルーティングアルゴリズムによって、盗聴者の存在する確率が低いパスを選択するだけでなく、リンク鍵の生成量が多いパスの選択が可能となる。
【００４２】
上述のように、各ノード１００は、最適パスを計算するときに必要となる情報として、エリア内のネットワークの構成（接続関係）を表すリンクステートデータベースを持っている。また、各ノード１００は、最適パスツリーとしての確定情報、始点から他の各ノード１００までのＱＢＥＲに関するメトリック、始点から他の各ノード１００までのホップ数、および、ネクストホップを有する。
【００４３】
最適パスツリーとしての確定情報は、外部装置（他のノード１００）ごとに、当該ノード１００までの最適パスが確定しているかどうかを表す情報である。確定していない場合、そのノード１００までのパスは、最適パスの候補に過ぎないことを表す。ここで、最適パスとは、自身から他のノード１００までのメトリックが最良となるパスである。例えば、ＱＢＥＲに関するメトリックの場合、自身から他のノード１００までのパスのうち、盗聴に対して最も安全性が高いパスが最適パスと考えることができる。
【００４４】
始点から他のノード１００までのＱＢＥＲに関するメトリックは、他のノード１００に到達するための最適パスの候補を経由するときのリンクのコストとしてのＱＢＥＲについて算出される値である。
【００４５】
始点から他のノード１００までのホップ数は、他のノード１００に到達するための最適パスの候補を経由するときのホップ数を表す。始点から他のノード１００までＱＢＥＲに関するメトリック、および、始点から他のノード１００までのホップ数は、他のノード１００ごとに保持される。
【００４６】
ネクストホップは、最適パスの候補となるネクストホップを表す。
【００４７】
ＯＳＰＦにおけるダイクストラアルゴリズムでは、メトリックは、距離であった。一方、本実施形態のルーティングプロトコルでは、メトリックは、距離ではなく、パスに含まれるＱＢＥＲに基づいて求められる値となる。アプリケーション鍵を共有するノード１００間のパスに含まれるリンクのＱＢＥＲを監視して、ＱＢＥＲが閾値以下の経路の中で、かつ、ＱＢＥＲに基づいて求められる値が最適となるパスを選択し、盗聴者の存在する確率が低いパスを選択するために、ＱＢＥＲに基づいて求められる値をメトリックとして導入する。これは、本実施形態の他、後述する他の実施形態においても同様である。
【００４８】
本実施形態のルーティングアルゴリズムでは、最適パスの候補となるパスに含まれる各リンクのＱＢＥＲを足し合わせたＱＢＥＲの和を、メトリックとして用いる。ＱＢＥＲを足し合わせることによって、最適パスの候補となるパスに含まれるリンクが多いほど、ＱＢＥＲの和が大きくなり、それに比例して盗聴者が存在する確率が高くなることを反映できることになる。
【００４９】
図５は、第１の実施形態の通信装置のハードウェア構成の一例を示す図である。図５を参照しながら、通信装置であるノード１００のハードウェアの構成について説明する。
【００５０】
図５に示すように、ノード１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５３と、通信Ｉ／Ｆ５４と、補助記憶装置５５と、を備えている。
【００５１】
ＣＰＵ５１は、ノード１００全体の動作を制御する装置である。ＲＯＭ５２は、ノード１００用のプログラムを記憶している不揮発性記憶装置である。ＲＡＭ５３は、ＣＰＵ５１のワークエリアとして使用される揮発性記憶装置である。
【００５２】
通信Ｉ／Ｆ５４は、他のノード１００と通信するためのインターフェースである。補助記憶装置５５は、生成された暗号鍵等を記憶するＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）またはＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置である。
【００５３】
上述のＣＰＵ５１、ＲＯＭ５２、ＲＡＭ５３、通信Ｉ／Ｆ５４および補助記憶装置５５は、アドレスバスおよびデータバス等のバス５６によって互いに通信可能に接続されている。
【００５４】
図６は、第１の実施形態の通信装置の機能ブロックの構成の一例を示す図である。図６を参照しながら、通信装置であるノード１００の機能ブロックの構成について説明する。
【００５５】
図６に示すように、ノード１００は、制御部１０１と、管理部１０２（取得部）と、プラットフォーム部１０３と、通信部１０４と、ルーティング処理部１１０と、を有する。
【００５６】
制御部１０１は、当該ノード１００で行われる処理の制御を行う機能部である。制御部１０１は、例えば、各構成部の起動を担う。また、制御部１０１は、後述する量子通信部１０５から光子のビット列を受け取り、ＱＢＥＲおよびカウントレート等を算出する。さらに、制御部１０１は、光子のビット列に対して、シフティング処理、誤り訂正、および秘匿性増強処理等の処理を実行して暗号鍵（リンク鍵またはアプリケーション鍵）を生成する。
【００５７】
管理部１０２は、当該ノード１００が接続しているリンクのＱＢＥＲ、カウントレート、シフティング処理後の鍵ビット数、誤り訂正後の鍵ビット数、および生成した暗号鍵のビット数等のリンクに関する情報を、制御部１０１から取得して管理する機能部である。
【００５８】
プラットフォーム部１０３は、当該ノード１００の他の構成要素の管理、動作に必要なコンピュータのオペレーティングシステム機能、基本的なネットワーク機能、および、セキュリティ機能等を提供する機能部である。
【００５９】
通信部１０４は、当該ノード１００が接続されている他のノード１００との通信を行う機能部である。通信部１０４は、リンクごとに備えられ、それぞれ量子通信部１０５と、古典通信部１０６と、を有する。通信部１０４は、図５に示す通信Ｉ／Ｆ５４によって実現される。
【００６０】
量子通信部１０５は、リンクのうち量子通信路によって他のノード１００に接続されており、他のノード１００と量子通信を行う機能部である。量子通信部１０５は、リンクによって接続されたノード１００との間で、量子暗号を用いて、乱数を生成してリンク鍵（暗号鍵）を生成するための光子のビット列を共有する。
【００６１】
古典通信部１０６は、リンクのうち古典通信路によって他のノード１００に接続されており、他のノード１００と古典通信を行う機能部である。古典通信部１０６を介してノード１００間で交換されるデータには、アプリケーション鍵のデータ等がある。これらのデータは通常、ノード１００が管理するリンク鍵を用いた暗号通信により、古典通信部１０６を介して送信される。
【００６２】
ルーティング処理部１１０は、上述のルーティングプロトコルによるルーティング（経路制御）を実行する処理部である。ルーティング処理部１１０は、収集部１１１と、判断部１１２と、算出部１１３と、選択部１１４と、記憶部１１５と、を有する。
【００６３】
収集部１１１は、古典通信部１０６を介して、ノード１００が接続しているリンクの状態、そのリンクのネットワークアドレス、リンクごとのコスト、およびネットワーク情報等を含むリンクステートを収集する機能部である。収集部１１１は、収集したリンクステートに基づいて、リンクステートデータベースを作成して、記憶部１１５に記憶させる。
【００６４】
判断部１１２は、管理部１０２で管理するＱＢＥＲの値と、盗聴を検出する閾値（第１閾値）とを比較して、盗聴の検知の有無を判断する機能部である。判断部１１２は、盗聴を検知したリンクについての判断結果を、算出部１１３に送り、そのリンクに対してルーティングを行わないようにさせる。
【００６５】
算出部１１３は、収集部１１１により作成されたリンクステートデータベースを参照し、管理部１０２により管理されているＱＢＥＲから、他のノード１００までのパス（第１経路）のメトリックを算出する機能部である。本実施形態では、算出部１１３は、メトリックとして、他のノード１００までのパスのＱＢＥＲの和を算出する。
【００６６】
選択部１１４は、他のノード１００に到達する複数の最適パスの候補から、その候補のパスのメトリックに基づいて、メトリックが最適となる最適パス（第２経路）を選択して、最適パスツリーを作成する機能部である。選択部１１４は、最適パスツリーからルーティングテーブルを作成して、記憶部１１５に記憶させる。
【００６７】
記憶部１１５は、収集部１１１により作成されたリンクステートデータベース、および選択部１１４により作成されたルーティングテーブル等を記憶する機能部である。記憶部１１５は、図５に示す補助記憶装置５５によって実現される。
【００６８】
上述の各機能部（制御部１０１、管理部１０２、プラットフォーム部１０３、収集部１１１、判断部１１２、算出部１１３、および選択部１１４）は、図５に示すＣＰＵ５１等の処理装置にプログラムを実行させること、すなわち、ソフトウェアにより実現してもよいし、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のハードウェアにより実現してもよいし、ソフトウェアおよびハードウェアを併用して実現してもよい。
【００６９】
以上、本実施形態におけるノード１００の機能ブロックの構成について説明した。ただし、上述の説明は一例である。
【００７０】
次に、本実施形態における、ルーティングアルゴリズムについて詳細を説明する。以下に示すシーケンスが、ルーティングアルゴリズムの基本シーケンスとなる。ここでは、ノード１００間でリンクステートを共有し、ネットワーク構成を把握した後、ルーティングテーブルを作成する前の最適パスツリーを作成する処理＜ステップＳ１＞〜＜ステップＳ８＞について示す。以下では、通信装置としての各ノード１００に対応する、最適パスツリー（木構造）のノード（節）を表すために、符号を付さずに「ノード」と記載する場合がある。
【００７１】
＜ステップＳ１＞すべてのノードに初期化のラベルを設定する。
＜ステップＳ２＞始点に接続されているすべてのノードに対して、そのノードまでのＱＢＥＲの和を求める。この場合、ＱＢＥＲが閾値を超えるリンクは使用しないものとする。
＜ステップＳ３＞始点に接続されているノードの中で、そのノードまでのパスのＱＢＥＲの和が最小であるノードの値を確定する。
＜ステップＳ４＞確定したノードに接続されているすべてのノードに対して、始点からのパスのＱＢＥＲの和を新たに算出する。この場合、ＱＢＥＲが閾値を超えるリンクは使用しないものとする。
＜ステップＳ５＞新たに算出したそのノードまでのパスのＱＢＥＲの和が、保持するＱＢＥＲの和よりも小さい場合は、ＱＢＥＲの和を更新し、新たなパスを保持する。そして、以前のパスは使用しないものとして削除する。
＜ステップＳ６＞保持するＱＢＥＲの和が、新たに算出したＱＢＥＲの和よりも小さい場合は、現在のＱＢＥＲの和およびパスを保持する。新たに算出したパスは使用しないものとして削除する。
＜ステップＳ７＞確定していないノードの中で、始点からのパスのＱＢＥＲの和が最も小さいノードの値を確定する。
＜ステップＳ８＞すべてのノードの値が確定するまで＜ステップＳ４＞〜＜ステップＳ７＞を繰り返す。
【００７２】
次に、本実施形態のルーティングアルゴリズムを示す。このアルゴリズムは、ＯＳＰＦで利用されるダイクストラアルゴリズムでメトリックとして扱われている距離の代わりに、ＱＢＥＲの和をメトリックとしたアルゴリズムである。まず、本アルゴリズムで用いる記法を説明する。
【００７３】
ｓ：始点
Ｖ：グラフ全体の点の集合
ＶＰ：ＱＢＥＲの和が確定した点の集合
Ｖ＼ＶＰ：ＱＢＥＲの和が未確定の点の集合
ｓｕｍ［ｎ］：点ｎまでのパスのＱＢＥＲの和
ｃｏｓｔ［ｌ］：辺ｌのコスト
ｐａｔｈ［ｎ］＝ｌ：点ｎへのパスが辺ｌである
ｔｈ：ＱＢＥＲに対する閾値
【００７４】
次に本実施形態のルーティングアルゴリズムの例を説明する。
【００７５】
＜ステップＳ１１＞始点ｓを選び、ＶＰ：＝φ，ｓｕｍ［ｓ］：＝０（ｐａｔｈ［ｓ］：＝０）とする。始点ｓ以外の点ｖに対しては、ｓｕｍ［ｖ］：＝∞（ｐａｔｈ［ｖ］：＝−１）とする。
【００７６】
＜ステップＳ１２＞Ｖ＝ＶＰとなるまで以下を繰り返す。
＜ステップＳ１２ａ＞ｓｕｍ［ｗ］＝ｍｉｎ｛ｓｕｍ［ｖ］｜ｖ∈Ｖ＼ＶＰ｝となる点ｗを求める（その点までのパスのＱＢＥＲの和が未確定の点の中でＱＢＥＲの和が最小の点ｗを求める）。
＜ステップＳ１２ｂ＞ＶＰ：＝ＶＰ  ∪  ｛ｗ｝とする（その点までのパスのＱＢＥＲの和が確定した点の集合に点ｗを含める）。点ｗを始点とする各辺ｅ＝（ｗ，ｖ）に対して、以下の処理を実行する。
【００７７】
ｉｆ  ｓｕｍ［ｖ］＞ｓｕｍ［ｗ］＋ｃｏｓｔ［ｅ］  ａｎｄ  ｔｈ＞ｃｏｓｔ（ｅ）
ｔｈｅｎ  ｓｕｍ［ｖ］：＝ｓｕｍ［ｗ］＋ｃｏｓｔ［ｅ］（ｐａｔｈ［ｖ］：＝ｅ）
（もし、点ｖまでのパスのＱＢＥＲの和（保持されているＱＢＥＲの和）が、点ｗまでのパスのＱＢＥＲの和と辺ｅのＱＢＥＲとの和よりも大きく、かつ、辺ｅのＱＢＥＲが閾値ｔｈよりも小さければ更新する）
【００７８】
以上のように、本実施形態におけるルーティングプロトコルでは、コストを、ノード１００間を接続するリンクのＱＢＥＲとし、メトリックを、ノード１００から他のノード１００までのパスのＱＢＥＲの和としている。そして、ルーティングアルゴリズムでは、ノード１００から他のノード１００までの最適パスの候補の中から、メトリックであるＱＢＥＲの和が最小となるパスを最適パスとして選択するものとしている。これによって、最適パスのＱＢＥＲの和が最小となるので、この最適パスでは盗聴に対する安全性を他のパスよりも向上させることができ、安全性の高い状態で暗号鍵をノード間で送受信することができる。
【００７９】
（第２の実施形態）
本実施形態に係る鍵共有ネットワークの動作について、第１の実施形態に係る鍵共有ネットワークと相違する動作を中心に説明する。なお、本実施形態では、ノード１００の構成は、図６に示す第１の実施形態に係るノード１００の構成と同様である。
【００８０】
本実施形態のルーティングアルゴリズムでは、最適パスの候補となるパスに含まれる各リンクのＱＢＥＲのうち最大のＱＢＥＲ（以下、ボトルネックという場合がある）を、メトリックとして用いる。パスの最大のＱＢＥＲ、すなわちボトルネックをメトリックとすることによって、ボトルネックが大きいパスほど、盗聴者が存在する確率が高くなることを反映できることになる。
【００８１】
図７は、メトリックについて説明する図である。図７を参照しながら、パスにおけるコストの和およびボトルネックについて説明する。
【００８２】
点ｓから点ｔまでのパスを考えたとき、第１の実施形態ではパスに含まれる各リンクのコストの和（ＱＢＥＲの和）をパスのメトリックとして考えた。本実施形態では、パスに含まれる各リンクのコストの最大値（ＱＢＥＲの最大値）、すなわちボトルネックをメトリックとして考える。第１の実施形態では、メトリックがパスに含まれる各リンクのコストの和（ＱＢＥＲの和）なので、図７に示す点ｓから点ｔまでのパスのメトリックは、４＋３＋８＝１５となる。一方、本実施形態では、メトリックがボトルネック、すなわちパスに含まれる各リンクのコストの最大値（ＱＢＥＲの最大値）なので、ｍａｘ｛４，３，８｝＝８となる。そして、本実施形態のルーティングアルゴリズムは、上述の第１の実施形態のルーティングアルゴリズムに準じた方法で実現できる。すなわち、本実施形態のルーティングアルゴリズムでは、ノード１００から他のノード１００までの最適パスの候補の中から、メトリックであるボトルネックが最小となるパスを最適パスとして選択する。
【００８３】
以上のように、本実施形態におけるルーティングプロトコルでは、コストを、ノード１００間を接続するリンクのＱＢＥＲとし、メトリックを、ノード１００から他のノード１００までのパスに含まれる各リンクのＱＢＥＲのうち最大のＱＢＥＲ（ボトルネック）としている。そして、ルーティングアルゴリズムでは、ノード１００から他のノード１００までの最適パスの候補の中から、メトリックであるボトルネックが最小となるパスを最適パスとして選択するものとしている。これによって、最適パスのボトルネックが最小となるので、この最適パスでは盗聴に対する安全性を他のパスよりも向上させることができ、安全性の高い状態で暗号鍵をノード間で送受信することができる。
【００８４】
（第３の実施形態）
本実施形態に係る鍵共有ネットワークの動作について、第１の実施形態に係る鍵共有ネットワークと相違する動作を中心に説明する。なお、本実施形態では、ノード１００の構成は、図６に示す第１の実施形態に係るノード１００の構成と同様である。
【００８５】
本実施形態のルーティングアルゴリズムでは、最適パスの候補となるパスに含まれる各リンクのＱＢＥＲのうち最小のＱＢＥＲ（以下、ベストともいう場合がある）を、メトリックとして用いる。パスの最小のＱＢＥＲ、すなわちベストをメトリックとすることによって、ベストが小さいパスほど、盗聴者が存在する確率が低くなることを反映できることになる。
【００８６】
上述の図７において、点ｓから点ｔまでのパスを考えたとき、第１の実施形態ではパスに含まれる各リンクのコストの和（ＱＢＥＲの和）をパスのメトリックとして考えた。本実施形態では、パスに含まれる各リンクのコストの最小値（ＱＢＥＲの最小値）、すなわちベストをメトリックとして考える。第１の実施形態では、メトリックがパスに含まれる各リンクのコストの和（ＱＢＥＲの和）なので、図７に示す点ｓから点ｔまでのパスのメトリックは、４＋３＋８＝１５となる。一方、本実施形態では、メトリックがベスト、すなわちパスに含まれる各リンクのコストの最小値（ＱＢＥＲの最小値）なので、ｍｉｎ｛４，３，８｝＝３となる。そして、本実施形態のルーティングアルゴリズムは、上述の第１の実施形態のルーティングアルゴリズムに準じた方法で実現できる。すなわち、本実施形態のルーティングアルゴリズムでは、ノード１００から他のノード１００までの最適パスの候補の中から、メトリックであるベストが最小となるパスを最適パスとして選択する。
【００８７】
以上のように、本実施形態におけるルーティングプロトコルでは、コストを、ノード１００間を接続するリンクのＱＢＥＲとし、メトリックを、ノード１００から他のノード１００までのパスに含まれる各リンクのＱＢＥＲのうち最小のＱＢＥＲ（ベスト）としている。そして、ルーティングアルゴリズムでは、ノード１００から他のノード１００までの最適パスの候補の中から、メトリックであるベストが最小となるパスを最適パスとして選択するものとしている。これによって、最適パスのベストが最小となるので、この最適パスでは盗聴に対する安全性を他のパスよりも向上させることができ、安全性の高い状態で暗号鍵をノード間で送受信することができる。
【００８８】
（第４の実施形態）
本実施形態に係る鍵共有ネットワークの動作について、第１の実施形態に係る鍵共有ネットワークと相違する動作を中心に説明する。なお、本実施形態では、ノード１００の構成は、図６に示す第１の実施形態に係るノード１００の構成と同様である。
【００８９】
図８は、第４の実施形態において平均ＱＢＥＲの算出方法を説明する図である。図８を参照しながら、本実施形態で用いるメトリックである平均ＱＢＥＲの算出方法について説明する。
【００９０】
ノード１００である点ｓから点ｔまでのパスを考えたとき、第１の実施形態のルーティングアルゴリズムでは、パスに含まれる各リンクのＱＢＥＲの和をパスのメトリックとして考えた。本実施形態のルーティングアルゴリズムでは、最適パスの候補となるパスに含まれる各リンクのＱＢＥＲの加重平均（以下、平均ＱＢＥＲという）（平均量子誤り率）を、メトリックとして用いる。このメトリックである平均ＱＢＥＲを算出するコストとしては、各リンクのＱＢＥＲに加え、カウントレートを用いる。ここで、カウントレートとは、ノード１００が送信する光子のビットレートである。図８では、点ｓから点ｔまでの各リンクのＱＢＥＲをリンクの上に示し、各リンクのカウントレートをリンクの下に示している。図８で示す例では、平均ＱＢＥＲは、（４×１００００＋３×２００００＋８×６０００）／（１００００＋２００００＋６０００）＝４．１［％］と計算され、点ｓから点ｔまでのパスの平均ＱＢＥＲは、４．１［％］であると考えるものとする。パスの平均ＱＢＥＲをメトリックとすることによって、平均ＱＢＥＲが大きいパスほど、盗聴者が存在する確率が高くなることを反映できることになる。
【００９１】
本実施形態のノード１００の機能ブロック構成は、上述のように第１の実施形態の図６に示す構成と同様であるが、その機能で相違する点を説明する。
【００９２】
算出部１１３は、収集部１１１により作成されたリンクステートデータベースを参照し、管理部１０２により管理されているＱＢＥＲおよびカウントレートから、下記の式（１）によって、他のノード１００までのパスの平均ＱＢＥＲを算出する。
【数１】
0006426477.tif 000002
【００９３】
式（１）におけるｑｂｅｒｐは、パスｐに含まれる各リンクの平均ＱＢＥＲを示している。ｎは、パスｐに含まれるリンク数を示す。ｅｉは、リンクｉのＱＢＥＲを示す。ｃｉは、リンクｉのカウントレートを示す。
【００９４】
図９は、第４の実施形態のネットワーク構成例を示す図である。図１０〜１９は、第４の実施形態においてルーティングの手順を示す図である。図９〜１９を参照しながら、選択部１１４におけるルーティングの動作の具体例について説明する。以下では、図９のようなネットワークの構成を例に説明する。
【００９５】
ここでは、コストであるＱＢＥＲの閾値は「１０」に設定しており、ＱＢＥＲが「１０」以上のリンクはパスに含めないように選択されないようにする。ノード内に振られた番号（丸で囲まれた番号）は、ノード番号を示す。図１０〜１９では、ノード１からノード６にアプリケーション鍵を転送する場合を示す。リンクに振られた数字（四角で囲まれた数字）はリンクに対応するコスト（ＱＢＥＲ／カウントレート）を示す。ノードの近くに記載された数字は、そのノードに到達するためのパスのメトリック（平均ＱＢＥＲ）を示す。二重丸のノードは、そのノードまでの最適パスが確定したノードを示す。ここでは、ノード間でリンクステートを共有し、ネットワーク構成を把握した後、ルーティングテーブルを作成する前の最適パスツリーを作成する処理について示す。図９〜１９の例では、一方向の通信として説明するが、双方向通信であっても同様にして最適パスツリーを求めることができる。
【００９６】
まず、各ノードまで到達するためのメトリックを「∞」として初期化する（図１０）。始点のノードであるノード１（以下、「始点ノード１」ともいう）は、メトリック「０」として、最適パスが確定される。
【００９７】
ノード１に接続されているノード２は、接続されているリンクのコストであるＱＢＥＲが「１６」であり、閾値「１０」以上なので、最適パスの候補としては考慮せず、コスト「∞」のままとする。また、ノード１に接続されているノード３は、メトリック「２」とする（図１１）。
【００９８】
ノード２およびノード３のうち、メトリックが最良のノード３が、メトリック「２」として、最適パスが確定される（図１２）。確定ノードは、ノード１およびノード３となり、始点ノード１から宛先のノード３へのネクストホップはノード３となる。
【００９９】
ノード３に接続されているノード２は、メトリック（平均ＱＢＥＲ）が「２．３」（＝（２×８００＋５×１００）／（８００＋１００））に更新される。ノード３に接続されているノード４は、メトリック（平均ＱＢＥＲ）が「１．９」（＝（２×８００＋１×１２０）／（８００＋１２０））に更新される。ノード３に接続されているノード５は、メトリック（平均ＱＢＥＲ）が「２．２」（＝（２×８００＋３×１５０）／（８００＋１５０））に更新される（図１３）。
【０１００】
ノード２、ノード４およびノード５のうち、メトリックが最良のノード４が、メトリック「１．９」として、最適パスが確定される（図１４）。確定ノードは、ノード１、ノード３およびノード４となり、始点ノード１から宛先のノード４へのネクストホップはノード３となる。
【０１０１】
ノード４に接続されているノード５は、メトリック（平均ＱＢＥＲ）が「２．２」（＝（２×８００＋１×１２０＋３×４２０））／（８００＋１２０＋４２０））と算出されるが、ノード５で保持されているメトリックと同じであるため更新しない。ノード４に接続されているノード６は、メトリック（平均ＱＢＥＲ）が「３．０」（＝（２×８００＋１×１２０＋６×３６０）／（８００＋１２０＋３６０））に更新される（図１５）。
【０１０２】
ノード５およびノード６のうち、メトリックが最良のノード５が、メトリック「２．２」として、最適パスが確定される（図１６）。確定ノードは、ノード１、ノード３、ノード４およびノード５となり、始点ノード１から宛先のノード５へのネクストホップはノード３となる。
【０１０３】
ノード５に接続されているノード６は、メトリック（平均ＱＢＥＲ）が「２．６」（＝（２×８００＋３×１５０＋４×３２０）／（８００＋１５０＋３２０））に更新される（図１７）。
【０１０４】
ここでは、ノード６が、メトリック「２．６」として、最適パスが確定される（図１８）。確定ノードは、ノード１、ノード３、ノード４、ノード５およびノード６となり、始点ノード１から宛先のノード６へのネクストホップはノード３となる。
【０１０５】
最後に、最適パスが未確定であるノード２が、メトリック「２．３」として、最適パスが確定される（図１９）。確定ノードは、ノード１、ノード３、ノード４、ノード５、ノード６およびノード２となり、始点ノード１から宛先のノード２へのネクストホップはノード３となる。
【０１０６】
最終的にすべてのノードの最適パスが確定し、最適パスツリーが完成し、ノード１からノード６への最適パスはノード１→ノード３→ノード５→ノード６となる（図１９）。
【０１０７】
以上のように、本実施形態におけるルーティングプロトコルでは、コストを、ノード１００間を接続するリンクのＱＢＥＲおよびカウントレートとし、メトリックを、ノード１００から他のノード１００までのパスに含まれる各リンクのＱＢＥＲの加重平均（平均ＱＢＥＲ）としている。そして、ルーティングアルゴリズムでは、ノード１００から他のノード１００までの最適パスの候補の中から、メトリックである平均ＱＢＥＲが最小となるパスを最適パスとして選択するものとしている。これによって、最適パスの平均ＱＢＥＲが最小となるので、この最適パスでは盗聴に対する安全性を他のパスよりも向上させることができ、安全性の高い状態で暗号鍵をノード間で送受信することができる。
【０１０８】
なお、上述のように、ルーティングにおけるパスのメトリックとしての平均ＱＢＥＲを、コストとしてのＱＢＥＲおよびカウントレートから算出するものとしたが、これに限定されるものではない。例えば、コストとして、シフティング処理後の鍵ビット数、誤り訂正後の鍵ビット数、および生成した暗号鍵のビット数等を用いて、平均ＱＢＥＲを求めるものとしてもよい。
【０１０９】
また、図１９の例では、ノード１→ノード３→ノード５→ノード６というパスが最適パスとなりそのメトリックは「２．６」となったが、例えば、ノード１→ノード３→ノード４→ノード５→ノード６というパスでもメトリックは「２．６」となる。したがって、最終的な宛先となるノード６への平均ＱＢＥＲが最適となるパスは複数存在する場合もある。この場合、パスの平均ＱＢＥＲが最小となるパスを選択することによって、盗聴に対する安全性を向上させるという観点では、いずれのパスを最適パスとして選択してもよい。これについては、上述の第１の実施形態〜第３の実施形態においても同様である。
【０１１０】
（第５の実施形態）
本実施形態に係る鍵共有ネットワークの動作について、第１の実施形態に係る鍵共有ネットワークと相違する動作を中心に説明する。
【０１１１】
図２０は、第５の実施形態においてパスのホップ数の比較例を示す図である。図２０を参照しながら、ホップ数について説明する。
【０１１２】
第１の実施形態〜第４の実施形態のように、ＱＢＥＲの和、ボトルネック、ベストおよび平均ＱＢＥＲのみをメトリックとする場合、同一のメトリックを持つパスを複数持つときの判断基準が存在しない。この場合、パスの評価順序等の実装または対象ネットワークの形態によっては、ホップ数が多いパスを選択する可能性があり、ホップ数が多いパス、すなわち経路長が長いパスという観点からは、盗聴者にアプリケーション鍵を盗聴される可能性が増加する。そこで、本実施形態では、メトリックとして、パスのＱＢＥＲに関するメトリック（ＱＢＥＲの和、ボトルネック、ベストおよび平均ＱＢＥＲ）に加え、送信元ノードから宛先のノードまでのパスのホップ数を追加する。これによって、ＱＢＥＲに関するメトリックが等しいパスの中で、さらにホップ数が少ないパスを選択することが可能になり、より安全にアプリケーション鍵を転送できると考えられる。
【０１１３】
図２０では、ノード内に振られた番号（丸で囲まれた番号）は、ノード番号を示し、リンクに振られた数字（四角で囲まれた数字）はリンクに対応するコストを示す。
【０１１４】
ノード１→ノード２→ノード３→ノード４→ノード５→ノード６のパスＡは、ボトルネ
ックが「８」、ホップ数が「５」となる。一方、ノード１→ノード３→ノード５→ノード６のパスＢも、ボトルネックは「８」であるもののホップ数は「３」となる。このようなパスにおいては、よりホップ数の少ないパスを選択する方が、盗聴者にアプリケーション鍵を盗聴される確率を減らすことができると考える。したがって、ホップ数の多いパスＡに比べてホップ数の少ないパスＢの方がより安全にアプリケーション鍵を転送できると考えて最適パスとして選択する。
【０１１５】
なお、図２０では、ＱＢＥＲに関するメトリックとしてボトルネックを想定したが、他のＱＢＥＲに関するメトリックでも同様である。
【０１１６】
図２１は、第５の実施形態の通信装置の機能ブロックの構成の一例を示す図である。図２１を参照しながら、本実施形態のノード１００＿１の機能ブロックの構成について、図６に示す第１の実施形態のノード１００の機能ブロックの構成と相違する点について説明する。
【０１１７】
図２１に示すように、本実施形態のノード１００＿１は、制御部１０１と、管理部１０２と、プラットフォーム部１０３と、通信部１０４と、ルーティング処理部１１０ａと、を有する。
【０１１８】
ルーティング処理部１１０ａは、上述のルーティングプロトコルによるルーティング（経路制御）を実行する処理部である。ルーティング処理部１１０ａは、収集部１１１と、判断部１１２と、算出部１１３ａと、選択部１１４と、記憶部１１５と、カウント部１１６と、を有する。
【０１１９】
カウント部１１６は、そのノードまでの最適パスの候補のホップ数をカウントする機能部である。
【０１２０】
算出部１１３ａは、収集部１１１により作成されたリンクステートデータベースを参照し、管理部１０２により管理されているＱＢＥＲ等、およびカウント部１１６によりカウントされたホップ数から、他のノード１００＿１までのパスのメトリックを算出する機能部である。
【０１２１】
以下に、上述した（Ａ）および（Ｂ）のそれぞれの具体的なメトリックの算出方法の例を示す。また、以下、ＱＢＥＲに関するメトリックとしてボトルネックを想定した場合について説明する。
【０１２２】
（Ａ１）ボトルネックとホップ数とを別の領域に用意し、ボトルネックが等しい場合にホップ数を比較する。
（Ｂ１）ボトルネック（ＢＮ）とホップ数（Ｈｏｐ）とを含むメトリック（ｍｅｔｒｉｃ）を算出する１つの算出式を作っておく。以下に算出式の例を２つ示す。
【０１２３】
ｍｅｔｒｉｃ＝ＢＮ＋１／（Ｈｏｐ）  ・・・（２）
ｍｅｔｒｉｃ＝ＢＮ＋（１−Ｈｏｐ／１０）  ・・・（３）
【０１２４】
例えば、ＢＮ＝４、Ｈｏｐ＝２のとき、式（２）では、ｍｅｔｒｉｃ＝４＋１／２＝４．５となり、式（３）では、ｍｅｔｒｉｃ＝４＋（１−２／１０）＝４．８となる。
【０１２５】
（Ａ１）では、各ノード１００＿１までのパスのボトルネックとホップ数とをそれぞれ保持し、ボトルネックが等しい場合にのみホップ数の比較を行う。（Ｂ１）では、メトリックを表す算出式を予め作っておき、各ノード１００＿１までのパスのボトルネックとホップ数とからメトリックを算出しておく。
【０１２６】
（Ａ１）および（Ｂ１）によるルーティングの結果は同じになる。ただし、（Ｂ１）を利用した場合、既存のダイクストラアルゴリズムと同様に、利用するメトリックの種類が一種類となる。このため、既存の実装の多くを再利用できる可能性がある。ただし、（Ｂ１）を利用した場合、正確なメトリック算出が可能なのは、ホップ数が１０以下である場合に限られる点に注意が必要である。
【０１２７】
なお、上述のメトリックの算出式は一例であり、これらに限られるものではない。例えば、ボトルネックとホップ数とに重みを付けて足し合わせた結果をメトリックとする他の式を用いてもよい。この場合、ボトルネックおよびホップ数にかかる係数（重み）は任意である。
【０１２８】
以上、本実施形態におけるノード１００＿１の機能ブロックの構成について説明した。ただし、上述の説明は一例である。
【０１２９】
次に、本実施形態における、ルーティングアルゴリズムについて詳細を説明する。以下に示すシーケンスが、ルーティングアルゴリズムの基本シーケンスとなる。ここでは、ノード１００＿１間でリンクステートを共有し、ネットワーク構成を把握した後、ルーティングテーブルを作成する前の最適パスツリーを作成する処理＜ステップＳ２１＞〜＜ステップＳ２９＞について示す。以下では、通信装置としての各ノード１００＿１に対応する、最適パスツリー（木構造）のノード（節）を表すために、符号を付さずに「ノード」と記載する場合がある。
【０１３０】
＜ステップＳ２１＞すべてのノードに初期化のラベルを設定する。
＜ステップＳ２２＞始点に接続されているすべてのノードに対して、そのノードまでのパスのボトルネックを求める。この場合、ＱＢＥＲが閾値以上のリンクは使用しないものとする。
＜ステップＳ２３＞始点に接続されているノードの中で、そのノードまでのパスのボトルネックが最小であるノードの値を確定する。
＜ステップＳ２４＞確定したノードに接続されているすべてのノードに対して、始点からのパスのボトルネックを新たに算出する。この場合、ＱＢＥＲが閾値以上のリンクは使用しないものとする。
＜ステップＳ２５＞新たに算出したそのノードまでのパスのボトルネックが、保持するボトルネックよりも小さい場合は、ボトルネックを更新し、新たなパスを保持する。そして、以前のパスは使用しないものとして削除する。
＜ステップＳ２６＞保持するボトルネックが、新たに算出したボトルネックよりも小さい場合は、現在のボトルネックおよびパスを保持する。新たに算出したパスは使用しないものとして削除する。
＜ステップＳ２７＞新たに算出したそのノードまでのパスのボトルネックと、保持するボトルネックとが等しい場合は、そのノードまでの各パスのホップ数を求め、ホップ数が少ない方のパスを保持する。
＜ステップＳ２８＞確定していないノードの中で、始点からのパスのボトルネックが最も小さいノードの値を確定する。
＜ステップＳ２９＞すべてのノードの値が確定するまで＜ステップＳ２４＞〜＜ステップＳ２８＞を繰り返す。
【０１３１】
次に、本実施形態のルーティングアルゴリズムを示す。このアルゴリズムは、ＯＳＰＦで利用されるダイクストラアルゴリズムでメトリックとして扱われている距離の代わりに、ボトルネックおよびホップ数をメトリックとしたアルゴリズムである。まず、本アルゴリズムで用いる記法を説明する。
【０１３２】
ｓ：始点
Ｖ：グラフ全体の点の集合
ＶＰ：ＱＢＥＲのボトルネックが確定した点の集合
Ｖ＼ＶＰ：ＱＢＥＲのボトルネックが未確定の点の集合
ＢＮ［ｎ］：点ｎまでのパスのボトルネック
ｈｏｐ［ｎ］：点ｎまでのホップ数
ｃｏｓｔ［ｌ］：辺ｌのコスト
ｐａｔｈ［ｎ］＝ｌ：点ｎへのパスが辺ｌである
ｔｈ：ＱＢＥＲに対する閾値
【０１３３】
次に本実施形態のルーティングアルゴリズムの例を説明する。
【０１３４】
＜ステップＳ３１＞始点ｓを選び、ＶＰ：＝φ，ＢＮ［ｓ］：＝０，ｈｏｐ［ｓ］：＝０（ｐａｔｈ［ｓ］：＝０）とする。始点ｓ以外の点ｖに対しては、ＢＮ［ｖ］：＝∞、ｈｏｐ［ｖ］：＝０（ｐａｔｈ［ｖ］：＝−１）とする。
【０１３５】
＜ステップＳ３２＞Ｖ＝ＶＰとなるまで以下を繰り返す。
＜ステップＳ３２ａ＞ＢＮ［ｗ］＝ｍｉｎ｛ＢＮ［ｖ］｜ｖ∈Ｖ＼ＶＰ｝となる点ｗを求める（その点までのパスのボトルネックが未確定の点の中でボトルネックの値が最小の点ｗを求める）。
＜ステップＳ３２ｂ＞ＶＰ：＝ＶＰ  ∪  ｛ｗ｝とする（その点までのパスのボトルネックが確定した点の集合に点ｗを含める）。点ｗを始点とする各辺ｅ＝（ｗ，ｖ）に対して、以下の処理を実行する。
【０１３６】
ｉｆ  ｔｈ＞ＢＮ［ｖ］＞ｃｏｓｔ［ｅ］＞ＢＮ［ｗ］
ｔｈｅｎ  ＢＮ［ｖ］：＝ｃｏｓｔ［ｅ］，
ｈｏｐ［ｖ］：＝ｈｏｐ［ｗ］＋１  （ｐａｔｈ［ｖ］：＝ｅ）
ｉｆ  ｔｈ＞ＢＮ［ｖ］＞ＢＮ［ｗ］＞ｃｏｓｔ［ｅ］
ｔｈｅｎ  ＢＮ［ｖ］：＝ＢＮ［ｗ］，
ｈｏｐ［ｖ］：＝ｈｏｐ［ｗ］＋１  （ｐａｔｈ［ｖ］：＝ｅ）
（もし、点ｗまでのパスのボトルネックおよび辺ｅのコストが、点ｖで保持しているボトルネックよりも小さく、かつ、閾値ｔｈよりも小さければ更新する）
ｉｆ  ｔｈ＞ＢＮ［ｖ］＝ｃｏｓｔ［ｅ］≧ＢＮ［ｗ］  ａｎｄ
ｈｏｐ［ｖ］＞ｈｏｐ［ｗ］＋１
ｔｈｅｎ  ＢＮ［ｖ］：＝ｃｏｓｔ［ｅ］，
ｈｏｐ［ｖ］：＝ｈｏｐ［ｗ］＋１  （ｐａｔｈ［ｖ］：＝ｅ）
ｉｆ  ｔｈ＞ＢＮ［ｖ］＝ＢＮ［ｗ］＞ｃｏｓｔ［ｅ］  ａｎｄ
ｈｏｐ［ｖ］＞ｈｏｐ［ｗ］＋１
ｔｈｅｎ  ＢＮ［ｖ］：＝ＢＮ［ｗ］，
ｈｏｐ［ｖ］：＝ｈｏｐ［ｗ］＋１  （ｐａｔｈ［ｖ］：＝ｅ）
（もし、点ｗまでのパスのボトルネックと辺ｅからのパスのボトルネックが等しく、かつ、閾値ｔｈよりも小さければ、ホップ数を比較する。点ｗからのパスのホップ数が点ｖの保持するホップ数よりも小さければ更新する）
【０１３７】
図２２は、第５の実施形態のルーティングアルゴリズムを説明する図である。ここで、図２２を参照しながら、上述のアルゴリズムの＜ステップＳ３２ｂ＞の前半について説明する。送信元ノードをｗ、宛先ノードをｖとするリンクｅ＝（ｗ，ｖ）を考える。
【０１３８】
図２２（ａ）は、ｔｈ＞ＢＮ［ｖ］＞ｃｏｓｔ［ｅ］＞ＢＮ［ｗ］のとき、ＢＮ［ｖ］：＝ｃｏｓｔ［ｅ］，ｈｏｐ［ｖ］：＝ｈｏｐ［ｗ］＋１  （ｐａｔｈ［ｖ］：＝ｅ）となる例を示す図である。図２２（ａ）では、ノードｗまでのパスのボトルネックが「４」、ノードｗを経由せずにノードｖまで到達するパスのボトルネックが「８」であり、リンクｅのコストが「６」である例が示されている。ノードｖまでのパスのボトルネックは、現時点のボトルネック「８」よりも、新たにつながるリンクｅを含むパスの方が良い（小さい）。このため、リンクｅがボトルネックとなり、ノードｖまでのパスのボトルネックを示す値は「６」となる。このように、リンクのコストが、送信元ノードのボトルネックよりも大きい場合は、リンクのコストで、宛先ノードまでのパスのボトルネックを更新する。
【０１３９】
図２２（ｂ）は、ｔｈ＞ＢＮ［ｖ］＞ＢＮ［ｗ］＞ｃｏｓｔ［ｅ］のとき、ＢＮ［ｖ］：＝ＢＮ［ｗ］，ｈｏｐ［ｖ］：＝ｈｏｐ［ｗ］＋１  （ｐａｔｈ［ｖ］：＝ｅ）となる例を示す図である。図２２（ｂ）では、ノードｗまでのパスのボトルネックが「６」、ノードｗを経由せずにノードｖまで到達するパスのボトルネックが「８」であり、リンクｅのコストが「４」である例が示されている。ノードｖまでのパスのボトルネックは、現時点のボトルネック「８」よりも、新たにつながるリンクｅを含むパスの方が良い（小さい）。一方、リンクｅのコスト「４」はボトルネックではない（ノードｗまでのボトルネック「６」より小さい）。このため、ノードｗまでのパスのボトルネックと同様に、ノードｖまでのパスのボトルネックは「６」となる。このように、送信元ノードまでのパスのボトルネックが、新たにつながるリンクのコストよりも大きい場合は、送信元ノードまでのパスのボトルネックで、宛先ノードまでのパスのボトルネックを更新する。
【０１４０】
図２２（ｃ）は、宛先ノードまでのパスのボトルネックを更新しない例を示す図である。図２２（ｃ）のように、ノードｗまでのパスのボトルネック、リンクｅのコスト、および、ノードｖまでのパスのボトルネックを比較して、ノードｗを経由しないパスでノードｖまで到達するパスのボトルネックが最も小さい場合は、リンクｅを含むパスは最適パスとなりえないのでボトルネックは更新しない。
【０１４１】
図２３は、第５の実施形態のルーティングアルゴリズムを説明する図である。ここで、図２３を参照しながら、上述のアルゴリズムの＜ステップＳ３２ｂ＞の後半について説明する。送信元ノードをｗ、宛先ノードをｖとするリンクｅ＝（ｗ，ｖ）を考える。
【０１４２】
図２３（ａ）は、ｔｈ＞ＢＮ［ｖ］＝ｃｏｓｔ［ｅ］≧ＢＮ［ｗ］、かつ、ｈｏｐ［ｖ］＞ｈｏｐ［ｗ］＋１のとき、ＢＮ［ｖ］：＝ｃｏｓｔ［ｅ］，ｈｏｐ［ｖ］：＝ｈｏｐ［ｗ］＋１  （ｐａｔｈ［ｖ］：＝ｅ）となる例を示す図である。図２３（ａ）に示すように、ノードｗを経由せずにノードｖまで到達するパスのボトルネックと、リンクｅのコストとが「６」で等しく、ノードｗまで到達するパスのボトルネックが「６」よりも小さい「４」である場合は、ホップ数を比較する。図２３（ａ）に示すように、ノードｗまでのパスのホップ数が「２」で、ノードｗを経由せずにノードｖまで到達するパスのホップ数が「５」とする。この場合、ノードｗからリンクｅを経由してノードｖまで到達しても、ホップ数は「３」（＝２＋１）となり、ノードｗを経由せずにノードｖまで到達するパスのホップ数「５」よりも小さくなる。このため、ノードｖまでのパスをリンクｅを経由するパスに更新する。
【０１４３】
図２３（ｂ）は、ｔｈ＞ＢＮ［ｖ］＝ＢＮ［ｗ］＞ｃｏｓｔ［ｅ］、かつ、ｈｏｐ［ｖ］＞ｈｏｐ［ｗ］＋１のとき、ＢＮ［ｖ］：＝ＢＮ［ｗ］，ｈｏｐ［ｖ］：＝ｈｏｐ［ｗ］＋１  （ｐａｔｈ（ｖ）：＝ｅ）となる例を示す図である。図２３（ｂ）に示すように、ノードｗを経由せずにノードｖまで到達するパスのボトルネックと、ノードｗまでのパスのボトルネックが「６」で等しく、リンクｅのコストが「６」よりも小さい「４」である場合は、ホップ数を比較する。図２３（ｂ）に示すように、ノードｗまでのパスのホップ数が「２」で、ノードｗを経由せずにノードｖまで到達するパスのホップ数が「５」とする。この場合、ノードｗからリンクｅを経由してノードｖまで到達しても、ホップ数は「３」（＝２＋１）となり、ノードｗを経由せずにノードｖまで到達するパスのホップ数「５」よりも小さくなる。このため、ノードｖまでのパスをリンクｅを経由するパスに更新する。
【０１４４】
図２４は、第５の実施形態のネットワーク構成例を示す図である。図２５〜３４は、第５の実施形態においてルーティングの手順を示す図である。図２４〜３４を参照しながら、選択部１１４におけるルーティングの動作の具体例について説明する。以下では、図２４のようなネットワークの構成を例に説明する。
【０１４５】
ここでは、コストであるＱＢＥＲの閾値は「１０」に設定しており、ＱＢＥＲが「１０」以上のリンクはパスに含めないように選択されないようにする。ノード内に振られた番号（丸で囲まれた番号）は、ノード番号を示す。図２５〜３４では、ノード１からノード６にアプリケーション鍵を転送する場合を示す。リンクに振られた数字（四角で囲まれた数字）はリンクに対応するコスト（ＱＢＥＲ）を示す。ノードの近くに記載された数字は、そのノードに到達するためのパスのメトリックを表し、［ボトルネック−ホップ数］の形式で表現している。二重丸のノードは、そのノードまでの最適パスが確定したノードを示す。ここでは、ノード間でリンクステートを共有し、ネットワーク構成を把握した後、ルーティングテーブルを作成する前の最適パスツリーを作成する処理について示す。図２４〜３４の例では、一方向の通信として説明するが、双方向通信であっても同様にして最適パスツリーを求めることができる。
【０１４６】
まず、各ノードまで到達するためのメトリックを「∞」に初期化する（図２５）。始点のノードであるノード１（以下、「始点ノード１」ともいう）は、ボトルネック「０」、および、ホップ数「０」として、最適パスが確定される。
【０１４７】
ノード１に接続されているノード２は、接続されているリンクのコストであるＱＢＥＲが「１６」であり、閾値「１０」以上なので、最適パスの候補としては考慮せず、コスト「∞」のままとする。また、ノード１に接続されているノード３は、ボトルネック「２」、および、ホップ数「１」とする（図２６）。
【０１４８】
ノード２およびノード３のうち、ボトルネックが最良のノード３が、ボトルネック「２」、および、ホップ数「１」として、最適パスが確定される（図２７）。確定ノードは、ノード１およびノード３となり、始点ノード１から宛先のノード３へのネクストホップはノード３となる。
【０１４９】
ノード３に接続されているノード２は、ボトルネック「５」、および、ホップ数「２」に更新される。ノード３に接続されているノード４は、ボトルネック「２」、および、ホップ数「２」に更新される。ノード３に接続されているノード５は、ボトルネック「３」、および、ホップ数「２」に更新される（図２８）。
【０１５０】
ノード２、ノード４およびノード５のうち、ボトルネックが最良のノード４が、ボトルネック「２」、および、ホップ数「２」として、最適パスが確定される（図２９）。確定ノードは、ノード１、ノード３およびノード４となり、始点ノード１から宛先のノード４へのネクストホップはノード３となる。
【０１５１】
ノード４に接続されているノード５は、ボトルネック「３」、および、ホップ数「３」と算出されるが、ノード５で保持されているホップ数「２」と比較して、ホップ数が大きいため更新しない。ノード４に接続されているノード６は、ボトルネック「６」、および、ホップ数「３」に更新される（図３０）。
【０１５２】
ノード５およびノード６のうち、ボトルネックが最良のノード５が、ボトルネック「３」、および、ホップ数「２」として、最適パスが確定される（図３１）。確定ノードは、ノード１、ノード３、ノード４およびノード５となり、始点ノード１から宛先のノード５へのネクストホップはノード３となる。
【０１５３】
ノード５に接続されているノード６は、ボトルネック「４」、および、ホップ数「３」に更新される（図３２）。
【０１５４】
ここでは、ノード６が、ボトルネック「４」、および、ホップ数「３」として、最適パスが確定される（図３３）。確定ノードは、ノード１、ノード３、ノード４、ノード５およびノード６となり、始点ノード１から宛先のノード６へのネクストホップはノード３となる。
【０１５５】
最後に、最適パスが未確定であるノード２が、ボトルネック「５」、および、ホップ数「２」として、最適パスが確定される（図３４）。確定ノードは、ノード１、ノード３、ノード４、ノード５、ノード６およびノード２となり、始点ノード１から宛先のノード２へのネクストホップはノード３となる。
【０１５６】
最終的にすべてのノードの最適パスが確定し、最適パスツリーが完成し、ノード１からノード６への最適パスはノード１→ノード３→ノード５→ノード６となる（図３４）。
【０１５７】
以上のように、本実施形態におけるルーティングプロトコルでは、ＱＢＥＲに関するメトリックの他、ホップ数をメトリックとして採用している。そして、ルーティングアルゴリズムでは、ノード１００から他のノード１００までの最適パスの候補の中から、メトリックが最良、かつ、ホップ数が小さくなるパスを最適パスとして選択するものとしている。これによって、最適パスのメトリックが最良となるので、この最適パスでは盗聴に対する安全性を他のパスよりも向上させることができ、安全性の高い状態で暗号鍵をノード間で送受信することができる。また、同じメトリックのパスが複数ある場合においても、ホップ数が小さいパスを最適パスとするので、最適パスの経路長を小さくすることができ、さらに盗聴に対する安全性を向上させることができる。さらに、ホップ数が小さいパスを最適パスとするので、各リンクを経由する際に消費されるリンク鍵の量を抑制することができる。なお、ＱＢＥＲに関するメトリック以外にも、リンク鍵の生成速度または蓄積量をコストとしてメトリックに反映させるものとしてもよい。
【０１５８】
なお、上述のルーティングの具体例では、ＱＢＥＲに関するメトリックとして、ボトルネックを想定して説明したが、その他、ＱＢＥＲに関するメトリックとして、ＱＢＥＲの和、ベストまたは平均ＱＢＥＲであっても、ホップ数を用いた同様のルーティングが可能となる。
【０１５９】
（第６の実施形態）
各ノード１００がＯＳＰＦを実行し、それぞれルーティングテーブルを保持する構成では、メトリックが等しいパスが複数存在する場合に、送信元ノードが意図したルートとは異なるルートを選択し、鍵の送信先が実際の最良のパスとは異なることがある。これは、各ノード１００は、送信元ノードからの最良なパスではなく、各ノード１００自身から宛先のノードまでの最良なパスを選択するためである。
【０１６０】
このような状況が好ましくない場合は、送信元ノードがソース・ルーティングの手法でアプリケーション鍵を送り、予めアプリケーション鍵を送るパスを指定しておくことで、送信元ノードが決定したパスを選択させることができる。ソース・ルーティングとは、送信元ノードによってデータが通るべきパスを決定し、決定したパスに沿ってデータの転送を行う方式である。
【０１６１】
図３５は、第６の実施形態における量子暗号通信システムの構成の一例を示す図である。その他、ルーティングを管理するサーバを用意し、このサーバがアプリケーション鍵の進むパスを指定してもよい。図３５を参照しながら、サーバを利用したパスの指定動作について説明する。図３５に示す量子暗号通信システムは、ルーティング管理サーバ６００を備えている。ルーティング管理サーバ６００は、最良のパスを算出し、算出したパスを各ノード１００のルーティングテーブルに反映させる。これにより各ノード１００は、最適パスを選択することが可能となる。
【０１６２】
なお、上述の各実施形態において、メトリックを計算するための各リンクのコストとして、ＱＢＥＲ、カウントレート、シフティング処理後の鍵ビット数、誤り訂正後の鍵ビット数、および生成した暗号鍵を採用し、これらを利用して、ＱＢＥＲに関するメトリックを算出するものとしているが、これらのコストに限定されるものではない。すなわち、メトリックを算出するためのコストとして、上述のコスト以外のコストを用いるものとしてもよい。
【０１６３】
また、ＱＢＥＲは、上述のように、ノードの設定パラメータ、気温・湿度・風速などの自然環境の影響、および盗聴者の存在等で変動し得る。これらのＱＢＥＲの変動を検出した場合、上述の各実施形態のルーティングプロトコルを再実行し、最適なパスの算出をやり直してもよい。ＱＢＥＲの変動は、例えば、管理部１０２が、ある時刻のＱＢＥＲ（第１量子誤り率）と、その時刻とは異なる時刻のＱＢＥＲ（第２量子誤り率）との変化量を求め、その変化量が所定の閾値（第２閾値）以上となった場合に検出されるものとすればよい。
【０１６４】
また、上述の各実施形態に係るノード（通信装置）で実行されるプログラムは、ＲＯＭ５２等に予め組み込まれて提供される。
【０１６５】
また、上述の各実施形態に係るノード（通信装置）で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅｃｏｒｄａｂｌｅ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【０１６６】
さらに、上述の各実施形態に係るノード（通信装置）で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上述の各実施形態に係るノード（通信装置）で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１６７】
本実施形態に係るノード（通信装置）で実行されるプログラムは、コンピュータを上述したノード（通信装置）の各部として機能させうる。このコンピュータは、ＣＰＵ５１がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【０１６８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、および変更を行うことができる。これらの実施形態およびその変形は、発明の範囲および要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１６９】
５１  ＣＰＵ
５２  ＲＯＭ
５３  ＲＡＭ
５４  通信Ｉ／Ｆ
５５  補助記憶装置
５６  バス
１００、１００ａ〜１００ｇ、１００＿１  ノード
１０１  制御部
１０２  管理部
１０３  プラットフォーム部
１０４  通信部
１０５  量子通信部
１０６  古典通信部
１１０、１１０ａ  ルーティング処理部
１１１  収集部
１１２  判断部
１１３、１１３ａ  算出部
１１４  選択部
１１５  記憶部
１１６  カウント部
２００、２００ａ、２００ｂ  アプリケーション
３０１  暗号鍵
３０２、３０３  リンク鍵
３０４  暗号鍵
４０１、４０２  アプリケーション鍵
５０１  アプリケーションネットワーク
５０２  鍵共有ネットワーク
６００  ルーティング管理サーバ
【図１】
0006426477.tif 000003
【図２】
0006426477.tif 000004
【図３】
0006426477.tif 000005
【図４】
0006426477.tif 000006
【図５】
0006426477.tif 000007
【図６】
0006426477.tif 000008
【図７】
0006426477.tif 000009
【図８】
0006426477.tif 000010
【図９】
0006426477.tif 000011
【図１０】
0006426477.tif 000012
【図１１】
0006426477.tif 000013
【図１２】
0006426477.tif 000014
【図１３】
0006426477.tif 000015
【図１４】
0006426477.tif 000016
【図１５】
0006426477.tif 000017
【図１６】
0006426477.tif 000018
【図１７】
0006426477.tif 000019
【図１８】
0006426477.tif 000020
【図１９】
0006426477.tif 000021
【図２０】
0006426477.tif 000022
【図２１】
0006426477.tif 000023
【図２２】
0006426477.tif 000024
【図２３】
0006426477.tif 000025
【図２４】
0006426477.tif 000026
【図２５】
0006426477.tif 000027
【図２６】
0006426477.tif 000028
【図２７】
0006426477.tif 000029
【図２８】
0006426477.tif 000030
【図２９】
0006426477.tif 000031
【図３０】
0006426477.tif 000032
【図３１】
0006426477.tif 000033
【図３２】
0006426477.tif 000034
【図３３】
0006426477.tif 000035
【図３４】
0006426477.tif 000036
【図３５】
0006426477.tif 000037