近年、情報通信技術の革新によりコンピュータの普及が拡大され、コンピュータ通信網を通じた情報の交換が盛んに行われるようになった。これらコンピュータが通信でやりとりする情報には個人情報等のセキュリティを必要とするものが多く含まれ、このような情報に対するセキュリティを確保するための技術の1つとして、暗号通信技術が用いられている。暗号通信技術は、通信データに対する秘匿性確保、データ完全性保証、通信相手の認証等を行うことにより、第三者による通信内容の盗聴、改ざん、またなりすましによる不正アクセス等を防ぐ技術である。そして、このような暗号通信技術を活用することにより、複数のユーザが形成したグループで暗号鍵を共有し、グループに所属するメンバだけが復号できるようにして暗号化された情報を交換することを可能としている。
例えば文献1(特開2007−129764)では、サーバと通信することなく、複数のユーザの計算機間でグループ暗号通信を行えるようにするグループ暗号通信方法が開示されている。当該グループ暗号通信方法では、計算機1−A、1−Bがグループ暗号通信を行っているとき、計算機1−Cがグループ加入要求を計算機1−Aに発信すると、計算機1−A〜1−C間で交換鍵が交換される。各計算機1−A、1−B、1−Cは、受信した交換鍵に基づいてグループ秘密鍵を生成する。以後、このグループ秘密鍵を使用してグループ暗号通信が行われる。Diffie−Hellman型鍵交換方式に従った場合、計算機1−A、1−Cの交換鍵α、Zは、ga mod p、gz mod pとなり、計算機1−A、1−Cが計算するグループ秘密鍵は、Za mod p、αz mod pとなり、同一値gaz mod pとなる。
さらに、上述した暗号鍵のグループ間共有、いわゆるグループ鍵交換の別の例として、文献2(Jonathan Katz, Ji Sun Shin, “Modeling Insider Attacks on Group Key−Exchange Protocols”, ACM Conference on Computer and Communications Security, 2005, Page(s):180−189)に示された方法について図6を参照して説明する。図6は、文献2による鍵交換を行う鍵交換装置の構成を示した図である。はじめに記法を示す。pを素数、GTを位数qの巡回群とする。また、鍵を交換する装置(以下、鍵交換装置という)の数をnとし、それぞれの鍵交換装置にiで番号を振る。そして、鍵交換装置iを表す識別子をU[i]とする。gはGTの生成子とする。また、v、wを無作為に選ばれた整数とする。また、F、F’を擬似乱数生成装置とする。
鍵交換装置の説明を行う。鍵交換装置50は、入力装置51、貢献乱数生成装置52、貢献データ生成装置53、補助データ生成装置54、一時鍵生成装置55、検証データ生成装置56、検証データ検証装置57、出力装置58、通信装置59を備える。また、鍵交換装置50は、通信装置59により通信回線90を介して、鍵交換を行うグループの他の鍵交換装置と通信を行う。
まず、鍵交換装置50のうちの各装置iには、他の装置j(j={1,2,…,n}、ただしiを除く)に対応する識別子U[j](相手識別子集合61)と公開鍵pk[j](相手公開鍵集合62)が入力される。また、自身の識別子U[i](識別子63)と公開鍵pk[i](公開鍵64)、またpk[i]に対応する秘密鍵sk[i](秘密鍵65)も入力される。さらに、これから生成する鍵に固有のセッション番号sid(セッション番号66)が入力される。
そして、鍵交換装置iは、貢献乱数生成装置52が乱数67を用いてr[i]∈Z/qZ をランダムに生成する。また、貢献乱数生成装置52は、r[i]を用いてy[i]=gr[i](貢献乱数68)を生成し、さらに貢献データ生成装置53は、(sid,1,U[i],y[i])に対する署名sig(i,1)(貢献データ69)を生成する。そして、鍵交換装置iは、装置i以外のn−1個の鍵交換装置jに対して、第1RM(ラウンドメッセージ)70として、(sid,1,U[i],y[i],sig(i,1))を送付する。また、鍵交換装置iは、装置jが第1RM集合71としてy[i]を送付してくるのを待つ。全てのy[i]が揃ったならば、装置iは各署名を検証する。
次に、鍵交換装置iは、補助データ生成装置54が全てのy[i](貢献データ集合72)を用いてx[i]=(y[i+1]/y[i−1])r[i](補助データ73)を生成し、(sid,2,U[i],x[i])に対する署名sig(i,2)を生成する。そして、鍵交換装置iは、装置i以外のn−1個の鍵交換装置jに対して、第2RM74として、(sid,2,U[i],x[i],sig(i,2))を送付する。また、鍵交換装置iは、装置jが第2RM集合75としてx[j]を送付してくるのを待つ。全てのx[j]が揃ったならば、装置iは各署名を検証する。
次に、鍵交換装置iは、一時鍵生成装置55が全てのx[j](補助データ集合76)を用いてk[i]=(y[i−1]r[i])nx[i+1]nx[i+2]n-1…x[n]i+1x[1]i…x[i−1]2x[i](一時鍵77)を生成する。次いで、検証データ生成装置56がack[i]=F(k[i],v)(検証データ78)を生成し、sk[i]=F’(k[i],w)(仮の共有鍵)を生成する。そして、検証データ生成装置56は(sid[i],3,U[i],ack[i])に対する署名sig(i,3)を生成する。そして、鍵交換装置iは、装置i以外のn−1個の鍵交換装置jに対して、第3RM79として、(sid,3,U[i],ack[i],sig(i,3))を送付する。また、鍵交換装置iは、装置jが第3RM集合80としてack[j]を送付してくるのを待つ。全てのack[j]が揃ったならば、装置iack[j]=ack[i]を確認し、最終的な共有鍵82としてsk[i]を出力装置58より出力する。なお、符号81は、検証データ集合を示している。
本発明が適用される鍵交換装置10は、複数の鍵交換装置間で行われる鍵交換を取りまとめる鍵交換装置であり、図1に示すように、入力部11、共有鍵種データ生成部12、共有鍵証拠データ生成部13、共有鍵種データ暗号化部14、共有鍵証拠データ署名部15、共有鍵生成部16、署名検証部17、及び出力部18を備える。入力部11は、鍵交換に用いられる諸データ、例えば公開鍵、秘密鍵、乱数等を入力する。共有鍵種データ生成部12は、入力部11から入力された乱数を用いて共有鍵種データを生成する。共有鍵証拠データ生成部13は、共有鍵種データ生成部12で生成された共有鍵種データと入力された公開鍵とを用いて共有鍵証拠データを生成する。共有鍵種データ暗号化部14は、交換相手の鍵交換装置と個別に交換する個別鍵で共有鍵種データを暗号化する。共有鍵証拠データ署名部15は、入力された秘密鍵を用いて共有鍵証拠データについての署名を生成する。共有鍵生成部16は、共有鍵種データと入力された公開鍵とを用いて、複数の鍵交換装置間で共有する共有鍵を生成する。署名検証部17は、交換相手の鍵交換装置から取得した共有鍵証拠データについての署名が正当であるかを検証する。出力部18は、相手装置からの署名が正当であると検証されたときに、生成された共有鍵を出力する。
また、本発明が適用される鍵交換装置20は、鍵交換を行う複数の鍵交換装置のうち鍵交換装置10以外の鍵交換装置であり、図2に示すように、入力部21、個別鍵生成部22、共有鍵証拠データ署名部23、共有鍵種データ復号化部24、検証用共有鍵証拠データ生成部25、共有鍵証拠データ検証部26、共有鍵生成部27、署名検証部28、及び出力部29を備える。入力部21は、鍵交換に用いられる諸データ、例えば公開鍵、秘密鍵等を入力する。個別鍵生成部22は、鍵交換装置10から取得した個別鍵元データを用いて鍵交換装置10と自装置との間で個別に交換する個別鍵を生成する。共有鍵証拠データ署名部23は、鍵交換装置10から取得した共有鍵証拠データについて、入力部21から入力された秘密鍵を用いて署名を生成する。共有鍵種データ復号化部24は、個別鍵生成部22が生成した個別鍵を用いて、鍵交換装置10から取得した共有鍵種データの暗号文を復号化する。検証用共有鍵証拠データ生成部25は、復号化した共有鍵種データと入力した公開鍵とを用いて検証用の共有鍵証拠データを生成する。共有鍵証拠データ検証部26は、生成した検証用の共有鍵証拠データが鍵交換装置10からの共有鍵証拠データと等しいかを検証する。共有鍵生成部27は、復号化で得られた共有鍵種データと入力した公開鍵とを用いて、複数の鍵交換装置間で共有する共有鍵を生成する。署名検証部28は、交換相手の鍵交換装置から取得した共有鍵証拠データについての署名が正当であるかを検証する。出力部29は、相手装置からの署名が正当であると検証されたときに、生成された共有鍵を出力する。
鍵交換装置10では、1回目のデータ送受信で、交換相手の鍵交換装置へ個別鍵元データ及び共有鍵証拠データを含むデータを送信し、相手装置が生成した個別鍵元データを含むデータを相手装置から受信する。また、2回目のデータ送受信で、相手装置へ共有鍵種データの暗号文及び共有鍵証拠データの署名を含むデータを送信し、相手装置が生成した共有鍵証拠データの署名を含むデータを相手装置から受信する。そして、鍵交換装置20においては、1回目のデータ送受信で、鍵交換装置10の個別鍵生成で用いられる個別鍵元データを生成して鍵交換装置10へ送信し、鍵交換装置10で生成された個別鍵元データ及び共有鍵証拠データを含むデータを鍵交換装置10から受信する。また、2回目のデータ送受信で、交換相手の鍵交換装置(鍵交換装置10を含む)に対して、鍵交換装置10から取得した共有鍵証拠データ及び該共有鍵証拠データの署名を含むデータを送信し、相手装置が生成した共有鍵証拠データの署名及び共有鍵種データの暗号文を相手装置から受信する。
このように、本発明では、複数の鍵交換装置間において2回のデータ送受信により鍵交換が行われる。また、鍵交換を取りまとめる鍵交換装置以外の鍵交換装置(鍵交換装置20)においては、1回目のデータ送受信で、鍵交換を取りまとめる鍵交換装置のみが通信相手となっている。これにより、複数(特に多数)の鍵交換装置間で、迅速かつ効率的な鍵交換が可能となる。
以下、図3から図5A−図5Cを参照しながら、本発明の実施形態として鍵交換システムについて詳細に説明する。当該鍵交換システムは、鍵交換を取りまとめる鍵交換装置(以下、リーダ鍵交換装置という)及びこれ以外の鍵交換装置(以下、メンバ鍵交換装置という)から構成され、複数の鍵交換装置間で鍵交換を行う。
はじめに、本実施形態の鍵交換システムにおけるリーダ鍵交換装置の構成について説明する。図3は、本実施形態においてリーダ鍵交換装置の構成を示した図である。リーダ鍵交換装置100(以下、鍵交換装置100という)は、入力装置101、乱数生成装置102、共有鍵証拠生成装置103、個別鍵交換装置104、内部状態保存装置105、暗号化装置106、署名装置107、共有鍵生成装置108、検証装置109、出力装置110、及び通信装置111を有する。また、鍵交換装置100は、通信装置111により、通信回線90を介して交換相手の鍵交換装置とデータ通信をして鍵交換を行う。
入力装置101は入力部11(図1、以下本段落において図面番号の表示を省略する)に、乱数生成装置102は共有鍵種データ生成部12に、共有鍵証拠生成装置103は共有鍵証拠データ生成部13に、暗号化装置106は共有鍵種データ暗号化部14に、署名装置107は共有鍵証拠データ署名部15に、共有鍵生成装置108は共有鍵生成部16に、検証装置109は署名検証部17に、出力装置110は出力部18にそれぞれ対応する。
まず、記法について述べる。pを素数、Gを位数pの巡回群、gをGの生成元とする。また、鍵交換装置の数をnとし、それぞれの装置にi=1,2…,nの番号を振る。この振り方は、n個の装置の集合が決定すると一意的に決まるものとする。例えば、装置の識別子のアルファベット順等である。そして、装置iを表す識別子をU[i]とする。また、Fを衝突困難疑似乱数関数とする。これは、2つの引数を持つ関数で、第1の入力を無作為に選ぶと任意の第2の入力に対してその出力と乱数が区別できないもので、かつ、任意の第2の入力に対してその出力が同じとなるような2つの異なる第1の入力を見つけることが難しいものである。また、第1の引数の選ばれる空間をM1、第2の引数の選ばれる空間をM2とする。また、v[0] とv[1]をM2に属する値とする。また、UHを2−ユニバーサルハッシュ関数とする。2−ユニバーサルハッシュ関数とは、2つの入力を持ち、互いに異なる第2の入力x、yが与えられたとき、第1の入力zをランダムに選ぶと、UH(z,x)=U(z,y)となる確率が1/|V|となるものである。但し、Vはzが選ばれる空間で、|V|はその大きさである。v[2]をランダムに選ばれたVの要素とする。また、記号「◇」をビットごとの排他的論理和とする。
各鍵交換装置iには鍵交換に用いられる諸データが入力される。すなわち、鍵交換装置100においては、入力装置101により、それぞれの鍵交換装置j(j={1,2,…,n})に対応する識別子U[j]の集合である識別子集合123(pid)、それぞれの鍵交換装置jに対応する公開鍵pk[j]の集合である公開鍵集合124、自装置に対応する識別子125(U[i])、自身の公開鍵126(pk[i])、これに対応する秘密鍵127(sk[i])、そしてこれから生成する共有鍵141に固有のセッション番号121(sid)及び乱数122が入力される。なお、以下、リーダ鍵交換装置100をi=1、メンバ鍵交換装置をj=2,…,nとして説明する。
乱数生成装置102は、M1から共有鍵種データs∈M1を選ぶ、つまり入力された乱数122を用いて共有鍵種128を生成する。そして、共有鍵証拠生成装置103は、共有鍵種128を用いて共有鍵証拠129(ack=F(s,v[0]))を生成する。個別鍵交換装置104は、個別鍵交換内部状態r[1]∈Z/pZをランダムに選び、つまり鍵交換内部データ131を生成し、個別鍵元データ130(y[1]=gr[1])を生成する。そして、内部状態保存装置105は、共有鍵証拠129(ack)及び鍵交換内部データ131(r[1])を含むデータを内部状態(sid,pid,ack,r[1])として保存する。そして、通信装置111により、共有鍵証拠129(ack)及び個別鍵元データ(y[1])を含むデータを、第1RM(ラウンドメッセージ)143(U[1],sid,pid,ack,y[1])として、メンバ鍵交換装置jに送信する。
次いで、鍵交換装置100は、通信装置111により、全ての装置jから第1RM集合132(U[j],sid,pid,y[j],sig[j]’)を受信したとき、各装置jからの署名(sig[j]’)の正当性を検証する。そして、個別鍵交換装置104により、装置jからの個別鍵元データ(y[j])及び自装置で生成した鍵交換内部データ131(r[1])を用いて、各装置jに対応する個別鍵集合133(k[j]=UH(y[j]r[1],v[2]))を生成する。
そして、暗号化装置106により、個別鍵(k[j])を用いた共有鍵種128(s)の暗号文、つまり各装置jに対応した共有鍵種暗号文集合134(x[j]=s◇k[j])を生成する。また、署名装置107により、入力装置101で入力した秘密鍵127を用いて、共有鍵証拠135(ack)を含むデータ(sid,pid,ack)についての署名136(sig[1])を生成する。また、共通鍵生成装置108により、入力装置101で入力した公開鍵126と共有鍵種140とを用いて、共有鍵141(key=F(s,v[1]))を生成する。また、内部状態保存装置105により、共有鍵141(key)を含むデータを、内部状態(sid,pid,ack,key)として更新する。そして、通信装置111により、共有鍵種暗号文集合139(x[j])及び署名136(sig[1])を含むデータを、第2RM137(U[1],sid,pid,sig[1],x[j])として各装置jへ送信する。
次いで、鍵交換装置100は、通信装置111により、全ての装置jから第2RM集合138(U[j],sid,pid,ack,sig[j])を受信する。そして、このとき、検証装置109により、各装置jからの署名139(sig[j])が、内部状態として保存した共有鍵証拠(sid,pid,ack)に対する正当な署名であるかについて検証を行う。署名139が正当な署名であると検証されたとき、出力装置110により共有鍵142(key)が出力され、内部状態保存装置105は保存している内部状態を消去する。
続いて、本実施形態の鍵交換システムにおけるメンバ鍵交換装置の構成について説明する。図4は、本実施形態においてメンバ鍵交換装置の構成を示した図である。メンバ鍵交換装置200(以下、鍵交換装置200という)は、入力装置201、個別鍵交換装置202、内部状態保存装置203、署名装置204、復号化装置205、共有鍵証拠生成装置206、共有鍵証拠確認装置207、署名検証装置208、共有鍵生成装置209、検証装置210、出力装置211、及び通信装置212を有する。また、鍵交換装置200は、通信装置212により、通信回線90を介して交換相手の鍵交換装置(リーダ鍵交換装置や他のメンバ鍵交換装置)とデータ通信をして鍵交換を行う。
入力装置201は入力部21(図2、以下本段落において図面番号の表示を省略する)に、個別鍵交換装置202は個別鍵生成部22に、署名装置204は共有鍵証拠データ署名部23に、復号化装置205は共有鍵種データ復号化部24に、共有鍵証拠生成装置206は検証用共有鍵証拠データ生成部25に、共有鍵証拠確認装置207は共有鍵証拠データ検証部26に、署名検証装置208は署名検証部28に、共有鍵生成装置209は共有鍵生成部27に、出力装置211は出力部29にそれぞれ対応する。
記法については、リーダ鍵交換装置100で述べたものと同様であるため、説明を省略する。また、リーダ鍵交換装置100での説明と同様に、なお、以下、リーダ鍵交換装置をi=1、鍵交換装置200をj=2,…,nとして説明する。鍵交換装置200には、入力装置201により、鍵交換に用いられる諸データが入力される。すなわち、入力装置201は、それぞれの鍵交換装置に対応する識別子の集合である識別子集合223(pid)、それぞれの鍵交換装置に対応する公開鍵の集合である公開鍵集合224、自装置に対応する識別子225(U[j])、自身の公開鍵226(pk[j])、これに対応する秘密鍵227(sk[j])、これから生成する共有鍵243に固有のセッション番号221(sid)、乱数222を入力する。
個別鍵交換装置202は、個別鍵交換内部状態r[j]∈Z/qZをランダムに選び、つまり鍵交換内部データ229を生成し、個別鍵元データ228(y[j]=gr[j])を生成する。そして、個別鍵元データ228(y[j])に対する署名sig[j]’を生成する。次いで、内部状態保存装置203は、鍵交換内部データ229(r[j])を含むデータを内部状態(sid,pid,r[j])として保存する。そして、通信装置212により、個別鍵元データ228(y[j])を含むデータを、第1RM230(U[j],sid,pid,y[j],sig[j]’)として、リーダ鍵交換装置100に送信する。
次いで、鍵交換装置200は、通信装置212により、リーダ鍵交換装置100から第1RM集合231(U[1],sid,pid,ack,y[1])を受信したとき、個別鍵交換装置202により、リーダ鍵交換装置100から取得した個別鍵元データ232(y[1])及び鍵交換内部データ229(r[j])を用いて、個別鍵234(x[j]’=UH(y[1]r[j]),v[2]))を生成する。また、署名装置204により、入力装置201で入力された秘密鍵227を用いて、受信した共有鍵証拠233(ack)と内部状態保存装置203に保存した識別子235(sid,pid)とを含むデータ(sid,pid,ack)に対する署名236(sig[j])を生成する。そして、内部状態保存装置203により、受信した共有鍵証拠233及び生成した個別鍵234を含むデータを、内部状態(sid,pid,ack,x[j]’)として更新する。そして、通信装置212により、共有鍵証拠233(ack)及び署名236(sig[j])を含むデータを、第2RM237(U[j],sid,pid,ack,sig[j])として、自装置以外の鍵交換装置へ送信する。この自装置200以外の鍵交換装置には、自装置以外のメンバ鍵交換装置のほか、リーダ鍵交換装置100が含まれる。
次いで、鍵交換装置200は、通信装置212により、自装置以外の鍵交換装置から第2RM集合238を受信する。鍵交換装置200以外のメンバ鍵交換装置から受信する場合、第2RM集合238の内容は(U[j],sid,pid,ack,sig[j])となり、リーダ鍵交換装置100から受信する場合、第2RM集合238の内容は(U[1],sid,pid,sig[1],x[j])となる。鍵交換装置200は、自装置以外の鍵交換装置の全てから第2RM集合238を受信したとき、すなわち、(U[j],sid,pid,ack,sig[j])及び(U[1],sid,pid,sig[1],x[j])を取得したとき、署名検証装置208により、全ての装置からの署名239(sig[j])が、内部状態として保存した共有鍵証拠(sid,pid,ack)に対する正当な署名であるかについて検証を行う。署名検証装置208は、署名の検証結果を検証装置210に出力する。
次に、復号化装置205により、保存した個別鍵234(x[j]’)を用いて、リーダ鍵交換装置100から受信した共有鍵種暗号文240(x[j])を復号化し、共有鍵種241(s[j]=x[j]◇x[j]’)を生成する。そして、共有鍵証拠生成装置206により、復号化した共有鍵種241(s[j])及び入力装置201で入力された公開鍵226を用いて、検査用共有鍵証拠242(ack[j]=F(s[j],v[0]))を生成する。また、共有鍵生成装置209により、復号化装置205で復号化された共有鍵種241及び入力装置201で入力された公開鍵226を用いて、共有鍵243(key=F(s[j],v[1]))を生成する。そして、共有鍵証拠確認装置207により、検査用共有鍵証拠242(ack[j])と、内部状態として保存された共有鍵証拠233(ack)とが等しいか確認する。共有鍵証拠確認装置207は、共有鍵証拠の確認結果を検証装置210に出力する。検証装置210において、署名検証装置208から署名が正当である検証結果が得られ、共有鍵証拠確認装置207から共有鍵証拠が等しい確認結果が得られたとき、出力装置211により共有鍵244(key)が出力され、内部状態保存装置203は保存している内部状態を消去する。
続いて、本実施形態において行われる鍵交換に関する処理及び諸データの流れについてより具体的に説明する。図5A−図5Cは、本実施形態における鍵交換処理の流れを示したシーケンスチャートである。なお、図5A−図5Cでは、3つの鍵交換装置の間で行われる鍵交換処理を表しており、鍵交換装置A(i=1)をリーダ鍵交換装置、鍵交換装置B(i=2)及び鍵交換装置C(i=3)をメンバ鍵交換装置としている。
図5Aに示すように、各鍵交換装置では、公開鍵、秘密鍵、乱数等の鍵交換に用いられる諸データが入力される(S1−A、S1−B、S1−C)。鍵交換装置Aにおいて、入力された乱数を用いて共有鍵種(s)が生成される(S2−A)。また、共有鍵種(s)を用いて共有鍵証拠(ack)が生成される(S3−A)。また、鍵交換内部データ(r[1])から個別鍵元データ(y[1])が生成され、共有鍵種(s)、共有鍵証拠(ack)、鍵交換内部データ(r[1])を含むデータ(sid,pid,s,ack,r[1])が内部状態として保存される(S4−A)。そして、鍵交換装置B及び鍵交換装置Cに対して、共有鍵証拠(ack)個別鍵元データ(y[1])を含むデータ(U[1],sid,pid,ack,y[1])が第1RMとして送信される(S5−A)。
一方、鍵交換装置Bでは、諸データ入力後、鍵交換内部データ(r[2])から個別鍵元データ(y[2])が生成され、それについての署名(sig[2]’)が生成される(S2−B)。そして、鍵交換内部データ(r[2])を含むデータ(sid,pid,r[2])が内部状態として保存される(S3−B)。そして、個別鍵元データ(y[2])及びそれについての署名(sig[2]’)を含むデータ(U[2],sid,pid,y[2],sig[2]’)が、第1RMとして、鍵交換装置Aに対して送信される(S5−B)。鍵交換装置Cでも上記と同様に、個別鍵元データ(y[3])及びその署名(sig[3]’)の生成(S2−C)、内部状態(sid,pid,r[3])の保存(S3−C)、第1RM(U[3],sid,pid,y[3],sig[3]’)の送信(S5−C)が行われる。
図5Bに示すように、鍵交換装置Aでは、鍵交換装置Bから第1RMを受信した後、鍵交換装置Bからの個別鍵元データ(y[2])及び自装置における鍵交換内部データ(r[1])を用いて、鍵交換装置Bと個別に交換する個別鍵(k[2]=UH(y[2]r[1],V[2]))が生成される。そして、生成した個別鍵(k[2])と共通鍵種(s)とを用いて、共有鍵種暗号文(x[2]=s◇k[2])が生成される(S7−A)。また、共有鍵証拠を含むデータ(sid,pid,ack)についての署名(sig[1])が生成される(S8−A)。そして、共有鍵種(s)を用いて、鍵交換装置Bとの間で共有する共有鍵(key=F(s,v[1]))が生成される(S9−A)。そして、共有鍵証拠(ack)、共有鍵(key)を含むデータ(sid,pid,ack,key)が内部状態として保存される(S10−A)。そして、署名(sig[1])及び共通鍵種暗号文(x[2])を含むデータ(U[1],sid,pid,sig[1],x[2])が、第2RMとして、鍵交換装置Bへ送信される(S11−A)。鍵交換装置Cに対しても同様に、共有鍵種暗号文(x3)、共通鍵証拠署名(sig[1])、共有鍵(key)が生成されるとともに、内部状態(sid,pid,ack,key)の保存が行われ、第2RM(U[1],sid,pid,sig[1],x[3])が送信される。
他方、鍵交換装置Bでは、鍵交換装置Aから第1RMを受信した(S4−B)後、鍵交換装置Bからの個別鍵元データ(y[1])及び自装置における鍵交換内部データ(r[2])を用いて、鍵交換装置Aと個別に交換する個別鍵(x[2]’=UH(y[1]r[2],V[2]))が生成される(S6−B)。また、共有鍵証拠を含むデータ(sid,pid,ack)についての署名(sig[2])が生成される(S7−B)。そして、共有鍵証拠(ack)、個別鍵(x[2]’)を含むデータ(sid,pid,ack,x[2]’)が内部状態として保存される(S8−B)。そして、共有鍵証拠(ack)、署名(sig[2])を含むデータ(U[2],sid,pid,ack,sig[2])が、第2RMとして、鍵交換装置A及び鍵交換装置Cに対して送信される(S10−B)。鍵交換装置Cについても同様である。すなわち、個別鍵(x[3]’)、共有鍵証拠署名(sig[3])が生成される(S6−C、S7−C)とともに、内部状態(sid,pid,ack,x[3]’)の保存が行われ(S8−C)、第2RM(U[3],sid,pid,ack,sig[3])が鍵交換装置A及び鍵交換装置Bへ信される(S11−C)。
図5Cに示すように、鍵交換装置Aでは、鍵交換装置B及び鍵交換装置Cから第2RMを受信した(S12−A、S13−A)後、各装置から取得した署名(sig[2]、sig[3])が、内部状態として保存している共有鍵証拠(sid,pid,ack)に対する署名であるかについて検証される(S14−A)。そして、共有鍵証拠(sid,pid,ack)に対する署名であることが検証されると、生成済みの共有鍵(key)が出力される(S15−A)。
一方、鍵交換装置Bでは、鍵交換装置A及び鍵交換装置Cから第2RMを受信した(S9−B、S11−B)後、鍵交換装置Aの場合と同様に署名検証が行われる(S12−B)。すなわち、各装置から取得した署名(sig[1]、sig[3])が、内部状態として保存している共有鍵証拠(sid,pid,ack)に対する署名であるかについて検証される。また、内部状態として保存している個別鍵(x[2]’)を用いて、鍵交換装置Aから取得した共通鍵種暗号文(x[2])が復号化され、共有鍵種(s[2])が生成される(S13−B)。そして、復号化された共有鍵種(s[2])を用いて、共有鍵(key=F(s[2],v[1]))が生成される(S14−B)。また、復号化された共有鍵種(s[2])を用いて、検証用の共有鍵証拠(ack[2]=F(s[2],v[0]))が生成される(S15−B)。そして、内部状態として保存された共有鍵証拠(ack)と検証用の共有鍵証拠(ack[2])とが同一であるかが検証される(S16−B)。そして、署名が正当であり、共有鍵証拠が同一と検証されたとき、生成された共有鍵(key)が出力される(S17−B)。鍵交換装置Cについても同様である。すなわち、署名検証(sig[1]、sig[2]=(sid,pid,ack))、共有鍵種復号化(s「3」)、共有鍵(key)及び検証用共有鍵証拠(ack[3])の生成、共有鍵証拠の検証(ack[3]=ack)が行われ、検証結果が正当であるときに共有鍵(key)が出力される(S9−C、S10−C、S12−C〜S17−C)。
以上説明したように、本実施形態によれば、複数の装置で秘密の鍵を共有するときに、互いにデータを配布する回数が2回で済むことになる。しかも、最初のラウンドでは、1つの装置(リーダ鍵交換装置)を除いて各装置(メンバ鍵交換装置)は、その他の装置に全てにメッセージを送るという重い処理が存在しない。対多数の通信はその同期を取る必要等に多くの時間を費やすため、短時間で終了することは単純な暗号計算と比べて難しい。本実施形態では、この通信の回数をこれまでの方法より減らしているため、より効率的な鍵の交換が可能になる。また、本方式はリーダ鍵交換装置が中心となって鍵交換を行うため、鍵交換の取りまとめを行うサーバが存在する場合に特にメリットがある。
すなわち、サーバクライアントシステムにおけるサーバ装置を上記実施形態のリーダ鍵交換装置として構成し、クライアント装置をメンバ鍵構成装置として構成することができる。この場合、サーバ装置に接続することができるクライアント装置のユーザが複数存在するが、サーバ装置とクライアント装置とが、互いに通信して上述したような鍵交換処理をそれぞれ行うことで、各装置が同一の共有鍵を交換することが可能となる。
複数の装置による鍵の交換は、ネットワーク上で多人数のユーザが会議を開く場合等に有効である。参加するメンバが確認でき、メンバ以外のユーザが会議に参加したり、会議の内容を盗聴できないようにするために、会議メンバで共有する秘密鍵を上述した鍵交換方法で事前に決定することができる。
なお、上述する実施形態は、本発明の好適な実施形態であり、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
すなわち、上記した実施形態におけるリーダ鍵交換装置やメンバ鍵交換装置は、プログラムの命令によりコンピュータで実行される処理、手段、機能によって動作する。当該プログラムは、コンピュータの各構成要素に指令を送り、先に述べたような所定の処理や機能、例えば、乱数生成装置102により乱数を用いて共有鍵種を生成させ、共有鍵証拠生成装置103により共有鍵種を用いて共有鍵証拠を生成させ、個別鍵交換装置104により交換相手装置からの個別鍵元データを用いて個別鍵を生成させる処理を行う。また、暗号化装置106により個別鍵を用いて共有鍵種を暗号化させ、署名装置107により共有鍵証拠についての署名を生成させ、共有鍵生成装置108により共通鍵種を用いて共有鍵を生成させる処理を行う。そして、検証装置109により交換相手装置からの署名が正当であるかを検証させ、正当であるときに出力装置110により共有鍵を出力させる処理を行う。このように、上記実施形態における各処理や手段は、プログラムとコンピュータとが協働した具体的手段によって実現されるものである。
そして、上記実施形態の機能を実現するソフトウェアのプログラムコードを記録したコンピュータ読み取り可能な記録媒体、すなわち記憶メディアを介して、例えばリーダ鍵交換装置やメンバ鍵交換装置のコンピュータ(CPU)が記憶メディアに格納されたプログラムコードを読み出し実行することによっても、本発明の目的は達成される。また、プログラムは、記録メディアを介さず、通信回線を通じて直接にコンピュータにロードし実行することもでき、これによっても同様に本発明の目的は達成される。
この場合、記憶メディアから読み出された又は通信回線を通じてロードし実行されたプログラムコード自体が前述の実施形態の機能を実現することになる。そして、そのプログラムコードを記憶した記憶メディアは本発明を構成する。
また、プログラムコードを供給するための記憶メディアとしては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、不揮発性のメモリカード、ROM、磁気テープ等を用いることができる。
この出願は、2007年12月7日に出願された日本出願特願2007−317634号を基礎とする優先権を主張し、その開示のすべてをここに取り込む。