(58)【調査した分野】(Int.Cl.,DB名)
前記第1の統計情報は、前記第1の通信部から前記暗号処理部に入力されたパケットの数、前記第1の通信部から前記暗号処理部に入力されたデータの量、前記第1の通信部により前記暗号処理部から受け付けられたパケットの数、前記第1の通信部により前記暗号処理部から受け付けられたデータの量、及び、前記第1の通信部の第1のエラーのうち、少なくとも1つを含む、
請求項2に記載の通信装置。
前記第2の統計情報は、前記第2の通信部から前記他の装置に送信されたパケットの数、前記第2の通信部から前記他の装置に送信されたデータの量、前記第2の通信部により前記他の装置から受信されたパケットの数、前記第2の通信部により前記他の装置から受信されたデータの量、及び、前記第2の通信部の第2のエラーのうち、少なくとも1つを含む、
請求項2に記載の通信装置。
【発明を実施するための形態】
【0008】
以下に添付図面を参照して、通信装置、通信システム及び通信方法の実施形態を詳細に説明する。
【0009】
[通信システムの装置構成]
図1は実施形態の通信システム100の装置構成の例を示す図である。実施形態の通信システム100は、通信装置10a、通信装置10b、生成装置20a及び生成装置20bを備える。通信装置10a及び生成装置20aは、拠点Aに設置される。通信装置10b及び生成装置20bは、拠点Bに設置される。実施形態の通信システム100は、暗号化されたデータにより、拠点Aと拠点Bとの間で通信するシステムである。
【0010】
実施形態の説明では、通信装置10aがデータを暗号化し、通信装置10bが暗号化されたデータを復号する場合を例にして説明する。なお通信装置10bがデータを暗号化し、通信装置10aが暗号化されたデータを復号してもよい。
【0011】
通信装置10aは、生成装置20aにより生成された共有鍵を使用してデータを暗号化し、暗号化されたデータを、通信装置10bに送信する。暗号化されたデータの通信方式は、有線でも無線でもよいし、有線と無線とを組み合わせてもよい。暗号化されたデータの通信方式は、例えばEthernet(登録商標)である。通信装置10bは、暗号化されたデータを、生成装置20bにより生成された共有鍵を使用して復号する。
【0012】
生成装置20a及び生成装置20bは、互いに共有する共有鍵を、量子鍵配送により生成する。
【0013】
以下、通信装置10a及び通信装置10bを区別しない場合は、単に通信装置10という。同様に、生成装置20a及び生成装置20bを区別しない場合は、単に生成装置20という。
【0014】
<量子鍵配送>
次に量子鍵配送により共有鍵を生成する方法の例について説明する。
【0015】
図2は実施形態の共有鍵の生成方法の例を説明するための図である。実施形態の生成装置20a及び生成装置20bは、量子通信路101及び古典通信路102により接続される。
【0016】
量子通信路101は、0又は1を示す単一光子から構成される光子列を送信する。量子通信路101は、例えば光ファイバーリンクである。
【0017】
古典通信路102はデータを送信する。古典通信路102を介して送信されるデータは、例えば生成装置20a及び20bにより実行される鍵蒸留処理(シフティング処理、誤り訂正処理及び秘匿性増強処理)の制御データである。古典通信路102は、有線でも無線でもよいし、有線と無線とを組み合わせて実現されていてもよい。古典通信路102は、例えばEthernet(登録商標)である。
【0018】
生成装置20a及び20bは、互いに共有する共有鍵を、量子鍵配送により生成する。共有鍵は、0又は1を示すデジタルデータの列により表される乱数である。具体的には、生成装置20aは、レーザのパルスにより単一光子を発生させ、当該単一光子から構成される光子列を、量子通信路101を介して、生成装置20bに送信する。生成装置20a及び生成装置20bは、鍵蒸留処理を実行することにより、光子列から共有鍵を生成する。
【0019】
量子通信路101上の光子列の送受信には、例えばBB84プロトコルが使用される。BB84プロトコルが使用される場合、量子通信路101上の光子列が盗聴されると、量子力学の原理により、光子の量子状態(光子の偏光方向)が変化する。これにより受信側で検出される量子ビット誤り率(QBER:Quantum Bit Error Rate)が上昇する。したがって生成装置20a及び生成装置20bは、量子通信路101上の光子列が盗聴されている場合、量子通信路101上の光子列が盗聴されていることを、量子ビット誤り率の異常から検出することができる。これにより生成装置20a及び20bは、光子列から安全に共有鍵を生成することができる。
【0020】
[通信装置の機能構成]
次に実施形態の通信装置10の機能構成の例について説明する。
【0021】
図3は実施形態の通信装置10の機能構成の例を示す図である。
図3の説明では、通信装置10aが、暗号化されたデータを通信装置10bに送信し、通信装置10bが、暗号化されたデータを復号する場合を例にして説明する。なお通信装置10bが、暗号化されたデータを通信装置10aに送信し、通信装置10aが、暗号化されたデータを復号してもよい。
【0022】
実施形態の通信装置10aは、受付部11a、割当部12a、記憶部13a、OS14a、アプリ部15a、仮想IF(Interface)16a(第1の通信部)、暗号処理部17a、実IF18a(第2の通信部)、及び、制御部19aを備える。なおアプリ部15a、仮想IF16a、暗号処理部17a及び実IF18aは、1つに限られず複数あってもよい。
【0023】
記憶部13aは、受信鍵131a及び送信鍵132aを記憶する。受信鍵131aは、暗号化されたデータの復号に使用される。送信鍵132aは、データの暗号化に使用される。記憶部13aは、通信装置10aの外部にあり、通信装置10aの内部には無い構成であっても良い。
【0024】
受付部11aは、生成装置20aから共有鍵を受け付けると、当該共有鍵を割当部12aに入力する。
【0025】
割当部12aは、受付部11aから共有鍵を受け付けると、当該共有鍵を受信鍵131a又は送信鍵132aに割り当てる。
【0026】
なお通信装置10aから通信装置10bへの暗号データ送信と、通信装置10bから通信装置10aへの暗号データ送信の両方を行う場合(全二重での暗号データ通信を行う場合)、割当部12aにより受信鍵131aに割り当てられた共有鍵は、通信装置10bの割当部12bでは、送信鍵132bに割り当てられる。逆に、割当部12aにより送信鍵132aに割り当てられた共有鍵は、通信装置10bの割当部12bでは、受信鍵131bに割り当てられる。
【0027】
また割当部12aは、アプリ部15aが複数ある場合、受信鍵131a及び送信鍵132aを、更に、アプリ部15a毎に割り当ててもよい。
【0028】
また割当部12aは、仮想IF16aが複数あり、かつ、実IF18aが複数ある場合、受信鍵131a及び送信鍵132aを、更に、仮想IF16a及び実IF18aの組み合せにより決定される通信装置10内の通信経路毎に、割り当ててもよい。
【0029】
また割当部12aによる共有鍵の割り当て処理は行われなくてもよい。例えば暗号方式がAESの場合、暗号化処理及び復号処理に同一の共有鍵が使用されるので、受信鍵131a及び送信鍵132aの割り当て処理は不要である。なおAESのようなブロック暗号が用いられる場合、情報論的安全性は満たさないが、共有鍵の更新頻度を十分に高くすることにより、実質的な通信セキュリティを非常に高く保つことができる。
【0030】
また例えば、アプリ部15aが1つの場合、アプリ部15a毎の割り当て処理は不要である。したがって、例えばアプリ部15aが1つであり、かつ、暗号方式がAESの場合、割当部12aはなくてもよい。
【0031】
OS14aは、通信装置10aのハードウェア上の動作を制御する基本ソフトウェアである。OS14aは、例えば仮想IF16aによるネットワークインタフェース機能、及び、実IF18aによる通信機能等を提供する。
【0032】
アプリ部15aは、通信装置10aで動作する任意のアプリケーションである。
【0033】
仮想IF16a(第1の通信部)は、アプリ部15aに利用される仮想的なインタフェースである。仮想IF16aは、OS14aにより提供される通信機能(実IF18a)と直接接続されていない。すなわち仮想IF16aには、直接対応する通信カード等のハードウェアが存在しない。そのかわり、仮想IF16aは、他の機能ブロック(
図3の例では、暗号処理部17a)と結びついている。仮想IF16aは、アプリ部16aからデータ(平文)を受け付けると、当該データを暗号処理部17aに入力する。
【0034】
アプリ部15aは、仮想IF16aを経由して、暗号処理部17aによる暗号化処理(通信装置10bに暗号化されたデータを送信する場合)、及び、復号処理(通信装置10bから暗号化されたデータを受信した場合)を利用する。このときアプリ部15aは、仮想IF16aを介して通信しているにすぎないので、データが暗号化されているかどうか、どのような方式の暗号化が行われているか、については一切関知しない。このためアプリ部15aが暗号化機能を搭載しない一般的なアプリケーションであっても、暗号通信を行うことが可能となる。すなわち
図3に示す通信装置10aの機能構成により、既存のアプリケーションの暗号化対応及び移植を容易にすることができる。
【0035】
また、アプリ部15a及び仮想IF16aは、複数存在してもよい。アプリ部15a及び仮想IF16aが複数存在する場合、例えば各アプリ部15aは、それぞれ専用の仮想IF16aを介して暗号通信を行うようにしてもよい。また、このとき例えば暗号処理部17aも複数で構成し、各アプリ部15a及び仮想IF部16aの組に対し、それぞれ異なる暗号方式の暗号処理を行う暗号処理部17aを接続してもよい。
【0036】
暗号処理部17aは、送信鍵132aを用いてデータを暗号化し、暗号化されたデータを実IF18aに入力する。暗号化されたデータは、通信装置10bの暗号処理部17bにより、受信鍵131bを用いて復号される。
【0037】
また
図3の例では、暗号処理部17aが、OS14a上のソフトウェア機能であるように示されているが、暗号処理部17aは他の方法により実現されていてもよい。暗号処理部17aは、例えばOS14aの機能として実現されていてもよいし、OS14a上で動作するドライバによる機能として実現されていてもよい。また例えば、暗号処理部17aは、専用のハードウェアにより実現されていてもよい。
【0038】
なお暗号処理部17aで使用される暗号方式は、生成装置20aにより生成された共有鍵を利用する暗号方式であれば任意でよい。暗号処理部17aで使用される暗号方式は、例えばOTP及びAES等である。
【0039】
生成装置20a及び生成装置20bによって共有された共有鍵は、盗聴されていないことが保証されているため、非常に安全性が高い。そのため、この共有鍵を用いて暗号通信を行うことで、高セキュリティ通信を実現することができる。
【0040】
例えばOTPを利用して暗号データ通信を行う場合、暗号化されたデータは、如何なる知識を有する盗聴者によっても解読できないことが情報理論によって保証される。OTPは、送受信するデータと同じ長さの共有鍵を用いて暗号化及び復号を行い、一度用いた共有鍵は以後使わずに捨ててゆく方式である。一方の通信装置で送信鍵として用いられた共有鍵は、他方の通信装置では、復号鍵として用いられる。
【0041】
実IF18a(第2の通信部)は、OS14aにより提供される通信機能である。実IF18aは、通信カード等のハードウェアに直接対応する。実IF18aは、暗号処理部17aから、暗号化されたデータを受け付けると、当該暗号化されたデータを通信装置10bに送信する。
【0042】
制御部19aは、通信装置10aの状態を示す状態情報を使用して、共有鍵の割り当て、仮想IF16a(第1の通信部)の第1のトラフィック、及び、実IF18a(第2の通信部)の第2のトラフィックのうち、少なくとも1つを制御する。また、制御部19aは、通信装置10bの制御部19bとの間で制御信号を送受信する。制御信号は、例えば制御部19aで行われた制御を識別する情報を含む。これにより、例えば通信装置10bの制御部19bが、制御部19aで行われた制御と同様の制御を行うことができる。制御部19aの動作の詳細については、
図4を参照して後述する。
【0043】
一方、実施形態の通信装置10bは、受付部11b、割当部12b、記憶部13b、OS14b、アプリ部15b、仮想IF16b(第1の通信部)、暗号処理部17b、実IF18b及び制御部19bを備える。通信装置10bの構成は、通信装置10aの構成と同じである。
【0044】
以下、通信装置10a及び10bを区別しない場合は、単に通信装置10(受付部11、割当部12、記憶部13、OS14、アプリ部15、仮想IF16、暗号処理部17、実IF18及び制御部19)という。
【0045】
通信装置10bの説明では、通信装置10aから送信された暗号化データの復号処理について説明する。受付部11b、割当部12b、記憶部13b及びOS14bの説明は、受付部11a、割当部12a、記憶部13a及びOS14aの説明と同様なので省略する。
【0046】
実IF18bは、通信装置10aから、暗号化されたデータを受信すると、当該暗号化されたデータを暗号処理部17bに入力する。
【0047】
暗号処理部17bは、実IF18bから、暗号化されたデータを受け付けると、当該暗号化されたデータの暗号化に用いられた送信鍵132bに対応する受信鍵131bを用いて、当該暗号化されたデータを復号する。そして暗号処理部17bは、復号されたデータ(平文)を仮想IF16bに入力する。
【0048】
仮想IF16bは、暗号処理部17bから、復号されたデータを受け付けると、当該復号されたデータをアプリ部15bに入力する。
【0049】
アプリ部15bは、仮想IF16bから、復号されたデータを受け付けると、当該復号されたデータを使用して所定の処理を行う。
【0050】
[制御部の機能構成]
次に制御部19の動作の詳細について説明する。
【0051】
図4は実施形態の制御部19の機能構成の例を示す図である。実施形態の制御部19は、取得部191、算出部192、判定部193、割当制御部194及びトラフィック制御部195を備える。
【0052】
取得部191は、通信装置10の状態を示す状態情報を、通信装置10の1以上の機能ブロック、及び、生成装置20のうち、少なくとも1つから取得する。
【0053】
<状態情報の例>
図5は実施形態の状態情報の例を説明するための図である。
図5の例は、通信装置10aが、受付部11a、記憶部13a、仮想IF16a及び実IF18a、並びに、生成装置20aから、状態情報を取得する場合を示す。
【0054】
受付部11aから取得される状態情報は、例えば生成装置20aから共有鍵を受け付ける速度(生成装置20aによる共有鍵の生成速度)である。
【0055】
記憶部13aから取得される状態情報は、例えば受信鍵131aの蓄積量、及び、送信鍵132aの蓄積量である。なおアプリ部15aが複数あり、かつ、受信鍵131a及び送信鍵132aが、アプリ部15a毎に割り当てられている場合、受信鍵131aの蓄積量、及び、送信鍵132aの蓄積量は、アプリ部15a毎に取得される。
【0056】
仮想IF16aから取得される状態情報は、例えば仮想IF16aの通信速度、仮想IF16aの第1の統計情報、及び、仮想IF16aのリンクの状態である。
【0057】
第1の統計情報は、仮想IF16aから暗号処理部17aに入力されたパケットの数、仮想IF16aから暗号処理部17aに入力されたデータの量、仮想IF16aにより暗号処理部17aから受け付けられたパケットの数、仮想IF16aにより暗号処理部17aから受け付けられたデータの量、及び、仮想IF16aの第1のエラーのうち、少なくとも1つを含む。
【0058】
仮想IF16aのリンクの状態は、仮想IF16aが現在利用されているか否かを示す。リンクの状態は、例えばリンクアップ、及び、リンクダウンである。リンクアップは、仮想IF16aが有効であることを示す。リンクダウンは、仮想IF16aが無効であることを示す。なお仮想IF16aのリンクの状態は、第1の統計情報に含まれる形で取得されてもよい。
【0059】
第1のエラーは、例えばエラーの種類と対応付けられたエラーコードである。例えばアプリ部15aから仮想IF16aを介して暗号処理部17aにデータを入力したものの、暗号化するための送信鍵132aが記憶部13aに存在しない場合(すなわち送信鍵が枯渇した時)等のエラーを、所定のエラーコードにより特定及びカウントすることができる。
【0060】
実IF18aから取得される状態情報は、例えば実IF18aの通信速度(リンクアップ速度)、実IF18aの第2の統計情報、及び、実IF18aのリンクの状態である。
【0061】
第2の統計情報は、実IF18aから、通信装置10b等の他の装置に送信されたパケットの数、実IF18aから、通信装置10b等の他の装置に送信されたデータの量、実IF18aにより、通信装置10b等の他の装置から受信されたパケットの数、実IF18aにより、通信装置10b等の他の装置から受信されたデータの量、及び、実IF18aの第2のエラーのうち、少なくとも1つを含む。
【0062】
実IF18aのリンクの状態は、実IF18aが現在利用されているか否かを示す。リンクの状態は、例えばリンクアップ、及び、リンクダウンである。リンクアップは、実IF18aが有効であることを示す。リンクダウンは、実IF18aが無効であることを示す。なお実IF18aのリンクの状態は、第2の統計情報に含まれる形で取得されてもよい。
【0063】
第2のエラーは、例えばエラーの種類と対応付けられたエラーコードである。例えば実IF18aに暗号化されたデータが入力されたものの、送信処理が追いつかずに廃棄した場合(すなわちパケットドロップ時)等のエラーを、所定のエラーコードにより特定することができる。
【0064】
以下、仮想IF16と実IF18を区別しない場合、単にインタフェースという。また、第1の統計情報と第2の統計情報を区別しない場合、単に統計情報という。
【0065】
図6は実施形態の統計情報の例を示す図である。
図6の例は、統計情報が、送信されたパケットの数(TX packets)、送信データの量(TX bytes)、受信されたパケットの数(RX packets)、及び、受信データの量(RX bytes)等を含む場合を示す。
【0066】
生成装置20aから取得される状態情報は、例えば単位時間当たりの共有鍵の生成速度(bps)、光子のカウントレート(bps)、及び、量子ビット誤り率(QBER)である。光子のカウントレート、及び、量子ビット誤り率(QBER)は、共有鍵の生成速度に影響する。
【0067】
<算出処理の例>
図4に戻り、算出部192は、取得部191により取得された状態情報を使用して、判定部193による判定の対象となる情報を算出する。
【0068】
算出部192は、例えば共有鍵を受け付ける速度、受信鍵131の蓄積量、送信鍵132の蓄積量、仮想IF16の第1の通信速度、及び、実IF18の第2の通信速度から、送信鍵132が枯渇するまでの送信鍵枯渇時間、及び、受信鍵131が枯渇するまでの受信鍵枯渇時間を算出する。
【0069】
算出部192は、送信鍵枯渇時間を、例えば、送信鍵132の蓄積量/(通信速度−鍵生成速度)により算出する。鍵生成速度は、例えば共有鍵を受け付ける速度である。
【0070】
通信速度は、仮想IF16の第1の通信速度、及び、実IF18の第2の通信速度のうち、遅い方である。なお例えば、仮想IF16が複数あり、かつ、実IF18が複数ある場合、仮想IF16と実IF18との組み合わせ毎に、通信速度を決定する。この場合、送信鍵枯渇時間は、仮想IF16と実IF18との組み合わせにより決定される通信装置10内の通信経路毎に算出される。
【0071】
同様に、算出部192は、受信鍵枯渇時間を、例えば、受信鍵131の蓄積量/(通信速度−鍵生成速度)により算出する。
【0072】
<判定処理及び制御処理の例>
判定部193は、取得部191から上述の状態情報を受け付けると、当該状態情報、及び、算出部192により当該状態情報から算出された情報を使用して、受信鍵131又は送信鍵132の枯渇の恐れがあるか否か(または枯渇したか否か)を判定する。枯渇の恐れがある場合、割当制御部194が、割当部12による共有鍵の割り当てを制御し、トラフィック制御部195が、仮想IF16及び実IF18の少なくとも一方のトラフィックを制御する。
【0073】
受信鍵131又は送信鍵132の枯渇の恐れがある場合、割当部12による共有鍵の割当制御、及び、トラフィック制御部195のトラフィック制御の一方が行われてもよいし、両方が行われてもよい。
【0074】
図7は実施形態の割当制御方法の例を説明するための図である。
図7の例は、制御部19a(通信装置10aの割当制御部194)が、割当部12aによる共有鍵の割り当てを制御する場合を示す。
【0075】
図8は実施形態のトラフィック制御方法の例を説明するための図である。トラフィックの制御は、あるインタフェースに対して、通信可能な帯域及び速度等に上限を課すものである。
図8の例では、制御部19a(通信装置10aのトラフィック制御部195)が、仮想IF16aの第1のトラフィック、及び、実IF18aの第2のトラフィックを制御しているが、いずれか一方を制御してもよい。
【0076】
なお、トラフィックコントロールを行うためのツールとして、例えばlinux(登録商標)コマンドのtc等が利用可能である。トラフィック制御部195が、トラフィック制御対象のインタフェースにtcコマンドを実行することにより、当該インタフェースのトラフィックを制御することができる。
【0077】
なお
図7及び
図8の説明では、制御部19aの動作は、拠点A側で説明した。しかしながら、拠点A側の制御部19aの制御に基づいて、拠点B側に制御結果を示す制御信号を通知することにより、拠点Aと拠点Bの両方で同様の制御を行ってもよい。なお共有鍵の割り当てについては、拠点Aと拠点Bとで同様の割り当てをする必要があるので、制御結果を同期する。一方、トラフィック制御については、例えば一方の拠点(例えば通信装置10a側)で制御し、他方の拠点では、一方の拠点と同様のトラフィック制御をしなくてもよい。例えば通信装置10bの制御部19bは、拠点Aの通信装置10aの制御部19aとは独立に、上述のトラフィック制御をしてもよい。
【0078】
図4に戻り、判定部193は、例えば、あるインタフェースにおける送信データのバイト数及びパケット数と、受信データのバイト数及びパケット数の値と、その比とから、将来のアプリ部15の通信速度、及び、その送信データ及び受信データの量の比を予測することができる。単純な方法としては、現在の送信データ及び受信データの速度が将来も継続すると想定すること、あるいは、現在の送信データ及び受信データの量の比が将来も継続すると想定すること、あるいは、現在のアプリ毎の通信量の比が、将来も継続すると想定すること、である。
【0079】
判定部193は、例えば、あるインタフェースにおける発生したエラーの数と、送信あるいは受信データのバイト数及びパケット数と、その時間変動を参照することで、該当インタフェースにおいて将来、鍵枯渇が発生する可能性を予測することができる。単純な方法としては、過去に鍵枯渇が発生したインタフェースにおいて、送信あるいは受信データのバイト数及びパケット数の変化(通信速度)が増加する場合は、鍵枯渇が発生する可能性があると予測することである。
【0080】
なお、判定部193による判定方法、並びに、割当制御部194及びトラフィック制御部195による制御方法は、固定的でなくてもよく、例えば時間帯、曜日及び月等に応じて、異なる判定及び制御をしてもよい。
【0081】
<具体例>
具体的には、判定部193は、例えば統計情報に含まれるリンクの状態を判定する。割当制御部194は、リンクダウンの場合、当該インタフェースを使用するアプリ部15に受信鍵131及び送信鍵132を割り当てることを停止する停止要求を割当部12に入力する。
【0082】
また例えば、判定部193は、統計情報に含まれる送信されたデータのバイト数(パケット数)が、統計情報に含まれる受信されたデータのバイト数(パケット数)に比べて大きいか否かを判定する。統計情報に含まれる送信されたデータのバイト数(パケット数)が、統計情報に含まれる受信されたデータのバイト数(パケット数)に比べて大きい場合、当該インタフェースでは、受信鍵131よりも、送信鍵132の方が枯渇する可能性が高い。
【0083】
したがって、統計情報に含まれる送信されたデータのバイト数(パケット数)が、統計情報に含まれる受信されたデータのバイト数(パケット数)に比べて大きい場合、例えば割当制御部194が、当該インタフェースを使用するアプリ部15に、送信鍵132を優先的に割り当てる優先要求を、割当部12に入力する。割り当てを優先させる度合いは、例えば送信されたデータ(パケット数)と受信されたデータのバイト数(パケット数)との比に応じて決定する。
【0084】
なお、統計情報に含まれる送信されたデータのバイト数(パケット数)が、統計情報に含まれる受信されたデータのバイト数(パケット数)に比べて大きい場合、トラフィック制御部195が、当該インタフェースの送信側のトラフィックを制限してもよい。また、上述の割当制御部194による共有鍵の割り当て制御と、トラフィック制御部195によるトラフィック制御の両方が行われてもよい。
【0085】
また例えば、判定部193は、統計情報に含まれるエラーの数が、閾値(第3の閾値)以上であるか否かを判定することにより、通信障害が発生しているか否かを判定する。エラーの数は、特定の1つの種類のエラー(例えばパケットドロップ等)の数でもよいし、統計情報に含まれる複数の異なる種類のエラーの数(複数の異なる種類のエラーの発生数の合計)でもよい。エラーの数が閾値以上の場合、割当制御部194が、共有鍵を、当該インタフェースを使用するアプリ部15に割り当てることを停止する停止要求を割当部12に入力する。
【0086】
また例えば、判定部193は、統計情報に含まれる枯渇エラーの数(受信鍵枯渇エラー及び送信鍵枯渇エラー)を参照することで、該当のインタフェースを使用するアプリ部15により使用される受信鍵131又は送信鍵132が枯渇する恐れがあるか否か(または受信鍵131又は送信鍵132が枯渇したか否か)を判定する。割当制御部194は、受信鍵131及び送信鍵132のうち、より枯渇する恐れが高い方を優先して、共有鍵を割り当てる。または、トラフィック制御部195は、受信鍵131及び送信鍵132のうち、より枯渇する恐れが高い方のインタフェースのトラフィックを制限する。なお割当制御部194により割当制御と、トラフィック制御部195によるトラフィック制御の両方を行ってもよい。
【0087】
また例えば、判定部193は、受信鍵131(送信鍵132)の蓄積量の変動を判定する。割当制御部194は、受信鍵131(送信鍵132)が継続して増加している場合、割当部12による受信鍵131(送信鍵132)の割り当てを制限する。一方、割当制御部194は、受信鍵131(送信鍵132)が継続して減少している場合、割当部12による受信鍵131(送信鍵132)の割り当てを優先する。
【0088】
また例えば、判定部193は、単位時間当たりの共有鍵の生成速度の変動を判定する。割当制御部194は、単位時間当たりの共有鍵の生成速度が継続して増加している場合、割当部12による受信鍵131(送信鍵132)の割り当て処理の頻度を高くする。一方、割当制御部194は、単位時間当たりの共有鍵の生成速度が継続して減少している場合、割当部12による受信鍵131(送信鍵132)の割り当て処理の頻度を低くする。
【0089】
また例えば、判定部193は、上述の受信鍵枯渇時間、及び、上述の送信鍵枯渇時間のどちらがより短いかを判定する。割当制御部194は、受信鍵枯渇時間が送信鍵枯渇時間よりも短い場合、受信鍵131の割り当てを優先させる優先要求を割当部12に入力する。一方、割当制御部194は、送信鍵枯渇時間が受信鍵枯渇時間よりも短い場合、送信鍵132の割り当てを優先させる優先要求を割当部12に入力する。
【0090】
また例えば、判定部193は、送信鍵枯渇時間が閾値(第1の閾値)以下であるか否かを判定する。送信鍵枯渇時間が閾値以下である場合、トラフィック制御部195が、送信鍵枯渇時間がより長くなるように、仮想IF16の送信側の第1のトラフィック、及び、実IF18の送信側の第2のトラフィックの少なくとも一方を制限する。
【0091】
また例えば、判定部193は、受信鍵枯渇時間が閾値(第2の閾値)以下であるか否かを判定する。受信鍵枯渇時間が閾値以下である場合、トラフィック制御部195が、受信鍵枯渇時間がより長くなるように、仮想IF16の受信側の第1のトラフィック、及び、実IF18の受信側の第2のトラフィックの少なくとも一方を制限する。
【0092】
第1のトラフィックの制限、及び、第2のトラフィックの制限は、アプリ部15毎に行われてもよい。すなわちトラフィック制御部195が、アプリ部15により送受信するデータの量を、アプリ部15毎に制限することにより、第1のトラフィック、及び、第2のトラフィックを制限する。
【0093】
また、第1のトラフィックの制限、及び、第2のトラフィックの制限は、インタフェース毎に行われてもよい。すなわちトラフィック制御部195は、仮想IF16が複数ある場合、仮想IF16毎に第1のトラフィックを制限する。同様に、トラフィック制御部195は、実IF18が複数ある場合、実IF18毎に第2のトラフィックを制限する。
【0094】
また例えば、判定部193は、統計情報を参照して、送信データの量、及び、受信データの量が少なく、通信をほとんど行っていないインタフェースがあるか否かを判定する。通信をほとんど行っていないインタフェースがある場合、割当制御部194が、該当のインタフェースを使用するアプリ部15には、受信鍵131及び送信鍵132を割り当てることを停止する停止要求を、割当部12に入力する。
【0095】
また例えば、判定部193は、アプリ部15が複数あり、かつ、仮想IF16が複数ある場合、各仮想IF16から取得された統計情報を参照し、通信量が閾値以上のアプリ部15(仮想IF16)には、受信鍵131及び送信鍵132を優先的に割り当てる優先要求を、割当部12に入力する。一方、判定部193は、通信量が閾値未満のアプリ部15(仮想IF16)には、受信鍵131及び送信鍵132を割り当てない停止要求を、割当部12に入力する。
【0096】
なお、上述のトラフィック制御部195によるトラフィック制御の結果、暗号通信が遅延する場合、及び、暗号通信データの一部が損失する可能性がある。これらは、より上位の通信プロトコルによる再送制御や誤り訂正(FEC:Forward Error Correction)機能等を組み合わせることによって、対応することを想定する。例えば、アプリ部15で、TCP/IPに基づいたフロー制御及び再送制御等を行うことによって、データ通信の頑健性が維持される。
【0097】
また割当部12は、制御部19から上述の停止要求を受け付けた場合、当該停止要求を受け付ける前に、割り当て停止対象(アプリ部15等)に既に割り当てられていた受信鍵131(送信鍵132)は、そのまま割り当てを維持してもよい。
【0098】
[通信方法]
次に実施形態の通信方法について説明する。
【0099】
<共有鍵の割当制御>
図9は実施形態の割当制御方法の例を示すフローチャートである。
図9の例では、簡単のため、アプリ部15、仮想IF16及び実IF18が、それぞれ1つである場合について説明する。すなわち通信装置10a内の通信経路が1つであり、かつ、アプリ部15毎に受信鍵131及び送信鍵132を割り当てない場合について説明する。
【0100】
はじめに、取得部191が、上述の状態情報を、通信装置10の1以上の機能ブロック、及び、生成装置20から取得する(ステップS1)。
【0101】
次に、算出部192が、ステップS1の処理で取得された状態情報から、上述の送信鍵枯渇時間を算出する(ステップS2)。
【0102】
次に、算出部192が、ステップS1の処理で取得された状態情報から、上述の受信鍵枯渇時間を算出する(ステップS3)。
【0103】
次に、判定部193が、受信鍵枯渇時間よりも送信鍵枯渇時間の方が大きいか否かを判定する(ステップS4)。受信鍵枯渇時間よりも送信鍵枯渇時間の方が大きい場合(ステップS4、Yes)、割当制御部194が、共有鍵を受信鍵131に優先的に割り当てる(ステップS5)。受信鍵枯渇時間よりも送信鍵枯渇時間の方が大きくない場合(ステップS4、No)、割当制御部194が、共有鍵を送信鍵132に優先的に割り当てる(ステップS6)。
【0104】
<トラフィック制御>
図10は実施形態のトラフィック制御方法の例を示すフローチャートである。
図10の例では、簡単のため、アプリ部15、仮想IF16及び実IF18が、それぞれ1つである場合について説明する。すなわち通信装置10a内の通信経路が1つであり、かつ、アプリ部15毎に受信鍵131及び送信鍵132を割り当てない場合について説明する。
【0105】
ステップS11〜ステップS13の説明は、
図9のステップS1〜ステップS3の説明と同じなので省略する。
【0106】
次に、判定部193が、送信鍵枯渇時間が第1の閾値以下であるか否かを判定する(ステップS14)。
【0107】
送信鍵枯渇時間が第1の閾値以下である場合(ステップS14、Yes)、トラフィック制御部195が、送信鍵枯渇時間がより長くなるように、仮想IF16の送信側の第1のトラフィック、及び、実IF18の送信側の第2のトラフィックの少なくとも一方を制限する(ステップS15)。送信鍵枯渇時間が第1の閾値以下でない場合(ステップS14、No)、処理はステップS16に進む。
【0108】
受信鍵枯渇時間が第2の閾値以下である場合(ステップS16、Yes)、トラフィック制御部195が、受信鍵枯渇時間がより長くなるように、仮想IF16の受信側の第1のトラフィック、及び、実IF18の受信側の第2のトラフィックの少なくとも一方を制限する(ステップS17)。受信鍵枯渇時間が第2の閾値以下でない場合(ステップS16、No)、処理を終了する。
【0109】
[通信システムのハードウェア構成]
最後に実施形態の通信システム100のハードウェア構成の例について説明する。
【0110】
<通信装置のハードウェア構成>
図11は実施形態の通信装置10のハードウェア構成の例を示す図である。実施形態の通信装置10は、制御装置201、主記憶装置202、補助記憶装置203、表示装置204、入力装置205、通信IF206及び接続IF207を備える。制御装置201、主記憶装置202、補助記憶装置203、表示装置204、入力装置205、通信IF206及び接続IF207は、バス210を介して接続されている。
【0111】
制御装置201は補助記憶装置203から主記憶装置202に読み出されたプログラムを実行する。主記憶装置202はROM(Read Only Memory)、及び、RAM(Random Access Memory)等のメモリである。補助記憶装置203はメモリカード、及び、HDD(Hard Disk Drive)等である。
【0112】
表示装置204は情報を表示する。表示装置204は、例えば液晶ディスプレイである。入力装置205は、情報の入力を受け付ける。入力装置205は、例えばキーボード及びマウス等である。なお表示装置204及び入力装置205は、表示機能と入力機能とを兼ねる液晶タッチパネル等でもよい。
【0113】
通信IF206は、他の通信装置10と暗号データ通信する。接続IF207は、生成装置20と接続される。接続IF207は、例えば生成装置20から共有鍵を受信する。
【0114】
実施形態の通信装置10で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、メモリカード、CD−R、及び、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記憶媒体に記憶されてコンピュータ・プログラム・プロダクトとして提供される。
【0115】
また実施形態の通信装置10で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また実施形態の通信装置10が実行するプログラムを、ダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
【0116】
また実施形態の通信装置10で実行されるプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
【0117】
実施形態の通信装置10で実行されるプログラムは、上述の実施形態の通信装置10の機能構成のうち、プログラムにより実現可能な機能を含むモジュール構成となっている。
【0118】
プログラムにより実現される機能は、制御装置201が補助記憶装置203等の記憶媒体からプログラムを読み出して実行することにより、プログラムにより実現される機能が主記憶装置202にロードされる。すなわちプログラムにより実現される機能は、主記憶装置202上に生成される。
【0119】
実施形態の通信装置10の機能の一部又は全部を、IC(Integrated Circuit)等のハードウェアにより実現してもよい。
【0120】
<生成装置のハードウェア構成>
図12は実施形態の生成装置20のハードウェア構成の例を示す図である。実施形態の生成装置20は、制御装置301、主記憶装置302、補助記憶装置303、光学処理装置304、通信IF305及び接続IF306を備える。制御装置301、主記憶装置302、補助記憶装置303、光学処理装置304、通信IF305及び接続IF306は、バス310を介して接続されている。
【0121】
制御装置301、主記憶装置302及び補助記憶装置303の説明は、上述の制御装置201、主記憶装置202及び補助記憶装置203の説明(
図11参照)と同様なので省略する。
【0122】
光学処理装置304は、上述の量子通信路101を介して、上述の単一光子を送信または受信する。通信装置IF305は、上述の古典通信路102を介して他の生成装置20と通信する。接続IF306は、通信装置10と接続される。接続IF306は、例えば通信装置10に共有鍵を送信する。
【0123】
実施形態の生成装置20で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、メモリカード、CD−R、及び、DVD等のコンピュータで読み取り可能な記憶媒体に記憶されてコンピュータ・プログラム・プロダクトとして提供される。
【0124】
また実施形態の生成装置20で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また実施形態の生成装置20が実行するプログラムを、ダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
【0125】
また実施形態の生成装置20で実行されるプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
【0126】
実施形態の生成装置20で実行されるプログラムは、上述の実施形態の生成装置20の機能構成のうち、プログラムにより実現可能な機能を含むモジュール構成となっている。
【0127】
プログラムにより実現される機能は、制御装置301が補助記憶装置303等の記憶媒体からプログラムを読み出して実行することにより、プログラムにより実現される機能が主記憶装置302にロードされる。すなわちプログラムにより実現される機能は、主記憶装置302上に生成される。
【0128】
実施形態の生成装置20の機能の一部又は全部を、IC等のハードウェアにより実現してもよい。
【0129】
以上説明したように、実施形態の通信装置10では、受付部11が、他の装置と共有する共有鍵を受け付ける。割当部12が、共有鍵を送信鍵132又は受信鍵131に割り当てる。1以上の仮想IF16(第1の通信部)が、1以上のアプリ部15からデータを受け付ける。暗号処理部17が、送信鍵132を用いてデータを暗号化し、他の装置により暗号化されたデータを、受信鍵131を用いて復号する。1以上の実IF18(第2の通信部)が、暗号化されたデータにより、他の装置と通信する。そして制御部19が、通信装置10の状態を示す状態情報を使用して、共有鍵の割り当て、仮想IF16の第1のトラフィック、及び、実IF18の第2のトラフィックのうち、少なくとも1つを制御する。
【0130】
これにより実施形態の通信装置10によれば、暗号処理に使用される鍵(受信鍵131及び送信鍵132)が枯渇することを防ぐことができる。
【0131】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。