説明

鍵共有装置、鍵共有方法および鍵共有プログラム

【課題】乱数が不足した場合等であっても乱数の生成を開始可能とする。
【解決手段】鍵共有装置は、鍵記憶部と、決定部と、第1発生部と、暗号化部と、第1送信部と、を備える。鍵記憶部は、外部装置との間で共有する暗号鍵を記憶する。決定部は、鍵記憶部に記憶されている暗号鍵のうち、外部装置に含まれる第1装置と共有する暗号鍵の個数が閾値以下である場合に、外部装置に含まれる第2装置を介して第1装置に到達する経路を決定する。第1発生部は、第1装置との間で共有する新たな暗号鍵である初期鍵を発生する。暗号化部は、第2装置との間で共有する暗号鍵を用いて、初期鍵を暗号化する。第1送信部は、暗号化した初期鍵を、第1装置を宛先として第2装置に送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、鍵共有装置、鍵共有方法および鍵共有プログラムに関する。
【背景技術】
【0002】
SECOQC(Secure Communication based on Quantum Cryptography)と呼ばれる量子暗号通信に関する研究プロジェクトが知られている。SECOQCでは、量子暗号鍵配送により生成され、複数のノードに分散蓄積された乱数を基に鍵交換等を行う際の機能、および、Q3P(Quantum Point to Point Protocol)と名付けられたプロトコルなどの技術が提案されている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Kollmitzer C., Pivk M. (Eds.), Applied Quantum Cryptography, Lect. Notes Phys. 797 (Springer, Berlin Heidelberg 2010), p155-p168, DOI 10.1007/978-3-642-04831-9
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来技術では、ノードが追加された場合や、ノードで乱数が過度に消費され当該ノードが使用できなくなった場合に、それらのノードの再稼働を手動で行わなければならなかった。すなわち、このような場合、例えば初期認証用の鍵を管理者が手動で設定する必要があった。
【課題を解決するための手段】
【0005】
実施形態の鍵共有装置は、鍵記憶部と、決定部と、第1発生部と、暗号化部と、第1送信部と、を備える。鍵記憶部は、外部装置との間で共有する暗号鍵を記憶する。決定部は、鍵記憶部に記憶されている暗号鍵のうち、外部装置に含まれる第1装置と共有する暗号鍵の個数が閾値以下である場合に、外部装置に含まれる第2装置を介して第1装置に到達する経路を決定する。第1発生部は、第1装置との間で共有する新たな暗号鍵である初期鍵を発生する。暗号化部は、第2装置との間で共有する暗号鍵を用いて、初期鍵を暗号化する。第1送信部は、暗号化した初期鍵を、第1装置を宛先として第2装置に送信する。
【図面の簡単な説明】
【0006】
【図1】本実施形態の通信システムの構成例を示す図。
【図2】本実施形態にかかるノードのブロック図。
【図3】変形例にかかるノードのブロック図。
【図4】本実施形態における鍵共有処理の全体の流れを示すフローチャート。
【図5】鍵共有処理の全体の流れを示すフローチャート。
【図6】通信システムの他の構成例を示す図。
【図7】本実施形態にかかる装置のハードウェア構成図。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、この発明にかかる鍵共有装置の好適な実施形態を詳細に説明する。
【0008】
最初に、本実施形態の鍵共有装置を含む通信システムについて説明する。図1は、本実施形態の通信システム10の構成例を示す図である。通信システム10は、鍵共有装置としての複数のノード100a〜100gを含む。なお、ノード100a〜100gは同様の構成を備えるため、区別する必要がない場合は単にノード100という。ノード100の個数は7に限られるものではない。
【0009】
各ノード100は、安全に通信するための暗号鍵(乱数)を発生させ、ノード100内に記憶する機能を備える。ノード100は、例えば、外部装置である他のノード100との間で共有する乱数を継続的に発生させることによりこの機能を実現する。共有する乱数を継続的に発生させる方法としては、上述の量子暗号鍵配送などを適用できる。通常、量子暗号鍵配送では、発生された乱数の一部が、ノード100間の通信で共有する暗号鍵として利用される。なお、適用可能な方法は量子暗号鍵配送に限られるものではない。共有する乱数(暗号鍵)を発生させ、共有するノードそれぞれに記憶できる方法であればあらゆる方法を適用できる。
【0010】
なお、量子暗号鍵配送を用いる場合、図1の各ノード100間には、光ファイバなどの量子暗号鍵配送のための通信チャネルが設けられる。また、各ノード100間には、通常のデータを送受信するためのインターネットなどの通信回線も設けられる。
【0011】
図2は、本実施形態にかかるノード100の構成の一例を示すブロック図である。図2に示すように、ノード100は、複数のアプリケーション101a、101b、101cと、鍵中継部110と、を備えている。区別する必要がない場合は、アプリケーション101a〜101cを単にアプリケーション101という。アプリケーション101の個数は3に限られるものではない。
【0012】
アプリケーション101は、例えば、他のノード100との間で暗号鍵を用いて通信する機能を備えるソフトウェアプログラムである。アプリケーション101は、例えば、ノード100内のCPU(図示せず)によりROM(図示せず)などの記憶媒体から読み出され実行される。なお、アプリケーション101をノード100以外の装置で実行するように構成してもよい。
【0013】
鍵中継部110は、鍵管理部120と、第2発生部130と、鍵記憶部141と、経路記憶部142と、を備える。
【0014】
鍵管理部120は、アプリケーション101が利用する鍵を管理する。例えば、鍵管理部120は、暗号鍵を必要とするアプリケーション101からの要求に応じて、通信相手のアプリケーションが存在する他のノード100(以下、ノードBという)の鍵管理部120(以下、鍵管理部Bという)との間で共有する暗号鍵(以下、アプリケーション暗号鍵という)を生成する。
【0015】
アプリケーション101からの要求を受けた鍵管理部120が、アプリケーション暗号鍵として利用する乱数列を用意する。鍵管理部120は、例えばAES暗号方式のアプリケーション暗号鍵であれば、鍵記憶部141に記憶され、かつ、ノードBと共有されている乱数から、256ビットの乱数をアプリケーション暗号鍵として取り出し、アプリケーション101へ回答する。また、鍵管理部120は、当該アプリケーション暗号鍵を特定する特定情報(乱数の識別情報、取り出した範囲など)を鍵管理部Bへ通知する。
【0016】
なお、アプリケーション101は、例えば通信の度に、鍵管理部120に対して安全なアプリケーション暗号鍵の生成を要求する。このような通信ごとにアプリケーション暗号鍵の生成は、例えば、理論的に解読不可能なワンタイムパッド暗号を用いた通信の場合などに必要となる。したがって、通信量の増大等によりアプリケーション暗号鍵の消費量が増大し、共有する乱数が枯渇する場合がある。そして、共有する乱数が枯渇すると、共有させる方法の中での相互認証等に当該乱数を使用する手順があるために、それを実行できず、乱数の共有が停止する。
【0017】
ノードBとの間で共有する乱数が枯渇した場合、および、ノードBとの間で乱数を共有していない場合、などの事情により、乱数共有機能が停止している場合、これを開始または再開させるために、鍵管理部120は、ノードBとの間で共有する新たな乱数(以下、初期鍵という)を発生する。鍵管理部120は、別のノード100(以下、ノードCという)と共有する乱数を用いて、発生した初期鍵を暗号化する。そして、鍵管理部120は、暗号化した初期鍵を、ノードBを宛先としてノードCに送信する。ノードCは、暗号化された初期鍵を、送信元のノード100との間で共有する乱数で復号する。このような処理が、初期鍵がノードBの鍵管理部Bに到達するまで繰り返される。これにより、初期鍵をノードBの鍵管理部Bとの間で共有することが可能となる。
【0018】
初期鍵は、例えば量子暗号鍵配送によりノードBとの間で共有する乱数の継続的な発生を開始または再開させるために利用される。なお、量子暗号鍵配送では、乱数を発生させた後、送信側および受信側で相互に確認(答え合わせ)を実行する。このときの相互認証用に鍵として初期鍵が必要となる(つまり、共有する乱数が枯渇していた間は、この相互認証ができなくなり、乱数の共有が停止していた)。
【0019】
第2発生部130は、他のノード100との間で共有する乱数(共有する暗号鍵の素となる乱数)を発生する。第2発生部130は、例えば上述の量子暗号鍵配送により、共有する乱数を継続的に発生する。第2発生部130の詳細は後述する。
【0020】
鍵記憶部141は、第2発生部130により発生された乱数を記憶する。鍵記憶部141は、例えば、乱数と、当該乱数を共有する他のノード100を識別する情報である共有先情報と、乱数を識別する乱数識別情報とを対応づけて記憶する。
【0021】
鍵記憶部141に蓄積された乱数は、当該乱数を共有しているノード100との間の認証用の鍵、および、アプリケーション101が使用する鍵情報を隣接するノード100へ通信する際に絶対安全を保障するワンタイムパッド暗号用の鍵などとして使用される。従って、共有する相手に応じて、蓄積されている乱数の任意の箇所から、任意の長さで鍵として使えるようにする必要がある。このため、乱数は、共有先情報および乱数識別情報と共に蓄積されている。共有先情報は、例えば、共有先ノードのIPアドレスに、さらに8ビットの付加情報が付加される。
【0022】
経路記憶部142は、他のノード100と通信するための経路を表す経路情報を記憶する。経路情報は、例えば、インターネットなどで用いられるルーティングテーブルと同様の情報を含む。すなわち、経路情報は、例えば宛先のノード100の属するネットワークのID、および、最終的に宛先のノード100にデータを送信するために、最初に当該データを送信するノード100(ネクストホップ)を含む。
【0023】
次に、鍵管理部120の詳細な構成の一例について説明する。鍵管理部120は、第1受信部121と、第1発生部122と、決定部123と、暗号化部124と、第1送信部125と、経路設定部126と、を備える。
【0024】
第1受信部121は、アプリケーション101などの他の構成部から情報を受信する。例えば、第1受信部121は、アプリケーション101からのアプリケーション暗号鍵の要求を受信する。
【0025】
第1発生部122は、他のノード100との間で共有する乱数(アプリケーション暗号鍵)を発生する。ところが、第1発生部122は、例えば、鍵記憶部141に記憶されている、通信相手となる他のノード100(第1装置)との間で共有する暗号鍵の個数が予め定められた閾値以下であり、あるいは、それ以外の共有する暗号鍵の原因で予め定められた条件に陥ったために、乱数の共有が停止している場合に、初期鍵を発生する。
【0026】
決定部123は、通信相手のノード100との間で共有する暗号鍵の個数が閾値以下である場合に、あるいは、それ以外の共有する暗号鍵の原因で予め定められた条件に陥った場合に、通信相手のノード100と異なるノード100(第2装置)を介して通信相手のノード100に到達するための経路を決定する。決定部123は、例えば経路記憶部142に記憶された経路情報を参照して、通信相手のノード100に到達するための経路および最初にデータを送信するノード100を決定する。
【0027】
暗号化部124は、決定されたノード100との間で共有する乱数を用いて初期鍵を暗号化する。暗号化部124は、例えばワンタイムパッド暗号により初期鍵を暗号化する。
【0028】
第1送信部125は、アプリケーション101などの他の構成部に対して情報を送信する。例えば、第1送信部125は、アプリケーション101に対して通信相手のノードとの間で共有するアプリケーション暗号鍵を送信する。また、第1送信部125は、決定部123より決定された経路上の、最初にデータを送信するノード100に対して、暗号化部124により暗号化された初期鍵を送信する。
【0029】
経路設定部126は、経路情報を更新して経路記憶部142に保存する。経路設定部126は、例えば、インターネットで用いられるルーティングテーブルの更新と同様の方法により経路情報を更新する。
【0030】
次に、第2発生部130の詳細な構成の一例について説明する。第2発生部130は、第2送信部131aと、第2送信部131bと、第2受信部132と、を備えている。第2送信部131a、131bは、同様の機能を備えるため、区別する必要がない場合は単に第2送信部131という。
【0031】
第2送信部131は、量子暗号鍵配送の送信側としての機能を備える。第2受信部132は、量子暗号鍵配送の受信側としての機能を備える。例えば、図1のノード100aが、ノード100bおよび100cに対しては量子暗号鍵配送の送信側として機能し、ノード100fに対しては量子暗号鍵配送の受信側として機能する場合は、図2に示すように、ノード100aの鍵中継部110は、2つの第2送信部131(第2送信部131a、131b)と、1つの第2受信部132とを備える。このように、図2に示す第2送信部131および第2受信部132の個数は一例であり、量子暗号鍵配送の相手となるノード100の数に応じて変化する。
【0032】
なお、鍵記憶部141を、乱数を共有する他のノード100ごとに備えるように構成してもよい。図3は、このように構成した変形例にかかるノード100−2の構成の一例を示すブロック図である。図3に示すように、ノード100−2は、第2発生部130−2の構成が図2と異なっている。その他の機能および構成は図2と同様であるため説明を省略する。
【0033】
第2発生部130−2は、第2送信部131a、第2送信部131b、および、第2受信部132にそれぞれ対応する鍵記憶部141−2a、141−2b、141−2cを備えている。例えば、鍵記憶部141−2aは、第2送信部131aが量子暗号鍵配送によって生成した乱数を記憶する。この場合、鍵記憶部141−2aは、第2送信部131aの通信相手となるノード100の共有先情報を記憶しなくてもよい。
【0034】
また、対応する鍵記憶部141を第2送信部131または第2受信部132の内部に備えるように構成してもよい。このような構成であれば、アプリケーション101用の鍵生成のためのアプリケーション101と第2発生部130とのインターフェースが、鍵管理部120の主な役割となり、簡略化が可能になる。一方、乱数を保存する第2送信部131および第2受信部132も、内部に乱数秘匿の機構を備えればよいため、乱数が装置外部にさらされる可能性が減る。したがって、安全性を高めることが容易になる。
【0035】
次に、このように構成された本実施形態にかかるノード100による鍵共有処理について図4を用いて説明する。図4は、本実施形態における鍵共有処理の全体の流れを示すフローチャートである。
【0036】
まず、鍵管理部120の第1受信部121は、アプリケーション101からアプリケーション暗号鍵の要求を受信する(ステップS101)。第1発生部122は、当該アプリケーション101の通信相手となるアプリケーションを実行する他のノード100(ノードBとする)との間で共有する乱数が、鍵記憶部141に記憶されているか否かを判断する(ステップS102)。
【0037】
第1発生部122は、ノードBとの間で乱数を共有する機能を有していることを認識するが、その際、更に、ノードBとの間で共有する乱数が0個(=閾値)以下であるか否かを判断する。閾値の値0は一例であり、1以上の値を用いてもよい。あるいは、共有する乱数の個数以外の、共有する乱数に関して予め定められた条件に陥ったかどうかの判断でもよい。これにより、例えば乱数が完全に枯渇することによる乱数共有の停止、さらに、それに起因するサービス一時停止等の障害発生を抑止できる。
【0038】
なお、ノードBとの間で乱数を共有する機能を有していない場合は、この操作は、第1発生部122が生成するアプリケーション暗号鍵を、本ノードと乱数を共有する別のノード(ノードDとする)経由でノードBへ転送することになる。このため、以下のステップのノードBを、ノードDと読み替えることにより、本フローチャートの処理が応用できる。
【0039】
共有機能が停止し、乱数が記憶されていない場合(ステップS102:No)、第1発生部122は、ノードBとの間で共有するための初期鍵となる乱数を発生する(ステップS103)。決定部123は、初期鍵の送信先とすべき他のノード100(ノードCとする)を、経路記憶部142の経路情報を参照して決定する(ステップS104)。暗号化部124は、決定されたノードCとの間で共有する乱数を鍵記憶部141から読み出し、読み出した乱数で初期鍵を暗号化する(ステップS105)。第1送信部125は、暗号化された初期鍵を、宛先をノードBとしてノードCに送信する(ステップS106)。
【0040】
初期鍵がノードBまで到達すれば、ノードBとの間で量子暗号鍵配送による乱数の生成・共有が開始される(その際に行われる相互認証に初期鍵が使用される)。第1送信部125は、このようにして生成され、鍵記憶部141に蓄積された乱数から得られるアプリケーション暗号鍵を、要求元のアプリケーション101に送信する(ステップS107)。
【0041】
ステップS102で、ノードBと共有する乱数が記憶されていると判断した場合(ステップS102:Yes)、鍵管理部120は、アプリケーション暗号鍵として用いる乱数の一部を鍵記憶部141から読み出す(ステップS108)。第1送信部125は、読み出されたアプリケーション暗号鍵の特定情報(乱数識別情報、乱数内でのアプリケーション暗号鍵の範囲など)をノードBに送信する(ステップS109)。このように特定情報のみを送信するため、通信量を削減できる。第1送信部125は、読み出されたアプリケーション暗号鍵を要求元のアプリケーション101に送信する(ステップS110)。
【0042】
次に、本実施形態の鍵共有装置(ノード100)を用いた通信システムによる効果の一例について説明する。以下では、ノード100のいずれか2つであるノードAおよびノードBとの間の通信を例に説明する。
【0043】
ノードAの鍵管理部120(鍵管理部Aとする)とノードBの鍵管理部120(鍵管理部Bとする)との間で通信する場合、鍵管理部Aと鍵管理部Bとが直接通信できる場合であっても、通信相手が成りすましでないことを確認するために、定期的に、または、必要に応じて、認証を行う。鍵記憶部141に共有している乱数が必要な量だけ存在する場合は、その乱数を用いて認証を行う。通信システムの初期起動時等、鍵記憶部141に利用可能な乱数が記憶されていない場合には、別途、初期認証用の鍵(初期鍵)を安全に配布する手段を準備しておく必要がある。通常は、工場出荷時に初期鍵を設定する方法、システム管理者が各鍵管理部A、B内に初期鍵を手動で設定する方法、および、ノードA、Bに別途備えられるセキュアチップ(図示せず)内の識別情報を初期鍵として利用する方法などが用いられる。
【0044】
しかし、システム稼働中であっても、暗号鍵(乱数)の消費量増大、および、認証の失敗等により、鍵管理部Aと鍵管理部Bとの間で共有する乱数が無くなり、相互認証が不可能になる場合がある。または、接続されていなかったノード間に新しいリンクが追加される場合もある。これらの場合、ネットワークの構成によっては、鍵管理部Aと鍵管理部Bとが、直接接続するリンク以外の既存のリンクを介して通信できる場合がある。特に、量子暗号通信システムでは、DOS攻撃対策としても迂回路を持つことが重要である。従って、多くの場合、迂回路が存在するネットワーク構成の設計が行われる。
【0045】
上述のように、本実施形態は、リンクで共有する乱数が枯渇した場合、および、新たなリンクが追加された場合であっても、迂回路を利用することにより、リンクの通信で共有する乱数の生成を開始させることができる。すなわち、自動的なリンク起動が可能になる。これにより、通信システムの可用性の増大、信頼性向上、および、管理・拡張性の高度化を実現できる。
【0046】
既にリンクが存在する鍵管理部Aと鍵管理部Bの場合には、暗号鍵(乱数)の喪失による迂回路を介した初期鍵交換を不要とするための制御を実行することが望ましい。このような制御としては、例えば以下のように段階的に乱数の消費量を減らし、乱数の保存量が増大するように制御する方法がある。
(第1段階)乱数の残量に応じて、乱数を多く使用するアプリケーションの実行を禁止
(第2段階)乱数を使用するアプリケーションの実行を禁止
(第3段階)認証以外での乱数の使用禁止
【0047】
なお、初期鍵の交換は、迂回路中の各リンクではワンタイムパッド暗号により実施されることが望ましい。
【0048】
乱数を共有するときに、乱数の部分(部分鍵)ごとに安全性の情報を付加して保存するように構成してもよい。安全性の情報は、例えば、盗聴の確率、再生量子ビットの誤り率、および、デコイパルスの誤り率などである。安全性の情報は、共有する乱数の生成時に諸項目を詳細検査することにより決定される。そして、このような安全性の情報を参照し、所定の安全性の条件を満たすことがノード100間で事前に承認された暗号鍵(部分鍵)を用いるように構成してもよい。
【0049】
図5は、このように構成した場合の鍵共有処理の全体の流れを示すフローチャートである。ステップS201からステップS207までは、図4のステップS101からステップS107までと同様の処理なので、その説明を省略する。また、図4のフローチャートと同様に、本ノード101がノードBと乱数を共有する機能を有さず、本ノード101が乱数を共有する他のノード(例えば、ノードD)を迂回してアプリケーション暗号鍵を転送する場合にも図5のフローチャートを適用できる。
【0050】
共有する乱数が鍵記憶部141に記憶されていない場合(ステップS202:No)、鍵管理部120は、ノードBとの間で事前に承認済みのアプリケーション暗号鍵が存在するか否かを判断する(ステップS208)。存在する場合は(ステップS208:Yes)、第1送信部125は、承認済みのアプリケーション暗号鍵を要求元のアプリケーション101に送信する(ステップS209)。第1送信部125は、承認済みのアプリケーション暗号鍵の使用を開始することをノードBに通知する(ステップS210)。事前に承認済みのアプリケーション暗号鍵が存在しない場合(ステップS208:No)、図4のステップS108〜ステップS110と同様の処理(ステップS211〜ステップS213)が実行される。
【0051】
要求元のアプリケーションなどを識別し、乱数の要求元に応じて利用するアプリケーション暗号鍵の安全性を変更するように構成してもよい。例えば、鍵管理部120の相互認証用の通信支援に用いる暗号鍵は、乱数のうち安全性がより高い部分を利用するように構成してもよい。この処理は、鍵管理部120がアプリケーション暗号鍵を生成するときに、要求元のアプリケーションを識別することにより実現できる。迂回路の各通信は相互認証によりメッセージが保護されている。したがって、サービス要求が途中で改竄されることはない。
【0052】
迂回路の指定は、鍵管理部120の有するルーティング機能(経路設定部126)により行われる。ノード100の再起動および再設定時には、通信相手のアドレスは既に経路情報として経路記憶部142に記憶されている。このため、決定部123は、経路記憶部142の経路情報を参照して迂回路を決定できる。一方、新規リンクが追加される場合には、通信相手のアドレスを経路情報に設定しなければならない。これは、例えばシステム管理者が手動で経路情報を更新することにより行われる。
【0053】
暗号鍵(乱数)の不足は、機能不備の場合を除くと、盗聴や妨害などにより乱数の生成量が減少した場合、乱数を利用するアプリケーションが多い場合、および、頻繁な鍵変更が要求される場合(特にワンタイムパッド暗号が利用される場合)に発生する。
【0054】
これらの現象が短時間の場合には、乱数の不足に陥る前に迂回路など他のリンクを活用することが、システムの可用性向上のために重要である。システム全体でみると、迂回路の利用が鍵の消費を速める場合もある。しかし、鍵消費の少ない鍵管理部120を経由するように迂回路を設定すれば、システム全体としては、コストを増大(例えば、鍵生成機能(第2発生部130)の増強、乱数過消費によるサービス一時停止等の障害の発生)させることなく、サービスの提供を続けることができる可能性が増える。
【0055】
このため、経路設定部126が、乱数の蓄積の度合等の状況情報を他のノード100の経路設定部126との間で交換するように構成してもよい。また、決定部123が、経路選択の際に、交換した状況情報をメトリックとして、経路選択を実行するように構成してもよい。
【0056】
また、例えばシステムの規模に応じて、このような状況情報の収集機能、状況情報に基づく経路選択のための経路情報の構成機能、および、各ノード100の鍵管理部120に対する経路情報の配信機能を有するサーバ装置(センタ)を備えるように構成してもよい。
【0057】
図6は、このように構成した通信システム10−2の構成例を示す図である。通信システム10−2は、複数のノード100a〜100gに加えて、上記機能を有するセンタ200を備えている。図6の破線は、センタ200が各ノード100と接続され、状況情報および経路情報などの各種情報を送受信することを示す。なお、センタ200に不具合が生じても、通信システム10−2が継続的に利用できるように、センタ200を二重化するように構成してもよい。
【0058】
鍵管理部120は、迂回路を探す際に、所望のリンクが使えないこと(リンクで共有する乱数が不足していること)をセンタ200に通知した後に、センタ200に対して経路情報の提供を要求する。所望のリンクが使えないことを反映した経路情報を入手する必要があるためである。鍵管理部120は、例えば、所望のリンクが使えないことを一時的にセンタ200に通知する。そして、センタ200は、例えば所望のリンクが使えないことを反映した経路情報を、通知元の鍵管理部120に送信する。
【0059】
このように構成すれば、例えば、迂回路を介した初期鍵交換によりリンクが短時間に再起動した場合等に、当該リンクの一時断を検出しないまま、通信システム10−2全体の経路情報が利用継続される状況を実現しうる。これにより、リンク変動などによるネットワークの負荷変動の不安定さを引き起こしにくいという利点も出てくる。
【0060】
また、本実施形態の機能を備えれば、ノード100を新設した場合に、当該ノード100が接続するリンクのうち1つのリンクに対して初期鍵の設定等を手動で行えば、他のリンクについては迂回路経由での初期設定が実行される。したがって、ノード新設時の立上げ作業を省力化できる。
【0061】
ところで、システムの振る舞いを簡単にするためには、アプリケーション101に提供するアプリケーション暗号鍵は、鍵記憶部141に蓄積されている乱数から求めるのではなく、要求のたびにノード100で乱数発生器を使って発生させる構成が望ましい。本実施形態では、例えば第1発生部122を乱数発生器として用いる。乱数生成速度がGbps(gigabit per second)以上である乱数発生器も存在するため、ワンタイムパッド暗号を用いる場合であっても、乱数発生器でリアルタイムに乱数を発生させながら通信を実現できる。
【0062】
発生された乱数は、隣接するノード100(隣接ノード)と共有済みで蓄積されている乱数を使ったワンタイムパッド暗号により、隣接ノードへ転送される。また、このような転送処理が繰り返されて、最終的に乱数が送信されるノード100(最終ノード)まで送られる。最終ノードは、最終ノードで復号された乱数をアプリケーション暗号鍵としてアプリケーションに渡す。
【0063】
最終ノードへ乱数を転送する通信にもワンタイムパッド暗号を用いる場合には、必要量の暗号鍵を事前に転送しておくか、暗号鍵をリアルタイムで転送する。ただし、ホップ毎に復号または符号化を繰り返すので、リアルタイムで暗号鍵を転送する場合であっても、ワンタイムパッド暗号で暗号化されたデータが最終ノードへ到達するより暗号鍵が遅れる状況も考えられる。
【0064】
この状況に備えるためには、受信データに必要な遅延を与えるバッファを受信側に用意すればよい。このバッファは、データの通信用、鍵の通信用、またはその両方に必要になる場合がある。共有鍵暗号を使った通信でも、高速かつ頻繁に共有鍵を変更する場合には、同様のリアルタイムサービスサポートの機能を備えておくことが望ましい。
【0065】
一方、隣接ノードとの間には、既に共有済みの乱数が存在する。従って、既存の乱数を使って、乱数を転送するのは、効率の劣化につながる。そこで、最初のリンクだけは、既に共有済の蓄積された乱数から、暗号鍵を選ぶように構成してもよい。すなわち、第1発生部122が、隣接ノードとの間で共有する乱数の一部を暗号鍵とするように構成してもよい。
【0066】
隣接ノードには、乱数の中での暗号鍵の範囲または位置を示す情報のみが伝えられる。隣接ノードは、この情報を用いて、蓄積された乱数から該当部分を選択する。隣接ノードは、選択した部分である暗号鍵を、次のノード100との間で共有済の乱数でワンタイムパッド暗号により暗号化し、次のノード100に送出する。以降、同様の処理が繰り返され、最終ノードとの間での乱数(アプリケーション暗号鍵)の共有を達成する。
【0067】
この機能も、連続的に鍵を生成させる必要がある場合にも利用できるように設計および実装可能である。アプリケーション暗号鍵交換の手順が、データ通信と並列に実施される場合もある。このような場合であっても、この機能を使うことにより乱数(暗号鍵)を転送する負荷が軽減できるため、アプリケーション暗号鍵を発生するノード100(ノードAとする)での他のサービスの実施を容易にする。隣接したノードとの間では暗号鍵の範囲または位置を示す情報のみを伝える方法は、前記、初期鍵の迂回路を介しての転送にも適応できる。
【0068】
これまでは、ノード100間で共有される乱数を、主にアプリケーション間の通信の暗号化に適用する例を説明した。適用可能な処理は通信の暗号化に限られるものではない。例えば、ファイルを暗号化して送信する処理にも適用できる。すなわち、ファイル自身を暗号化し、暗号化したファイルを送信する場合のファイル暗号化の暗号鍵として、共有される乱数を用いることができる。
【0069】
この場合、暗号化されたファイルを保存するとともに、別の場所に、暗号化に用いた暗号鍵を保存しておく。本実施形態の通信システム10は、ネットワーク前提であるので、暗号化されたファイルをそのまま、転送先のノード100(ノードDとする)へ転送してノードDで保存するように構成してもよい。ノードDでファイルの復号のために暗号鍵が必要になった際に、または、事前に、または、ファイルの転送時に、暗号鍵をノードAからノードDに転送する。この暗号鍵の転送のときに、上述の手順を適用できる。
【0070】
通信の際に暗号化通信を行い、ノードDが、暗号化通信で受信したデータ部分を復号せずにファイルを再構成し、その暗号化状態のファイルと、暗号化通信で用いた暗号鍵とを保存する手法も存在する。この手法では、暗号化通信の暗号鍵をファイル暗号化の暗号鍵に兼用できる。従って、暗号鍵の生成に関して新しい機能を提供する必要がない。またノードDは、暗号化されたまま受信データを保存しておけばよいだけであるため、送信ノード側で必要となる機能が不要になるという利便性がある。また、上記手法では、受信操作の中で暗号化したデータを復号し、ファイル保存操作で再度、ファイルを暗号化して保存する手法と比較して、計算量を減らし、システムの効率を改善できる。
【0071】
しかし、通信の際のパケットのサイズまたは区切りで暗号鍵が変化する場合、および、ワンタイムパッド暗号を用いた場合には、データ部分の暗号鍵だけから、暗号鍵を再構築する必要が生じる。このように、ノードDでの暗号鍵の管理が複雑になる。
【0072】
ファイル暗号化処理への応用を考慮し、通信時にプトロコルに関する部分の暗号化の暗号鍵と、データ部分の暗号化の暗号鍵とを別々に用意して使うように構成してもよい。このような構成であれば、受信側で暗号化されたデータ部分を復号することなくファイルを再構成して保存しても、ファイルの解読用(復号用)の暗号鍵の管理を容易にできる。
【0073】
以上説明したとおり、本実施形態によれば、ノードが追加された場合や、ノードで乱数が過度に消費され当該ノードが使用できなくなった場合等であっても、迂回路経由で初期鍵を共有し、初期鍵を用いて乱数の生成を開始できる。
【0074】
次に、本実施形態にかかる各装置(ノード(鍵共有装置)、センタ(サーバ装置))のハードウェア構成について図7を用いて説明する。図7は、本実施形態にかかる装置のハードウェア構成を示す説明図である。
【0075】
本実施形態にかかる装置は、CPU(Central Processing Unit)51などの制御装置と、ROM(Read Only Memory)52やRAM(Random Access Memory)53などの記憶装置と、ネットワークに接続して通信を行う通信I/F54と、HDD(Hard Disk Drive)、CD(Compact Disc)ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバス61を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【0076】
本実施形態にかかる鍵共有装置で実行される鍵共有プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されてコンピュータプログラムプロダクトとして提供される。
【0077】
また、本実施形態にかかる鍵共有装置で実行される鍵共有プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態にかかる鍵共有装置で実行される鍵共有プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【0078】
また、本実施形態の鍵共有プログラムを、ROM等に予め組み込んで提供するように構成してもよい。
【0079】
本実施形態にかかる鍵共有装置で実行される鍵共有プログラムは、上述した各部(第1発生部、決定部、第1送信部等)を含むモジュール構成となっており、実際のハードウェアとしてはCPU51(プロセッサ)が上記記憶媒体から鍵共有プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
【0080】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0081】
10 通信システム
100a〜100g ノード
101a〜101c アプリケーション
110 鍵中継部
120 鍵管理部
121 第1受信部
122 第1発生部
123 決定部
124 暗号化部
125 第1送信部
126 経路設定部
130 第2発生部
131a 第2送信部
131b 第2送信部
132 第2受信部
141 鍵記憶部
142 経路記憶部
200 センタ

