(57)【要約】【課題】量子暗号技術による制約（低スループット、および、変動など）に縛られず、アプリケーションに対して、より高速にアプリケーション鍵を提供する。【解決手段】通信装置は、共有処理部と、伸張部と、通信部と、を備える。共有処理部は、リンクで接続された外部装置との間で第１の暗号鍵を共有して、さらに第２の暗号鍵を生成して第１の暗号鍵を利用した秘匿通信により第２の暗号鍵を外部装置との間で共有する。伸張部は、第２の暗号鍵の長さを伸張した伸張鍵を生成する。通信部は、外部装置が第２の暗号鍵を提供する第１アプリケーションと通信する第２アプリケーションに対して、生成された伸張鍵を送信する。【選択図】図２
2014143493.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
【発明の概要】
【発明が解決しようとする課題】
【０００５】
アプリケーションは、より高速に、より安定してアプリケーション鍵をノードから取得したいかもしれない。従って、ノードとしては、量子暗号技術による制約（低スループット、および、変動など）に縛られず、アプリケーションに対して、より高速に安定してアプリケーション鍵を提供したいという要求がある。
【課題を解決するための手段】
【０００６】
実施形態の通信装置は、共有処理部と、伸張部と、通信部と、を備える。共有処理部は、リンクで接続された外部装置との間で第１の暗号鍵を共有して、さらに第２の暗号鍵を生成して第１の暗号鍵を利用した秘匿通信により第２の暗号鍵を外部装置との間で共有する。伸張部は、第２の暗号鍵の長さを伸張した伸張鍵を生成する。通信部は、外部装置が第２の暗号鍵を提供する第１アプリケーションと通信する第２アプリケーションに対して、生成された伸張鍵を送信する。
【図面の簡単な説明】
【０００７】
【図１】本実施形態にかかる通信システムのネットワーク構成図。
【図２】本実施形態におけるノードのブロック図。
【図３】本実施形態におけるアプリケーションのブロック図。
【図４】本実施形態による暗号通信処理のシーケンス図。
【図５】アプリケーション鍵の伸張方法の一例を示す図。
【図６】アプリケーション鍵の伸張方法の一例を示す図。
【図７】本実施形態にかかる装置のハードウェア構成図。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、この発明にかかる通信装置の好適な実施形態を詳細に説明する。
【０００９】
鍵共有ネットワークに接続されたノードがアプリケーション鍵を共有する速度（共有速度）は、アプリケーション鍵が転送されるノード間リンクにおいて、リンク鍵が交換および共有される速度によって律速される。また、アプリケーション鍵の共有速度は、アプリケーションがアプリケーション鍵を取得可能な速度を決定しうる。従って、アプリケーション鍵の共有速度は、アプリケーションが暗号通信可能な最大速度を律速しうる。特に、アプリケーションがＯＴＰ（One-time  Pad）と呼ばれる、データと同じ長さのアプリケーション鍵を利用する暗号方式を利用する場合、アプリケーションがアプリケーション鍵を取得可能な速度は、アプリケーションが通信可能な速度と一致する。リンク鍵が交換および共有される速度は、現在の量子暗号技術を使った場合、最大でも数Ｍｂｐｓ未満である。また、装置の設置環境によってその速度が変動する可能性もある。
【００１０】
従って上述のように、リンク鍵が共有される速度が小さい場合、および、リンク鍵が共有される速度が変動する場合等であっても、アプリケーションに対して、より高速に安定してアプリケーション鍵を提供できるようにすることが望ましい。
【００１１】
図１は、本実施形態にかかる通信システムのネットワーク構成例を示す図である。通信システムは、鍵共有ネットワーク３０１と、アプリケーションネットワーク３０２と、を含む。また、通信システムは、通信装置としてのノード１００ａ〜１００ｅと、アプリケーション２００ａ、２００ｂと、を含む。
【００１２】
ノード１００ａ〜１００ｅを区別する必要がない場合は、単にノード１００という場合がある。アプリケーション２００ａ、２００ｂを区別する必要がない場合は、単にアプリケーション２００という場合がある。ノード１００の個数は５に限られるものではない。また、アプリケーション２００の個数は２に限られるものではない。図１は、ノード１００とアプリケーション２００が独立に実現される場合の一例である。
【００１３】
ノード１００ａ〜１００ｅは、上述のように、対向ノードとの間で乱数を生成して共有する機能と、生成した乱数をリンク鍵として利用して、リンク上で暗号通信を行う機能とを備える。
【００１４】
ノード１００は、リンクとは独立に乱数を生成する機能と、別のノードに対して生成した乱数を送信する機能とを備えてもよい。
【００１５】
図２は、本実施形態におけるノード１００の構成例を示すブロック図である。ノード１００は、アプリ通信部１０１と、ノード通信部１０２と、管理部１０３と、共有処理部１０４と、伸張部１０５と、制御部１０６と、プラットフォーム部１０７と、を備えている。
【００１６】
ノード通信部１０２は、ノード間リンク７１によって接続された対向ノードとの間で、量子暗号通信技術を用いて、乱数を生成共有し、生成した乱数をリンク鍵として管理する。また、ノード通信部１０２は、ノード間リンク７１によって接続された他のノード１００との間でノード間データ通信を行う際に利用される。ここで、他のノード１００は、ノード間リンク７１によって直接接続された対向ノードである場合もあるし、その対向ノードの別のノード間リンク７１を介してさらに接続される別のノード１００である場合もある。後者の場合、ノード通信部１０２は、暗号通信ネットワークにおいて、複数のノード１００を介して通信を行うためのルーティング機能を提供してもよい。ノード通信部１０２を介してノード１００間で交換されるデータは、例えば、アプリケーション鍵のデータである。これらのデータは、ノード１００が管理するリンク鍵を用いて暗号化された通信（秘匿通信）で送受信されてもよい。なお、図２には、ノード通信部１０２を１つしか図示していないが、複数のノード間リンク７１によって複数のノード１００と接続してもよい。
【００１７】
共有処理部１０４は、乱数としてアプリケーション鍵（暗号鍵）を生成し、他のノード１００と共有する。アプリケーション鍵は、例えばアプリケーション鍵を識別可能な識別情報（ＩＤ）を付加した形で乱数として生成される。アプリケーション鍵のＩＤのフォーマットは特に指定はないが、以下では連続した数字により順序が識別されるものとする。生成されたアプリケーション鍵そのものは、管理部１０３にて保持される。共有処理部１０４は、制御部１０６による指示等により、生成したアプリケーション鍵を、ノード通信部１０２を用いて暗号化して他ノード１００へ送信し、これを共有することができる。同様に、共有処理部１０４は、ノード通信部１０２を介して他ノード１００から受信したアプリケーション鍵を受け取り、受け取ったアプリケーション鍵を管理部１０３に格納する。
【００１８】
管理部１０３は、アプリケーション鍵を保持および管理する。管理部１０３に保持されるアプリケーション鍵は、共有処理部１０４によって生成された鍵、または、ノード通信部１０２を介して別のノード１００から受信した鍵である。管理部１０３で保持されるアプリケーション鍵は、暗号通信システムにおけるセキュリティ上、最も重要なデータの１つである。このため、ファイルシステムやＯＳ（オペレーティングシステム）によって暗号化、改竄防止、および、アクセス制限等のセキュリティ対策が施されていてもよい。管理部１０３は、様々な実現方法が可能であるが、例えばファイルシステムやデータベースとして実装できる。
【００１９】
伸張部１０５は、管理部１０３に格納されるアプリケーション鍵を予め定められたルールに従って伸張した（すなわち、鍵長を大きくした）伸張鍵を生成する。鍵を伸張する処理の実例については後述する。伸張部１０５は、伸張したアプリケーション鍵を管理部１０３に再度格納してもよい。また、アプリ通信部１０１が管理部１０３からアプリケーション鍵を取得する際に、伸張部１０５を利用してアプリケーション鍵を伸張し、伸張により得られた伸張鍵をアプリ通信部１０１を介してアプリケーションに提供してもよい。また、共有処理部１０４が、生成または受信したアプリケーション鍵を管理部１０３に格納する際に、伸張部１０５を利用してアプリケーション鍵を伸張して、その結果を管理部１０３に格納してもよい。
【００２０】
アプリ通信部１０１は、アプリケーション通信リンク７２を介して、アプリケーション２００と接続して通信する。アプリ通信部１０１は、例えばアプリケーション２００からの暗号通信開始要求（すなわちアプリケーション鍵提供開始要求）、暗号通信終了要求（すなわちアプリケーション鍵提供終了要求）、および、アプリケーション鍵取得要求等の要求を受け付ける。アプリ通信部１０１は、アプリケーションからの要求に応じて、アプリケーション鍵を伸張した伸張鍵をアプリケーション２００に提供する。アプリケーション２００に提供された伸張鍵（または伸張鍵のもとになったアプリケーション鍵）は、管理部１０３から削除されてもよい。
【００２１】
制御部１０６は、ノード１００の機能を実現する上記各部を制御して、鍵共有ネットワークにおける一連のアプリケーション鍵共有動作を実現する。例えば、制御部１０６は、共有処理部１０４に対して、アプリケーション鍵の共有を指示および制御する。また、制御部１０６は、アプリケーション鍵の共有を行っているノード１００（相手ノード）との間で通信を行い、鍵伸張の動作を決定および変更する機能を備える。例えば、制御部１０６は、相手ノードとの間でアプリケーション鍵の伸張方法に関する情報を交換して、適用する伸張方法を決定する。そして、制御部１０６は、決定した伸張方法により、他のノード１００と同期して伸張処理を実行するように伸張部１０５を制御する。他のノード１００との間で、アプリケーション鍵の伸張方法に関する情報を交換することで、伸張部１０５に設定する伸張方法を決定する処理のことを、鍵伸張に関するネゴシエーションと呼ぶ。
【００２２】
プラットフォーム部１０７は、ノード１００上の他の構成要素の管理、動作に必要なコンピュータのオペレーティングシステム機能、基本的なネットワーク機能、および、セキュリティ機能等を提供する。
【００２３】
以上、本実施形態におけるノード１００の構成について説明した。ただし、上記説明は一例である。
【００２４】
次に、本実施形態におけるアプリケーション２００について説明する。図３は、本実施形態におけるアプリケーション２００の構成例を示すブロック図である。アプリケーション２００は、ノード通信部２０４と、暗号通信部２０３と、実行部２０１と、プラットフォーム部２０２と、を備えている。
【００２５】
ノード通信部２０４は、ノード間リンク７１を介して、ノード１００（ノード１００上のアプリ通信部１０１）と接続して通信する。ノード通信部２０４は、例えば暗号通信を行うために必要なアプリケーション鍵をノード１００から取得する。なお、本実施形態では、ノード通信部２０４は、上記のように伸張部１０５により伸張されたアプリケーション鍵である伸張鍵をノード１００から取得する。ノード通信部２０４は、伸張鍵の取得を開始する前の伸張鍵の取得開始要求、および、伸張鍵の取得を終了する際の終了要求をノード１００に対して送信する。また、ノード通信部２０４は、取得した伸張鍵を保持して管理する。ノード通信部２０４により保持される伸張鍵は、暗号通信部２０３によって使用される。ノード通信部２０４は、暗号通信部２０３から伸張鍵の要求を受けると、保持している伸張鍵を暗号通信部２０３に提供する。
【００２６】
実行部２０１は、暗号通信を行うアプリケーション機能を実行する。通信を行うものであれば特にアプリケーション機能の種類は限定しない。例えば、実行部２０１は、ビデオ映像送受信等の機能を実行する。実行部２０１は、暗号通信の際、暗号通信部２０３を利用してデータを送受信する。
【００２７】
暗号通信部２０３は、実行部２０１の動作に必要な通信機能、通信データの暗号化機能、および、通信データの復号機能を提供する。暗号通信部２０３は、アプリケーション２００から送信データを受けとると、受け取った送信データを暗号化し、暗号データ通信リンク７３を介してアプリケーションネットワーク３０２に対して暗号データを送信する。また、暗号通信部２０３は、アプリケーションネットワーク３０２経由で暗号データ通信リンク７３からデータを受信すると、受信したデータを復号する。暗号通信部２０３は、復号したデータを実行部２０１へ受け渡す。暗号通信部２０３は、暗号化および復号で必要になった場合は、ノード通信部２０４から、新たな伸張鍵を取得する。
【００２８】
本実施形態では、暗号通信部２０３がどのような暗号アルゴリズムを使うかは、特に限定しない。ＯＴＰのようなバーナム暗号であっても、ＡＥＳ（Advanced  Encryption  Standard）のようなブロック暗号であってもよい。ただし、暗号通信部２０３は、ノード通信部２０４が保持する伸張鍵を暗号通信に利用する。また、暗号通信部２０３は、暗号機能以外にデータ認証機能、および、通信相手認証機能を実行してもよい。
【００２９】
プラットフォーム部２０２は、アプリケーション２００上の他の構成要素の管理、動作に必要なコンピュータのオペレーティングシステム機能、基本的なネットワーク機能、および、セキュリティ機能等を提供する。
【００３０】
以上、本実施形態におけるアプリケーション２００の構成について説明した。ただし、上記説明は一例である。
【００３１】
次に、本実施形態による暗号通信処理の基本シーケンスについて説明する。図４は、本実施形態による暗号通信処理の一例を示すシーケンス図である。以下では、ノード１００ａに接続するアプリケーション２００ａが、ノード１００ｂに接続するアプリケーション２００ｂに対して暗号通信を行う場面を想定する。なお、ノード１００ａとノード１００ｂとは、ノード間リンク７１により直接接続されていてもよいし、その他のノード１００（ノード１００ｃ〜１００ｅ）を介して接続されていてもよい。
【００３２】
まず、アプリケーション２００ｂは、自身が接続するノード１００ｂに対して、通信開始の受け付けが可能状態になっている旨と、受け付け可能な通信の種別情報（例えば、通信開始を受け付けるポート番号や、通信可能なスループットの情報等）を通知する。ノード１００ｂは、アプリケーション２００ｂの通信可能状態を管理し、他のノード１００と共有可能にしておく。アプリケーション２００ｂは続いて、実際に暗号データ通信の開始を受け付け可能な状態となる(ステップＳ１０１)。
【００３３】
次に、アプリケーション２００ａは、通信開始を制御する（ステップＳ１０２）。アプリケーション２００ａは、例えば自身が接続するノード１００ａに対して、通信開始要求を通知する。このとき、アプリケーション２００ａは、アプリケーション２００ｂのアドレス情報、ポート番号等を指定する。アプリケーション２００ａは、アドレス等を指定する他に、アプリケーション鍵を取得する場合のスループット（要求するアプリケーション鍵利用速度など）に関する情報（要求スループット）を通知してもよい。要求スループットは、アプリケーション２００ａに対してユーザにより予め設定されていてもよい。また、アプリケーション２００ａがアプリケーション機能を実行するときに、暗号通信を行ったデータおよび通信速度の情報を記録しておき、アプリケーション２００ａ自身が要求スループットを決定してもよい。例えば、ビデオを送信するアプリケーション機能が動作し、暗号化にＯＴＰを利用する場合は、ビデオのビットレートがそのまま要求スループットになりうる。
【００３４】
ノード１００ａは、自身に接続するアプリケーション２００ａからの通信開始要求を受信すると、鍵共有の開始を制御する。ノード１００ａは、要求された暗号通信で用いるアプリケーション鍵（伸張鍵）を提供するために、鍵共有を行なう対象となるノード１００（ここではノード１００ｂ）を、各ノードが管理する通信可能状態にあるアプリケーションのアドレス情報を検索する等して特定した上で通信を行い、ノード間で、鍵共有を実行可能な状態を初期化する。同時に、ノード１００ａおよびノード１００ｂは、後述する鍵の伸張処理のネゴシエーションも行なう（ステップＳ１０３）。なお、ノード１００ｂはこのとき、アプリケーション２００ｂに対して、アプリケーション２００ａから通知された要求スループットやアプリケーション２００ａ自身のアドレス情報等を通知しても良い。アプリケーション２００ｂはこの通知を受けて、アプリケーション２００ａからの通信開始要求を拒否することができても良い。
【００３５】
ステップＳ１０３で鍵共有開始制御が完了すると、ノード１００ａは、特定したノード１００ｂとの間で実際にアプリケーション鍵の共有を行う（ステップＳ１０４）。
【００３６】
要求スループット（要求されるアプリケーション鍵利用速度など）がアプリケーション２００ａから通知されている場合、ノード１００ａの制御部１０６は、要求スループットを満足する速度で、アプリケーション鍵の共有を行うように制御してもよい。一連のアプリケーション鍵の共有処理が開始された後、ノード１００ａは、アプリケーション２００ａに対して、アプリケーション鍵の共有が開始された旨の応答を返してもよい。
【００３７】
アプリケーション２００ａは、ノード１００ａに対してアプリケーション鍵の取得を要求する（ステップＳ１０５）。アプリケーション２００ａは、鍵の要求とともに使用する伸張鍵のサイズを送信してもよい。アプリケーション鍵の要求を受けると、ノード１００ａの伸張部１０５は、アプリケーション鍵を伸張する（ステップＳ１０６）。ノード１００ａのアプリ通信部１０１は、伸張により得られる伸張鍵をアプリケーション２００ａに送信する（ステップＳ１０７）。
【００３８】
伸張鍵を受信したアプリケーション２００ａは、アプリケーション２００ｂとの間で暗号通信（暗号データの送信）を開始する。例えば、暗号通信部２０３が、伸張鍵を暗号鍵（アプリケーション鍵）として用いて、送信するデータを暗号化する（ステップＳ１０８）。暗号通信部２０３は、暗号化した暗号データをアプリケーション２００ｂに送信する（ステップＳ１０９）。
【００３９】
暗号データを受信したアプリケーション２００ｂは、接続するノード１００ｂに対し、暗号データを復号するためのアプリケーション鍵（伸張鍵）を要求して取得する（ステップＳ１１０〜ステップＳ１１２）。この処理は、アプリケーション２００ａにより実行されるステップＳ１０５〜ステップＳ１０７と同様である。アプリケーション２００ｂの暗号通信部２０３は、取得した伸張鍵を用いて暗号データを復号する（ステップＳ１１３）。以上により、暗号データ通信が成立する。
【００４０】
以上が、本実施形態が想定する基本シーケンスである。
【００４１】
本実施形態では、図４に示すように、ノード１００ａとノード１００ｂとの間でアプリケーション鍵の伸張のための通信（ネゴシエーション）が行われてもよい（ステップＳ１０２）。ネゴシエーションは、各ノード１００の制御部１０６が、ノード通信部１０２を介して相互に通信することによって実現される。
【００４２】
ノード１００には、複数のアプリケーション２００が接続されることがありえる。例えばこのような理由から、ノード１００ａがノード１００ｂと交換および共有可能なアプリケーション鍵のスループットを超えるスループットでの、アプリケーション２００ａへのアプリケーション鍵提供が求められることがありえる。ノード１００ａの制御部１０６は、例えば、アプリケーション２００から要求されるトータルでの要求スループット、および、ノード１００ｂとアプリケーション鍵を交換および共有するときの実際の共有速度の情報等を元に、アプリケーション鍵を何倍に伸張する必要があるかを判断する。要求スループットは、例えばアプリ通信部１０１から取得できる。
共有速度の情報は、例えば共有処理部１０４から取得できる。
【００４３】
例えば、ノード１００ｂとのアプリケーション鍵の共有速度が１Ｍｂｐｓであって、接続するアプリケーション２００ａから要求される要求スループットの合計が５Ｍｂｐｓであるとする。この場合、５倍以上のアプリケーション鍵伸張を行うことにより、アプリケーション２００ａからのアプリケーション鍵要求に応えられる。また、ノード１００ａは同時に、どのような伸張方法でアプリケーション鍵を伸張するかを判断する。この判断の際には、必要となるアプリケーション鍵の伸張倍率や、アプリケーション鍵伸張を行う際に必要な計算量、および、ノード１００ａが備えるアプリケーション鍵伸張アルゴリズムの種類を参照する。
【００４４】
ノード１００ａの制御部１０６は、少なくとも１つの伸張方法を示す情報（以下、伸張方法データという）を、ノード通信部２０４を介してノード１００ｂへ送信する。伸張方法データは、例えば、アプリケーション鍵の伸張倍率と、アプリケーション鍵の伸張を実現するためのアルゴリズムの情報とを含む。伸張方法データは、いずれのアプリケーション鍵から伸張処理を行うかを示すための、アプリケーション鍵のＩＤが付加されていてもよい。また、ノード１００ａは、優先順位の情報を付加した複数の伸張方法データをノード１００ｂへ送信してもよい。ノード１００ｂは、優先順位を参照して複数の伸張方法データから、採用する伸張方法を決定してもよい。
【００４５】
伸張方法データを受信したノード１００ｂの制御部１０６は、ノード通信部２０４を経由して伸張方法データの情報を受け取り、該当するアプリケーション鍵の伸張倍率、伸張アルゴリズム、および、伸張を開始するアプリケーション鍵のＩＤなどを把握する。複数の伸張方法データを受信した場合、ノード１００ｂの制御部１０６は、サポートする伸張アルゴリズムの情報等を元に、採用する伸張アルゴリズムおよび伸張倍率を決定し、ノード１００ａに対して、決定結果を応答してもよい。
【００４６】
なお、指定されたＩＤのアプリケーション鍵から伸張が開始できない場合は、実際にいずれのアプリケーション鍵から伸張処理を適用可能であるかを示す鍵のＩＤを、決定結果の応答に加えてもよい。例えば、指定されたＩＤのアプリケーション鍵が既に（伸張せずに）アプリケーション２００に提供されている場合が、指定されたＩＤのアプリケーション鍵から伸張が開始できない場合に該当する。
【００４７】
ノード１００ｂでは、制御部１０６が伸張部１０５に指示することにより、伸張処理を開始する。応答を受け取ったノード１００ａは、実際に伸張処理を行う倍率、伸張アルゴリズム、および、対象となるアプリケーション鍵のＩＤを決定し、伸張処理を開始する。
【００４８】
このように構成することで、ノード１００ａとノード１００ｂは、同じＩＤのアプリケーション鍵から、共通の伸張アルゴリズムおよび共通の伸張倍率によるアプリケーション鍵の伸張処理を開始することができる。結果として、ノード１００は、アプリケーション２００から要求される要求スループットを満たすアプリケーション鍵の提供が可能となる。
【００４９】
なお、伸張アルゴリズム等が決定し伸張処理が開始可能となった後、実際に伸張部１０５による伸張処理が行われるタイミングには幾つかのバリエーションが存在する。例えば、管理部１０３に保持されるアプリケーション鍵を順次伸張処理してゆく場合、および、アプリ通信部１０１からアプリケーション鍵を要求された際に、要求されたアプリケーション鍵の伸張処理を実施する場合、などが考えられる。図４では、後者の場合が図示されている。
【００５０】
なお、図４では、ノード１００ａとノード１００ｂとの間でアプリケーション鍵の共有および交換処理を開始（ステップＳ１０１、ステップＳ１０２）すると同時または直後に、制御部１０６が伸張処理のネゴシエーションを開始する例を示した。制御部１０６による伸張処理のネゴシエーションが行われるタイミングは、これに限られるものではない。
【００５１】
図４にも図示するように、アプリケーション鍵の共有途中にノード１００の制御部１０６によるアプリケーション鍵の伸張ネゴシエーションを実行し（ステップＳ１１４）、伸張処理を新たに開始してもよい。また、決定した伸張方法、倍率等を、同様の方法によってアプリケーション鍵の共有途中に変更してもよい。制御部１０６は、例えば、新たに別のアプリケーション２００が通信開始を要求し、ノード１００ａとノード１００ｂとの間で要求されるアプリケーション鍵の共有速度が増加したタイミングで、伸張ネゴシエーションを実行してもよい。
【００５２】
他にも、制御部１０６は、例えば量子暗号通信により共有するリンク鍵の共有速度の変化、および、量子暗号通信のエラーレートの上昇等、ノード１００が観測可能な量子暗号パラメータの変化を契機として、伸張倍率および伸張方法を変更してもよい。これらの要因によって、ノード１００ａとノード１００ｂとの間で実際に共有できるアプリケーション鍵の速度が変化または低下する可能性が高いためである。
【００５３】
さらに、制御部１０６が、量子暗号パラメータ（例えば、リンク鍵生成速度、および、エラーレート）の変動発生を予め想定して、これらの量子暗号パラメータの変動値と、変動した場合の伸張方法データとの組み合わせのリストを、伸張ネゴシエーションにおいて決定しておくように構成してもよい。
【００５４】
例えば、「リンク生成速度が１００ｋｂｐｓ以下であれば伸張倍率は１００倍にする、５００ｋｂｐｓ以下であれば、伸張倍率は２０倍にする。１０００ｋｂｐｓ以下であれば、１０倍にする」等の条件を、予め伸張ネゴシエーションによってノード１００間で決定しておいてもよい。ただし、この場合であっても、厳密にいずれのアプリケーション鍵から伸張倍率を変更するかを、ノード１００ａとノード１００ｂとで同期するため、アプリケーション鍵のＩＤの情報を、ノード１００の間で交換してもよい。
【００５５】
なお、ここでは、ノード１００ａとノード１００ｂとがノード通信部２０４を介して通信する実施例を説明したが、これ以外の経路を用いてアプリケーション鍵の伸張倍率とアルゴリズムを決定してもよい。
【００５６】
以下では、実際のアプリケーション鍵の伸張アルゴリズムの例を説明する。これらは一例であり、アプリケーション鍵の長さを伸張できるアルゴリズムであればあらゆるアルゴリズムを適用できる。
【００５７】
図５は、簡単なアプリケーション鍵の伸張方法の一例を示す図である。図５の伸張アルゴリズムは、アプリケーション鍵に含まれるデータを、当該データのパターンに応じて定められ、長さを伸張したデータ（変換データ）に置き換えていくことにより、アプリケーション鍵を伸張するアルゴリズムである。図５の伸張アルゴリズムでは、単純に、伸張前のアプリケーション鍵のビットデータが「０」であった場合は、伸張後のアプリケーション鍵のビットデータを「０００」に置換する。また、伸張前のアプリケーション鍵のビットデータが「１」であった場合は、伸張後のアプリケーション鍵のビットデータを「１１１」に置換する。この例では、アプリケーション鍵の伸張倍率は３倍である。
【００５８】
他の例として、伸張前のアプリケーション鍵のビットデータが「０」であった場合に伸張後のアプリケーション鍵のビットデータを「００１１００１１００」に置換し、伸張前のアプリケーション鍵のビットデータが「１」であった場合に伸張後のアプリケーション鍵のビットデータを「１１００１１００１１」に置換してもよい。この例では、伸張倍率が１０倍になる。このように、何倍の伸張倍率であっても容易に実現可能である。
【００５９】
図６は、暗号処理を利用したアプリケーション鍵の伸張方法の一例を示す図である。図６の伸張アルゴリズムは、暗号処理のパラメータとしてアプリケーション鍵を用いて、平文に対して暗号処理を実行して得られる暗号文を伸張鍵として生成する伸張アルゴリズムである。図６は、「ＡＥＳ−１２８ｂｉｔ  ＣＢＣモード」の暗号アルゴリズムを用いた伸張方法の例を示している。
【００６０】
この場合、伸張部１０５は、まずアプリケーション鍵（伸張前）を１６バイト毎に切り出す。切り出したデータは、先頭から順に、ＩＶ１、Ｋｅｙ１、ＩＶ２、Ｋｅｙ２、・・・とする。例えば、伸張部１０５は、ＩＶ１およびＫｅｙ１をそれぞれＩＶ（Initial  Vector）および鍵Ｋｅｙとして、ＡＥＳ−１２８ｂｉｔにより、ある３２Ｋバイトのデータ（対象データ）を暗号化すると、３２Ｋバイトのデータ（Ａｐｐｋｅｙ１）が得られる。伸張部１０５は、このデータを伸張したアプリケーション鍵（伸張鍵）の一部とする。このような処理を、ＩＶ１およびＫｅｙ１のペア、ＩＶ２およびＫｅｙ２のペア、・・・のように順に処理することで、３２バイト（１６バイトのＩＶと１６バイトのＫｅｙ）分のデータを３２Ｋバイト分のデータに順次伸張することができる。この場合、伸張倍率１０００倍の伸張処理が実現される。暗号化する対象データは、どのようなデータであってもよい。例えば、すべてゼロの値でもよいし、アプリケーション鍵（伸張前）から別途事前に切り出しておいた値を対象データとして採用してもよい。対象データのデータ長や、ＡＥＳで利用するブロック長等を調整することで、伸張倍率を様々に変更することができる。
【００６１】
次に、エラー処理について説明する。アプリケーション２００からアプリケーション鍵要求を含む通信開始要求を受信したノード１００は、前述の処理により、アプリケーション２００からの要求を満たすアプリケーション鍵提供が実現可能である。しかし、実行可能な伸張倍率等の制約によって、アプリケーションが要求するスループットに答えられない場合もありうる。例えば、単純に、要求された大きい伸張倍率をサポートできない場合が相当する。また、伸張倍率が過大であると、アプリケーション鍵自体のセキュリティ（安全性）が低下するため、大きい伸張倍率をノード１００が許可しない場合もありうる。
【００６２】
このような状況におけるノード１００の振る舞いには幾つかの方法が考えられる。例えば、要求されるスループットでのアプリケーション鍵提供が実現できないため、ノード１００がアプリケーションからの通信要求に対してエラー応答し、接続を許可しないように構成できる。ノード１００が、可能な範囲で最大の伸張倍率によるアプリケーション鍵交換を開始し、アプリケーションに対しては、要求された要求スループットは実現できないことと、実際に利用可能な要求スループットを返答するように構成してもよい。
【００６３】
また、ノード１００間で伸張方法データのネゴシエーションを実施している場合においても、ノード１００ａとノード１００ｂとで許可する伸張倍率の最大値が異なることがありうる。そして、このような場合、ノード１００ｂでは、ノード１００ａから通知された伸張倍率が実現できず、通知された伸張倍率より小さい伸張倍率でのアプリケーション鍵伸張を行う必要が生じる場合がありうる。この場合、ノード１００ｂは、伸張倍率のネゴシエーションそのものに対応できないとしてエラー通知を行い、ネゴシエーションを失敗させることで、伸張の開始または変更を中止してもよい。また、ノード１００ｂが、可能な範囲で最大の伸張倍率をノード１００ａに通知することで、ノード１００ａとノード１００ｂとの間で可能な範囲で最大のアプリケーション鍵伸張を実現する方法も考えられる。
【００６４】
以上説明したとおり、本実施形態によれば、ノード間で共有されるアプリケーション鍵の共有速度が律速される場合であっても、ノードがアプリケーションに対しより高速に安定してアプリケーション鍵を提供することができる。
【００６５】
次に、本実施形態にかかる装置（ノード、アプリケーション）のハードウェア構成について図７を用いて説明する。図７は、本実施形態にかかる装置のハードウェア構成を示す説明図である。
【００６６】
本実施形態にかかる装置は、ＣＰＵ（Central  Processing  Unit）５１などの制御装置と、ＲＯＭ（Read  Only  Memory）５２やＲＡＭ（Random  Access  Memory）５３などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５４と、各部を接続するバス６１を備えている。
【００６７】
本実施形態にかかる装置で実行されるプログラムは、ＲＯＭ５２等に予め組み込まれて提供される。
【００６８】
本実施形態にかかる装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【００６９】
さらに、本実施形態にかかる装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態にかかる装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【００７０】
本実施形態にかかる装置で実行されるプログラムは、コンピュータを上述した装置の各部として機能させうる。このコンピュータは、ＣＰＵ５１がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【００７１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７２】
１００ａ〜１００ｅ  ノード
１０１  アプリ通信部
１０２  ノード通信部
１０３  管理部
１０４  共有処理部
１０５  伸張部
１０６  制御部
１０７  プラットフォーム部
２００ａ、２００ｂ  アプリケーション
２０１  実行部
２０２  プラットフォーム部
２０３  暗号通信部
２０４  ノード通信部
３０１  鍵共有ネットワーク
３０２  アプリケーションネットワーク
【図１】
2014143493.tif 000003
【図２】
2014143493.tif 000004
【図３】
2014143493.tif 000005
【図４】
2014143493.tif 000006
【図５】
2014143493.tif 000007
【図６】
2014143493.tif 000008
【図７】
2014143493.tif 000009