(57)【特許請求の範囲】
【請求項１】
第１情報共有装置と第２情報共有装置とが情報を共有する情報共有方法であって、
前記第１情報共有装置で、任意値tを生成するステップと、
前記第１情報共有装置で、前記任意値tと巡回群Gの生成元gとを用い、出力情報T=gt∈Gを生成するステップと、
前記第１情報共有装置で、前記出力情報Tを出力するステップと、
前記第２情報共有装置で、任意値yを生成するステップと、
前記第２情報共有装置で、前記任意値yと前記生成元gとを用い、出力情報Y=gy∈Gを生成するステップと、
前記第２情報共有装置で、前記出力情報Yを出力するステップと、
前記第１情報共有装置で、前記出力情報Yの入力を受け付けるステップと、
前記第１情報共有装置で、前記第２情報共有装置の秘密情報bに対応する公開情報B=gb∈Gと、前記出力情報Yと、前記第１情報共有装置の秘密情報aと、前記任意値tとを用い、各演算式Vj（j=1,...,J、Jは２以上の整数）がそれぞれ表す共有情報Uj（j=1,...,J）を生成するステップと、
前記第２情報共有装置で、前記出力情報Tの入力を受け付けるステップと、
前記第２情報共有装置で、前記第１情報共有装置の秘密情報aに対応する公開情報A=ga∈Gと、前記出力情報Tと、前記第２情報共有装置の秘密情報bと、前記任意値yとを用い、各演算式Wj（j=1,...,J）がそれぞれ表す前記共有情報Uj（j=1,...,J）を生成するステップと、を有し、
前記演算式Vj（j=1,...,J）及び前記演算式Wj（j=1,...,J）は、それぞれ、前記巡回群Gでの演算を表し、
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、前記演算式VmとVnとが互いに相違し、前記演算式WmとWnとが互いに相違し、
前記共有情報Uj（j=1,...,J）は、それぞれ、r(j,0,0), r(j,0,1), r(j,1,0), r(j,1,1)に対してg(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)を満たし、
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、ベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立である、
ことを特徴とする情報共有方法。
【請求項２】
請求項１の情報共有方法であって、
前記演算式Vjは、Uj=Br(j,0,0)・a+r(j,1,0)・t・Yr(j,0,1)・a+r(j,1,1)・t又はそれに変形可能な式であり、
前記演算式Wjは、Uj=Ar(j,0,0)・b+r(j,0,1)・y・Tr(j,1,0)・b+r(j,1,1)・y又はそれに変形可能な式である、
ことを特徴とする情報共有方法。
【請求項３】
第１情報共有装置と第２情報共有装置とが情報を共有する情報共有方法であって、
前記第１情報共有装置で、任意値tを生成するステップと、
前記第１情報共有装置で、前記任意値tと巡回群G1の生成元g1とを用い、出力情報T=g1t∈G1を生成するステップと、
前記第１情報共有装置で、前記出力情報Tを出力するステップと、
前記第２情報共有装置で、任意値yを生成するステップと、
前記第２情報共有装置で、前記任意値yと前記生成元g2とを用い、出力情報Y=g2y∈G2を生成するステップと、
前記第２情報共有装置で、前記出力情報Yを出力するステップと、
前記第１情報共有装置で、前記出力情報Yの入力を受け付けるステップと、
前記第１情報共有装置で、前記第２情報共有装置の公開情報B=g2b∈G2と、前記出力情報Yと、秘密情報z及び前記第１情報共有装置の公開情報A=g1a∈G1に対応する前記第１情報共有装置の秘密情報C=Az∈G1と、g1zである公開情報P1及び／又はg2zである公開情報P2と、前記任意値tとを用い、各演算式Vj（j=1,...,J、Jは２以上の整数）がそれぞれ表す共有情報Uj（j=1,...,J）を生成するステップと、
前記第２情報共有装置で、前記出力情報Tの入力を受け付けるステップと、
前記第２情報共有装置で、前記第１情報共有装置の公開情報A=g1a∈G1と、前記出力情報Tと、前記秘密情報z及び前記公開情報Bに対応する前記第２情報共有装置の秘密情報D=Bz∈G2と、前記公開情報P1及び／又は前記公開情報P2と、前記任意値yとを用い、各演算式Wj（j=1,...,J）がそれぞれ表す前記共有情報Uj（j=1,...,J）を生成するステップと、を有し、
前記演算式Vj（j=1,...,J）及び前記演算式Wj（j=1,...,J）は、それぞれ、前記巡回群G1の元と前記巡回群G2の元とから巡回群GTの元を得る双線形写像e：G1×G2→GTを含み、
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、前記演算式VmとVnとが互いに相違し、前記演算式WmとWnとが互いに相違し、
前記共有情報Uj（j=1,...,J）は、それぞれ、r(j,0,0), r(j,0,1), r(j,1,0), r(j,1,1)に対してgTz・(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)∈GTを満たし、
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、ベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立である、
ことを特徴とする情報共有方法。
【請求項４】
請求項３の情報共有方法であって、
前記演算式Vjは、Uj=e(Cr(j,0,0)・P1r(j,1,0)・t,B)・e(Cr(j,0,1)・P1r(j,1,1)・t,Y)又はそれに変形可能な式であり、かつ、
前記演算式Wjは、Uj=e(A,Dr(j,0,0)・P2r(j,0,1)・y)・e(T,Dr(j,1,0)・P2r(j,1,1)・y)又はそれに変形可能な式である、
ことを特徴とする情報共有方法。
【請求項５】
請求項３又は４の情報共有方法であって、
G1=G2及びg1=g2であり、
前記第１情報共有装置で、Ytを共有情報UJ+1として生成するステップと、
前記第２情報共有装置で、Tyを前記共有情報UJ+1として生成するステップと、
を有する情報共有方法。
【請求項６】
請求項３又は４の情報共有方法であって、
前記第１情報共有装置で、前記任意値tと前記生成元g2とを用い、出力情報T2=g2t∈G2を生成するステップと、
前記第１情報共有装置で、前記出力情報T2を出力するステップと、
前記第２情報共有装置で、前記任意値yと前記生成元g1とを用い、出力情報Y1=g1y∈G2を生成するステップと、
前記第２情報共有装置で、前記出力情報Y1を出力するステップと、
前記第１情報共有装置で、Y1tを共有情報1UJ+1として生成するステップと、
前記第１情報共有装置で、Ytを共有情報2UJ+1として生成するステップと、
前記第２情報共有装置で、Tyを共有情報1UJ+1として生成するステップと、
前記第２情報共有装置で、T2yを共有情報2UJ+1として生成するステップと、
を有する情報共有方法。
【請求項７】
請求項１から６の何れかの情報共有方法であって、
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、すべてのι(ι=0,1)に対するベクトル(r(m,ι,0), r(m,ι,1))とベクトル(r(n,ι,0), r(n,ι,1))とが一次独立であり、かつ、少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、すべてのθ(θ=0,1)に対するベクトル(r(m,0,θ), r(m,1,θ))とベクトル(r(n,0,θ), r(n,1,θ))とが一次独立であり、かつ、
aとtとの線形結合をLAj(a,t)とし、bとyとの線形結合をLBj(b,y)とした場合における、すべてのj=1,...,Jについてr(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y=LAj(a,t)・LBj(b,y)を満たす、
ことを特徴とする情報共有方法。
【請求項８】
請求項１から６の何れかの情報共有方法であって、
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、すべてのι(ι=0,1)に対するベクトル(r(m,ι,0), r(m,ι,1))とベクトル(r(n,ι,0), r(n,ι,1))とが一次独立であり、かつ、少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、すべてのθ(θ=0,1)に対するベクトル(r(m,0,θ), r(m,1,θ))とベクトル(r(n,0,θ), r(n,1,θ))とが一次独立であり、かつ、
u0=a, v0=b, u1=t, v1=yとし、u0とu1との線形結合をLAj,ι,*(u0,u1)とし、v0とv1との線形結合をLBj,ι,*(v0,v1)とした場合における、すべてのι(ι=0,1)についてr(j,ι,0)・uι・v0+r(j,ι,1)・uι・v1=LAj,ι,*(u0,u1)・LBj,ι,*(v0,v1)を満たし、かつ、u0とu1との線形結合をLAj,*,θ(u0,u1)とし、v0とv1との線形結合をLBj,*,θ(v0,v1)とした場合における、すべてのθ(θ=0,1)についてr(j,0,θ)・u0・vθ+r(j,1,θ)・u1・vθ=LAj,*,θ(u0,u1)・LBj,*,θ(v0,v1)を満たす、
ことを特徴とする情報共有方法。
【請求項９】
請求項１から８の何れかの情報共有方法であって、
前記第１情報共有装置で、前記第１情報共有装置で得られた前記共有情報Uj（j=1,...,J）を含む情報を関数に入力して得られる鍵を生成するステップと、
前記第２情報共有装置で、前記第２情報共有装置で得られた前記共有情報Uj（j=1,...,J）を含む情報を前記関数に入力して得られる前記鍵を生成するステップと、
を有する情報共有方法。
【請求項１０】
他の装置と情報を共有する情報共有装置であって、
任意値tを生成する任意値生成部と、
前記任意値tと巡回群Gの生成元gとを用い、出力情報T=gt∈Gを生成する出力情報生成部と、
前記出力情報Tを出力する出力部と、
出力情報Yの入力を受け付ける入力部と、
前記第２情報共有装置の秘密情報bに対応する公開情報B=gb∈Gと、前記出力情報Yと、秘密情報aと、前記任意値tとを用い、各演算式Vj（j=1,...,J、Jは２以上の整数）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する共有情報生成部と、を有し、
前記演算式Vj（j=1,...,J）は、それぞれ前記巡回群Gでの演算を表し、
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、前記演算式VmとVnとが互いに相違し、
前記共有情報Uj（j=1,...,J）は、それぞれ、r(j,0,0), r(j,0,1), r(j,1,0), r(j,1,1)に対してg(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)を満たし、
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、ベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立である、
ことを特徴とする情報共有装置。
【請求項１１】
他の装置と情報を共有する情報共有装置であって、
任意値tを生成する任意値生成部と、
前記任意値tと巡回群G1の生成元g1とを用い、出力情報T=g1t∈G1を生成する出力情報生成部と、
前記出力情報Tを出力する出力部と、
前記出力情報Yの入力を受け付ける入力部と、
前記第２情報共有装置の公開情報B=g2b∈G2と、前記出力情報Yと、秘密情報z及び前記第１情報共有装置の公開情報A=g1a∈G1に対応する前記第１情報共有装置の秘密情報C=Az∈G1と、g1zである公開情報P1及び／又はg2zである公開情報P2と、前記任意値tとを用い、各演算式Vj（j=1,...,J、Jは２以上の整数）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する共有情報生成部と、を有し、
前記演算式Vj（j=1,...,J）は、それぞれ、前記巡回群G1の元と前記巡回群G2の元とから巡回群GTの元を得る双線形写像e：G1×G2→GTを含み、
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、前記演算式VmとVn（m,n∈{1,...,J},m≠n）とが互いに相違し、
前記共有情報Uj（j=1,...,J）は、それぞれ、r(j,0,0), r(j,0,1), r(j,1,0), r(j,1,1)に対してgTz・(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)∈GTを満たし、
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、ベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立である、
ことを特徴とする情報共有装置。
【請求項１２】
第１情報共有装置と第２情報共有装置とを有し、
前記第１情報共有装置は、
任意値tを生成する第１任意値生成部と、
前記任意値tと巡回群Gの生成元gとを用い、出力情報T=gt∈Gを生成する第１出力情報生成部と、
前記出力情報Tを出力する第１出力部と、を有し、
前記第２情報共有装置は、
任意値yを生成する第２任意値生成部と、
前記任意値yと前記生成元gとを用い、出力情報Y=gy∈Gを生成する第２出力情報生成部と、
前記出力情報Yを出力する第出力部と、を有し、
前記第１情報共有装置は、さらに、
前記出力情報Yの入力を受け付ける第１入力部と、
前記第２情報共有装置の秘密情報bに対応する公開情報B=gb∈Gと、前記出力情報Yと、前記第１情報共有装置の秘密情報aと、前記任意値tとを用い、各演算式Vj（j=1,...,J、Jは２以上の整数）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する第１共有情報生成部と、を有し、
前記第２情報共有装置は、さらに、
前記出力情報Tの入力を受け付ける第２入力部と、
前記第１情報共有装置の秘密情報aに対応する公開情報A=ga∈Gと、前記出力情報Tと、前記第２情報共有装置の秘密情報bと、前記任意値yとを用い、各演算式Wj（j=1,...,J）がそれぞれ表す前記共有情報Uj（j=1,...,J）を生成する第２共有情報生成部と、を有し、
前記演算式Vj（j=1,...,J）及び前記演算式Wj（j=1,...,J）は、それぞれ、前記巡回群Gでの演算を表し、
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、前記演算式VmとVnとが互いに相違し、前記演算式WmとWnとが互いに相違し、
前記共有情報Uj（j=1,...,J）は、それぞれ、r(j,0,0), r(j,0,1), r(j,1,0), r(j,1,1)に対してg(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)を満たし、
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、ベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立である、
ことを特徴とする情報共有システム。
【請求項１３】
第１情報共有装置と第２情報共有装置とを有し、
前記第１情報共有装置は、
任意値tを生成する第１任意値生成部と、
前記任意値tと巡回群G1の生成元g1とを用い、出力情報T=g1t∈G1を生成する第１出力情報生成部と、
前記出力情報Tを出力する第１出力部と、を有し、
前記第２情報共有装置は、
任意値yを生成する第２任意値生成部と、
前記任意値yと前記生成元g2とを用い、出力情報Y=g2y∈G2を生成する第２出力情報生成部と、
前記出力情報Yを出力する第２出力部と、を有し、
前記第１情報共有装置は、さらに、
前記出力情報Yの入力を受け付ける第１入力部と、
前記第２情報共有装置の公開情報B=g2b∈G2と、前記出力情報Yと、秘密情報z及び前記第１情報共有装置の公開情報A=g1a∈G1に対応する前記第１情報共有装置の秘密情報C=Az∈G1と、g1zである公開情報P1及び／又はg2zである公開情報P2と、前記任意値tとを用い、各演算式Vj（j=1,...,J、Jは２以上の整数）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する第１共有情報生成部と、を有し、
前記第２情報共有装置は、さらに、
前記出力情報Tの入力を受け付ける第２入力部と、
前記第１情報共有装置の公開情報A=g1a∈G1と、前記出力情報Tと、前記秘密情報z及び前記公開情報Bに対応する前記第２情報共有装置の秘密情報D=Bz∈G2と、前記公開情報P1及び／又は前記公開情報P2と、前記任意値yとを用い、各演算式Wj（j=1,...,J）がそれぞれ表す前記共有情報Uj（j=1,...,J）を生成する第２共有情報生成部と、を有し、
前記演算式Vj（j=1,...,J）及び前記演算式Wj（j=1,...,J）は、それぞれ、前記巡回群G1の元と前記巡回群G2の元とから巡回群GTの元を得る双線形写像e：G1×G2→GTを含み、
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、前記演算式VmとVnとが互いに相違し、前記演算式WmとWnとが互いに相違し、
前記共有情報Uj（j=1,...,J）は、それぞれ、r(j,0,0), r(j,0,1), r(j,1,0), r(j,1,1)に対してgTz・(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)∈GTを満たし、
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、ベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立である、
ことを特徴とする情報共有システム。
【請求項１４】
請求項１０又は１１の情報共有装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報セキュリティ技術の応用技術に関し、特に、装置間で認証された情報を共有する情報共有技術に関する。
【背景技術】
【０００２】
従来の鍵交換方式の一つにDiffie-Hellman鍵交換方式がある。まず、従来のDiffie-Hellman鍵交換方式を用い、第１情報共有装置と第２情報共有装置との間で鍵交換を行う方法を説明する。
【０００３】
＜基本方式＞
基本的なDiffie-Hellman鍵交換方式では、以下のように鍵交換が行われる。
［公開パラメータ］
Gを素数位数qの巡回群とし、gを巡回群Gの生成元とする。巡回群Gと生成元gとは、第１情報共有装置と第２情報共有装置とに公開される。
［鍵交換］
第１情報共有装置は、ランダムな任意値t∈Zqを生成し、T=gt∈Gを第２情報共有装置に送り、第２情報共有装置は、ランダムな任意値y∈Zqを生成し、Y=gy∈Gを第１情報共有装置に送る。なお、Zqはqを法とする剰余類の完全代表系を要素とする剰余環を表す。第１情報共有装置は鍵K=Yt∈Gを計算し、第２情報共有装置は鍵K=Ty∈Gを計算する。ここで、巡回群Gは可換群であるからYt=gy・t=gt・y=Tyとなり、第１情報共有装置と第２情報共有装置とで同一の鍵Kが共有される。
【０００４】
しかしながら、上記の基本方式は中間者攻撃（man-in-the-middle attack）に弱いという問題がある。すなわち、攻撃者の装置ADVが第２情報共有装置に成りすまし、第１情報共有装置との間で上述した第２情報共有装置と同じ処理を実行した場合、攻撃者の装置ADVは第１情報共有装置との間で同一の鍵K'を共有できてしまう。同様に、攻撃者の装置ADVが第１情報共有装置に成りすまし、第２情報共有装置との間で上述した第１情報共有装置と同じ処理を実行した場合、攻撃者の装置ADVは第２情報共有装置との間で同一の鍵K''を共有できてしまう（中間者攻撃１）。
【０００５】
＜改良方式１＞
これに対し、以下のようにすれば中間者攻撃１の問題を解決できる。
［公開パラメータ］
Gを素数位数qの巡回群とし、gを巡回群Gの生成元とする。巡回群Gと生成元gとは、第１情報共有装置と第２情報共有装置とに公開される。
［鍵交換］
第１情報共有装置は、自らの秘密鍵a∈Zqを用い、A=ga∈Gを第２情報共有装置に送る。第２情報共有装置は、自らの秘密鍵b∈Zqを用い、B=gb∈Gを第１情報共有装置に送る。第１情報共有装置は鍵K=Ba∈Gを計算し、第２情報共有装置は鍵K=Ab∈Gを計算する。ここで、巡回群Gは可換群であるからBa=gb・a=ga・b=Abとなり、第１情報共有装置と第２情報共有装置とで同一の鍵Kが共有される。また、攻撃者の装置ADVは、第１情報共有装置の秘密鍵aも第２情報共有装置の秘密鍵bも知らないため、上述の中間者攻撃１を行うことができない。
【０００６】
しかしながら、改良方式１では、秘密鍵を変更しない限り、第１情報共有装置と第２情報共有装置との間で上記の処理を行って共有される鍵が毎回同一となってしまい、高い安全性を確保できない。
【０００７】
＜改良方式２＞
これに対し、以下のような方式が想定できる。
［公開パラメータ］
Gを素数位数qの巡回群とし、gを巡回群Gの生成元とする。巡回群Gと生成元gとは、第１情報共有装置と第２情報共有装置とに公開される。
［鍵交換］
第１情報共有装置は、ランダムな任意値t∈Zqを生成し、T=gt∈Gを第２情報共有装置に送り、第２情報共有装置は、ランダムな任意値y∈Zqを生成し、Y=gy∈Gを第１情報共有装置に送る。第１情報共有装置は、自らの秘密鍵a∈Zqを用い、鍵K=(Y・B)(t+a)∈Gを計算し、第２情報共有装置は、自らの秘密鍵b∈Zqを用い、鍵K=(T・A)(y+b)∈Gを計算する。ここで、巡回群Gは可換群であるから(Y・B)(t+a)=g(y+b)・(t+a)=g(t+a)・(y+b)=(T・A)(y+b)となり、第１情報共有装置と第２情報共有装置とで同一の鍵Kが共有される。また、任意値t,yに応じて鍵Kの値が異なるため、第１情報共有装置と第２情報共有装置との間で上記の処理を行うたびに共有される鍵Kが変化する。さらに、攻撃者の装置ADVは、第１情報共有装置の秘密鍵aも第２情報共有装置の秘密鍵bも知らないため、上述の中間者攻撃１を行うことができない。
【０００８】
しかしながら、改良方式２は、以下のような中間者攻撃（中間者攻撃２）に弱いという問題がある。
第１情報共有装置に成りすます攻撃者の装置ADVは、まず、ランダムな任意値t'∈Zqを生成し、T'=gt'/A∈Gを計算し、T'を第１情報共有装置が出力したTとして偽って第２情報共有装置に送る。第２情報共有装置は、ランダムな任意値y∈Zqを生成し、Y=gy∈Gを攻撃者の装置ADVに送る。攻撃者の装置ADVは鍵K=(Y・B)t'∈Gを計算し、第２情報共有装置は、自らの秘密鍵b∈Zqを用い、鍵K=(T'・A)(y+b)∈Gを計算する。ここで、攻撃者の装置ADVが計算する鍵KはK=(Y・B)t'=g(y+b)・t'∈Gを満たす。一方、第２情報共有装置が計算する鍵KはK=(T'・A)(y+b)=((gt'/A)・A)(y+b)=gt'・(y+b)∈G満たす。巡回群Gは可換群であるから、攻撃者の装置ADVが計算する鍵Kと第２情報共有装置が計算する鍵Kとが一致する。すなわち、攻撃者の装置ADVは、第１情報共有装置の秘密鍵aを持たないにもかかわらず、第２情報共有装置と同一の鍵Kを共有でき、中間者攻撃が成立する。これは、攻撃者の装置ADVがT'=gt'/A∈Gを第２情報共有装置に送ることで、第２情報共有装置が鍵Kを計算する際に第１情報共有装置の公開鍵Aの成分が打ち消されることになることに基づく。同様に、攻撃者の装置ADVが第２情報共有装置に成りすまし、第１情報共有装置と同一の鍵Kを共有することも可能である。
【０００９】
＜改良方式３＞
これに対し、以下のような方式が存在する（非特許文献１参照）。
［公開パラメータ］
Gを素数位数qの巡回群とし、gを巡回群Gの生成元とする。巡回群Gの任意の元を0以上q1/2以下の整数に写すハッシュ関数をF:G→[0, q1/2]とする。任意の値をLビットのビット列に写すハッシュ関数をHとする。Lは正整数であり、qをビット表現した場合のビット長をLとする。第１情報共有装置の識別子をIDAとし、第２情報共有装置の識別子をIDBとする。巡回群Gと生成元gとハッシュ関数F, Hと識別子IDA, IDBとは、第１情報共有装置と第２情報共有装置とに公開される。
【００１０】
［鍵交換］
第１情報共有装置は、ランダムな任意値t∈Zqを生成し、T=gt∈Gを第２情報共有装置に送り、第２情報共有装置は、ランダムな任意値y∈Zqを生成し、Y=gy∈Gを第１情報共有装置に送る。
第１情報共有装置は、d=F(T)とe=F(Y)とを計算し、自らの秘密鍵a∈Zqを用いて共有情報U1=(Y・Be)(t+a)∈Gと共有情報U2=(Y・B)(t+a・d)∈Gとを計算し、鍵K=H(U1, U2, IDA, IDB, T, Y)を計算する。第２情報共有装置は、d=F(T)とe=F(Y)とを計算し、自らの秘密鍵b∈Zqを用いて共有情報U1=(T・A)(y+b・e)∈Gと共有情報U2=(T・Ad)(y+b)∈Gとを計算し、鍵K=H(U1, U2, IDA, IDB, T, Y)を計算する。
【００１１】
ここで、巡回群Gは可換群であるから、(Y・Be)(t+a)=g(y+b・e)・(t+a)=g(t+a)・(y+b・e)=(T・A)(y+b・e)となり、(Y・B)(t+a・d)=g(y+b)・(t+a・d)=g(t+a・d)・(y+b)=(T・Ad)(y+b)となり、第１情報共有装置と第２情報共有装置とで同一の鍵Kが共有される。また、任意値t,yに応じて鍵Kの値が異なるため、第１情報共有装置と第２情報共有装置との間で上記の処理を行うたびに共有される鍵Kが変化する。さらに、攻撃者の装置ADVは、第１情報共有装置の秘密鍵aも第２情報共有装置の秘密鍵bも知らないため、上述の中間者攻撃１を行うことができない。さらに、第１情報共有装置の秘密鍵aを知らない攻撃者の装置ADVは、第１情報共有装置に成りすましたとしても、第２情報共有装置が共有情報U1=(T・A)(y+b・e)∈Gと共有情報U2=(T・Ad)(y+b)∈Gとを計算する際に、これら両方について第１情報共有装置の公開鍵Aの成分を打ち消すことになるT'をTとして生成することができない。同様に、第２情報共有装置の秘密鍵bを知らない攻撃者の装置ADVは、第２情報共有装置に成りすましたとしても、第１情報共有装置が共有情報U1=(Y・Be)(t+a)∈Gと共有情報U2=(Y・B)(t+a・d)∈Gとを計算する際に、これら両方について第２情報共有装置の公開鍵Bの成分を打ち消すことになるY'をYとして生成することができない。よって、攻撃者の装置ADVは、上述の中間者攻撃２を行うことができない。
【先行技術文献】
【非特許文献】
【００１２】
【非特許文献１】Berkant Ustaoglu, "Comparing SessionStateReveal and EphemeralKeyReveal for Diffie-Hellman protocols", Pieprzyk, J, P., Zhang, F. (eds.) ProvSec 2009, LNCS, vol. 5848, pp. 183-197, Springer, Heidelberg (2009)
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかし、非特許文献１の方式は、共有情報U1及びU2を計算するために、演算量の大きなハッシュ関数Fを用いてd=F(T)とe=F(Y)とを計算する必要がある。
本発明はこのような点に鑑みてなされたものであり、高い安全性を確保しつつ、低い演算量で共有情報Uj（j=1,...,J）を共有することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の第１態様では、第１情報共有装置で任意値tを生成し、任意値tと巡回群Gの生成元gとを用い、出力情報T=gt∈Gを生成して出力する。第２情報共有装置で任意値yを生成し、任意値yと生成元gとを用い、出力情報Y=gy∈Gを生成して出力する。第１情報共有装置で、出力情報Yの入力を受け付け、第２情報共有装置の秘密情報bに対応する公開情報B=gb∈Gと、出力情報Yと、第１情報共有装置の秘密情報aと、任意値tとを用い、各演算式Vj（j=1,...,J、Jは２以上の整数）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する。第２情報共有装置で、出力情報Tの入力を受け付け、第１情報共有装置の秘密情報aに対応する公開情報A=ga∈Gと、出力情報Tと、第２情報共有装置の秘密情報bと、任意値yとを用い、各演算式Wj（j=1,...,J）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する。ここで演算式Vj（j=1,...,J）及び演算式Wj（j=1,...,J）は、それぞれ、巡回群Gでの演算を表わす。少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、演算式VmとVnとが互いに相違し、演算式WmとWnとが互いに相違する。共有情報Uj（j=1,...,J）は、それぞれ、係数r(j,0,0), r(j,0,1), r(j,1,0), r(j,1,1)に対してg(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)を満たし、少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、ベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立である。
【００１５】
本発明の第２態様では、第１情報共有装置で、任意値tを生成し、任意値tと巡回群G1の生成元g1とを用い、出力情報T=g1t∈G1を生成して出力する。第２情報共有装置で、任意値yを生成し、任意値yと生成元g2とを用い、出力情報Y=g2y∈G2を生成して出力する。第１情報共有装置で、出力情報Yの入力を受け付け、第２情報共有装置の公開情報B=g2b∈G2と、出力情報Yと、秘密情報z及び第１情報共有装置の公開情報A=g1a∈G1に対応する第１情報共有装置の秘密情報C=Az∈G1と、g1zである公開情報P1及び／又はg2zである公開情報P2と、任意値tとを用い、各演算式Vj（j=1,...,J、Jは２以上の整数）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する。第２情報共有装置で、出力情報Tの入力を受け付け、第１情報共有装置の公開情報A=g1a∈G1と、出力情報Tと、秘密情報z及び公開情報Bに対応する第２情報共有装置の秘密情報D=Bz∈G2と、公開情報P1及び／又は公開情報P2と、任意値yとを用い、各演算式Wj（j=1,...,J）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する。ここで演算式Vj（j=1,...,J）及び演算式Wj（j=1,...,J）は、それぞれ、巡回群G1の元と巡回群G2の元とから巡回群GTの元を得る双線形写像e：G1×G2→GTを含む。少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、演算式VmとVnとが互いに相違し、演算式WmとWnとが互いに相違する。共有情報Uj（j=1,...,J）は、それぞれ、係数r(j,0,0), r(j,0,1), r(j,1,0), r(j,1,1)に対してgTz・(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)∈GTを満たし、少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、ベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立である。
【発明の効果】
【００１６】
本発明では、高い安全性を確保しつつ、低い演算量で共有情報Uj（j=1,...,J）を共有することができる。
【図面の簡単な説明】
【００１７】
【図１】図１は、第１実施形態の機能構成を説明するための図である。
【図２】図２Ａ及び図２Ｂは、第１実施形態の情報共有方法を説明するための図である。
【図３】図３は、第２実施形態の機能構成を説明するための図である。
【図４】図４Ａ及び図４Ｂは、第２実施形態の情報共有方法を説明するための図である。
【図５】図５は、第２実施形態の変形例の機能構成を説明するための図である。
【図６】図６Ａ及び図６Ｂは、第２実施形態の変形例の情報共有方法を説明するための図である。
【発明を実施するための形態】
【００１８】
図面を参照して本発明の実施形態を説明する。
〔定義〕
まず、本形態で使用する用語及び記号を定義する。
Zq：Zqはqを法とする剰余環を表す。Zqの要素の一例は、qを法とする剰余類の完全代表系である。qを法とする剰余類の完全代表系の一例は{0,...,q-1}である。なお、qは正整数であり、qをビット表現した場合のビット長を例えばL（Lは正整数）とする。安全性の面から位数qは素数であることが望ましい。また、位数qが素数でない場合には、位数qの最大因数のビット長がL以上であることが望ましい。素数であるか否かが不明な正整数をqとして用いてもよい。
【００１９】
G,G1,G2,GT：G,G1,G2,GTは巡回群を表す。実施形態の巡回群G,G1,G2は、例えば、位数qの巡回群である。巡回群G,G1,G2としては、例えば、楕円曲線上の有理点のなす群や有限体の乗法群などを用いることができる。楕円曲線上の有理点のなす群をコンピュータ上で実現するための具体的方法には様々なものが存在し、実際、楕円曲線上の有理点のなす群で構成され、コンピュータ上で実装可能な様々な暗号方式が存在する。巡回群GTの具体例は、位数qの有限体Fqを基礎体とする拡大体を構成する有限集合である。その一例は、有限体Fqの代数閉包における１のｐ乗根からなる有限集合である。楕円曲線上の有理点のなす群や有限体の乗法群などを巡回群GTとしてもよい。G1=G2であってもよいし、G1≠G2であってもよい。
【００２０】
g,g1,g2,gT：g,g1,g2,gTは巡回群G,G1,G2,GTの生成元を表す。g1=g2であってもよいし、g1≠g2であってもよい。
【００２１】
巡回群Gで定義された演算：巡回群Gの元は「巡回群Gで定義された演算」について群をなす。例えば、巡回群Gが楕円曲線上の有理点のなす群である場合、巡回群Gで定義された演算は楕円曲線上での楕円加算などである。また、例えば、巡回群Gが有限体の乗法群である場合、「巡回群Gでの演算」は、qを法とした剰余乗算などである。なお、実施形態では、巡回群Gで定義された演算を乗法的に表現する。すなわち、α∈Zq及びβ∈Gに対するβα∈Gは、β∈Gに対して巡回群Gで定義された演算をα回施すことを意味し、β1, β2∈Gに対するβ1・β2∈Gは、β1, β2∈G1とを被演算子として巡回群Gで定義された演算を行うことを意味する。例えば、巡回群Gが楕円曲線上の有理点のなす群である場合、βα∈Gは、楕円曲線上の点βを楕円曲線上でα倍する楕円スカラー倍演算を表し、β1・β2∈Gは、楕円曲線上の点β1と点β2とを楕円曲線上で加算する楕円加算演算を表す。また、例えば、巡回群Gが有限体の乗法群である場合、βα∈Gは、βを整数とみなした場合のβα mod qの演算を表し、β1・β2∈Gは、β1及びβ2を整数とみなした場合のβ1・β2 mod qの演算を表す。
【００２２】
巡回群Gでの演算：「巡回群Gでの演算」は「巡回群Gで定義された演算」を用いて巡回群G上で実行可能な演算を表す。例えば、巡回群Gが楕円曲線上の有理点のなす群である場合、「巡回群Gでの演算」は、楕円曲線上での楕円加算、楕円スカラー倍算、逆元演算、又は、それらの少なくとも一部の組み合わせた演算を表す。また、例えば、巡回群Gが有限体の乗法群である場合、「巡回群Gでの演算」は、qを法とした剰余乗算、べき乗剰余、逆元演算、又は、それらの少なくとも一部の組み合わせた演算を表す。巡回群G1,G2,GTについても同様である。
【００２３】
H：Hは任意の値αをLビットのビット列に写すハッシュ関数を表す。任意の値αの例は任意長のビット列{0,1}*や巡回群の元などである。また、H(α1,...,αn)は、α1,...,αnに対して定まるハッシュ値を表す。例えば、α1,...,αnのそれぞれがすべてビット列なのであれば、α1,...,αnのビット結合α1|...|αnをSHA-1などの公知のハッシュ関数に入力して得られる値をH(α1,...,αn)∈{0,1}Lとする。また、例えば、α1,...,αnの少なくとも一部がビット列以外の値（例えば巡回群Gの元）なのであれば、α1,...,αnの各要素をビット列に写像した値β1,...,βnのビット結合β1|...|βnのビット結合を、SHA-1などの公知のハッシュ関数に入力して得られる値をH(α1,...,αn)∈{0,1}Lとする。このようなハッシュ関数Hは、SHA-1などの公知のハッシュ関数を用いて容易に構成できる。
【００２４】
H1,H2：H1は任意の値を巡回群G1に写すハッシュ関数を表し、H1(α)∈G1はαに対して定まるハッシュ値を表す。H2は任意の値を巡回群G2に写すハッシュ関数を表し、H2(α)∈G2はαに対して定まるハッシュ値を表す。αの例は任意長のビット列{0,1}*である。このようなハッシュ関数H1,H2は、SHA-1などの公知のハッシュ関数を用いて容易に構成できる。
【００２５】
pj(u0,u1,v0,v1)：pj(u0,u1,v0,v1)は、u0,u1,v0,v1∈Zqを不定元とする剰余環Zq上で定義された多項式pj(u0,u1,v0,v1)∈Zq[u0,u1,v0,v1](j=1,...,J, Jは2以上の整数)である。実施形態では以下のように定義される。
【数１】
0005449214.tif 000002
係数r(j,0,0), r(j,0,1), r(j,1,0), r(j,1,1)∈Zqは定数であってもよいし、短期公開鍵、公開鍵、ユーザＩＤ、公開パラメータなどに依存して値が決まるものであってもよい。
【００２６】
e：eは巡回群G1の元と巡回群G2の元とから巡回群GTの元を得る双線形写像e：G1×G2→GTを表わす。双線形写像eは、以下の性質を満たす。
［双線形性］すべてのΩ1∈G1，Ω2∈G2及びν，κ∈Zqについて以下の関係を満たす。
e(Ω1ν,Ω2κ)=e(Ω1,Ω2)ν・κ
［非退化性］すべての
Ω1∈G1，Ω2∈G2
を巡回群GTの単位元に写す写像ではない。
［計算可能性］あらゆるΩ1∈G1，Ω2∈G2についてe(Ω1,Ω2)を効率的に計算するアルゴリズムが存在する。
双線形写像eの具体例は、WeilペアリングやTateペアリングなどのペアリング演算のための関数やアルゴリズムである。
【００２７】
〔第１実施形態〕
＜原理＞
第１実施形態の原理を説明する。第１実施形態では、第１情報共有装置で任意値tを生成し、任意値tと巡回群Gの生成元gとを用い、出力情報T=gt∈Gを生成して出力する。第２情報共有装置で任意値yを生成し、任意値yと生成元gとを用い、出力情報Y=gy∈Gを生成して出力する。第１情報共有装置で、出力情報Yの入力を受け付け、第２情報共有装置の秘密情報bに対応する公開情報B=gb∈Gと、出力情報Yと、第１情報共有装置の秘密情報aと、任意値tとを用い、各演算式Vj（j=1,...,J、Jは２以上の整数）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する。第２情報共有装置で、出力情報Tの入力を受け付け、第１情報共有装置の秘密情報aに対応する公開情報A=ga∈Gと、出力情報Tと、第２情報共有装置の秘密情報bと、任意値yとを用い、各演算式Wj（j=1,...,J）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する。
【００２８】
本形態の演算式Vj（j=1,...,J）及び演算式Wj（j=1,...,J）は、それぞれ、巡回群Gでの演算を表わす。少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、演算式VmとVnとが互いに相違し、演算式WmとWnとが互いに相違する。共有情報Uj（j=1,...,J）は、それぞれ、r(j,0,0), r(j,0,1), r(j,1,0), r(j,1,1)に対してg(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)を満たし、少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、ベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立である。すなわち、δm・(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))+δn・(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))=(0, 0, 0, 0)を満たすのはδm=δn=0である場合に限られる。
【００２９】
ここで、少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、ベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立である場合、攻撃者の装置ADVは、第２情報共有装置が共有情報Uj（j=1,...,J）を計算する際に、それらのすべてについて第１情報共有装置の公開情報A=ga∈Gの成分を打ち消すことになるT'をTとして生成するとともに、第１情報共有装置が共有情報Uj（j=1,...,J）を計算する際に、それらのすべてについて第２情報共有装置の公開情報B=gb∈Gの成分を打ち消すことになるY'をYとして生成することができない。すなわち、攻撃者の装置ADVは、第１情報共有装置と第２情報共有装置との両方に成りすまして中間者攻撃を行うことができない。また、本形態では、共有情報Uj（j=1,...,J）の計算のために演算量の大きなハッシュ関数Fを用いる必要はない。これにより、本形態では、高い安全性を確保しつつ、第１情報共有装置と第２情報共有装置とが低い演算量で共有情報を共有できる。
【００３０】
また、第１情報共有装置が、共有情報Uj（j=1,...,J）を含む情報を関数に入力して得られる鍵を生成し、第２情報共有装置が、共有情報Uj（j=1,...,J）を含む情報を当該関数に入力して得られる鍵を生成することで、第１情報共有装置と第２情報共有装置とで同一の鍵を共有できる。本形態では、任意値t,yに応じて鍵の値が異なるため、第１情報共有装置と第２情報共有装置との間で上記の処理を行うたびに共有される鍵Kが変化する。なお、関数の例は前述のハッシュ関数Hである。
【００３１】
また好ましくは、少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、すべてのι(ι=0,1)に対するベクトル(r(m,ι,0), r(m,ι,1))とベクトル(r(n,ι,0), r(n,ι,1))とが一次独立であり、かつ、少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、すべてのθ(θ=0,1)に対するベクトル(r(m,0,θ), r(m,1,θ))とベクトル(r(n,0,θ), r(n,1,θ))とが一次独立であり、かつ、aとtとの線形結合をLAj(a,t)とし、bとyとの線形結合をLBj(b,y)とした場合における、すべてのj=1,...,Jについてr(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y=LAj(a,t)・LBj(b,y)を満たす（条件１）。これにより高い安全性を確保できる。
【００３２】
また好ましくは、少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、すべてのι(ι=0,1)に対するベクトル(r(m,ι,0), r(m,ι,1))とベクトル(r(n,ι,0), r(n,ι,1))とが一次独立であり、かつ、少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、すべてのθ(θ=0,1)に対するベクトル(r(m,0,θ), r(m,1,θ))とベクトル(r(n,0,θ), r(n,1,θ))とが一次独立であり、かつ、u0=a, v0=b, u1=t, v1=yとし、u0とu1との線形結合をLAj,ι,*(u0,u1)とし、v0とv1との線形結合をLBj,ι,*(v0,v1)とした場合における、すべてのι(ι=0,1)についてr(j,ι,0)・uι・v0+r(j,ι,1)・uι・v1=LAj,ι,*(u0,u1)・LBj,ι,*(v0,v1)を満たし、かつ、u0とu1との線形結合をLAj,*,θ(u0,u1)とし、v0とv1との線形結合をLBj,*,θ(v0,v1)とした場合における、すべてのθ(θ=0,1)についてr(j,0,θ)・u0・vθ+r(j,1,θ)・u1・vθ=LAj,*,θ(u0,u1)・LBj,*,θ(v0,v1)を満たす（条件２）。これにより高い安全性を確保できる。
【００３３】
＜構成＞
第１実施形態の構成を例示する。図１に例示するように、第１実施形態の情報共有システム１は、情報共有装置１１０と情報共有装置１２０とを有する。
情報共有装置１１０は、記憶部１１１と入力部１１２と出力部１１３と制御部１１４と任意値生成部１１５と出力情報生成部１１６と共有情報生成部１１７と鍵生成部１１８とを有する。また、情報共有装置１２０は、記憶部１２１と入力部１２２と出力部１２３と制御部１２４と任意値生成部１２５と出力情報生成部１２６と共有情報生成部１２７と鍵生成部１２８とを有する。
【００３４】
情報共有装置１１０，１２０は、CPU(central processing unit)、RAM(random-access memory)、ROM(read-only memory)などからなる公知又は専用のコンピュータと特別なプログラムとを有する特別な装置である。特別なプログラムはコンピュータのCPUに読み込まれ、CPUが特別なプログラムを実行することで、情報共有装置１１０，１２０が構築される。また、特別なプログラムだけではなく汎用ルーチンなどの汎用プログラムもCPUに読み込まれ、CPUが特別なプログラムと汎用プログラムとを実行することで情報共有装置１１０，１２０が構築されてもよい。
【００３５】
記憶部１１１，１２１は、例えば、RAM、キャッシュメモリ、レジスタ、ハードディスク装置等の補助記憶装置、又は、それらの少なくとも一部を結合した記憶領域などである。入力部１１２，１２２及び出力部１１３，１２３は、例えば、特別なプログラムが読み込まれたCPUの制御のもと駆動する通信装置や入出力インタフェースなどである。制御部１１４，１２４、任意値生成部１１５，１２５、出力情報生成部１１６，１２６、共有情報生成部１１７，１２７、及び鍵生成部１１８，１２８は、例えば、特別なプログラムが読み込まれたCPUである。なお、制御部１１４，１２４、任意値生成部１１５，１２５、出力情報生成部１１６，１２６、共有情報生成部１１７，１２７、及び鍵生成部１１８，１２８などの処理部の少なくとも一部が集積回路などのハードウェアで構成されていてもよい。
なお、情報共有装置１１０，１２０は、それぞれ、制御部１１４，１２４の制御のもと各処理を実行する。また、各演算過程で得られるデータは記憶部１１１，１２１に格納され、必要に応じて他の演算に用いられる。
【００３６】
＜処理＞
次に、第１実施形態の処理を例示する。
［前処理］
システム管理者などによって位数q、剰余環Zq、巡回群G、生成元g、ハッシュ関数H、第１情報共有装置１１０の秘密鍵（秘密情報）a∈Zq及び公開鍵（公開情報）A=ga∈G、第２情報共有装置１２０の秘密鍵（秘密情報）b∈Zq及び公開鍵（公開情報）B=gb∈Gが定められる。秘密鍵a及び公開鍵A,Bは第１情報共有装置１１０の記憶部１１１に格納され、秘密鍵bは第２情報共有装置１２０の記憶部１２１に格納される。また、任意値生成部１１５，１２５は、剰余環Zqの元を生成するように構成され、出力情報生成部１１６，１２６は、生成元gを用いて巡回群G上の演算が可能なように構成され、共有情報生成部１１７，２１７は、巡回群G上の演算が可能なように構成され、鍵生成部１１８，１２８は、ハッシュ関数Hを用いたハッシュ演算が可能なように構成される。
【００３７】
［鍵交換］
次に、図２Ａ及び図２Ｂを用い、第１実施形態の鍵交換処理を説明する。
第１情報共有装置１１０（図１）の任意値生成部１１５がランダムな短期秘密鍵（任意値）tを以下の式(1)のように生成し、生成した短期秘密鍵tを記憶部１１１に格納する（ステップＳ１１１）。
t∈Zq  …(1)
例えば、任意値生成部１１５は、ＳＨＡ-１等の公知のハッシュ関数を用いて構成される、計算量理論に基づく擬似乱数生成アルゴリズム等を用いて発生させた擬似乱数を用いて短期秘密鍵t∈Zqを生成する。
【００３８】
第１情報共有装置１１０の出力情報生成部１１６は、記憶部１１１から短期秘密鍵tを読み出し、短期秘密鍵tと巡回群Gの生成元gとを用い、出力情報Tを以下の式(2)のように生成し、生成した出力情報Tを記憶部１１１に格納する（ステップＳ１１２）。
T=gt∈G  …(2)
記憶部１１１に格納された公開鍵A,B及び出力情報Tは出力部１１２に送られ、出力部１１２は(A,B,T)を出力する（ステップＳ１１３）。出力された(A,B,T)は、ネットワークや可搬型記録媒体などを介して第２情報共有装置１２０に送られる。第２情報共有装置１２０の入力部１２２は(A,B,T)の入力を受け付け、(A,B,T)は記憶部１２１に格納される（ステップＳ１２１）。
【００３９】
第２情報共有装置１２０の任意値生成部１２５がランダムな短期秘密鍵（任意値）yを以下の式(3)のように生成し、生成した短期秘密鍵yを記憶部１２１に格納する。
y∈Zq  …(3)
例えば、任意値生成部１２５は、ＳＨＡ-１等の公知のハッシュ関数を用いて構成される、計算量理論に基づく擬似乱数生成アルゴリズム等を用いて発生させた擬似乱数を用いて短期秘密鍵y∈Zqを生成する（ステップＳ１２２）。
【００４０】
第２情報共有装置１２０の出力情報生成部１２６は、記憶部１２１から短期秘密鍵yを読み出し、短期秘密鍵yと巡回群Gの生成元gとを用い、出力情報Yを以下の式(4)のように生成し、生成した出力情報Yを記憶部１２１に格納する（ステップＳ１２３）。
Y=gy∈G  …(4)
記憶部１２１に格納された公開鍵A,B、出力情報T及び出力情報Yは出力部１２３に送られ、出力部１２３は(A,B,T,Y)を出力する（ステップＳ１２４）。出力された(A,B,T,Y)は、ネットワークや可搬型記録媒体などを介して第１情報共有装置１１０に送られる。第１情報共有装置１１０の入力部１１２は(A,B,T,Y)の入力を受け付け、(A,B,T,Y)は記憶部１１１に格納される（ステップＳ１１４）。
【００４１】
第１情報共有装置１１０の共有情報生成部１１７は、記憶部１１１から出力情報Yと公開鍵Bと秘密鍵aと短期秘密鍵tとを読み込む。共有情報生成部１１７は、これらを用いて各演算式Vj（j=1,...,J、Jは２以上の整数）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する。共有情報Uj（j=1,...,J）は、それぞれ、r(j,0,0), r(j,0,1), r(j,1,0), r(j,1,1)に対してg(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)を満たす。本形態の演算式Vjは巡回群Gでの演算を表し、少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、演算式VmとVnとが互いに相違する。本形態の演算式Vj（j=1,...,J）の例は、以下の式(5)又は式(5)に変形可能な式である。
Uj=Br(j,0,0)・a+r(j,1,0)・t・Yr(j,0,1)・a+r(j,1,1)・t  …(5)
式(5)に変形可能な式の例は以下の式(6)-(8)などである。
Uj=Br(j,1,0)・t+r(j,0,0)・a・Yr(j,1,1)・t+r(j,0,1)・a  …(6)
Uj=Ba・r(j,0,0)+t・r(j,1,0)・Ya・r(j,0,1)+t・r(j,1,1)  …(7)
Uj=Yr(j,0,1)・a+r(j,1,1)・t・Br(j,0,0)・a+r(j,1,0)・t  …(8)
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、ベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立である。好ましくは前述の条件１又は条件２を満たす。生成された共有情報Uj（j=1,...,J）は記憶部１１１に格納される（ステップＳ１１５）。
【００４２】
第１情報共有装置１１０の鍵生成部１１８が、記憶部１１１から共有情報Uj（j=1,...,J）と公開鍵A,Bと出力情報T,Yとを読み込み、これらを含む情報をハッシュ関数Hに入力し、鍵
K=H(U1,...,UJ, A, B, T, Y)  …(9)
を生成し、生成した鍵Kを出力する（ステップＳ１１６）。
【００４３】
第２情報共有装置１２０の共有情報生成部１２７は、記憶部１２１から共有情報Uj（j=1,...,J）と公開鍵A,Bと出力情報T,Yとを読み込む。共有情報生成部１２７は、これらを用いて各演算式Wj（j=1,...,J）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する。共有情報Uj（j=1,...,J）は、それぞれ、r(j,0,0), r(j,0,1), r(j,1,0), r(j,1,1)に対してg(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)を満たす。本形態の演算式Wjは巡回群Gでの演算を表し、少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、演算式WmとWnとが互いに相違する。本形態の演算式Wj（j=1,...,J）の例は、以下の式(10)又は式(10)に変形可能な式である。
Uj=Ar(j,0,0)・b+r(j,0,1)・y・Tr(j,1,0)・b+r(j,1,1)・y  …(10)
式(10)に変形可能な式の例は以下の式(11)-(13)などである。
Uj=Ar(j,0,1)・y+r(j,0,0)・b・Tr(j,1,1)・y+r(j,1,0)・b  …(11)
Uj=Ab・r(j,0,0)+y・r(j,0,1)・Tb・r(j,1,0)+y・r(j,1,1)  …(12)
Uj=Tr(j,1,0)・b+r(j,1,1)・y・Ar(j,0,0)・b+r(j,0,1)・y  …(13)
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、ベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立である。好ましくは前述の条件１又は条件２を満たす。生成された共有情報Uj（j=1,...,J）は記憶部１２１に格納される（ステップＳ１２５）。
【００４４】
第２情報共有装置１２０の鍵生成部１２８は、記憶部１２１から共有情報Uj（j=1,...,J）と公開鍵A,Bと出力情報T,Yとを読み込み、これらを含む情報をハッシュ関数Hに入力し、鍵
K=H(U1,...,UJ, A, B, T, Y)  …(14)
を生成し、生成した鍵Kを出力する（ステップＳ１２６）。
【００４５】
＜本形態の特徴＞
巡回群Gは可換群であること、及び剰余環Zqが可換環であることから、式(5)は以下のように変形できる。式(6)-(8)などの式(5)に変形可能な式も同様である。ただし、上付き添え字の「pj(a,t,b,y)」はpj(a,t,b,y)を表す。
Br(j,0,0)・a+r(j,1,0)・t・Yr(j,0,1)・a+r(j,1,1)・t
=gb(r(j,0,0)・a+r(j,1,0)・t)+y(r(j,0,1)・a+r(j,1,1)・t)
=g(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)
=gpj(a,t,b,y)
同様に式(10)は以下のように変形でき、式(5)と等しいことが分かる。式(11)-(13)などの式(10)に変形可能な式も同様である。
Ar(j,0,0)・b+r(j,0,1)・y・Tr(j,1,0)・b+r(j,1,1)・y
=ga(r(j,0,0)・b+r(j,0,1)・y)+t(r(j,1,0)・b+r(j,1,1)・y)
=g(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)
=gpj(a,t,b,y)
【００４６】
このように第１情報共有装置１１０と第２情報共有装置１２０との間で共有情報Uj（j=1,...,J）を共有でき、鍵Kも共有できる。短期秘密鍵t,yに応じて鍵Kの値が異なるため、第１情報共有装置１１０と第２情報共有装置１２０との間で上記の処理を行うたびに共有される鍵Kが変化する。またベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立であるため、前述のように中間者攻撃を防止できる。さらにハッシュ関数を用いることなく第１情報共有装置１１０と第２情報共有装置１２０とが共有情報Ujを共有できる。よって本形態では、高い安全性を確保しつつ、第１情報共有装置１１０と第２情報共有装置１２０とが低い演算量で共有情報を共有できる。
【００４７】
〔第２実施形態〕
次に、本発明のおける第２実施形態を説明する。第２実施形態は双線形写像を用いる例である。以下では第１実施形態との相違点を中心に説明し、第１実施形態と共通する事項については説明を省略する。
【００４８】
＜原理＞
第２実施形態の原理を説明する。第２実施形態では、第１情報共有装置で、任意値tを生成し、任意値tと巡回群G1の生成元g1とを用い、出力情報T=g1t∈G1を生成して出力する。第２情報共有装置で、任意値yを生成し、任意値yと生成元g2とを用い、出力情報Y=g2y∈G2を生成して出力する。第１情報共有装置で、出力情報Yの入力を受け付け、第２情報共有装置の公開情報B=g2b∈G2と、出力情報Yと、秘密情報z及び第１情報共有装置の公開情報A=g1a∈G1に対応する第１情報共有装置の秘密情報C=Az∈G1と、g1zである公開情報P1及び／又はg2zである公開情報P2と、任意値tとを用い、各演算式Vj（j=1,...,J、Jは２以上の整数）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する。第２情報共有装置で、出力情報Tの入力を受け付け、第１情報共有装置の公開情報A=g1a∈G1と、出力情報Tと、秘密情報z及び公開情報Bに対応する第２情報共有装置の秘密情報D=Bz∈G2と、公開情報P1及び／又は公開情報P2と、任意値yとを用い、各演算式Wj（j=1,...,J）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する。
【００４９】
本形態の演算式Vj（j=1,...,J）及び演算式Wj（j=1,...,J）は、それぞれ、巡回群G1の元と巡回群G2の元とから巡回群GTの元を得る双線形写像e：G1×G2→GTを含む。少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、演算式VmとVnとが互いに相違し、演算式WmとWnとが互いに相違する。共有情報Uj（j=1,...,J）は、それぞれ、r(j,0,0), r(j,0,1), r(j,1,0), r(j,1,1)に対してgTz・(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)∈GTを満たし、少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、ベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立である。
【００５０】
これにより本形態でも、高い安全性を確保しつつ、第１情報共有装置と第２情報共有装置とが低い演算量で共有情報を共有できる。また本形態でも前述の条件１又は条件２を満たすことが望ましい。これにより高い安全性を確保できる。
【００５１】
また、第１情報共有装置が、共有情報Uj（j=1,...,J）を含む情報を関数に入力して得られる鍵を生成し、第２情報共有装置が、共有情報Uj（j=1,...,J）を含む情報を当該関数に入力して得られる鍵を生成することで、第１情報共有装置と第２情報共有装置とで同一の鍵を共有できる。本形態では、任意値t,yに応じて鍵の値が異なるため、第１情報共有装置と第２情報共有装置との間で上記の処理を行うたびに共有される鍵Kが変化する。
【００５２】
＜構成＞
第２実施形態の構成を例示する。図３に例示するように、第２実施形態の情報共有システム２は、情報共有装置２１０と情報共有装置２２０とを有する。
情報共有装置２１０は、記憶部２１１と入力部２１２と出力部２１３と制御部１１４と任意値生成部１１５と出力情報生成部２１６と共有情報生成部２１７と鍵生成部２１８とを有する。また、情報共有装置２２０は、記憶部２２１と入力部２２２と出力部２２３と制御部１２４と任意値生成部１２５と出力情報生成部２２６と共有情報生成部２２７と鍵生成部２２８とを有する。
【００５３】
第１実施形態と同様、情報共有装置２１０，２２０は、CPU、RAM、ROMなどからなる公知又は専用のコンピュータと特別なプログラムとを有する特別な装置である。処理部の少なくとも一部が集積回路などのハードウェアで構成されていてもよい。なお、情報共有装置２１０，２２０は、それぞれ、制御部１１４，１２４の制御のもと各処理を実行する。また、各演算過程で得られるデータは記憶部２１１，２２１に格納され、必要に応じて他の演算に用いられる。
【００５４】
＜処理＞
次に、第２実施形態の処理を例示する。
［前処理］
位数q、剰余環Zq、巡回群G1,G2,GT、生成元g1,g1,gT、双線形写像e：G1×G2→GT、ハッシュ関数H,H1,H2、マスタ秘密鍵（秘密情報）z∈Zq、g1zであるマスタ公開鍵（公開情報）P1及び／又はg2zであるマスタ公開鍵（公開情報）P2が定められる。第１情報共有装置２１０を利用するユーザの識別子IDA（例えばIDA∈{0,1}*）、及び第２情報共有装置２２０を利用するユーザの識別子IDB（例えばIDB∈{0,1}*）が定められる。識別子IDAに対して鍵（公開情報）A=H1(IDA)∈G1が設定され、識別子IDBに対して鍵（公開情報）B=H2(IDB)∈G2が設定される。A,Bはa,b∈ZqについてA=g1a∈G1及びB=g2b∈G2を満たす。さらにマスタ秘密鍵zを用い、Aに対応する第１情報共有装置２１０の秘密鍵（秘密情報）C=Az∈G1と、Bに対応する第２情報共有装置２２０の秘密鍵（秘密情報）D=Bz∈G2とが設定される。これらの処理はシステム管理者などによってなされる。第２実施形態ではG1=G2、g1=g2、H1=H2、P1=P2とする。
【００５５】
第２情報共有装置２２０の鍵B、第１情報共有装置２１０の秘密鍵C、マスタ公開鍵P1、識別子IDA,IDBは第１情報共有装置２１０の記憶部２１１に格納される。第１情報共有装置２１０の鍵A、第２情報共有装置２２０の秘密鍵D、マスタ公開鍵P2、識別子IDA,IDBは第２情報共有装置２２０の記憶部２２１に格納される。出力情報生成部２１６，２２６は、それぞれ生成元g1,g2を用いて巡回群G1,G2上の演算が可能なように構成され、共有情報生成部２１７，２１７は、双線形写像eの演算や巡回群G1,G2上の演算が可能なように構成される。
【００５６】
［鍵交換］
次に、図４Ａ及び図４Ｂを用い、第２実施形態の鍵交換処理を説明する。
第１情報共有装置２１０（図３）の任意値生成部１１５がランダムな短期秘密鍵（任意値）tを前述の式(1)のように生成し、生成した短期秘密鍵tを記憶部２１１に格納する（ステップＳ１１１）。
【００５７】
第１情報共有装置２１０の出力情報生成部２１６は、記憶部２１１から短期秘密鍵tを読み出し、短期秘密鍵tと巡回群G1の生成元g1とを用い、出力情報Tを以下の式(15)のように生成し、生成した出力情報Tを記憶部２１１に格納する（ステップＳ２１２）。
T=g1t∈G1  …(15)
記憶部２１１に格納された識別子IDA,IDB及び出力情報Tは出力部２１２に送られ、出力部２１２は(IDA,IDB,T)を出力する（ステップＳ２１３）。出力された(IDA,IDB,T)は、ネットワークや可搬型記録媒体などを介して第２情報共有装置２２０に送られる。第２情報共有装置２２０の入力部２２２は(IDA,IDB,T)の入力を受け付け、(IDA,IDB,T)は記憶部２２１に格納される（ステップＳ２２１）。
【００５８】
第２情報共有装置２２０の任意値生成部１２５がランダムな短期秘密鍵（任意値）yを前述の式(3)のように生成し、生成した短期秘密鍵yを記憶部２２１に格納する（ステップＳ１２２）。
【００５９】
第２情報共有装置２２０の出力情報生成部２２６は、記憶部２２１から短期秘密鍵yを読み出し、短期秘密鍵yと巡回群G2の生成元g2とを用い、出力情報Yを以下の式(16)のように生成し、生成した出力情報Yを記憶部２２１に格納する（ステップＳ２２３）。
Y=g2y∈G2  …(16)
記憶部２２１に格納された識別子IDA,IDB、出力情報T及び出力情報Yは出力部２２３に送られ、出力部２２３は(IDA,IDB,T,Y)を出力する（ステップＳ２２４）。出力された(A,B,T,Y)は、ネットワークや可搬型記録媒体などを介して第１情報共有装置２１０に送られる。第１情報共有装置２１０の入力部２１２は(IDA,IDB,T,Y)の入力を受け付け、(IDA,IDB,T,Y)は記憶部２１１に格納される（ステップＳ２１４）。
【００６０】
第１情報共有装置２１０の共有情報生成部２１７は、記憶部２１１から第２情報共有装置２２０の鍵B=g2b∈G2と出力情報Yと第１情報共有装置２１０の秘密鍵Cとマスタ公開鍵P1と短期秘密鍵tを読み込む。共有情報生成部２１７は、これらを用いて各演算式Vj（j=1,...,J、Jは２以上の整数）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する。共有情報Uj（j=1,...,J）は、それぞれ、r(j,0,0), r(j,0,1), r(j,1,0), r(j,1,1)に対してgTz・(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)∈GTを満たす。本形態の演算式Vjは、それぞれ双線形写像e：G1×G2→GTからなり、少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、演算式VmとVnとが互いに相違する。本形態の演算式Vj（j=1,...,J）の例は、以下の式(17)又は式(17)に変形可能な式である。
Uj=e(Cr(j,0,0)・P1r(j,1,0)・t,B)・e(Cr(j,0,1)・P1r(j,1,1)・t,Y)  …(17)
式(17)に変形可能な式の例は以下の式(18)-(20)などである。
Uj=e(Cr(j,0,1)・P1r(j,1,1)・t,Y)・e(Cr(j,0,0)・P1r(j,1,0)・t,B)  …(18)
Uj=e(P1r(j,1,0)・t・Cr(j,0,0),B)・e(P1r(j,1,1)・t・Cr(j,0,1),Y)  …(19)
Uj=e(P1r(j,1,1)・t・Cr(j,0,1),Y)・e(P1r(j,1,0)・t・Cr(j,0,0),B)  …(20)
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、ベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立である。好ましくは前述の条件１又は条件２を満たす。生成された共有情報Uj（j=1,...,J）は記憶部２１１に格納される（ステップＳ２１５）。
【００６１】
第１情報共有装置２１０の共有情報生成部２１７は、記憶部２１１から出力情報Yと短期秘密鍵tを読み込む。共有情報生成部２１７は、共有情報UJ+1を以下の式(21)のように生成し、生成した共有情報UJ+1を記憶部２１１に格納する（ステップＳ２１６）。
UJ+1=Yt∈G2  …(21)
【００６２】
第１情報共有装置２１０の鍵生成部２１８が、記憶部２１１から共有情報Uj（j=1,...,J）と共有情報UJ+1と識別子IDA,IDBと出力情報T,Yとを読み込み、これらを含む情報をハッシュ関数Hに入力し、鍵
K=H(U1,...,UJ, IDA, IDB, T, Y)  …(22)
を生成し、生成した鍵Kを出力する（ステップＳ２１７）。
【００６３】
第２情報共有装置２２０の共有情報生成部２２７は、記憶部２２１から第１情報共有装置２１０の鍵A=g1a∈G1と出力情報Tと第２情報共有装置２２０の秘密鍵D=Bz∈G2とマスタ公開鍵P2と短期秘密鍵yを読み込む。共有情報生成部２２７は、これらを用いて各演算式Wj（j=1,...,J）がそれぞれ表す共有情報Uj（j=1,...,J）を生成する。共有情報Uj（j=1,...,J）は、それぞれ、r(j,0,0), r(j,0,1), r(j,1,0), r(j,1,1)に対してgTz・(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)∈GTを満たす。本形態の演算式Wjは、それぞれ双線形写像e：G1×G2→GTからなり、少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、演算式WmとWnとが互いに相違する。本形態の演算式Wj（j=1,...,J）の例は、以下の式(23)又は式(23)に変形可能な式である。
Uj=e(A,Dr(j,0,0)・P2r(j,0,1)・y)・e(T,Dr(j,1,0)・P2r(j,1,1)・y)  …(23)
式(17)に変形可能な式の例は以下の式(24)-(26)などである。
Uj=e(T,Dr(j,1,0)・P2r(j,1,1)・y)・e(A,Dr(j,0,0)・P2r(j,0,1)・y)  …(24)
Uj=e(A,P2r(j,0,1)・y・Dr(j,0,0))・e(T,P2r(j,1,1)・y・Dr(j,1,0))  …(25)
Uj=e(T,P2r(j,1,1)・y・Dr(j,1,0))・e(A,P2r(j,0,1)・y・Dr(j,0,0))  …(26)
少なくとも一部のm,n∈{1,...,J}(m≠n）の組について、ベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立である。好ましくは前述の条件１又は条件２を満たす。生成された共有情報Uj（j=1,...,J）は記憶部２２１に格納される（ステップＳ２２５）。
【００６４】
第２情報共有装置２２０の共有情報生成部２２７は、記憶部２２１から出力情報Tと短期秘密鍵yを読み込む。共有情報生成部２２７は、共有情報UJ+1を以下の式(27)のように生成し、生成した共有情報UJ+1を記憶部２２１に格納する（ステップＳ２２６）。
UJ+1=Ty∈G1  …(27)
【００６５】
第２情報共有装置２２０の鍵生成部２２８が、記憶部２２１から共有情報Uj（j=1,...,J）と共有情報UJ+1と識別子IDA,IDBと出力情報T,Yとを読み込み、これらを含む情報をハッシュ関数Hに入力し、鍵
K=H(U1,...,UJ, IDA, IDB, T, Y)  …(28)
を生成し、生成した鍵Kを出力する（ステップＳ２２７）。
【００６６】
＜本形態の特徴＞
双線形写像eの双線形性、巡回群Gが可換群であること、及び剰余環Zqが可換環であることから、式(17)は以下のように変形できる。式(18)-(20)などの式(17)に変形可能な式も同様である。ただし、上付き添え字の「pj(a,t,b,y)」はpj(a,t,b,y)を表す。
e(Cr(j,0,0)・P1r(j,1,0)・t,B)・e(Cr(j,0,1)・P1r(j,1,1)・t,Y)
=e(g1r(j,0,0)・a・z+r(j,1,0)・t・z,g2b)・e(g1r(j,0,1)・a・z+r(j,1,1)・t・z,g2y)
=gTr(j,0,0)・a・b・z+r(j,1,0)・t・b・z・gTr(j,0,1)・a・y・z+r(j,1,1)・t・y・z
=gTz(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)
=gTz・pj(a,t,b,y)
同様に式(23)は以下のように変形でき、式(17)と等しいことが分かる。式(24)-(26)などの式(23)に変形可能な式も同様である。
e(A,Dr(j,0,0)・P2r(j,0,1)・y)・e(T,Dr(j,1,0)・P2r(j,1,1)・y)
=e(g1a, g2r(j,0,0)・b・z+r(j,0,1)・y・z)・e(g1t, g2r(j,1,0)・b・z+r(j,1,1)・y・z)
=gTa(r(j,0,0)・b・z+r(j,0,1)・y・z)・gTt(r(j,1,0)・b・z+r(j,1,1)・y・z)
=gTz(r(j,0,0)・a・b+r(j,0,1)・a・y+r(j,1,0)・b・t+r(j,1,1)・t・y)
=gTz・pj(a,t,b,y)
【００６７】
巡回群G1,G2が可換群であること、剰余環Zqが可換環であること、及び本形態ではG1=G2及びg1=g2あることから、式(21)は以下のように変形でき、式(27)と等しいことが分かる。
Yt=g2y・t=g1t・y=Ty
【００６８】
このように第１情報共有装置２１０と第２情報共有装置２２０との間で共有情報Uj（j=1,...,J）,UJ+1を共有でき、鍵Kも共有できる。短期秘密鍵t,yに応じて鍵Kの値が異なるため、第１情報共有装置２１０と第２情報共有装置２２０との間で上記の処理を行うたびに共有される鍵Kが変化する。またベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立であるため、前述のように中間者攻撃を防止できる。さらにハッシュ関数を用いることなく第１情報共有装置２１０と第２情報共有装置２２０とが共有情報Ujを共有できる。よって本形態では、高い安全性を確保しつつ、第１情報共有装置２１０と第２情報共有装置２２０とが低い演算量で共有情報を共有できる。
【００６９】
〔第２実施形態の変形例〕
次に、本発明のおける第２実施形態の変形例を説明する。この変形例は、G1とG2が同一であるか否か、g1とg2が同一であるか否か、H1とH2が同一であるか否か、P1とP2が同一であるか否かにかかわらず、実行可能なものである。以下では第１，２実施形態との相違点を中心に説明し、第１，２実施形態と共通する事項については説明を省略する。
【００７０】
＜構成＞
第２実施形態の変形例の構成を例示する。図５に例示するように、第２実施形態の変形例の情報共有システム３は、情報共有装置３１０と情報共有装置３２０とを有する。
情報共有装置３１０は、記憶部３１１と入力部３１２と出力部３１３と制御部１１４と任意値生成部１１５と出力情報生成部３１６と共有情報生成部３１７と鍵生成部３１８とを有する。また、情報共有装置３２０は、記憶部３２１と入力部３２２と出力部３２３と制御部１２４と任意値生成部１２５と出力情報生成部３２６と共有情報生成部３２７と鍵生成部３２８とを有する。
【００７１】
第１実施形態と同様、情報共有装置３１０，３２０は、CPU、RAM、ROMなどからなる公知又は専用のコンピュータと特別なプログラムとを有する特別な装置である。処理部の少なくとも一部が集積回路などのハードウェアで構成されていてもよい。なお、情報共有装置３１０，３２０は、それぞれ、制御部１１４，１２４の制御のもと各処理を実行する。また、各演算過程で得られるデータは記憶部３１１，３２１に格納され、必要に応じて他の演算に用いられる。
【００７２】
＜処理＞
次に、第２実施形態の変形例の処理を例示する。
［前処理］
G1=G2、g1=g2、H1=H2、P1=P2であってもなくてもよいこと以外、第２実施形態と同様である。
【００７３】
［鍵交換］
次に、図６Ａ及び図６Ｂを用い、第３実施形態の鍵交換処理を説明する。
任意値生成部１１５及び出力情報生成部３１６が前述のステップＳ１１１及びＳ２１２の処理をそれぞれ実行する。さらに第１情報共有装置３１０（図５）の出力情報生成部３１６が、記憶部３１１から短期秘密鍵tを読み出し、短期秘密鍵tと巡回群G2の生成元g2とを用い、出力情報T2を以下の式(29)のように生成し、生成した出力情報Tを記憶部３１１に格納する（ステップＳ３１２）。
T2=g2t∈G2  …(29)
記憶部３１１に格納された識別子IDA,IDB及び出力情報T,T2は出力部３１２に送られ、出力部３１２は(IDA,IDB,T,T2)を出力する（ステップＳ３１３）。出力された(IDA,IDB,T,T2)は、ネットワークや可搬型記録媒体などを介して第２情報共有装置３２０に送られる。第２情報共有装置３２０の入力部２２２は(IDA,IDB,T,T2)の入力を受け付け、(IDA,IDB,T,T2)は記憶部３２１に格納される（ステップＳ３２１）。
【００７４】
任意値生成部１２５及び出力情報生成部３２６が前述のステップＳ１２１及びＳ２２３の処理をそれぞれ実行する。さらに第２情報共有装置３２０の出力情報生成部３２６が、記憶部３２１から短期秘密鍵yを読み出し、短期秘密鍵yと巡回群G1の生成元g1とを用い、出力情報Y1を以下の式(30)のように生成し、生成した出力情報Y1を記憶部３２１に格納する（ステップＳ３２３）。
Y1=g1y∈G1  …(30)
記憶部３２１に格納された識別子IDA,IDB、出力情報T,T2及び出力情報Y1,Yは出力部３２３に送られ、出力部３２３は(IDA,IDB,T,T2,Y1,Y)を出力する（ステップＳ３２４）。出力された(IDA,IDB,T,T2,Y1,Y)は、ネットワークや可搬型記録媒体などを介して第１情報共有装置３１０に送られる。第１情報共有装置３１０の入力部３１２は(IDA,IDB,T,T2,Y1,Y)の入力を受け付け、(IDA,IDB,T,T2,Y1,Y)は記憶部３１１に格納される（ステップＳ３１４）。
【００７５】
共有情報生成部３１７が前述のステップＳ２１５の処理を実行する。さらに共有情報生成部３１７は記憶部３１１から出力情報Y1,Yと短期秘密鍵tを読み込む。共有情報生成部３１７は、共有情報1UJ+1,2UJ+1を以下の式(31)(32)のように生成し、生成した共有情報1UJ+1,2UJ+1を記憶部３１１に格納する（ステップＳ３１６）。
1UJ+1=Y1t∈G1  …(31)
2UJ+1=Yt∈G2  …(32)
【００７６】
第１情報共有装置３１０の鍵生成部３１８が、記憶部３１１から共有情報Uj（j=1,...,J）と共有情報1UJ+1,2UJ+1と識別子IDA,IDBと出力情報T,T2,Y1,Yとを読み込み、これらを含む情報をハッシュ関数Hに入力し、鍵
K=H(U1,...,UJ, 1UJ+1,2UJ+1 IDA, IDB, T, T2, Y1, Y)  …(33)
を生成し、生成した鍵Kを出力する（ステップＳ３１７）。
【００７７】
共有情報生成部３２７は前述のステップＳ２２５の処理を実行する。さらに共有情報生成部３２７は、記憶部３２１から出力情報T,T2と短期秘密鍵yを読み込む。共有情報生成部３２７は、共有情報1UJ+1,2UJ+1を以下の式(34)(35)のように生成し、生成した共有情報1UJ+1,2UJ+1を記憶部３２１に格納する（ステップＳ３２６）。
1UJ+1=Ty∈G1  …(34)
2UJ+1=T2y∈G2  …(35)
【００７８】
第２情報共有装置３２０の鍵生成部３２８が、記憶部３２１から共有情報Uj（j=1,...,J）と共有情報1UJ+1,2UJ+1と識別子IDA,IDBと出力情報T,T2,Y1,Yとを読み込み、これらを含む情報をハッシュ関数Hに入力し、鍵
K=H(U1,...,UJ, 1UJ+1,2UJ+1 IDA, IDB, T, T2, Y1, Y)  …(36)
を生成し、生成した鍵Kを出力する（ステップＳ３２７）。
【００７９】
＜本形態の特徴＞
第２実施形態と同様、第１情報共有装置３１０で生成された共有情報Uj（j=1,...,J）と第２情報共有装置３２０で生成された共有情報Uj（j=1,...,J）とはそれぞれ等しくなる。
巡回群G1,G2が可換群であること、及び剰余環Zqが可換環であることから、式(31)は以下のように変形でき、式(34)と等しいことが分かる。
Y1t=g1y・t=g1t・y=Ty∈G1
同様に、式(32)は以下のように変形でき、式(35)と等しいことが分かる。
Yt=g2y・t=g2t・y=T2y∈G2
【００８０】
このように第１情報共有装置３１０と第２情報共有装置３２０との間で共有情報Uj（j=1,...,J）, 1UJ+1, 2UJ+1を共有でき、鍵Kも共有できる。短期秘密鍵t,yに応じて鍵Kの値が異なるため、第１情報共有装置３１０と第２情報共有装置３２０との間で上記の処理を行うたびに共有される鍵Kが変化する。またベクトル(r(m,0,0), r(m,1,0), r(m,0,1), r(m,1,1))とベクトル(r(n,0,0), r(n,1,0), r(n,0,1), r(n,1,1))とが一次独立であるため、前述のように中間者攻撃を防止できる。さらにハッシュ関数を用いることなく第１情報共有装置３１０と第２情報共有装置３２０とが共有情報Ujを共有できる。よって本形態では、高い安全性を確保しつつ、第１情報共有装置３１０と第２情報共有装置３２０とが低い演算量で共有情報を共有できる。
【００８１】
〔その他の変形例等〕
なお、本発明は上述の実施の形態に限定されるものではない。例えば、第１実施形態ではK=H(U1,...,UJ, A, B, T, Y)の計算によって、第２実施形態ではK=H(U1,...,UJ, IDA, IDB, T, Y)の計算によって、その変形例ではK=H(U1,...,UJ, 1UJ+1,2UJ+1 IDA, IDB, T, T2, Y1, Y)の計算によってそれぞれ鍵Kを生成した。しかし、すべての共有情報Uj(j=1,...,J)を含む情報γとし、K=H(γ)の計算によって鍵を生成するのであれば、その他の情報をγとして鍵Kを生成してもよい。ただし、第１情報共有装置と第２情報共有装置とでのγは同一の構成とする。例えば第１実施形態において、K=H(U1,...,UJ)、K=H(U1,...,UJ, A, B)、K=H(U1,...,UJ, T, Y)、K=H(U1,...,UJ, A, B, T, Y, Ψ)、K=H(U1,...,UJ, Ψ)などによって鍵Kが生成されてもよい。Ψは公開パラメータやアルゴリズムＩＤなどの付加情報である。またγを構成するビット列の結合順序に限定はない。
【００８２】
また、各実施形態では、ハッシュ関数Hの出力ビット数をLとしたが、ハッシュ関数の出力ビット数がL以外であってもよい。さらに、各実施形態ではHがハッシュ関数である場合を例示したが、Hが共通鍵暗号関数、入力値をビット列に変換してからビット結合する関数など、どの他の関数をHとして用いてもかまわない。
【００８３】
また、各実施形態では、共有情報Uj(j=1,...,J)を用いて鍵Kを生成することとしたが、鍵Kを生成することなく、共有情報Uj(j=1,...,J)そのものが暗号化処理その他の処理に利用されてもよい。
【００８４】
また、上記の第１実施形態では、秘密情報aが第１情報共有装置の秘密鍵そのものであり、秘密情報bが第２情報共有装置の秘密鍵そのものであるとした。しかし、秘密情報a, bが秘密鍵そのものでなく、第１情報共有装置の秘密鍵の関数値をaとし、第２情報共有装置の秘密鍵の関数値をbとしてもよい。秘密鍵の関数値の例は、秘密鍵と定数又は変数との加算値、秘密鍵のべき乗値、秘密鍵のべき乗値と定数又は変数との加算値、秘密鍵の逆元値、秘密鍵の逆元値と定数又は変数との加算値、秘密鍵のハッシュ値などである。なお、定数や変数は、正であってもよいし負であってもよい。
【００８５】
また、各実施形態において剰余環Zqの要素として説明した値が体の要素であってもよいし、整数であってもよい。
【００８６】
また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【００８７】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。なお、当該プログラムは、上述した特別なプログラムであってもよいし、特別なプログラムと汎用プログラムとの結合であってもよい。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
また、各形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【００８８】
１〜３  情報共有システム
１１０〜３１０  第１情報共有装置
１２０〜３２０  第２情報共有装置
【図１】
0005449214.tif 000003
【図２】
0005449214.tif 000004
【図３】
0005449214.tif 000005
【図４】
0005449214.tif 000006
【図５】
0005449214.tif 000007
【図６】
0005449214.tif 000008