【特許請求の範囲】
【請求項1】
複数の外部装置と1以上の経路で接続される鍵共有装置であって、
前記外部装置との間で共有する暗号鍵を記憶する鍵記憶部と、
前記鍵記憶部に記憶されている前記暗号鍵のうち、前記外部装置に含まれる第1装置と共有する前記暗号鍵の個数が予め定められた閾値以下である場合に、前記外部装置に含まれる第2装置を介して前記第1装置に到達する経路を決定する決定部と、
前記第1装置との間で共有する新たな暗号鍵である初期鍵を発生する第1発生部と、
前記第2装置との間で共有する前記暗号鍵を用いて、前記初期鍵を暗号化する暗号化部と、
暗号化した前記初期鍵を、前記第1装置を宛先として前記第2装置に送信する第1送信部と、
を備えることを特徴とする鍵共有装置。
【請求項2】
前記外部装置との間の経路を表す経路情報を記憶する経路記憶部をさらに備え、
前記決定部は、前記経路情報に基づいて前記第2装置を介して前記第1装置に到達する経路を決定すること、
を特徴とする請求項1に記載の鍵共有装置。
【請求項3】
前記経路記憶部は、前記経路情報を配信する機能を有するサーバ装置から受信した前記経路情報を記憶すること、
を特徴とする請求項2に記載の鍵共有装置。
【請求項4】
前記第1発生部は、前記第2装置との間で共有する前記暗号鍵のいずれかを前記初期鍵として発生すること、
を特徴とする請求項1に記載の鍵共有装置。
【請求項5】
前記鍵記憶部は、複数の前記外部装置それぞれに対応して複数備えられること、
を特徴とする請求項1に記載の鍵共有装置。
【請求項6】
前記鍵記憶部は、前記外部装置の識別情報と、前記外部装置との間で共有する前記暗号鍵とを対応づけて記憶すること、
を特徴とする請求項1に記載の鍵共有装置。
【請求項7】
複数の外部装置と1以上の経路で接続される鍵共有装置で実行される鍵共有方法であって、
前記鍵共有装置は、前記外部装置との間で共有する暗号鍵を記憶する鍵記憶部を備え、
前記鍵記憶部に記憶されている前記暗号鍵のうち、前記外部装置に含まれる第1装置と共有する前記暗号鍵の個数が予め定められた閾値以下である場合に、前記外部装置に含まれる第2装置を介して前記第1装置に到達する経路を決定する決定ステップと、
前記第1装置との間で共有する新たな暗号鍵である初期鍵を発生する第1発生ステップ部と、
前記第2装置との間で共有する前記暗号鍵を用いて、前記初期鍵を暗号化する暗号化ステップと、
暗号化した前記初期鍵を、前記第1装置を宛先として前記第2装置に送信する第1送信ステップと、
を含むことを特徴とする鍵共有方法。
【請求項8】
複数の外部装置と1以上の経路で接続されるコンピュータを、
前記外部装置との間で共有する暗号鍵を記憶する鍵記憶部と、
前記鍵記憶部に記憶されている前記暗号鍵のうち、前記外部装置に含まれる第1装置と共有する前記暗号鍵の個数が予め定められた閾値以下である場合に、前記外部装置に含まれる第2装置を介して前記第1装置に到達する経路を決定する決定部と、
前記第1装置との間で共有する新たな暗号鍵である初期鍵を発生する第1発生部と、
前記第2装置との間で共有する前記暗号鍵を用いて、前記初期鍵を暗号化する暗号化部と、
暗号化した前記初期鍵を、前記第1装置を宛先として前記第2装置に送信する第1送信部、
として機能させるための鍵共有プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate