(57)【特許請求の範囲】
【請求項１】
鍵取得部、決定部及び暗号通信部を備えるアプリケーション装置の通信方法であって、
前記鍵取得部が、接続する鍵共有ネットワーク上の第１の鍵共有装置からアプリケーション鍵を取得することと、
前記決定部が、前記鍵共有ネットワーク上の第２の鍵共有装置と接続する通信相手のアプリケーション装置との間で、１以上の鍵利用方法と優先度情報とを対応付けたメッセージを送信し、これに対する応答として、前記１以上の鍵利用方法に含まれる１つの鍵利用方法に関しての通知を受信することによって、採用する鍵利用方法を決定するネゴシエーション手続きを行なうことによって、前記アプリケーション鍵の鍵利用方法を決定することと、
前記暗号通信部が、前記決定された鍵利用方法に従って、少なくとも、前記アプリケーション鍵の一部から暗号通信を行うための認証用の識別情報を、前記アプリケーション鍵の別の一部からデータ暗号化に用いる暗号鍵を取り出し、前記認証用の識別情報及び前記暗号鍵を用いることで暗号通信を行なうことと、
を具備する通信方法。
【請求項２】
前記鍵利用方法は、前記アプリケーション鍵から認証用の識別情報及びデータ暗号化に用いる暗号鍵を取り出す際の鍵の長さと、同じ認証用の識別情報を用いて繰り返しデータ暗号化通信を行う回数と、に関する情報を含む、請求項１に記載の通信方法。
【請求項３】
前記ネゴシエーション手続きを行なうことは、前記鍵共有ネットワークを介して前記通信相手のアプリケーション装置とネゴシエーションを行なうことを備える請求項１に記載の通信方法。
【請求項４】
前記ネゴシエーション手続きを行なうことは、前記鍵共有ネットワークとは異なるネットワークを介して前記通信相手のアプリケーション装置とネゴシエーションを行なうことを備える請求項１に記載の通信方法。
【請求項５】
前記アプリケーション鍵が前記鍵共有ネットワークから受信されるスループットが変動した場合に、前記決定部が、前記通信相手のアプリケーション装置との間で前記ネゴシエーション手続きを再度行うことをさらに具備する請求項１に記載の通信方法。
【請求項６】
前記鍵取得部は、前記接続する鍵共有ネットワーク上の第１の鍵共有装置からアプリケーション鍵を鍵ストリームとして取得し、前記鍵利用方法は、前記取得した鍵ストリームであるアプリケーション鍵を切り出す単位を示す情報を含む、請求項１に記載の通信方法。
【請求項７】
前記暗号通信は、前記決定された鍵利用方法に従って、前記アプリケーション鍵のさらに他の一部から暗号通信するための認証用パスワード又はデータ認証用の鍵を取り出し、前記認証用パスワード又はデータ認証用の鍵をさらに用いることで暗号通信を行なう、請求項１に記載の通信方法。
【請求項８】
接続する鍵共有ネットワーク上の第１の鍵共有装置からアプリケーション鍵を取得する鍵取得部と、
前記鍵共有ネットワーク上の第２の鍵共有装置と接続する通信相手のアプリケーション装置との間で、１以上の鍵利用方法と優先度情報とを対応付けたメッセージを送信し、これに対する応答として、前記１以上の鍵利用方法に含まれる１つの鍵利用方法に関しての通知を受信することによって、採用する鍵利用方法を決定するネゴシエーション手続きを行なうことによって、前記アプリケーション鍵の鍵利用方法を決定する決定部と、
前記決定された鍵利用方法に従って、少なくとも、前記アプリケーション鍵の一部から暗号通信を行うための認証用の識別情報を、前記アプリケーション鍵の別の一部からデータ暗号化に用いる暗号鍵を取り出し、前記認証用の識別情報及び前記暗号鍵を用いることで暗号通信を行う暗号通信部と、
を具備するアプリケーション装置。
【請求項９】
コンピュータを、
接続する鍵共有ネットワーク上の第１の鍵共有装置からアプリケーション鍵を取得する取得手段と、
前記鍵共有ネットワーク上の第２の鍵共有装置と接続する通信相手のアプリケーション装置との間で、１以上の鍵利用方法と優先度情報とを対応付けたメッセージを送信し、これに対する応答として、前記１以上の鍵利用方法に含まれる１つの鍵利用方法に関しての通知を受信することによって、採用する鍵利用方法を決定するネゴシエーション手続きを行なうことによって、前記アプリケーション鍵の鍵利用方法を決定する決定手段と、
前記決定された鍵利用方法に従って、少なくとも、前記アプリケーション鍵の一部から暗号通信を行うための認証用の識別情報を、前記アプリケーション鍵の別の一部からデータ暗号化に用いる暗号鍵を取り出し、前記認証用の識別情報及び前記暗号鍵を用いることで暗号通信を行う暗号通信手段として機能させるためのプログラム。
【請求項１０】
鍵共有ネットワーク上の第１の鍵共有装置と接続する第１のアプリケーション装置と前記鍵共有ネットワーク上の第２の鍵共有装置と接続する第２のアプリケーション装置との間で暗号通信を行う通信システムであって、
前記第１のアプリケーション装置は、
前記第１の鍵共有装置からアプリケーション鍵を取得する取得部と、
前記第２のアプリケーション装置との間で、１以上の鍵利用方法と優先度情報とを対応付けたメッセージを送信し、これに対する応答として、前記１以上の鍵利用方法に含まれる１つの鍵利用方法に関しての通知を受信することによって、採用する鍵利用方法を決定するネゴシエーション手続きを行なうことによって、前記アプリケーション鍵の鍵利用方法を決定する決定部と、
前記決定された鍵利用方法に従って、少なくとも、前記アプリケーション鍵の一部から暗号通信を行うための認証用の識別情報を、前記アプリケーション鍵の別の一部からデータ暗号化に用いる暗号鍵を取り出し、前記認証用の識別情報及び前記暗号鍵を用いることで前記第２のアプリケーション装置と暗号通信を行なう暗号通信部と、
を具備する通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信方法、アプリケーション装置、プログラム及び通信システムに関する。
【背景技術】
【０００２】
鍵共有ネットワークは、複数のノードが複数のリンクを介して相互に接続されたネットワークである。各ノードは、リンクを介して接続された対向ノードとの間で乱数を生成し共有する機能と、この乱数を暗号鍵（以下、リンク鍵という）として利用してリンク上で暗号通信を行う機能と、を備える。これらのノードのうちの幾つかは、リンク鍵とは別の乱数である暗号鍵（以下、アプリケーション鍵という）を生成する機能と、このアプリケーション鍵をリンク上で他のノードに送信する機能と、を備える。
【０００３】
鍵共有ネットワークにおけるアプリケーションは、ノードからアプリケーション鍵を取得し、このアプリケーション鍵を利用して他のアプリケーションとの間で暗号データ通信を行う機能を備える。暗号データ通信は、鍵共有ネットワークとは異なるネットワーク（以下、アプリケーションネットワークという）を介して行なわれることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１５４０１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
鍵共有ネットワークを構成するノードからアプリケーション鍵を取得するアプリケーションは、アプリケーション鍵の鍵利用方法を事前に設定する必要がある。例えば、暗号アルゴリズム（例えば、ＡＥＳ（Advanced Encryption Standard）、ＤＥＳ（Data Encryption Standard）等）で利用する鍵長、鍵ＩＤ、及び認証アルゴリズムで利用するＩＤに関する情報を、通信するアプリケーションの双方で事前に設定する必要がある。このような事前設定は、複数のアプリケーションが互いに通信するようなネットワークを想定すると、現実的でない。
【０００６】
本発明が解決しようとする課題は、鍵共有ネットワークから提供されるアプリケーション鍵を利用して暗号通信を行う通信方法、アプリケーション装置、プログラム及び通信システムを提供することである。
【課題を解決するための手段】
【０００７】
一実施形態に係る通信方法は、鍵共有ネットワークからアプリケーション鍵を取得することと、前記アプリケーション鍵の鍵利用方法を決定することと、前記鍵利用方法に従って前記アプリケーション鍵を利用することで暗号通信を行なうことと、備える。
【図面の簡単な説明】
【０００８】
【図１】一実施形態に係る暗号通信システムを示す図。
【図２】一実施形態に係るノードの構成を示すブロック図。
【図３】一実施形態に係るアプリケーションの構成を概略的に示すブロック図。
【図４】一実施形態に係る暗号データ通信を開始する手順を示すシーケンス図。
【図５】一実施形態に係る鍵利用方法の一例を示す図。
【発明を実施するための形態】
【０００９】
以下、必要に応じて図面を参照しながら実施形態を説明する。なお、以下の実施形態では、同一の番号を付した部分については同様の動作を行なうものとして、重ねての説明を省略する。
【００１０】
図１は、一実施形態に係る暗号通信システム１００を概略的に示している。この暗号通信システム１００は、図１に示されるように、鍵共有ネットワーク１１０及びアプリケーションネットワーク１２０を含む。アプリケーションネットワーク１２０は、例えば、インターネットである。
【００１１】
鍵共有ネットワーク１１０では、複数の（図１の例では５つの）ノード１１２Ａ〜１１２Ｅが複数のノード間リンク１１４Ａ〜１１４Ｆによって相互に接続されている。各ノードは、ノード間リンクを介して接続された対向ノードとの間で暗号通信を行なう。例えば、ノード１１２Ａとノード１１２Ｂは、あるリンク鍵を用いてノード間リンク１１４Ａ上で暗号通信を行なう。ノード１１２Ｂとノード１１２Ｃは、他のリンク鍵を用いてノード間リンク１１４Ｃ上で暗号通信を行なう。ノード１１２Ｂとノード１１２Ｅは、さらに他のリンク鍵を用いてノード間リンク１１４Ｅ上で暗号通信を行なう。
【００１２】
鍵共有ネットワーク１１０におけるアプリケーションは、アプリケーション鍵を利用して他のアプリケーションとの間で暗号通信を行なう。例えば、アプリケーション１２２Ａは、アプリケーション鍵を用いてアプリケーションネットワーク１２０を介してアプリケーション１２２Ｂとの間で暗号通信を行なう。アプリケーションは、ノードとともに一体として実現されてもよく、ノードとは独立した装置又は端末として実現されてもよい。アプリケーションを備える装置をアプリケーション装置と呼ぶ。図１は、アプリケーションがノードから独立した端末として実現される例を示す。
【００１３】
ノード間でリンク鍵を生成し共有する機能は、例えば量子暗号又は量子鍵配送（ＱＫＤ：quantum key distribution）と呼ばれる技術により実現される。また、ノード間でアプリケーション鍵を生成し共有する技術は、Kollmitzer C., Pivk M. (Eds.), Applied Quantum Cryptography, Lect. Notes Phys. 797 (Springer, Berlin Heidelberg 2010), DOI: 10.1007/978-3-642-04831-9、及び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に記載された技術を利用することができる。例えば、ノード１１２Ａは、リンク鍵とは別の乱数であるアプリケーション鍵を生成し、リンク鍵によってアプリケーション鍵を暗号化し、この暗号化されたアプリケーション鍵をノード間リンク１１４Ａを介してノード１１２Ｂに送信する。ノード１１２Ｂは、この暗号化されたアプリケーション鍵をリンク鍵によって復号化し、さらに、ノード間リンク１１４Ｅによって接続されるノード１１２Ｅと共有するリンク鍵によってアプリケーション鍵を暗号化し、この暗号化されたアプリケーション鍵をノード間リンク１１４Ｅを介してノード１１２Ｅに送信する。
【００１４】
図２は、一実施形態に係るノード１１２を概略的に示している。図２に示されるノード１１２は、図１に示されるノード１１２Ａ〜１１２Ｅの各々に対応する。ノード１１２は、ノード間通信部２０１、アプリケーション鍵生成部２０２、アプリケーション鍵保持管理部２０３、状態管理部２０４、アプリケーション通信部２０５、制御部２０６、及びノードプラットフォーム部２０７を備える。
【００１５】
ノード間通信部２０１は、ノード間リンク２５２を介して接続された対向ノード２５０との間で、量子暗号通信技術を用いて乱数を生成し共有する。生成された乱数はリンク鍵として管理される。リンク鍵は、ノード間リンクを介して接続された他のノードとの間でノード間データ通信を行う際に利用される。ノード間データ通信は、リンク鍵を用いてデータを暗号化する暗号通信である。ここで、他のノードとは、例えば対向ノード２５０のようなノード間リンクによって直接接続された対向ノードであってもよく、或いは、その対向ノードに対し他のノード間リンクを介して接続される他のノードであってもよい。後者の場合、ノード間通信部２０１は、鍵共有ネットワーク１１０において、複数のノードを介して通信を行うためのルーティング機能を提供してもよい。ノード間通信部２０１によりノード間で交換されるデータは、例えば、アプリケーション鍵のデータである。このようなデータは、ノードが管理するリンク鍵を用いて暗号化されて送信され、受信側で復号化される。
【００１６】
アプリケーション鍵生成部２０２は、乱数としてアプリケーション鍵を生成する。アプリケーション鍵は、鍵ＩＤを付加した形で生成される。アプリケーション鍵の鍵ＩＤのフォーマットは、いかなる形態のものであってもよい。一例では、アプリケーション鍵の鍵ＩＤは、連続した数字により順序が識別されるものとする。生成されたアプリケーション鍵そのものは、アプリケーション鍵保持管理部２０３に保持される。なお、鍵ＩＤの付与（対応付け）は、アプリケーション鍵生成部２０２ではなくアプリケーション鍵保持管理部２０３が行なってもよい。
【００１７】
アプリケーション鍵保持管理部２０３は、アプリケーション鍵を保持し管理する。アプリケーション鍵保持管理部２０３は、アプリケーション鍵生成部２０２によって生成されたアプリケーション鍵とともに、ノード間通信部２０１を介して他のノードから受信したアプリケーション鍵を保持することができる。
【００１８】
アプリケーション鍵保持管理部２０３に保持されているアプリケーション鍵は、アプリケーション通信部２０５によって、アプリケーション通信リンク２６２を介して接続されたアプリケーション２６０に提供される。アプリケーション２６０に提供された鍵は、アプリケーション鍵保持管理部２０３から削除されてもよい。アプリケーション鍵保持管理部２０３で保持されるアプリケーション鍵は、暗号通信システムにおけるセキュリティ上もっとも重要なデータの１つであるため、ファイルシステムやオペレーティングシステム（ＯＳ）によって暗号化、改竄防止、アクセス制限等のセキュリティ対策が施されていてもよい。アプリケーション鍵保持管理部２０３は、様々な方法で実現することができるが、例えば、ファイルシステムやデータベースとして実装することができる。
【００１９】
アプリケーション通信部２０５は、アプリケーション通信リンク２６２を介して接続されたアプリケーション２６０と通信する。アプリケーション通信部２０５は、アプリケーション２６０からの要求を受け付ける。この要求には、アプリケーション２６０からの暗号通信開始／終了要求（即ち、アプリケーション鍵提供開始／終了要求）、アプリケーション鍵取得要求等がある。アプリケーション２６０によって行なわれる個々の暗号通信をセッションと呼ぶ。セッションには、セッション識別子（セッションＩＤ）が付与される。セッションの情報は、状態管理部２０４によって管理される。セッションの情報は、どのようなセッションが存在するか、どの種類のアプリケーション鍵を割り当てるか等を表す。
【００２０】
さらに、アプリケーション通信部２０５は、アプリケーション２６０に対してアプリケーション鍵のデータを提供する。アプリケーション２６０にアプリケーション鍵のデータを提供する単位は、ノード１１２がアプリケーション鍵を他のノードと交換する単位と異なってもよい。このため、アプリケーション通信部２０５及びアプリケーション鍵保持管理部２０３は、セッションに割り当て済みのアプリケーション鍵のうち、どの部分までの鍵のデータを提供済みであるかも管理してよい。
【００２１】
状態管理部２０４は、前述のセッションの情報、アプリケーション鍵交換に関連するルールや状況の情報といった各種の状態情報を管理する。これらの情報は、アプリケーション通信部２０５によって参照されたり変更されたりする。
【００２２】
制御部２０６は、上記のノード機能を実現する各部を制御し、鍵共有ネットワーク１１０における一連のアプリケーション鍵共有動作を実現する。
【００２３】
ノードプラットフォーム部２０７は、ノード１１２上の他の構成要素の管理、動作に必要なコンピュータのオペレーティングシステム機能、基本的なネットワーク機能、セキュリティ機能等を提供する。
【００２４】
以上説明した本実施形態に係るノードの構成はあくまで一例である。
【００２５】
次に、図３を参照して一実施形態に係るアプリケーションについて説明する。  
図３は、本実施形態に係るアプリケーション１２２を概略的に示している。図３に示されるアプリケーション１２２は、図１に示されるアプリケーション１２２Ａ、１２２Ｂ並びに図２に示されるアプリケーション２６０の各々に対応する。アプリケーション１２２は、ノード通信・鍵取得部３０１、アプリケーション実行部３０２、認証・暗号通信部３０３、鍵利用方法決定部３０４、及びアプリケーションプラットフォーム部３０５を備える。
【００２６】
ノード通信・鍵取得部（単に鍵取得部ともいう）３０１は、ノード通信リンク３５２を介して接続されたノード３５０（具体的にはノード３５０のアプリケーション通信部）と通信する。ノード通信・鍵取得部３０１は、アプリケーション１２２が暗号通信を行うために必要なアプリケーション鍵をノード３５０から取得する。アプリケーション鍵のデータは、ノード３５０から鍵ストリームとして提供される。ノード通信・鍵取得部３０１は、アプリケーション鍵の取得を開始する前にアプリケーション鍵の取得の開始要求を行い、アプリケーション鍵の取得を終了する際にはアプリケーション鍵の取得の終了要求を行う。これによって区別されるアプリケーション鍵の利用がセッションとして識別される。ノード通信・鍵取得部３０１は、取得したアプリケーション鍵を保持し管理する。ノード通信・鍵取得部３０１に保持されているアプリケーション鍵は、認証・暗号通信部３０３によってアプリケーション間の暗号通信に使用される。
【００２７】
アプリケーション実行部３０２は、暗号通信を行うアプリケーション機能を実行する。アプリケーションの種類は、通信を行うものであればいかなるものであってもよい。一例では、アプリケーションは、ビデオ送信である。暗号通信の際のデータの送受信には、認証・暗号通信部３０３が利用される。
【００２８】
認証・暗号通信部（単に暗号通信部ともいう）３０３は、アプリケーション実行部３０２の動作に必要な通信機能、及び認証、通信データの暗号化、復号化機能を提供する。認証・暗号通信部３０３は、アプリケーション実行部３０２から送信データを受け取ると、これを暗号化し、暗号通信リンク３６２を介して他のアプリケーション３６０に、暗号化した送信データを送信する。認証・暗号通信部３０３は、暗号通信リンク３６２を介して他のアプリケーション３６０からデータを受信すると、これを復号化し、このデータをアプリケーション実行部３０２に渡す。さらに、認証・暗号通信部３０３は、暗号化及び復号化のために新たなアプリケーション鍵が必要になった場合、ノード通信・鍵取得部３０１から新たなアプリケーション鍵を取得する。
【００２９】
本実施形態では、認証・暗号通信部３０３が使用する認証・暗号アルゴリズムは、鍵利用方法決定部３０４によって決定されてもよく、他の方法（例えば、静的なコンフィグレーション、ＴＬＳ（Transport Layer Security）プロトコルで用いられるネゴシエーション等）で決定されてもよい。なお、認証・暗号通信部３０３は、暗号通信に加えて、通信相手の認証及びデータ認証を行なうこともできる。本実施形態の認証・暗号通信部３０３は、ノード通信・鍵取得部３０１からアプリケーション鍵を取り出し、これを用いて認証及び暗号通信を行なう。このとき、取り出したアプリケーション鍵の鍵利用方法は、鍵利用方法決定部３０４によって決定されて設定される。認証・暗号通信部３０３は、鍵利用方法決定部３０４によって決定された鍵利用方法に従ってアプリケーション鍵（具体的にはアプリケーション鍵の鍵ストリーム）をより小さいサイズに切り出し或いは分割し、切り出したアプリケーション鍵を利用して暗号通信を行う。暗号通信では、切り出したアプリケーション鍵の一部を、例えば、通信相手のアプリケーションと暗号通信するための認証用のＩＤ、認証用パスワード、データ認証用の鍵、データ暗号化用の鍵等として用いることができる。鍵利用方法については後述する。
【００３０】
鍵利用方法決定部３０４は、暗号通信リンク３６２を介して接続された他のアプリケーション３６０と通信若しくは交渉を行ない、アプリケーション３６０との暗号通信に使用するアプリケーション鍵の鍵利用方法を決定する。鍵利用方法決定部３０４はさらに、暗号通信に利用する暗号アルゴリズムについても決定することができる。
【００３１】
アプリケーションプラットフォーム部３０５は、アプリケーション１２２上の他の構成要素を管理、動作に必要なコンピュータのオペレーティングシステム機能、基本的なネットワーク機能、セキュリティ機能等を提供する。
【００３２】
以上説明した本実施形態に係るアプリケーションの構成はあくまで一例である。
【００３３】
図４は、本実施形態に係る暗号データ通信を開始する手順を概略的に示している。図４では、クライアントであるアプリケーション１２２Ａが、サーバであるアプリケーション１２２Ｂに対して通信を開始する場面を想定している。なお、ここで示されるシーケンスは、明示しているものを除き、全てアプリケーションネットワーク１２０を介して行われる。
【００３４】
図４のステップＳ４０１では、アプリケーション１２２Ａは、アプリケーション鍵の鍵利用方法を決定するために通信相手のアプリケーション１２２Ｂとネゴシエーションを行なう。このネゴシエーションは、アプリケーション１２２Ａ及びアプリケーション１２２Ｂの各々において、アプリケーション実行部３０２がアプリケーション機能を実行する際に、鍵利用方法決定部３０４によって実行される。
【００３５】
なお、アプリケーション１２２Ａでは、ノード通信・鍵取得部３０１は、アプリケーション実行部３０２からの指示により、ノード通信リンクを介して接続されたノードからアプリケーション鍵を取得する（図４には明示されない）が、このアプリケーション鍵の取得は、鍵利用方法決定部３０４によるネゴシエーションと並行して実行されてもよく、鍵利用方法決定部３０４によるネゴシエーションより先に若しくは後に実行されてもよい。アプリケーション１２２Ｂにおいても同様に、ノード通信・鍵取得部３０１は、鍵利用方法決定部３０４によるネゴシエーションと並行してアプリケーション鍵を取得してもよく、鍵利用方法決定部３０４によるネゴシエーションより先に若しくは後にアプリケーション鍵を取得してもよい（図４には明示されない）。ただし、アプリケーション１２２Ａ及びアプリケーション１２２Ｂの各々において鍵利用方法決定部３０４がアプリケーション鍵の鍵利用方法を決定するまでは、アプリケーション１２２Ａ及びアプリケーション１２２Ｂ間でアプリケーション鍵を利用した暗号データ通信はできない。
【００３６】
アプリケーション１２２Ａとアプリケーション１２２Ｂの間でアプリケーション鍵の鍵利用方法を決定するネゴシエーション方法としては、例えば、以下に例示する方法を利用することができる。  
アプリケーション１２２Ａの鍵利用方法決定部３０４は、自身がサポートしている鍵利用方法、即ち、アプリケーション１２２Ａが利用可能な鍵利用方法に関する情報を優先順位付けして保持している。例えば、利用可能な鍵利用方法に関する情報はリストの形態で保持される。アプリケーション１２２Ａの鍵利用方法決定部３０４は、アプリケーション１２２Ａが利用可能な鍵利用方法のうちの所望する鍵利用方法を１以上含む鍵利用方法リストを作成し、鍵利用方法リストをアプリケーション１２２Ｂに送信する（シーケンス１）。鍵利用方法リストは、１以上の鍵決定方法とともにそれらの優先順位（優先度ともいう）を示す情報を含むことができる。同様に、アプリケーション１２２Ｂの鍵利用方法決定部３０４も、アプリケーション１２２Ｂが利用可能な鍵利用方法に関する情報を優先順位付けして保持している。アプリケーション１２２Ｂの鍵利用方法決定部３０４は、アプリケーション１２２Ａから鍵利用方法リストを受信すると、この鍵利用方法リストに含まれ、且つ、アプリケーション１２２Ｂが利用可能な鍵利用方法の中から、例えば最も優先順位が高い鍵利用方法を選択する。アプリケーション１２２Ｂの鍵利用方法決定部３０４は、選択した鍵利用方法を実際に利用する鍵利用方法としてアプリケーション１２２Ａに通知する（シーケンス２）。
【００３７】
このような鍵利用方法を決定するためのネゴシエーションに関するシーケンスは、様々な方法で実現することができる。  
一例では、ＳＩＰ（Session Initiation Protocol）のようなセッション制御プロトコルを利用してネゴシエーションが行なわれる。具体的には、アプリケーション１２２Ａの鍵利用方法決定部３０４は、認証・暗号通信部３０３に指示して、アプリケーションネットワーク１２０を介してアプリケーション１２２Ｂに、鍵利用方法リストを含むＳＩＰ要求メッセージ（SIP Request Message）を送信する。続いて、アプリケーション１２２Ｂの鍵利用方法決定部３０４は、アプリケーション１２２Ａから受信した鍵利用方法リストの中から実際に利用する鍵利用方法を選択し、選択した鍵利用方法を示す情報を含むＳＩＰ応答メッセージ（SIP Response Message）をアプリケーション１２２Ａに送信する。
【００３８】
他の例では、鍵利用方法決定部３０４は、認証・暗号通信部３０３に指示して、ＴＬＳやＳＳＬ（Secure Socket Layer）における暗号アルゴリズムのネゴシエーションを行なうのと同時に、アプリケーション鍵の鍵利用方法についてもネゴシエーションを行なう。
【００３９】
さらに他の例では、アプリケーション１２２Ａの鍵利用方法決定部３０４は、アプリケーションネットワーク１２０ではなく、鍵共有ネットワーク１１０を介してアプリケーション１２２Ｂの鍵利用方法決定部３０４とネゴシエーションを行なう。具体的には、アプリケーション１２２Ａの鍵利用方法決定部３０４は、ノード通信・鍵取得部３０１に指示して、鍵利用方法リストをノードに通知する。鍵利用方法リストは、鍵共有ネットワーク１１０を構成する複数のノードを介してアプリケーション１２２Ｂに到達する。アプリケーション１２２Ｂの鍵利用方法決定部３０４は、受信した鍵利用方法リストの中から実際に利用する鍵利用方法を選択し、これをノードに通知する。アプリケーション１２２Ｂの鍵利用方法決定部３０４が選択した鍵利用方法を示す情報は、鍵共有ネットワーク１１０を構成する複数のノードを介してアプリケーション１２２Ａに到達する。このように、鍵共有ネットワーク１１０を介してアプリケーション１２２Ａ及びアプリケーション１２２Ｂ間でアプリケーション鍵の鍵利用方法を決定することもできる。
【００４０】
以上説明したように、アプリケーションネットワーク１２０又は鍵共有ネットワーク１１０を介して、様々なフォーマットのネゴシエーションが可能である。なお、上述したいずれの方法においても、アプリケーション１２２Ａからアプリケーション１２２Ｂに送信するのは、アプリケーション１２２Ａが所望する鍵利用方法を１以上含む鍵利用方法リストであり、アプリケーション１２２Ｂからアプリケーション１２２Ａに送信するのは、アプリケーション１２２Ｂが鍵利用方法リストの中から選択した単一の鍵利用方法を示す情報である。
【００４１】
次に、アプリケーション鍵の鍵利用方法について説明する。  
アプリケーション鍵の鍵利用方法は、アプリケーション鍵の鍵ストリームを切り出す若しくは分割する単位（例えばビット数）を示す情報である。例えば、アプリケーション鍵を暗号及び認証の両方に用いる場合、鍵利用方法は、認証に利用する鍵のビット数及び暗号に利用する鍵のビット数を示す情報を含む。さらに、暗号又は認証にＩＤ（鍵ＩＤ又はユーザＩＤ、セッションＩＤ等）を含める必要がある場合、鍵利用方法は、ＩＤに利用する鍵のビット数を示す情報を含む。また、暗号データの交換と認証処理を一定の割合で繰り返す場合、鍵利用方法は、次の認証に利用する鍵を切り出すまでに暗号に利用する鍵を切り出す回数を示す情報を含む。
【００４２】
さらに広義には、アプリケーション鍵の鍵利用方法は、利用する暗号アルゴリズムを示す設定情報を含んでもよい。暗号アルゴリズムとしては、ＡＥＳ（Advanced Encryption Standard）、ＤＥＳ（Data Encryption Standard）等を利用することができる。
【００４３】
図５は、アプリケーション鍵の鍵利用方法の一例を示している。より詳細には、図５は、ＴＬＳ−ＰＳＫ（Pre-Shared Key）方式の暗号アルゴリズムを利用する場合におけるアプリケーション鍵の鍵利用方法の一例を示している。
【００４４】
図５の例では、アプリケーションは、アプリケーション鍵の鍵ストリームを以下のように切り出して利用する。  
１．鍵ストリームの先頭からＸビットを認証ＩＤ（Pre Shared Key ID）として利用する。  
２．認証ＩＤに続く鍵ストリームのＹビットを認証鍵（Pre Shared Key）として利用する。  
３．認証鍵に続く鍵ストリームのＺビットを暗号及びデータ認証用の鍵として利用する。  
４．暗号及びデータ認証を利用するデータ交換をα回実行する。  
以上を繰り返してアプリケーション鍵を利用する。  
この場合において、パラメータＸ、Ｙ、Ｚ、αが鍵利用方法である。即ち、鍵利用方法は、認証に利用する鍵の長さ、暗号に利用する鍵の長さ、ＩＤの長さ、再認証が必要になるまでに行う暗号データ交換の回数などを示すパラメータを含む。認証・暗号通信部３０３は、鍵利用方法に従って鍵ストリームを切り出し、切り出したものを認証ＩＤ、認証鍵、暗号及びデータ認証用の鍵として解釈する。
【００４５】
本実施形態によれば、アプリケーション間でネゴシエーションを行なって鍵利用方法を決定することにより、鍵利用方法を事前に静的に決定することなく、アプリケーション実行時に鍵利用方法を決定することができる。また、このように鍵利用方法の決定に自由度を持たせることにより、アプリケーションにおいて、多様な暗号化のバリエーションが実行可能になるとともに、アプリケーションにおいて、様々な既存の暗号アルゴリズム実装が、鍵利用ネットワークから提供される鍵ストリームを鍵として利用する通信で利用する（再利用する）ことができる。
【００４６】
なお、図５に示したようなアプリケーション鍵の鍵利用方法を、アプリケーション間で交換されるデータとして記述する方法については、様々なバリエーションが考えられる。例えば、以下に示すテキスト記述は、鍵利用方法を記述する方法の一例となり得る他、前述した様々なフォーマットのネゴシエーションで利用可能である。  
「[Auth] ID Length: X, Key length: Y, [Enc] Key length: Z, α times」
図４のステップＳ４０２では、アプリケーション１２２Ａ及びアプリケーション１２２Ｂの各々において、鍵利用方法決定部３０４は、決定した鍵利用方法を認証・暗号通信部３０３に設定する。アプリケーション１２２Ａの認証・暗号通信部３０３は、アプリケーション実行部３０２から送信データを受け取ると、ノード通信・鍵取得部３０１がノードから取得したアプリケーション鍵を取り出し、鍵利用方法決定部３０４によって設定された鍵利用方法に従ってアプリケーション鍵を切り出し、切り出したアプリケーション鍵を用いて認証（シーケンス３）及び暗号データ通信（シーケンス４）を行なう。
【００４７】
なお、鍵利用方法決定部３０４は、暗号データ通信中にネゴシエーションを再度実行してもよい。例えば、ノード通信・鍵取得部３０１がノードから取得するアプリケーション鍵の鍵ストリームのレート、即ち、鍵共有ネットワーク１１０からアプリケーション鍵を受信するスループットが低下した場合、ネゴシエーションを再度実行して、暗号化に利用する鍵のサイズを小さくしたり、認証を行なう頻度を小さくしたりする。これにより、暗号データ通信のスループットを維持することができる。なお、このような動作を実現する方法としては、取得するアプリケーション鍵の鍵ストリームのスループットが変化した際に、自身がサポートできる利用可能な（対応可能な）鍵利用方法の種類を変更する方法、優先順位付けを変更する方法などを利用することができる。サポートできる利用可能なアプリケーション鍵の利用方法の種類をあるいは優先順位付けが変更した状態で、再ネゴシエーションを実行した場合、ネゴシエーションの結果として選択されるアプリケーション鍵の利用方法は、再ネゴシエーション前と異なるものが選択され得る。
【００４８】
以上のように、本実施形態によれば、アプリケーション間で鍵共有ネットワークから提供されるアプリケーション鍵の鍵利用方法を決定することにより、鍵利用方法を事前に静的に決定することなく、アプリケーション鍵を利用して暗号通信を行なうことができる。
【００４９】
次に、本実施形態の変形例について説明する。  
上述した実施形態では、主として、クライアントであるアプリケーション１２２Ａが、サーバであるアプリケーション１２２Ｂに対してネゴシエーションを開始する場面を想定して説明した。しかしながら、アプリケーション１２２Ａとアプリケーション１２２Ｂとの間でアプリケーション鍵の鍵利用方法を決定する方法はこれに限定されない。
【００５０】
本実施形態の変形例では、サーバであるアプリケーション１２２Ｂは、アプリケーション１２２Ｂが利用可能なアプリケーション鍵の鍵利用方法に関する情報を何らかの方法でクライアントであるアプリケーション１２２Ａに対して予め通知する。アプリケーション１２２Ａは、アプリケーション１２２Ｂから通知された情報を参照して、アプリケーション１２２Ａ及びアプリケーション１２２Ｂの両方で利用可能なアプリケーション鍵の鍵利用方法の中から優先順位が最も高い鍵利用方法を「実際に利用するアプリケーション鍵の鍵利用方法」として選択する。アプリケーション１２２Ａは、図４のシーケンス１において、送信する鍵利用方法リストに代えて、選択した鍵利用方法を示す情報をアプリケーション１２２Ｂに送信する。或いは、アプリケーション１２２Ａは、アプリケーション１２２Ｂから通知された情報を参照して、アプリケーション１２２Ａ及びアプリケーション１２２Ｂの両方で利用可能なアプリケーション鍵の鍵利用方法の中から優先順位が高い順に複数の鍵利用方法を選択してもよい。この場合、アプリケーション１２２Ａは、シーケンス１において、選択した複数の鍵利用方法を含む鍵利用方法リストをアプリケーション１２２Ｂに送信する。そして、アプリケーション１２２Ｂは、シーケンス２において、受信した鍵利用方法リストの中から単一の鍵利用方法を選択し、選択した鍵利用方法を示す情報をアプリケーション１２２Ａに送信する。このような方法も広義のネゴシエーションに含まれる。
【００５１】
なお、サーバであるアプリケーション１２２Ｂがアプリケーション１２２Ｂで利用可能なアプリケーション鍵の鍵利用方法に関する情報を予め通知する方法としては、例えば、鍵共有ネットワーク上に構築される各ノードに接続されるアプリケーションのアドレス情報を収集し共有するためのディレクトリサービスを利用することができる。この場合、アプリケーション１２２Ｂは、ノードにアプリケーション１２２Ｂで利用可能なアプリケーション鍵の鍵利用方法に関する情報、利用可能な暗号アルゴリズムに関する情報を通知する。これを受けてノードは、ディレクトリサービスに、アプリケーション１２２Ｂで利用可能なアプリケーション鍵の鍵利用方法に関する情報、利用可能な暗号アルゴリズムに関する情報を追記する。アプリケーション１２２Ａは、ノードに対して問い合わせ、問合せを受けたノードがディレクトリサービスに問い合わせた結果を応答することにより、この情報（アプリケーション１２２Ｂで利用可能なアプリケーション鍵の鍵利用方法に関する情報、利用可能な暗号アルゴリズムに関する情報）を取得することができる。
【００５２】
さらに、暗号データ通信中にネゴシエーションを再度実行してアプリケーション鍵の鍵利用方法を変更或いは再選択する場合において、ネゴシエーションを開始するアプリケーションは、クライアントであるアプリケーション１２２Ａであっても、サーバであるアプリケーション１２２Ｂであっても構わない。
【００５３】
上記各実施形態の少なくとも一部の処理は、汎用のコンピュータを基本ハードウェアとして用いることで実現可能である。上記処理を実現するプログラムは、コンピュータで読み取り可能な記憶媒体に格納して提供されてもよい。プログラムは、インストール可能な形式のファイル又は実行可能な形式のファイルとして記憶媒体に記憶される。記憶媒体としては、磁気ディスク、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等）、光磁気ディスク（ＭＯ等）、半導体メモリなどを利用できる。記憶媒体は、プログラムを記憶でき、且つ、コンピュータが読み取り可能であれば、いかなる形態のものであってもよい。また、上記処理を実現するプログラムを、インターネット等のネットワークに接続されたコンピュータ（サーバ）上に格納し、ネットワーク経由でコンピュータ（クライアント）にダウンロードさせてもよい。
【００５４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５５】
１００…暗号通信システム、１１０…鍵共有ネットワーク、１１２，１１２Ａ〜１１２Ｅ，２５０，３５０…ノード、１２０…アプリケーションネットワーク、１２２，１２２Ａ，１２２Ｂ，２６０，３６０…アプリケーション、２０１…ノード間通信部、２０２…アプリケーション鍵生成部、２０３…アプリケーション鍵保持管理部、２０４…状態管理部、２０５…アプリケーション通信部、２０６…制御部、２０７…ノードプラットフォーム部、３０１…ノード通信・鍵取得部、３０２…アプリケーション実行部、３０３…認証・暗号通信部、３０４…鍵利用方法決定部、３０５…アプリケーションプラットフォーム部。
【図１】
0005992578.tif 000002
【図２】
0005992578.tif 000003
【図３】
0005992578.tif 000004
【図４】
0005992578.tif 000005
【図５】
0005992578.tif 000006