(57)【特許請求の範囲】
【請求項１】
複数サーバの協調動作により秘密鍵を生成する秘密鍵生成システムにおいて、
（１）各サーバの鍵更新周期に応じて各サーバが有する秘密鍵に対応する公開鍵を計算して公開する段階と
（２）各サーバで乱数を生成し該乱数を前記公開鍵で暗号化し、他のサーバに送信する段階と、
（３）他のサーバから来た乱数を公開鍵を用いて復号する段階と、
（４）他のサーバに送信された乱数及び他のサーバから来て復号された乱数の両方を用いて各サーバの秘密鍵を更新する段階と、
を有し、前記段階（１）乃至（４）を繰り返すことによりシステムを自律的に動かすことを特徴とする、秘密鍵生成方法。
【請求項２】
前記秘密鍵は各サーバの秘密鍵レジスタに記憶され、該秘密鍵レジスタの個数が他のサーバの秘密鍵レジスタの個数と異なり、各サーバの鍵更新周期が各サーバの秘密鍵レジスタの個数に相当する、請求項１記載の方法。
【請求項３】
前記乱数を復号する段階（３）が他のサーバから来た乱数を復号し、該復号された乱数の和から他のサーバに送信された乱数の和を引いた値を乱数バッファに記憶する段階を有する、請求項２記載の方法。
【請求項４】
前記秘密鍵を更新する段階（４）が秘密鍵を前記秘密鍵レジスタから取り出し、該秘密鍵と前記乱数バッファの値を用いて秘密鍵レジスタの値を更新する段階を有する、請求項３記載の方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本願は、ネットワーク通信における秘密鍵生成システムに関し、特に複数サーバの協調動作によって、秘密鍵を複数サーバに分割することにより、ユーザが複数の公開鍵を組み合わせて、任意の時点の暗号鍵をシステムに告知することなく得る方法及びシステムに関する。
【０００２】
【従来の技術】
鍵共有系は１つの秘密鍵をいくつかのサーバに分割してもたせるものであり、Shamirの(t,k)閾値暗号系が有名である。これは、１つの秘密情報をk個のサーバに分割してもたせ、その内のt個が協力すると、もとの鍵が復元できるというものである。 構成法はまず、ある体F上の以下の(t-1)次多項式を定める。
【０００３】
f(x)=f0+f1*x+f2*x2+...+ft-1*xt-1 (式１)
【０００４】
秘密情報の所有者はまず、式１のf0に秘密情報を代入し、のこりのfkはランダムに決める。 次に各サーバ i に対し、(i,f(i))を分割情報として送る。i 個の分割情報が集まると始めて、この多項式の各係数を一意に求めることができ、f0が求められる。 Proactive secret sharingはIBM Watsonで提案されたもので、 上記の(t,k)閾値暗号系において、各(i,f(i))を定常的に持つのではなく、サーバ間で更新処理をすることによって動的に変えていこうとするものであり、 更新処理を工夫することによって、f0を常に不変にすることができる[Herzberg97]。これによってある時点にあるサーバが攻撃されて分割情報が盗まれたとしても、同時にt個のサーバの分割情報を盗まない限り安全なことが示される。 [Genetti95]は、こうしたサーバ群とユーザの間の通信に対しても常に動的な公開鍵が作られることを示している。
【０００５】
次に[Kudoh97]（特願平09-226903）では、時間鍵証明書というものを定義し、復号サーバがその証明書にもとづいて復号時間を決定できるような枠組みを提案している。 [Kudoh98](工藤：Boheh-Franclin分散RSA鍵生成法に基づいた時間鍵暗号の構成法，情報セキュリティ研究会，IEICE，1998)は、１つのRSA公開鍵を２つのサーバがその秘密鍵を知ることなく生成できることを利用して、時間鍵の安全性が高められるとしている。
【０００６】
しかしながら、[Herzberg97]は、Secret Sharingは１つの予め与えられた不変の秘密を常に共有することを目的にしており、 Proactive Secret Sharingで分割情報を動的に変化させてはいるが、本当の秘密情報は不変であり、そこには周期性やそれを利用した時間概念は含まれていない。 また、[Genetti95]では通信用の鍵の更新を扱っており、時間鍵の概念がない。またSecret Sharingでは、秘密情報の所有者というものがまず仮定され、彼が秘密鍵を生成し、分割し、各サーバに配布する。したがってここを攻撃する事によって事前に秘密鍵を得る事ができる。次に、[Kudoh97]における時間鍵サーバは単一であり、 復号時間の管理はそのサーバの運営に任されている。 [Kudoh98]では、たとえ時間鍵サーバを複数にしたとしても、復号時間を満足しているか否か決めるのは、時間鍵サーバが独立に決めているので、秘密鍵のセキュリティはサーバの運用に委ねられている。
【０００７】
【発明が解決しようとする課題】
従って、本発明が解決しようとする課題は、複数のサーバに秘密鍵を安全に分散して生成する方法を提供することである。
また別の課題は、複数のサーバに秘密鍵を時間に依存しながら分散して生成する方法を提供することである。
また別の課題は、秘密鍵を周期的に生成する方法を提供することである。
また別の課題は、秘密鍵のセキュリティがサーバの運用に委ねられない方法を提供することである。
また別の課題は、ユーザが複数の公開鍵を組み合わせて、任意の時点の暗号鍵を、システムに告知することなく、得る方法を提供することである。
また別の課題は、複数サーバによる、よりセキュリティの高い時間鍵の生成を行う方法を提供することである。
また別の課題は、復号時間になるまで複数サーバの秘密鍵の計算ができない方法を提供することである。
【０００８】
【課題を解決するための手段】
上記課題を解決するために、本発明では、複数サーバの協調動作によって、秘密鍵を複数のサーバ上に生成する。より具体的には複数のサーバ間で乱数を交換し、これに基づき秘密鍵を生成する。複数サーバの少なくとも２つのサーバ間で乱数の交換をすることによって個々のサーバの秘密鍵に周期性はなくなるが、システム全体としての周期は保存される。複数の秘密鍵に対する公開鍵を生成させこれを公開する。複数の公開鍵の組み合わせによって生成された、新しい公開鍵に対する秘密鍵は、個々のサーバの秘密鍵により計算される。各サーバに対して鍵更新周期（秘密鍵レジスタの個数による）を導入し、復号鍵情報がある周期にしか現れないようにする（これを周期システムと呼ぶ）。この周期システムにより時間鍵を生成する。周期システムを複数用意して自律的に運用させることで、より安全な時間鍵が生成される。このように複数のサーバからなる分散システムとすることによって、１つのシステムが自分の状態をすべて保存していても、鍵情報は得られない。サーバは周期的に秘密鍵を更新するので復号時間になるまで、秘密鍵は計算できないことが保証される。
【０００９】
【発明の実施の形態】
図２にもっとも基本となるシステムのブロック構成を示す。まずサーバ自体はあらかじめ決められた自律的な動作だけをするものとする。ブロック２１０は要素サーバ間で乱数の交換をする、乱数交換ブロックである。乱数の交換により個々のサーバの秘密鍵に周期性はなくなるが、システム全体としての周期は保存される。次にブロック２２０は交換した乱数に関連して秘密鍵を生成する、秘密鍵生成ブロックである。
【００１０】
上記基本システムをより詳細に説明する。
・ある周期システムを構成する要素サーバの構成
まず、Tｋの更新周期をもつサーバkの秘密鍵の更新プロセスを説明する（図１）。ここで更新周期とは各サーバが有する秘密鍵レジスタの個数に相当し、この個数が異なれば更新周期も異なる。また周期システムはｎ個のサーバから構成されているものとする。Tｋの更新周期をもつサーバkは、Tｋ個の秘密鍵レジスタ(K0,K1,..,KTk-1)とTｋ個の乱数バッファ(B0,B1,..,BTk-1)を持つ。初期状態として秘密鍵レジスタ(K0,K1,..,KTk-1)には、大きな素数を p としたとき適当な p−1以下の乱数が代入されているものとする。サーバの動作は、ある時点Tにおいて、T mod Tｋで決められる秘密鍵レジスタ(ここではK0とする)を選び、PK0= gK0 mod p によって公開鍵PK0を計算してこれを公開する[ShowKey]。次に、乱数を生成し、他のn-1個のサーバに送信する[SendRnd]。同時に他のサーバから来た乱数を受信し、乱数バッファに蓄える[RecRnd]。最後にT+1 mod Tｋで決められる秘密鍵レジスタ(ここではK1とする)の値を、この乱数バッファに基づいて計算する[UpdateKey]。これが次の時点におけるサーバの公開鍵を計算するための秘密鍵になる。これををまとめると時間Tでの動作は以下のようになる（図１）。
【００１１】
１． [ShowKey] 秘密鍵レジスタK(T mod Tk)から秘密鍵を取り出し(これをKkとする)、PK = gKk mod p によって公開鍵PKkを計算してこれを公開する。
２． [SendRnd] n-1個の乱数ｒkj(j=0,1,,k-1,k+1,..n-1)＜ｐを生成して、それぞれを各サーバjの公開鍵PKjで暗号化して送信する。また、それらの乱数の和 Rk- =Σrkj(j=0,1,,k-1,k+1,..n-1)を計算しておく。
３． [RecRnd] 自分以外のn-1個のサーバから来た乱数を復号し、その和Rk+=Σrjk(j=0,1,,k-1,k+1,..n-1)を計算する。そしてRk+ - Rk-を乱数バッファB(T mod Tk)に代入する。
４． [UpdateKey] 秘密鍵レジスタK(T+1 mod Tk)から次の時点T+1で使う秘密鍵を取り出し(これをKk+1とする)、乱数バッファの和ΣBj(j=0,1,,,Tk)を計算し、レジスタの値をKk+1new = Kk+1old +ΣBjで更新する。
【００１２】
・要素サーバから、その最小公倍数をもつ周期システムを構成
上記の要素サーバを構成要素とし、鍵更新プロセスを同期させることによって、個々の要素サーバの更新周期の最小公倍数をもつ周期システムが構成される。ここでは、例として周期１、２、３の更新周期をもつ要素サーバにおいて、個々の秘密鍵および秘密鍵の総和がどのように推移するかを図３に示す。個々の秘密鍵はランダムに推移しているが、総和には６の周期性が見られる。
【００１３】
時間鍵を生成する方法を図６に示す。
まずステップ６１０で初期化として、作ろうとする周期システムの周期にあわせて要素サーバを複数個選択する。この時、ある程度の冗長度を持たせる。たとえば周期３の周期システムを作るときには、更新周期が３の要素サーバ１つだけで構成するのではなく、１と３の更新周期を持つ２つ以上の要素サーバで構成する。次にステップ６２０で要素サーバ間で上記に示した方法で乱数を交換し、ステップ６３０でそれぞれの秘密鍵を更新させ、対応する公開鍵を公開することを繰り返すことによって、周期システムを自律的に動かす。利用者はステップ６４０で、すべての要素サーバの公開鍵の積をとることによって、時間公開鍵を構成する。この時、どの時点で時間公開鍵を構成するかは利用者の任意であり、サーバに告知することは必要ない。この時間公開鍵で暗号化されたメッセージを復号する場合には、ステップ６５０のように、すべての要素サーバに対して、秘密鍵の和の計算を依頼することによって、時間鍵秘密鍵が得られる。ただし、この依頼は周期システムの周期できまる時間後でなければ、公開鍵に対応した秘密鍵は得られない。
【００１４】
・周期システムを複数用意する事によって、より安全な時間鍵を生成する方法
１つの周期システムから時間鍵を生成しても構わないが、より安全に、より多様な時間鍵を生成する方法として、周期システムを複数用意する事により時間鍵暗号を生成する。
図４のように周期システムの総数をｎとする。周期システムiの秘密鍵をxi、公開鍵をyiとすると、ElGamal暗号では、Zp上の原始元をｇとすると、
yi = gxi mod p
となる。ここで、ユーザが周期システムのサブセットを適当に選び、 それらの公開鍵を得て、その積をとると、
ｙ= yp0 * yp1 *..* ypk-1
となるが、ｙに対応する秘密鍵は、
x = xp0 + xp1 +..+ xpk-1
となり、対応するサブセットの秘密鍵の和となるが、この秘密鍵は周期的にしか計算されないため、結局、サブセットに含まれる周期システムの周期の最小公倍数で決められる時間にしか、秘密鍵情報が得られないことになる。
【００１５】
時間鍵の復号処理は公開鍵を得たシステムに対し、順送りに和の計算依頼をする事によってできる。 この場合、ある時間復号鍵、つまりシステムの部分和の情報は、他の時間復号鍵の手がかりになる可能性があるので、復号サーバ（ＤＳ）を用意し、ここでメッセージの復号をすることにする。手続きは以下のようになる。
【００１６】
1. 復号サーバＤＳに時間鍵で暗号化されたメッセージを送付。
2. 復号サーバは乱数ｒを生成し、 最初の周期システムＳ1に秘密鍵の加算を依頼。
3. Ｓ1は自分のその時点の秘密鍵KS1をｒに加算し、次のシステムS2に秘密鍵の加算を依頼
4. S2〜Sn-1はステップ３と同様。
5. 最後のSnは結果をDSに送付し、DSは総和からｒを差し引く事によって復号鍵を得る事ができる。個々の周期システム内での復号処理も上記と同様に、周期システムを構成する要素サーバに順送りにそれぞれの秘密鍵の和の計算依頼メッセージを送付することによって行われる。
【００１７】
・段階的暗号・復号法
本発明では、周期の構成が、どのシステムを組み合わせたかという情報にたよっている。したがって、この情報が受信者に知られていると、組み合わせた個々のシステムごとに復号要求を出すなどの攻撃が考えられる。これを防ぐために、暗号化の際に、組み合わせ情報も以下のように暗号化する。たとえば、周期システムCS1,CS2,CS3の公開鍵PK1,PK2,PK3を暗号化に用いたとする。この時、組み合わせた公開鍵はY=PK1*PK2*PK3になり、適当に選んだｋ<p-1に対して、メッセージMは、{gk、M*Yk }で暗号化されるが、同時に組み合わせ情報を、{CS1, PK1({CS2, PK2(CS3)})})} のようにする。ただしPKi()は暗号化関数とする。これによって、CS1で復号することによって初めて次の転送先がわかるようになる。
【００１８】
図５に本発明の要素サーバに用いられるハードウェア実施例を示す。システム１００は、中央処理装置（ＣＰＵ）１とメモリ４とを含んでいる。ＣＰＵ１とメモリ４は、バス２を介して、補助記憶装置としてのハードディスク装置１３（またはＭＯ、ＣＤ−ＲＯＭ２３、ＤＶＤ等の記憶媒体駆動装置）とＩＤＥコントローラ２５を介して接続してある。同様にＣＰＵ１とメモリ４は、バス２を介して、補助記憶装置としてのハードディスク装置３０（またはＭＯ２８、ＣＤ−ＲＯＭ２３、ＤＶＤ等の記憶媒体駆動装置）とＳＣＳＩコントローラ２７を介して接続してある。フロッピーディスク装置２０はフロッピーディスクコントローラ１９を介してバス２へ接続されている。
【００１９】
フロッピーディスク装置２０には、フロッピーディスクが挿入され、このフロッピーディスク等やハードディスク装置１３（またはＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ等の記憶媒体）、ＲＯＭ１４には、オペレーティングシステムと協働してＣＰＵ等に命令を与え、本発明を実施するためのコンピュータ・プログラムのコード若しくはデータを記録することができ、メモリ４にロードされることによって実行される。このコンピュータ・プログラムのコードは圧縮し、または、複数に分割して、複数の媒体に記録することもできる。
【００２０】
システム１００は更に、ユーザ・インターフェース・ハードウェアを備え、入力をするためのポインティング・デバイス（マウス、ジョイスティック等）７またはキーボード６や、視覚データをユーザに提示するためのディスプレイ１２を有することができる。また、パラレルポート１６を介してプリンタを接続することや、シリアルポート１５を介してモデムを接続することが可能である。このシステム１００は、シリアルポート１５およびモデムまたは通信アダプタ１８(イーサネットやトークンリング・カード)等を介してネットワークに接続し、他の要素サーバ、コンピュータ等と通信を行う。またシリアルポート１５若しくはパラレルポート１６に、遠隔送受信機器を接続して、赤外線若しくは電波によりデータの送受信を行うことも可能である。
【００２１】
スピーカ２３は、オーディオ・コントローラ２１によってＤ／Ａ（デジタル／アナログ変換）変換された音声信号を、アンプ２２を介して受領し、音声として出力する。また、オーディオ・コントローラ２１は、マイクロフォン２４から受領した音声情報をＡ／Ｄ（アナログ／デジタル）変換し、システム外部の音声情報をシステムにとり込むことを可能にしている。
【００２２】
このように、本発明に用いる要素サーバは、通常のパーソナルコンピュータ（ＰＣ）やワークステーション、ノートブックＰＣ、パームトップＰＣ、ネットワークコンピュータ、コンピュータを内蔵したテレビ等の各種家電製品、通信機能を有するゲーム機、電話、ＦＡＸ、携帯電話、ＰＨＳ、電子手帳、等を含む通信機能有する通信端末、または、これらの組合せによって実施可能であることを容易に理解できるであろう。ただし、これらの構成要素は例示であり、その全ての構成要素が本発明の必須の構成要素となるわけではない。
【００２３】
【発明の効果】
本発明により、ユーザは任意の時点の暗号鍵をシステムに告知するなく得ることができるため、システムは復号時点まで、復号鍵情報を知ることはない。つまりユーザがサーバに通知することなく復号時間を決められる。またユーザが公開鍵を組み合わせる事によって新しい公開鍵を得るので、これに対する秘密鍵は複数サーバに分割されており存在しない。サーバが協調して、復号鍵を周期的に管理するので、復号鍵は本当に復号時間になるまで構成することができない。本発明により、サーバの恣意的な不正を防ぎ、全体のシステムのセキュリティを高めることが可能になる。
【００２４】
【図面の簡単な説明】
【図１】要素サーバの秘密鍵の更新プロセスを示す図である。
【図２】本発明における基本秘密鍵システムのブロック図である。
【図３】本発明の周期システムの挙動例を示すグラフである。
【図４】ElGamalによる周期公開鍵の組み合わせの説明図である。
【図５】本発明の要素サーバに用いられるハードウェア実施例である。
【図６】時間鍵を生成するフローチャートである。
【図１】
0004071870.tif 000002
【図２】
0004071870.tif 000003
【図３】
0004071870.tif 000004
【図４】
0004071870.tif 000005
【図５】
0004071870.tif 000006
【図６】
0004071870.tif 000007