説明

セッション鍵システム、セッション鍵提供方法、ならびに、プログラム

【課題】小さいパスワードを共有することで、証明者があるグループの一員であることをその証明者が実際に誰なのかを明かすことなく証明するセッション鍵システム等を提供する。
【解決手段】パスワードpw[1],…,pw[n]を知るサーバ装置151に対して、パスワードpw[i]を知る端末装置131は、生成元g、乱数x、ハッシュ関数Fを用いて、gxを指定する1-out-of-n紛失通信を行い、サーバ装置151は、乱数yおよびpw[1],…,pw[n]を参照して、端末装置でgygF(pw[i])の情報だけが得られるような1-out-of-n紛失通信の応答を端末装置131に返し、サーバ装置151は、(gx)yによりセッション鍵を得て、端末装置131は、応答からgygF(pw[i])を得て、((gygF(pw[i]))/gF(pw[i]))xによりセッション鍵を得る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セッション鍵システム、セッション鍵提供方法、ならびに、プログラムに関する。
【背景技術】
【0002】
従来から、セッション鍵を用いることによって、電子認証や電子署名を行う技術が広く提供されている。このような技術は、以下の文献に開示されている。
【非特許文献1】C.H.Lee,X.Deng and H.Zhu,Design and Security Analysis of Anonymous Group Identification Protocols,PKC02,LNCS 2274,Springer-Verlag,pp.188-198,2002年
【非特許文献2】W.G.Tzeng,Efficient 1-out-of-n Oblivious Transfer Schemes,PKC02,LNCS 2274,Sprinter-Verlag,pp.159-171,2002年
【非特許文献3】C.K.Chu and W.G.Tzeng,Efficient k-out-of-n Oblivious Transfer Schemes with Adaptive and NOn-Adaptive Queries,PKC05,LNCS 3386,Sprinver-Verlag,pp.172-183,2005年
【0003】
ここで、[非特許文献1]では、検証者に対して、証明者がグループの一員であることを、その証明者が実際に誰なのかを明かすことなく、証明する匿名認証スキームが提案されている。
【0004】
この技術では公開鍵暗号を利用するため、比較的長いランダムなビット列を公開鍵と秘密鍵として保有しなければならない。
【0005】
一方、[非特許文献2][非特許文献3]では、紛失通信(Oblivious Transfer;OT)プロトコルの効率の良い実装例が開示されている。
【発明の開示】
【発明が解決しようとする課題】
【0006】
したがって、あらかじめ用意され管理されている辞書に含まれるような小さい低エントロピー鍵(パスワード)のみを共有するような、簡易な匿名認証スキームに対する要望は大きい。
【0007】
本発明は、以上のような課題を解決するためになされたもので、小さいパスワードを共有することで、証明者があるグループの一員であることを、その証明者が実際に誰なのかを明かすことなく、検証者に対して証明するのに好適な、セッション鍵システム、セッション鍵提供方法、および、これらをコンピュータにおいて実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【0009】
本発明の第1の観点に係るセッション鍵システムは、素数pを法とする整数からなる体Zpと、当該素数pを位数とする有限巡回群(finite cyclic group)GGの生成元(generator)g,hと、ハッシュ関数Fと、を、端末装置とサーバ装置とで共有し、サーバ装置には、n個のパスワードpw[1],…,pw[n]が保有され、端末装置には、当該n個のパスワードのうち、i番目のパスワードpw[i]が保有されるセッション鍵システムであって、以下のように構成する。
【0010】
まず、端末装置は、端末選択部、端末第1計算部を備える。
【0011】
ここで、当該i番目のパスワードpw[i]に対して、端末選択部は、体Zpの元からxを一様にランダムに選択し、端末第1計算部は、選択されたxからgxを計算する。
【0012】
一方、サーバ装置は、サーバ選択部、サーバ第1計算部を備える。
【0013】
ここで、サーバ選択部は、体Zpの元からyを一様にランダムに選択する。
【0014】
一方、サーバ第1計算部は、選択されたyから、j = 1,…,nについて、
α[j] = gygF(pw[j])
を計算する。
【0015】
さらに、端末装置は、端末第1送信部をさらに備える。
【0016】
ここで、端末第1送信部は、計算されたgxを指定する1-out-of-n紛失通信問い合わせをサーバ装置に送信する。
【0017】
そして、サーバ装置は、サーバ第1受信部、サーバ鍵生成部、サーバ送信部をさらに備える。
【0018】
ここで、サーバ第1受信部は、端末装置から送信された1-out-of-n紛失通信問い合わせを受信する。
【0019】
一方、サーバ鍵生成部は、受信された1-out-of-n紛失通信問い合わせに指定されるgxと、選択されたyと、から、
gxy = (gx)y
をサーバ側セッション鍵として生成する。
【0020】
さらに、サーバ送信部は、計算されたα[j] (j = 1,…,n)から、i番目のパスワードpw[i]を持つユーザがgygF(pw[i])の情報のみを得られるような1-out-of-n紛失通信応答を生成して端末装置に送信する。
【0021】
一方、端末装置は、端末受信部、端末鍵生成部をさらに備える。
【0022】
ここで、端末受信部は、サーバ装置から送信された1-out-of-n紛失通信応答を受信する。
【0023】
一方、端末鍵生成部は、受信された1-out-of-n紛失通信応答から、gygF(pw[i])の情報を得て、
gxy = (gygF(pw[i])/gF(pw[i]))x
を端末側セッション鍵として生成する。
【0024】
本発明のその他の観点に係るセッション鍵システムは、素数pを法とする整数からなる体Zpと、当該素数pを位数とする有限巡回群(finite cyclic group)GGの生成元(generator)g,hと、ハッシュ関数F,G,H0,H1,H2と、を、端末装置とサーバ装置とで共有し、サーバ装置には、n個のパスワードpw[1],…,pw[n]が保有され、端末装置には、当該n個のパスワードのうち、i番目のパスワードpw[i]が保有されるセッション鍵システムであって、以下のように構成する。
【0025】
まず、端末装置は、端末選択部、端末第1計算部、端末第1送信部を備える。
【0026】
ここで、端末選択部は、当該i番目のパスワードpw[i]に対して、体Zpの元からx,rを一様にランダムに選択する。
【0027】
一方、端末第1計算部は、選択されたx,rから、
X = gx
Q(i) = grhG(i,pw[i])
を計算する。
【0028】
さらに、端末第1送信部は、計算されたXと、計算されたQ(i)と、を、組
(X,Q(i))
としてサーバ装置に送信する。
【0029】
一方、サーバ装置は、サーバ第1受信部、サーバ選択部、サーバ第1計算部、サーバ第1認証子生成部、サーバ鍵生成部、サーバ送信部を備える。
【0030】
ここで、サーバ第1受信部は、端末装置から送信された組
(X,Q(i))
を受信する。
【0031】
一方、サーバ選択部は、体Zpの元からy,k[1],…,k[n]を一様にランダムに選択する。
【0032】
さらに、サーバ第1計算部は、受信された(X,Q(i))と、選択されたy,k[1],…,k[n]と、から、
Y = gy
と、j = 1,…,nについて、
α[j] = YgF(pw[j])
β[j] = H0((Q(i)/hG(j,pw[j]))k[j],j) xor α[j]
と、
A(Q(i)) = (β[1],…,β[n],gk[1],…,gk[n]);
KS = Xy
と、を計算する。
【0033】
さらに、サーバ第1認証子生成部は、サーバ側認証子AuthSを、
AuthS = H2(X,A(Q(i)),Y,KS)
のように生成する。
【0034】
そして、サーバ鍵生成部は、サーバ側セッション鍵skSを、
skS = H1(X,A(Q(i)),Y,KS)
のように生成する。
【0035】
一方、サーバ送信部は、計算されたA(Q(i))と、生成されたサーバ側認証子AuthSと、を組
(A(Q(i)),AuthS)
として、端末装置に送信する。
【0036】
一方、端末装置は、端末受信部、端末第2計算部、端末第1認証子生成部、端末鍵生成部をさらに備える。
【0037】
ここで、端末受信部は、i番目のパスワードpw[i]に対して、
【0038】
サーバ装置から送信された組
(A(Q(i)),AuthS)
を受信する。
【0039】
一方、端末第2計算部は、受信されたA(Q(i)) = (β[1],…,β[n],gk[1],…,gk[n])から、
α[i] = β[i] xor H0((gk[i])r,i);
Y = α[i]/gF(pw[i])
KC = Yx
を計算する。
【0040】
さらに、端末第1認証子生成部は、受信されたA(Q(i))と、計算されたY,KCと、から、端末側認証子AuthCを、
AuthC = H2(X,A(Q(i)),Y,KC)
のように生成する。
【0041】
一方、端末鍵生成部は、受信されたAuthSと、生成されたAuthCと、が、一致する場合、端末側セッション鍵skCを、
skC = H1(X,A(Q(i)),Y,KC)
のように生成する。
【0042】
また、本発明のセッション鍵システムは、端末装置と、サーバ装置と、は、ハッシュ関数H3をさらに共有し、以下のように構成することができる。
【0043】
まず、端末装置は、端末第2認証子生成部、端末第2送信部をさらに備える。
【0044】
ここで、端末第2認証子生成部は、端末受信部により受信されたA(Q(i))と、端末第2計算部により計算されたY,KCと、から、端末側第2認証子AuthC'を、
AuthC' = H3(X,A(Q(i)),Y,KC)
のように生成する。
【0045】
一方、端末第2送信部は、生成されたAuthC'を、サーバ装置に送信する。
【0046】
そして、サーバ装置は、サーバ第2受信部、サーバ第2認証子生成部をさらに備える。
【0047】
ここで、サーバ第2受信部は、端末装置から送信されたAuthC'を受信する。
【0048】
一方、サーバ第2認証子生成部は、サーバ第1計算部により計算されたA(Q(i)),Y,KSから、サーバ側第2認証子AuthS'を、
AuthS' = H3(X,A(Q(i)),Y,KS)
のように生成する。
【0049】
さらに、サーバ装置が備えるサーバ鍵生成部が、サーバ側セッション鍵skSを生成するのは、受信されたAuthC'と、生成されたAuthS'と、が、一致する場合である。
【0050】
本発明のその他の観点に係るセッション鍵システムは、素数pを法とする整数からなる体Zpと、当該素数pを位数とする有限巡回群(finite cyclic group)GGの生成元(generator)g,hと、ハッシュ関数F,G,H0,H1,H2と、を、端末装置とサーバ装置とで共有し、サーバ装置には、n個のパスワードpw[1],…,pw[n]が保有され、端末装置には、当該n個のパスワードのうち、pw[1],…,pw[k]が保有されるセッション鍵システムであって、以下のように構成する。
【0051】
まず、端末装置は、端末選択部、端末第1計算部、端末第1送信部を備える。
【0052】
ここで、端末選択部は、体Zpの元からx,γ[1],…,γ[k],a[1],…,a[k],w[k+1],…,w[n]を一様にランダムに選択する。
【0053】
一方、端末第1計算部は、選択されたx,γ[1],…,γ[k],a[1],…,a[k],w[k+1],…,w[n]から、
X = gx
と、i = 1,…,kについて
w[i] = hγ[i]G(i,pw[i])
A[i] = w[i]ga[i]
とを計算する。
【0054】
さらに、端末第1送信部は、計算されたX,A[1],…,A[k],w[1],…,w[n]を、サーバ装置に送信する。
【0055】
一方、サーバ装置は、サーバ第1受信部、サーバ選択部、サーバ第1認証子生成部、サーバ送信部、サーバ鍵生成部を備える。
【0056】
ここで、サーバ第1受信部は、端末装置から送信されたX,A[1],…,A[k],w[1],…,w[n]を受信する。
【0057】
一方、サーバ選択部は、体Zpの元からy,z,b[1],…,b[k]を一様にランダムに選択する。
【0058】
さらに、サーバ第1計算部は、f(x) = y + b[1]x + … b[k]xkとしたときに、
Y[1] = gf(1),…,Y[n] = gf(n)
Z = gz
D[1] = A[1]z,…,D[k] = A[k]z
を計算し、j = 1,…,nに対して、
α[j] = Y[j]gF(pw[j]) xor H0(w[i]z);
KS = Xy
を計算する。
【0059】
さらに、サーバ第1認証子生成部は、サーバ側認証子AuthSを、
AuthS = H2(X,Z,D[1],…,D[k],α[1],…,α[n],Y,KS)
のように生成する。
【0060】
そして、サーバ送信部は、計算されたZ,D[1],…,D[k],α[1],…,α[n]と、生成されたAuthSと、を、端末装置に送信する。
【0061】
一方、サーバ鍵生成部は、サーバ側セッション鍵skSを、
skS = H1(X,Z,D[1],…,D[k],α[1],…,α[n],Y,Ks)
のように生成する。
【0062】
一方、端末装置は、端末受信部、端末第2計算部、端末第1認証子生成部、端末鍵生成部をさらに備える。
【0063】
ここで、端末受信部は、サーバ装置から送信されたZ,D[1],…,D[k],α[1],…,α[n],AuthSを受信する。
【0064】
一方、端末第2計算部は、i = 1,…,kについて、
λ[i] = Π1≦j≦k,j≠i j/(j-i)
としたときに、
Y[i] = (α[i] xor H0(D[i]/Za[i]))/gF(pw[i])
を計算し、
Y = Y[1]λ[1]…Y[k]λ[k]
KC = Yx
を計算する。
【0065】
さらに、端末第1認証子生成部は、計算されたX,Y,KCと、受信されたZ,D[1],…,D[k],α[1],…,α[n]と、から、端末側認証子AuthCを、
AuthC = H2(X,Z,D[1],…,D[k],α[1],…,α[n],Y,KC)
のように生成する。
【0066】
そして、端末鍵生成部は、受信されたAuthSと、生成されたAuthCと、が、一致する場合、端末側セッション鍵skCを、
skC = H1(X,Z,D[1],…,D[k],α[1],…,α[n],Y,KC)
のように生成する。
【0067】
また、本発明のセッション鍵システムにおいて、端末装置は、k台の機器を備え、i = 1,…,kについて、パスワードpw[i]はi番目の機器に保有され、γ[i],a[i]の取得およびw[i],A[i],w[i]の計算は、i番目の機器が、j (j≠i)番目の機器とは独立に行うように構成することができる。
【0068】
本発明のその他の観点に係るセッション鍵提供方法は、素数pを法とする整数からなる体Zpと、当該素数pを位数とする有限巡回群(finite cyclic group)GGの生成元(generator)g,hと、ハッシュ関数Fと、を、端末装置とサーバ装置とで共有し、サーバ装置には、n個のパスワードpw[1],…,pw[n]が保有され、端末装置には、当該n個のパスワードのうち、i番目のパスワードpw[i]が保有されるセッション鍵提供方法であって、以下のように構成する。
【0069】
まず、端末装置において、端末選択工程、端末第1計算工程が実行される。
【0070】
ここで、当該i番目のパスワードpw[i]に対して、端末選択工程では、体Zpの元からxを一様にランダムに選択する。
【0071】
一方、端末第1計算工程では、選択されたxからgxを計算する。
【0072】
一方、サーバ装置において、サーバ選択工程、サーバ第1計算工程が実行される。
【0073】
ここで、サーバ選択工程では、体Zpの元からyを一様にランダムに選択する。
【0074】
一方、サーバ第1計算工程では、選択されたyから、j = 1,…,nについて、
α[j] = gygF(pw[j])
を計算する。
【0075】
さらに、端末装置において、端末第1送信工程が実行される。
【0076】
ここで、端末第1送信工程では、計算されたgxを指定する1-out-of-n紛失通信問い合わせをサーバ装置に送信する。
【0077】
そして、サーバ装置において、サーバ第1受信工程、サーバ鍵生成工程、サーバ送信工程がさらに実行される。
【0078】
ここで、サーバ第1受信工程では、端末装置から送信された1-out-of-n紛失通信問い合わせを受信する。
【0079】
一方、サーバ鍵生成工程では、受信された1-out-of-n紛失通信問い合わせに指定されるgxと、選択されたyと、から、
gxy = (gx)y
をサーバ側セッション鍵として生成する。
【0080】
さらに、サーバ送信工程では、計算されたα[j] (j = 1,…,n)から、i番目のパスワードpw[i]を持つユーザがgygF(pw[i])の情報のみを得られるような1-out-of-n紛失通信応答を生成して端末装置に送信する。
【0081】
一方、端末装置において、端末受信工程、端末鍵生成工程がさらに実行される。
【0082】
ここで、端末受信工程では、サーバ装置から送信された1-out-of-n紛失通信応答を受信する。
【0083】
一方、端末鍵生成工程では、受信された1-out-of-n紛失通信応答から、gygF(pw[i])の情報を得て、
gxy = (gygF(pw[i])/gF(pw[i]))x
を端末側セッション鍵として生成する。
【0084】
本発明のその他の観点に係るセッション鍵提供方法は、素数pを法とする整数からなる体Zpと、当該素数pを位数とする有限巡回群(finite cyclic group)GGの生成元(generator)g,hと、ハッシュ関数F,G,H0,H1,H2と、を、端末装置とサーバ装置とで共有し、サーバ装置には、n個のパスワードpw[1],…,pw[n]が保有され、端末装置には、当該n個のパスワードのうち、i番目のパスワードpw[i]が保有されるセッション鍵提供方法であって、以下のように構成する。
【0085】
まず、端末装置において、端末選択工程、端末第1計算工程、端末第1送信工程が実行される。
【0086】
ここで、端末選択工程では、当該i番目のパスワードpw[i]に対して、体Zpの元からx,rを一様にランダムに選択する。
【0087】
一方、端末第1計算工程では、選択されたx,rから、
X = gx
Q(i) = grhG(i,pw[i])
を計算する。
【0088】
さらに、端末第1送信工程では、計算されたXと、計算されたQ(i)と、を、組
(X,Q(i))
としてサーバ装置に送信する。
【0089】
一方、サーバ装置において、サーバ第1受信工程、サーバ選択工程、サーバ第1計算工程、サーバ第1認証子生成工程、サーバ鍵生成工程、サーバ送信工程が実行される。
【0090】
ここで、サーバ第1受信工程では、端末装置から送信された組
(X,Q(i))
を受信する。
【0091】
一方、サーバ選択工程では、体Zpの元からy,k[1],…,k[n]を一様にランダムに選択する。
【0092】
さらに、サーバ第1計算工程では、受信された(X,Q(i))と、選択されたy,k[1],…,k[n]と、から、
Y = gy
と、j = 1,…,nについて、
α[j] = YgF(pw[j])
β[j] = H0((Q(i)/hG(j,pw[j]))k[j],j) xor α[j]
と、
A(Q(i)) = (β[1],…,β[n],gk[1],…,gk[n]);
KS = Xy
と、を計算する。
【0093】
さらに、サーバ第1認証子生成工程では、サーバ側認証子AuthSを、
AuthS = H2(X,A(Q(i)),Y,KS)
のように生成する。
【0094】
そして、サーバ鍵生成工程では、サーバ側セッション鍵skSを、
skS = H1(X,A(Q(i)),Y,KS)
のように生成する。
【0095】
一方、サーバ送信工程では、計算されたA(Q(i))と、生成されたサーバ側認証子AuthSと、を組
(A(Q(i)),AuthS)
として、端末装置に送信する。
【0096】
一方、端末装置において、端末受信工程、端末第2計算工程、端末第1認証子生成工程、端末鍵生成工程がさらに実行される。
【0097】
ここで、端末受信工程では、i番目のパスワードpw[i]に対して、
【0098】
サーバ装置から送信された組
(A(Q(i)),AuthS)
を受信する。
【0099】
一方、端末第2計算工程では、受信されたA(Q(i)) = (β[1],…,β[n],gk[1],…,gk[n])から、
α[i] = β[i] xor H0((gk[i])r,i);
Y = α[i]/gF(pw[i])
KC = Yx
を計算する。
【0100】
さらに、端末第1認証子生成工程では、受信されたA(Q(i))と、計算されたY,KCと、から、端末側認証子AuthCを、
AuthC = H2(X,A(Q(i)),Y,KC)
のように生成する。
【0101】
一方、端末鍵生成工程では、受信されたAuthSと、生成されたAuthCと、が、一致する場合、端末側セッション鍵skCを、
skC = H1(X,A(Q(i)),Y,KC)
のように生成する。
【0102】
また、本発明のセッション鍵提供方法では、端末装置と、サーバ装置と、は、ハッシュ関数H3をさらに共有し、以下のように構成することができる。
【0103】
まず、端末装置において、端末第2認証子生成工程、端末第2送信工程がさらに実行される。
【0104】
ここで、端末第2認証子生成工程では、端末受信部により受信されたA(Q(i))と、端末第2計算部により計算されたY,KCと、から、端末側第2認証子AuthC'を、
AuthC' = H3(X,A(Q(i)),Y,KC)
のように生成する。
【0105】
一方、端末第2送信工程では、生成されたAuthC'を、サーバ装置に送信する。
【0106】
そして、サーバ装置において、サーバ第2受信工程、サーバ第2認証子生成工程がさらに実行される。
【0107】
ここで、サーバ第2受信工程では、端末装置から送信されたAuthC'を受信する。
【0108】
一方、サーバ第2認証子生成工程では、サーバ第1計算部により計算されたA(Q(i)),Y,KSから、サーバ側第2認証子AuthS'を、
AuthS' = H3(X,A(Q(i)),Y,KS)
のように生成する。
【0109】
さらに、サーバ鍵生成工程において、サーバ側セッション鍵skSを生成するのは、受信されたAuthC'と、生成されたAuthS'と、が、一致する場合である。
【0110】
本発明のその他の観点に係るセッション鍵提供方法は、素数pを法とする整数からなる体Zpと、当該素数pを位数とする有限巡回群(finite cyclic group)GGの生成元(generator)g,hと、ハッシュ関数F,G,H0,H1,H2と、を、端末装置とサーバ装置とで共有し、サーバ装置には、n個のパスワードpw[1],…,pw[n]が保有され、端末装置には、当該n個のパスワードのうち、pw[1],…,pw[k]が保有されるセッション鍵提供方法であって、以下のように構成する。
【0111】
まず、端末装置において、端末選択工程、端末第1計算工程、端末第1送信工程が実行される。
【0112】
ここで、端末選択工程では、体Zpの元からx,γ[1],…,γ[k],a[1],…,a[k],w[k+1],…,w[n]を一様にランダムに選択する。
【0113】
一方、端末第1計算工程では、選択されたx,γ[1],…,γ[k],a[1],…,a[k],w[k+1],…,w[n]から、
X = gx
と、i = 1,…,kについて
w[i] = hγ[i]G(i,pw[i])
A[i] = w[i]ga[i]
とを計算する。
【0114】
さらに、端末第1送信工程では、計算されたX,A[1],…,A[k],w[1],…,w[n]を、サーバ装置に送信する。
【0115】
一方、サーバ装置において、サーバ第1受信工程、サーバ選択工程、サーバ第1認証子生成工程、サーバ送信工程、サーバ鍵生成工程が実行される。
【0116】
ここで、サーバ第1受信工程では、端末装置から送信されたX,A[1],…,A[k],w[1],…,w[n]を受信する。
【0117】
一方、サーバ選択工程では、体Zpの元からy,z,b[1],…,b[k]を一様にランダムに選択する
【0118】
さらに、サーバ第1計算工程では、f(x) = y + b[1]x + … b[k]xkとしたときに、
Y[1] = gf(1),…,Y[n] = gf(n)
Z = gz
D[1] = A[1]z,…,D[k] = A[k]z
【0119】
を計算し、j = 1,…,nに対して、
α[j] = Y[j]gF(pw[j]) xor H0(w[i]z);
KS = Xy
を計算する。
【0120】
さらに、サーバ第1認証子生成工程では、サーバ側認証子AuthSを、
AuthS = H2(X,Z,D[1],…,D[k],α[1],…,α[n],Y,KS)
のように生成する。
【0121】
そして、サーバ送信工程では、計算されたZ,D[1],…,D[k],α[1],…,α[n]と、生成されたAuthSと、を、端末装置に送信する。
【0122】
一方、サーバ鍵生成工程では、サーバ側セッション鍵skSを、
skS = H1(X,Z,D[1],…,D[k],α[1],…,α[n],Y,Ks)
のように生成する。
【0123】
一方、端末装置において、端末受信工程、端末第2計算工程、端末第1認証子生成工程、端末鍵生成工程がさらに実行される。
【0124】
ここで、端末受信工程では、サーバ装置から送信されたZ,D[1],…,D[k],α[1],…,α[n],AuthSを受信する。
【0125】
一方、端末第2計算工程では、i = 1,…,kについて、
λ[i] = Π1≦j≦k,j≠i j/(j-i)
としたときに、
Y[i] = (α[i] xor H0(D[i]/Za[i]))/gF(pw[i])
を計算し、
Y = Y[1]λ[1]…Y[k]λ[k]
KC = Yx
を計算する。
【0126】
さらに、端末第1認証子生成工程では、計算されたX,Y,KCと、受信されたZ,D[1],…,D[k],α[1],…,α[n]と、から、端末側認証子AuthCを、
AuthC = H2(X,Z,D[1],…,D[k],α[1],…,α[n],Y,KC)
のように生成する。
【0127】
そして、端末鍵生成工程では、受信されたAuthSと、生成されたAuthCと、が、一致する場合、端末側セッション鍵skCを、
skC = H1(X,Z,D[1],…,D[k],α[1],…,α[n],Y,KC)
のように生成する。
【0128】
本発明の他の観点に係るプログラムは、各種のコンピュータを、上記のセッション鍵システムの端末装置が備える各部として機能させるように構成する。
【0129】
本発明の他の観点に係るプログラムは、各種のコンピュータを、上記のセッション鍵システムのサーバ装置が備える各部として機能させるように構成する。
【0130】
本発明のプログラムを、少なくとも2つのコンピュータのそれぞれに実行させることにより、本発明のセッション鍵システム、および、セッション鍵提供方法を実現することができる。
【0131】
また、当該コンピュータとは独立して、本発明のプログラムを記録した情報記録媒体を配布、販売することができる。また、本発明のプログラムを、インターネット等のコンピュータ通信網を介して伝送し、配布、販売することができる。
【0132】
特に、当該コンピュータがDSP(Digital Signal Processor)やFPGA(Field Programmable Gate Array)などのプログラム可能な電子回路を有する場合には、本発明の情報記録媒体に記録されたプログラムを無線にて当該コンピュータに伝送し、当該コンピュータ内のDSPやFPGAにこれを実行させて、本発明の無線通信端末とすることができる。
【発明の効果】
【0133】
本発明によれば、小さいパスワードを共有することで、証明者があるグループの一員であることを、その証明者が実際に誰なのかを明かすことなく、検証者に対して証明するのに好適な、セッション鍵システム、セッション鍵提供方法、および、これらをコンピュータにおいて実現するためのプログラムを提供することができる。
【発明を実施するための最良の形態】
【0134】
以下に本発明の一実施形態を説明する。なお、以下に説明する実施形態は説明のためのものであり、本発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例1】
【0135】
図1は、本発明のセッション鍵システムの最も基本的な実施形態に係る説明図である。以下、本図を参照して説明する。
【0136】
セッション鍵システム101は、1台以上の端末装置131と、1台のサーバ装置151と、両者を通信可能に接続するインターネット等のコンピュータ通信用の通信網171と、を備える。
【0137】
ここで、セッション鍵システム101は、素数pを法とする整数からなる体Zpと、当該素数pを位数とする有限巡回群(finite cyclic group)GGの生成元(generator)g,hと、ハッシュ関数Fと、を、端末装置131とサーバ装置151とで共有する。
【0138】
GGの位数pがLビットのビット列で表現できる素数であるとすると、GGのすべての要素はLビットのビット列で表現できる。また、GGの演算は乗算として表現される。
【0139】
g,hはGGの生成元であり、これに対して繰り返し上記の演算を適用することにより、GGのすべての元が現れることになる。
【0140】
また、本発明で利用するハッシュ関数は、任意の長さのビット列を、長さLのビット列に変換するもので、いわゆるランダムオラクルである。
【0141】
また、サーバ装置151には、n個のパスワードpw[1],…,pw[n]が保有される。すなわち、サーバ装置151では、n人のユーザのパスワードを保持していることになる。サーバ装置151におけるパスワードの辞書の典型的なサイズはおおよそ230程度であり、実際には、この中からn個の有効なパスワードが選択される。
【0142】
一方、端末装置131には、当該n個のパスワードのうち、i番目のパスワードpw[i]が保有される。
【0143】
すなわち、ユーザは、自分のパスワードを任意の端末装置131で使用することとなる。このパスワードをpw[i]としても、一般性を失わない。
【0144】
さて、端末装置131は、ユーザが何らかの形で与えたパスワードpw[i]に対して、処理を開始する。体Zpの元からxを一様にランダムに選択し、選択されたxからgxを計算する。
【0145】
サーバ装置151は、体Zpの元からyを一様にランダムに選択し、選択されたyから、j = 1,…,nについて、
α[j] = gygF(pw[j])
を計算する。
【0146】
さらに、端末装置131は、計算されたgxを指定する1-out-of-n紛失通信問い合わせをサーバ装置151に送信する。
【0147】
1-out-of-n紛失通信については、[非特許文献2][非特許文献3]に開示される効率の良い技術を採用することができ、詳細については後述する。ただし、他の紛失送信技術を適用することもでき、そのような実施態様も、本発明の範囲に含まれる。
【0148】
さて、サーバ装置151は、端末装置131から送信された1-out-of-n紛失通信問い合わせを受信し、受信された1-out-of-n紛失通信問い合わせに指定されるgxと、選択されたyと、から、
gxy = (gx)y
をサーバ側セッション鍵として生成する。
【0149】
さらに、計算されたα[j] (j = 1,…,n)から、i番目のパスワードpw[i]を持つユーザがgygF(pw[i])の情報のみを得られるような1-out-of-n紛失通信応答を生成して端末装置131に送信する。
【0150】
一方、端末装置131は、サーバ装置151から送信された1-out-of-n紛失通信応答を受信して、1-out-of-n紛失通信応答から、gygF(pw[i])の情報を得て、
gxy = (gygF(pw[i])/gF(pw[i]))x
を端末側セッション鍵として生成する。
【0151】
このように、本技術では、与えられた元g,gx,gyからgxyを効率良く求める計算Diffie-Hellman問題に帰着される。したがって、本技術の安全性は、計算Diffie-Hellman問題を効率良く求めるアルゴリズムが存在しない、という、現在技術界で同意されている仮定の下で、補償されることになる。
【0152】
以下、さらに詳細に、本技術について説明する。
【0153】
以下の例では、ハッシュ関数として、Fのほか、G,H0,H1,H2,H3を端末装置131とサーバ装置151とで共有する。典型的なハッシュ関数は1引数であるが、これらのハッシュ関数は任意の個数の引数をとることができる。この場合、任意の個数の引数を何らかの形で1つのビット列に変換し(たとえば、メモリ内でのデータ構造は、単なるビット列に還元できる。)、その1つのビット列に対してハッシュ関数を適用する、と考えることになる。
【0154】
図2は、端末装置131の概要構成を示す説明図である。以下、本図を参照して説明する。
【0155】
端末装置131は、端末選択部201、端末第1計算部202、端末第1送信部203、端末受信部204、端末第2計算部205、端末第1認証子生成部206、端末鍵生成部207を備える。
【0156】
なお、本図には、端末第2認証子生成部208、端末第2送信部209も図示してあるが、これらは、[実施例2]で必要となる要素である。
【0157】
図3は、端末装置131において実行される端末処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【0158】
まず、端末装置131の端末選択部201は、当該i番目のパスワードpw[i]に対して、体Zpの元からx,rを一様にランダムに選択する(ステップS301)。
【0159】
一方、端末第1計算部202は、選択されたx,rから、
X = gx
Q(i) = grhG(i,pw[i])
を計算する(ステップS302)。
【0160】
さらに、端末第1送信部203は、計算されたXと、計算されたQ(i)と、を、組
(X,Q(i))
としてサーバ装置151に送信する(ステップS303)。
【0161】
図4は、サーバ装置151の概要構成を示す説明図である。以下、本図を参照して説明する。
【0162】
一方、サーバ装置151は、サーバ第1受信部401、サーバ選択部402、サーバ第1計算部403、サーバ第1認証子生成部404、サーバ鍵生成部405、サーバ送信部406を備える。
【0163】
なお、本図には、サーバ第2受信部407、サーバ第2認証子生成部408も図示してあるが、これらは、[実施例2]で必要となる要素である。
【0164】
図5は、サーバ装置151にて実行されるサーバ処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【0165】
サーバ装置151において、サーバ第1受信部401は、端末装置131から送信された組
(X,Q(i))
を受信する(ステップS501)。
【0166】
ついで、サーバ選択部402は、体Zpの元からy,k[1],…,k[n]を一様にランダムに選択する(ステップS502)。
【0167】
さらに、サーバ第1計算部403は、受信された(X,Q(i))と、選択されたy,k[1],…,k[n]と、から、
Y = gy
と、j = 1,…,nについて、
α[j] = YgF(pw[j])
β[j] = H0((Q(i)/hG(j,pw[j]))k[j],j) xor α[j]
と、
A(Q(i)) = (β[1],…,β[n],gk[1],…,gk[n]);
KS = Xy
と、を計算する(ステップS503)。
【0168】
さらに、サーバ第1認証子生成部404は、サーバ側認証子AuthSを、
AuthS = H2(X,A(Q(i)),Y,KS)
のように生成する(ステップS504)。
【0169】
そして、サーバ鍵生成部405は、サーバ側セッション鍵skSを、
skS = H1(X,A(Q(i)),Y,KS)
のように生成する(ステップS505)。
【0170】
一方、サーバ送信部406は、計算されたA(Q(i))と、生成されたサーバ側認証子AuthSと、を組
(A(Q(i)),AuthS)
として、端末装置131に送信して(ステップS506)、本処理を終了する。
【0171】
さて、端末装置131に戻り、端末受信部204は、i番目のパスワードpw[i]に対して、サーバ装置151から送信された組
(A(Q(i)),AuthS)
を受信する(ステップS304)。
【0172】
ついで、端末第2計算部205は、受信されたA(Q(i)) = (β[1],…,β[n],gk[1],…,gk[n])から、
α[i] = β[i] xor H0((gk[i])r,i);
Y = α[i]/gF(pw[i])
KC = Yx
を計算する(ステップS305)。
【0173】
さらに、端末第1認証子生成部206は、受信されたA(Q(i))と、計算されたY,KCと、から、端末側認証子AuthCを、
AuthC = H2(X,A(Q(i)),Y,KC)
のように生成する(ステップS306)。
【0174】
一方、端末鍵生成部207は、受信されたAuthSと、生成されたAuthCと、が、一致するか否かを判定し(ステップS307)一致する場合(ステップS307;Yes)、端末側セッション鍵skCを、
skC = H1(X,A(Q(i)),Y,KC)
のように生成して(ステップS308)、本処理を終了する。
【0175】
一致しない場合(ステップS307;No)、セッション鍵の提供が受けられなかった旨を報告して(ステップS309)、本処理を終了する。
【0176】
このようにして、サーバ装置151と端末装置131とで、skS = skCを共有することができる一方で、端末装置131で利用したパスワードpw[i]そのものは、サーバ装置151に直接渡されることがなく、匿名性を保つことができる。
【0177】
なお、端末装置131を使用しうるユーザの識別符号の集合(pw[1]を持つユーザの識別符号C[1]、…、pw[n]を持つユーザの識別符号C[n])や、サーバ装置151の識別符号を、適宜通信の際に送受し、ハッシュ関数の計算においてこれらの識別符号も参照することとしても良い。
【0178】
たとえば、端末装置131からサーバ装置151へ送付される組に、C[1],…,C[n]の情報を含めることとし、サーバ側認証子AuthSサーバ側セッション鍵skSの計算で、C[1],…,C[n],Sの情報を勘案することとする。
【0179】
そして、サーバ装置151から端末装置131へ送付される組に、Sの情報を含めることとし、端末側認証子AuthC端末側セッション鍵skCの計算で、C[1],…,C[n],Sの情報を勘案することとするのである。
【0180】
以下の実施例についても、同様である。
【実施例2】
【0181】
本実施例では、サーバ装置151で、端末装置131を使用しているユーザの正当性を認証する。
【0182】
図6は、図3に示す端末処理が成功裏に終了した後に、端末装置131にて実行される処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【0183】
端末装置131において、ステップS308の後、端末第2認証子生成部208は、端末受信部204により受信されたA(Q(i))と、端末第2計算部205により計算されたY,KCと、から、端末側第2認証子AuthC'を、
AuthC' = H3(X,A(Q(i)),Y,KC)
のように生成する(ステップS601)。
【0184】
一方、端末第2送信部209は、生成されたAuthC'を、サーバ装置151に送信して(ステップS602)、本処理を終了する。
【0185】
図7は、図5に示すサーバ処理の制御の流れの一部を変形して本実施例に係るものとしたフローチャートである。以下、本図を参照して説明する。
【0186】
サーバ装置は、AuthSを生成した後(ステップS504)、ステップS505は実行せずに、組(A(Q(i)),AuthS)を端末装置131に送信してから(ステップS506)、以下の処理を開始する。
【0187】
すなわち、サーバ第2受信部407は、端末装置131から送信されたAuthC'を受信する(ステップS701)。
【0188】
ついで、サーバ第2認証子生成部408は、サーバ第1計算部403により計算されたA(Q(i)),Y,KSから、サーバ側第2認証子AuthS'を、
AuthS' = H3(X,A(Q(i)),Y,KS)
のように生成する(ステップS702)。
【0189】
さらに、受信されたAuthC'と、生成されたAuthS'と、が、一致するか否かを判定し(ステップS703)、一致する場合(ステップS703;Yes)、サーバ鍵生成部405が、サーバ側セッション鍵skSを生成して(ステップS505)、本処理を終了する。
【0190】
一致しない場合(ステップS703;No)、ユーザの正当性の認証に失敗した旨を報告して(ステップS704)、本処理を終了する。
【実施例3】
【0191】
上記の[実施例1][実施例2]は、いずれも、1-out-of-n紛失通信に相当するものであったが、本実施例は、k-out-of-n紛失通信に相当するものである。すなわち、全ユーザがn人でいる場合に、その中のk人がサーバとセッション鍵を共有するためのものである。
【0192】
この場合、k人のユーザが使用する端末装置131は、典型的には異なる機械であるが、理解を容易にするため、以下では、これらをまとめて1つの端末装置131として説明し、必要に応じて、個々の機械で行う処理と、これらを統合してまとめて行う処理と、を説明することとする。
【0193】
また、制御のおおまかな流れや各部の処理については、上記の[実施例1]と同様であるので、適宜説明を省略する。
【0194】
本実施例のセッション鍵システム101では、サーバ装置151には、n個のパスワードpw[1],…,pw[n]が保有され、端末装置131には、当該n個のパスワードのうち、少なくともpw[1],…,pw[k]が公開される。
(1) まず、端末装置131において、端末選択部201は、体Zpの元からx,γ[1],…,γ[k],a[1],…,a[k],w[k+1],…,w[n]を一様にランダムに選択する。
【0195】
次に、端末装置131において、端末第1計算部202は、選択されたx,γ[1],…,γ[k],a[1],…,a[k],w[k+1],…,w[n]から、
X = gx
と、i = 1,…,kについて
w[i] = hγ[i]G(i,pw[i])
A[i] = w[i]ga[i]
とを計算する。
【0196】
さらに、端末装置131において、端末第1送信部203は、計算されたX,A[1],…,A[k],w[1],…,w[n]を、サーバ装置151に送信する。
【0197】
典型的には、Xの計算は、いずれか1台の機械が行い、w[i],A[i]の計算は、それぞれのユーザの機械が行う。これにより、各人のパスワードが他人に漏曳することはない。そして、いずれかの1台(典型的にはXを計算した1台)に結果を集めてからサーバ装置151に送信する。
(2) 次に、サーバ装置151において、サーバ第1受信部401は、端末装置131から送信されたX,A[1],…,A[k],w[1],…,w[n]を受信する。
【0198】
ついで、サーバ装置151において、サーバ選択部402は、体Zpの元からy,z,b[1],…,b[k]を一様にランダムに選択する。
【0199】
さらに、サーバ装置151において、サーバ第1計算部403は、f(x) = y + b[1]x + … b[k]xkとしたときに、
Y[1] = gf(1),…,Y[n] = gf(n)
Z = gz
D[1] = A[1]z,…,D[k] = A[k]z
【0200】
を計算し、j = 1,…,nに対して、
α[j] = Y[j]gF(pw[j]) xor H0(w[i]z);
KS = Xy
を計算する。
【0201】
そして、サーバ装置151において、サーバ第1認証子生成部404は、サーバ側認証子AuthSを、
AuthS = H2(X,Z,D[1],…,D[k],α[1],…,α[n],Y,KS)
のように生成する。
【0202】
次に、サーバ装置151において、サーバ送信部406は、計算されたZ,D[1],…,D[k],α[1],…,α[n]と、生成されたAuthSと、を、端末装置131に送信する。
【0203】
典型的には、Z,D[1],…,D[k],α[1],…,α[n],AuthSが送信される端末装置131は、ユーザが利用するすべての機械であるが、1台がとりまとめて受信し、各機械に分配することとしても良い。
【0204】
さらに、サーバ装置151において、サーバ鍵生成部405は、サーバ側セッション鍵skSを、
skS = H1(X,Z,D[1],…,D[k],α[1],…,α[n],Y,Ks)
のように生成する。
(3) そして、端末装置131において、端末受信部204は、サーバ装置151から送信されたZ,D[1],…,D[k],α[1],…,α[n],AuthSを受信する。これらは、ユーザが使用する機械に分配されるのが典型的である。
【0205】
ついで、端末装置131において、端末第2計算部205は、i = 1,…,kについて、
λ[i] = Π1≦j≦k,j≠i j/(j-i)
としたときに、
Y[i] = (α[i] xor H0(D[i]/Za[i]))/gF(pw[i])
を計算し、
Y = Y[1]λ[1]…Y[k]λ[k]
KC = Yx
を計算する。
【0206】
さらに、端末装置131において、端末第1認証子生成部206は、計算されたX,Y,KCと、受信されたZ,D[1],…,D[k],α[1],…,α[n]と、から、端末側認証子AuthCを、
AuthC = H2(X,Z,D[1],…,D[k],α[1],…,α[n],Y,KC)
のように生成する。
【0207】
Y[i]の計算は、それぞれのユーザが利用する機械で行うこととすれば、パスワードが漏れることはない。そして、計算されたX,Y[1],…,Y[k]は、それぞれのユーザが利用する機械で共有することとするのである。
【0208】
そして、端末装置131において、端末鍵生成部207は、受信されたAuthSと、生成されたAuthCと、が、一致する場合、端末側セッション鍵skCを、
skC = H1(X,Z,D[1],…,D[k],α[1],…,α[n],Y,KC)
のように生成する。
【0209】
上記のように、個々のパスワード以外の情報は、共有したり、独立に計算できるので、skCの計算も個々の機械で独立して計算することができる。
【0210】
このように、k人のユーザが集まることによって、秘密鍵となるセッション鍵を共有し、かつ、匿名を保ちながらパスワードを利用して認証を行うことができる。また、k人未満のユーザが集まっても、セッション鍵共有を行うことはできない。
【0211】
上述した通り、k人のユーザが使用する端末装置131は、典型的には異なる機械である。そこで、これらを仮にi = 1,…,k番目の機器としたとき、i番目の機器はパスワードpw[i]を保有することとし、他のパスワードpw[j] (j≠i)は知らないようにすることができる。
【0212】
γ[i],a[i]のランダム選択やw[i],A[i],Y[i]の計算は、i番目の機器のみで独立に行うことができるため、pw[i]を他のj (j≠i)番目の機器に知られずにすむ。
【0213】
また、x,w[k+1],…,w[n]のランダムな選択や、Xの計算は、k台の機器のいずれかが代表として行うこととすれば良い。w[i],A[i]の情報は、この代表がとりまとめてサーバ装置151に送ることとする。また、それぞれの機器が計算したY[i]は、代表に集められ、YやKCの計算は代表が行うこととする。
【0214】
このような、k台の機器の群を、上記の説明では、「1台の端末装置131」として表現している。
【産業上の利用可能性】
【0215】
以上説明したように、本発明によれば、小さいパスワードを共有することで、証明者があるグループの一員であることを、その証明者が実際に誰なのかを明かすことなく、検証者に対して証明するのに好適な、セッション鍵システム、セッション鍵提供方法、および、これらをコンピュータにおいて実現するためのプログラムを提供することができる。
【図面の簡単な説明】
【0216】
【図1】本発明のセッション鍵システムの最も基本的な実施形態に係る説明図である。
【図2】端末装置の概要構成を示す説明図である。
【図3】端末装置において実行される端末処理の制御の流れを示すフローチャートである。
【図4】サーバ装置の概要構成を示す説明図である。
【図5】サーバ装置にて実行されるサーバ処理の制御の流れを示すフローチャートである。
【図6】端末処理が成功裏に終了した後に端末装置にて実行される処理の制御の流れを示すフローチャートである。
【図7】図5に示すサーバ処理の制御の流れの一部を変形したフローチャートである。
【符号の説明】
【0217】
101 セッション鍵システム
131 端末装置
151 サーバ装置
171 通信網
201 端末選択部
202 端末第1計算部
203 端末第1送信部
204 端末受信部
205 端末第2計算部
206 端末第1認証子生成部
207 端末鍵生成部
208 端末第2認証子生成部
209 端末第2送信部
401 サーバ第1受信部
402 サーバ選択部
403 サーバ第1計算部
404 サーバ第1認証子生成部
405 サーバ鍵生成部
406 サーバ送信部
407 サーバ第2受信部
408 サーバ第2認証子生成部

【特許請求の範囲】
【請求項1】
素数pを法とする整数からなる体Zpと、当該素数pを位数とする有限巡回群(finite cyclic group)GGの生成元(generator)g,hと、ハッシュ関数Fと、を、端末装置とサーバ装置とで共有し、前記サーバ装置には、n個のパスワードpw[1],…,pw[n]が保有され、前記端末装置には、当該n個のパスワードのうち、i番目のパスワードpw[i]が保有されるセッション鍵システムであって、
(a) 前記端末装置は、当該i番目のパスワードpw[i]に対して、
体Zpの元からxを一様にランダムに選択する端末選択部、
前記選択されたxからgxを計算する端末第1計算部
を備え、
(b) 前記サーバ装置は、
体Zpの元からyを一様にランダムに選択するサーバ選択部、
前記選択されたyから、j = 1,…,nについて、
α[j] = gygF(pw[j])
を計算するサーバ第1計算部
を備え、
(c) 前記端末装置は、
前記計算されたgxを指定する1-out-of-n紛失通信問い合わせを前記サーバ装置に送信する端末第1送信部
をさらに備え、
(d) 前記サーバ装置は、
前記端末装置から送信された1-out-of-n紛失通信問い合わせを受信するサーバ第1受信部、
前記受信された1-out-of-n紛失通信問い合わせに指定されるgxと、前記選択されたyと、から、
gxy = (gx)y
をサーバ側セッション鍵として生成するサーバ鍵生成部、
前記計算されたα[j] (j = 1,…,n)から、i番目のパスワードpw[i]を持つユーザがgygF(pw[i])の情報のみを得られるような1-out-of-n紛失通信応答を生成して前記端末装置に送信するサーバ送信部
をさらに備え、
(d)前記端末装置は、
前記サーバ装置から送信された1-out-of-n紛失通信応答を受信する端末受信部、
前記受信された1-out-of-n紛失通信応答から、gygF(pw[i])の情報を得て、
gxy = (gygF(pw[i])/gF(pw[i]))x
を端末側セッション鍵として生成する端末鍵生成部
をさらに備える
ことを特徴とするセッション鍵システム。
【請求項2】
素数pを法とする整数からなる体Zpと、当該素数pを位数とする有限巡回群(finite cyclic group)GGの生成元(generator)g,hと、ハッシュ関数F,G,H0,H1,H2と、を、端末装置とサーバ装置とで共有し、前記サーバ装置には、n個のパスワードpw[1],…,pw[n]が保有され、前記端末装置には、当該n個のパスワードのうち、i番目のパスワードpw[i]が保有されるセッション鍵システムであって、
(a) 前記端末装置は、当該i番目のパスワードpw[i]に対して、
体Zpの元からx,rを一様にランダムに選択する端末選択部、
前記選択されたx,rから、
X = gx
Q(i) = grhG(i,pw[i])
を計算する端末第1計算部、
前記計算されたXと、前記計算されたQ(i)と、を、組
(X,Q(i))
としてサーバ装置に送信する端末第1送信部
を備え、
(b) 前記サーバ装置は、
前記端末装置から送信された組
(X,Q(i))
を受信するサーバ第1受信部、
体Zpの元からy,k[1],…,k[n]を一様にランダムに選択するサーバ選択部、
前記受信された(X,Q(i))と、前記選択されたy,k[1],…,k[n]と、から、
Y = gy
と、j = 1,…,nについて、
α[j] = YgF(pw[j])
β[j] = H0((Q(i)/hG(j,pw[j]))k[j],j) xor α[j]
と、
A(Q(i)) = (β[1],…,β[n],gk[1],…,gk[n]);
KS = Xy
と、を計算するサーバ第1計算部、
サーバ側認証子AuthSを、
AuthS = H2(X,A(Q(i)),Y,KS)
のように生成するサーバ第1認証子生成部、
サーバ側セッション鍵skSを、
skS = H1(X,A(Q(i)),Y,KS)
のように生成するサーバ鍵生成部、
前記計算されたA(Q(i))と、前記生成されたサーバ側認証子AuthSと、を組
(A(Q(i)),AuthS)
として、前記端末装置に送信するサーバ送信部
を備え、
(c) 前記端末装置は、i番目のパスワードpw[i]に対して、
前記サーバ装置から送信された組
(A(Q(i)),AuthS)
を受信する端末受信部、
前記受信されたA(Q(i)) = (β[1],…,β[n],gk[1],…,gk[n])から、
α[i] = β[i] xor H0((gk[i])r,i);
Y = α[i]/gF(pw[i])
KC = Yx
を計算する端末第2計算部、
前記受信されたA(Q(i))と、前記計算されたY,KCと、から、端末側認証子AuthCを、
AuthC = H2(X,A(Q(i)),Y,KC)
のように生成する端末第1認証子生成部、
前記受信されたAuthSと、前記生成されたAuthCと、が、一致する場合、端末側セッション鍵skCを、
skC = H1(X,A(Q(i)),Y,KC)
のように生成する端末鍵生成部
をさらに備える
ことを特徴とするセッション鍵システム。
【請求項3】
請求項1に記載のセッション鍵システムであって、前記端末装置と、前記サーバ装置と、は、ハッシュ関数H3をさらに共有し、
(d) 前記端末装置は、
前記端末受信部により受信されたA(Q(i))と、前記端末第2計算部により計算されたY,KCと、から、端末側第2認証子AuthC'を、
AuthC' = H3(X,A(Q(i)),Y,KC)
のように生成する端末第2認証子生成部、
前記生成されたAuthC'を、前記サーバ装置に送信する端末第2送信部
をさらに備え、
(e) 前記サーバ装置は、
前記端末装置から送信されたAuthC'を受信するサーバ第2受信部、
前記サーバ第1計算部により計算されたA(Q(i)),Y,KSから、サーバ側第2認証子AuthS'を、
AuthS' = H3(X,A(Q(i)),Y,KS)
のように生成するサーバ第2認証子生成部
をさらに備え、
前記サーバ装置が備えるサーバ鍵生成部が、サーバ側セッション鍵skSを生成するのは、前記受信されたAuthC'と、前記生成されたAuthS'と、が、一致する場合である
ことを特徴とするセッション鍵システム。
【請求項4】
素数pを法とする整数からなる体Zpと、当該素数pを位数とする有限巡回群(finite cyclic group)GGの生成元(generator)g,hと、ハッシュ関数F,G,H0,H1,H2と、を、端末装置とサーバ装置とで共有し、サーバ装置には、n個のパスワードpw[1],…,pw[n]が保有され、前記端末装置には、当該n個のパスワードのうち、pw[1],…,pw[k]が保有されるセッション鍵システムであって、
(a)前記端末装置は、
体Zpの元からx,γ[1],…,γ[k],a[1],…,a[k],w[k+1],…,w[n]を一様にランダムに選択する端末選択部、
前記選択されたx,γ[1],…,γ[k],a[1],…,a[k],w[k+1],…,w[n]から、
X = gx
と、i = 1,…,kについて
w[i] = hγ[i]G(i,pw[i])
と、i = 1,…,nについて
A[i] = w[i]ga[i]
とを計算する端末第1計算部、
前記計算されたX,A[1],…,A[k],w[1],…,w[n]を、前記サーバ装置に送信する端末第1送信部
を備え、
(b) 前記サーバ装置は、
前記端末装置から送信されたX,A[1],…,A[k],w[1],…,w[n]を受信するサーバ第1受信部、
体Zpの元からy,z,b[1],…,b[k]を一様にランダムに選択するサーバ選択部、
f(x) = y + b[1]x + … b[k]xkとしたときに、
Y[1] = gf(1),…,Y[n] = gf(n)
Z = gz
D[1] = A[1]z,…,D[k] = A[k]z
を計算し、j = 1,…,nに対して、
α[j] = Y[j]gF(pw[j]) xor H0(w[i]z);
KS = Xy
を計算するサーバ第1計算部、
サーバ側認証子AuthSを、
AuthS = H2(X,Z,D[1],…,D[k],α[1],…,α[n],Y,KS)
のように生成するサーバ第1認証子生成部、
前記計算されたZ,D[1],…,D[k],α[1],…,α[n]と、前記生成されたAuthSと、を、前記端末装置に送信するサーバ送信部、
サーバ側セッション鍵skSを、
skS = H1(X,Z,D[1],…,D[k],α[1],…,α[n],Y,Ks)
のように生成するサーバ鍵生成部、
を備え、
(c) 前記端末装置は、
前記サーバ装置から送信されたZ,D[1],…,D[k],α[1],…,α[n],AuthSを受信する端末受信部、
i = 1,…,kについて、
λ[i] = Π1≦j≦k,j≠i j/(j-i)
としたときに、
Y[i] = (α[i] xor H0(D[i]/Za[i]))/gF(pw[i])
を計算し、
Y = Y[1]λ[1]…Y[k]λ[k]
KC = Yx
を計算する端末第2計算部、
前記計算されたX,Y,KCと、前記受信されたZ,D[1],…,D[k],α[1],…,α[n]と、から、端末側認証子AuthCを、
AuthC = H2(X,Z,D[1],…,D[k],α[1],…,α[n],Y,KC)
のように生成する端末第1認証子生成部、
前記受信されたAuthSと、前記生成されたAuthCと、が、一致する場合、端末側セッション鍵skCを、
skC = H1(X,Z,D[1],…,D[k],α[1],…,α[n],Y,KC)
のように生成する端末鍵生成部
をさらに備える
ことを特徴とするセッション鍵システム。
【請求項5】
素数pを法とする整数からなる体Zpと、当該素数pを位数とする有限巡回群(finite cyclic group)GGの生成元(generator)g,hと、ハッシュ関数Fと、を、端末装置とサーバ装置とで共有し、前記サーバ装置には、n個のパスワードpw[1],…,pw[n]が保有され、前記端末装置には、当該n個のパスワードのうち、i番目のパスワードpw[i]が保有されるセッション鍵提供方法であって、
(a) 前記端末装置が、当該i番目のパスワードpw[i]に対して、
体Zpの元からxを一様にランダムに選択する端末選択工程、
前記選択されたxからgxを計算する端末第1計算工程
を備え、
(b) 前記サーバ装置が、
体Zpの元からyを一様にランダムに選択するサーバ選択工程
前記選択されたyから、j = 1,…,nについて、
α[j] = gygF(pw[j])
を計算するサーバ第1計算工程
を備え、
(c) 前記端末装置が、
前記計算されたgxを指定する1-out-of-n紛失通信問い合わせを前記サーバ装置に送信する端末第1送信工程
をさらに備え、
(d) 前記サーバ装置が、
前記端末装置から送信された1-out-of-n紛失通信問い合わせを受信するサーバ第1受信工程、
前記受信された1-out-of-n紛失通信問い合わせに指定されるgxと、前記選択されたyと、から、
gxy = (gx)y
をサーバ側セッション鍵として生成するサーバ鍵生成工程、
前記計算されたα[j] (j = 1,…,n)から、i番目のパスワードpw[i]を持つユーザがgygF(pw[i])の情報のみを得られるような1-out-of-n紛失通信応答を生成して前記端末装置に送信するサーバ送信工程
をさらに備え、
(d)前記端末装置が、
前記サーバ装置から送信された1-out-of-n紛失通信応答を受信する端末受信工程
前記受信された1-out-of-n紛失通信応答から、gygF(pw[i])の情報を得て、
gxy = (gygF(pw[i])/gF(pw[i]))x
を端末側セッション鍵として生成する端末鍵生成工程
をさらに備える
ことを特徴とするセッション鍵提供方法。
【請求項6】
素数pを法とする整数からなる体Zpと、当該素数pを位数とする有限巡回群(finite cyclic group)GGの生成元(generator)g,hと、ハッシュ関数F,G,H0,H1,H2と、を、端末装置とサーバ装置とで共有し、前記サーバ装置には、n個のパスワードpw[1],…,pw[n]が保有され、前記端末装置には、当該n個のパスワードのうち、i番目のパスワードpw[i]が保有されるセッション鍵提供方法であって、
(a) 前記端末装置が、当該i番目のパスワードpw[i]に対して、
体Zpの元からx,rを一様にランダムに選択する端末選択工程、
前記選択されたx,rから、
X = gx
Q(i) = grhG(i,pw[i])
を計算する端末第1計算工程、
前記計算されたXと、前記計算されたQ(i)と、を、組
(X,Q(i))
としてサーバ装置に送信する端末第1送信工程
を備え、
(b) 前記サーバ装置が、
前記端末装置から送信された組
(X,Q(i))
を受信するサーバ第1受信工程、
体Zpの元からy,k[1],…,k[n]を一様にランダムに選択するサーバ選択工程、
前記受信された(X,Q(i))と、前記選択されたy,k[1],…,k[n]と、から、
Y = gy
と、j = 1,…,nについて、
α[j] = YgF(pw[j])
β[j] = H0((Q(i)/hG(j,pw[j]))k[j],j) xor α[j]
と、
A(Q(i)) = (β[1],…,β[n],gk[1],…,gk[n]);
KS = Xy
と、を計算するサーバ第1計算工程、
サーバ側認証子AuthSを、
AuthS = H2(X,A(Q(i)),Y,KS)
のように生成するサーバ第1認証子生成工程、
サーバ側セッション鍵skSを、
skS = H1(X,A(Q(i)),Y,KS)
のように生成するサーバ鍵生成工程、
前記計算されたA(Q(i))と、前記生成されたサーバ側認証子AuthSと、を組
(A(Q(i)),AuthS)
として、前記端末装置に送信するサーバ送信工程
を備え、
(c) 前記端末装置が、i番目のパスワードpw[i]に対して、
前記サーバ装置から送信された組
(A(Q(i)),AuthS)
を受信する端末受信工程、
前記受信されたA(Q(i)) = (β[1],…,β[n],gk[1],…,gk[n])から、
α[i] = β[i] xor H0((gk[i])r,i);
Y = α[i]/gF(pw[i])
KC = Yx
を計算する端末第2計算工程、
前記受信されたA(Q(i))と、前記計算されたY,KCと、から、端末側認証子AuthCを、
AuthC = H2(X,A(Q(i)),Y,KC)
のように生成する端末第1認証子生成工程、
前記受信されたAuthSと、前記生成されたAuthCと、が、一致する場合、端末側セッション鍵skCを、
skC = H1(X,A(Q(i)),Y,KC)
のように生成する端末鍵生成工程
をさらに備える
ことを特徴とするセッション鍵地峡方法。
【請求項7】
請求項6に記載のセッション鍵提供方法であって、前記端末装置と、前記サーバ装置と、は、ハッシュ関数H3をさらに共有し、
(d) 前記端末装置が、
前記端末受信工程にて受信されたA(Q(i))と、前記端末第2計算工程にて計算されたY,KCと、から、端末側第2認証子AuthC'を、
AuthC' = H3(X,A(Q(i)),Y,KC)
のように生成する端末第2認証子生成工程、
前記生成されたAuthC'を、前記サーバ装置に送信する端末第2送信工程
をさらに備え、
(e) 前記サーバ装置が、
前記端末装置から送信されたAuthC'を受信するサーバ第2受信工程、
前記サーバ第1計算工程にて計算されたA(Q(i)),Y,KSから、サーバ側第2認証子AuthS'を、
AuthS' = H3(X,A(Q(i)),Y,KS)
のように生成するサーバ第2認証子生成工程
をさらに備え、
前記サーバ鍵生成工程にて、サーバ側セッション鍵skSを生成するのは、前記受信されたAuthC'と、前記生成されたAuthS'と、が、一致する場合である
ことを特徴とするセッション鍵提供方法。
【請求項8】
素数pを法とする整数からなる体Zpと、当該素数pを位数とする有限巡回群(finite cyclic group)GGの生成元(generator)g,hと、ハッシュ関数F,G,H0,H1,H2と、を、端末装置とサーバ装置とで共有し、サーバ装置には、n個のパスワードpw[1],…,pw[n]が保有され、前記端末装置には、当該n個のパスワードのうち、pw[1],…,pw[k]が保有されるセッション鍵提供方法であって、
(a)前記端末装置が、
体Zpの元からx,γ[1],…,γ[k],a[1],…,a[k],w[k+1],…,w[n]を一様にランダムに選択する端末選択工程、
前記選択されたx,γ[1],…,γ[k],a[1],…,a[k],w[k+1],…,w[n]から、
X = gx
と、i = 1,…,kについて
w[i] = hγ[i]G(i,pw[i])
A[i] = w[i]ga[i]
とを計算する端末第1計算工程、
前記計算されたX,A[1],…,A[k],w[1],…,w[n]を、前記サーバ装置に送信する端末第1送信工程
を備え、
(b) 前記サーバ装置が、
前記端末装置から送信されたX,A[1],…,A[k],w[1],…,w[n]を受信するサーバ第1受信工程、
体Zpの元からy,z,b[1],…,b[k]を一様にランダムに選択するサーバ選択工程、
f(x) = y + b[1]x + … b[k]xkとしたときに、
Y[1] = gf(1),…,Y[n] = gf(n)
Z = gz
D[1] = A[1]z,…,D[k] = A[k]z
を計算し、j = 1,…,nに対して、
α[j] = Y[j]gF(pw[j]) xor H0(w[i]z);
KS = Xy
を計算するサーバ第1計算工程、
サーバ側認証子AuthSを、
AuthS = H2(X,Z,D[1],…,D[k],α[1],…,α[n],Y,KS)
のように生成するサーバ第1認証子生成工程、
前記計算されたZ,D[1],…,D[k],α[1],…,α[n]と、前記生成されたAuthSと、を、前記端末装置に送信するサーバ送信工程、
サーバ側セッション鍵skSを、
skS = H1(X,Z,D[1],…,D[k],α[1],…,α[n],Y,Ks)
のように生成するサーバ鍵生成工程、
を備え、
(c) 前記端末装置が、
前記サーバ装置から送信されたZ,D[1],…,D[k],α[1],…,α[n],AuthSを受信する端末受信工程、
i = 1,…,kについて、
λ[i] = Π1≦j≦k,j≠i j/(j-i)
としたときに、
Y[i] = (α[i] xor H0(D[i]/Za[i]))/gF(pw[i])
を計算し、
Y = Y[1]λ[1]…Y[k]λ[k]
KC = Yx
を計算する端末第2計算工程、
前記計算されたX,Y,KCと、前記受信されたZ,D[1],…,D[k],α[1],…,α[n]と、から、端末側認証子AuthCを、
AuthC = H2(X,Z,D[1],…,D[k],α[1],…,α[n],Y,KC)
のように生成する端末第1認証子生成工程、
前記受信されたAuthSと、前記生成されたAuthCと、が、一致する場合、端末側セッション鍵skCを、
skC = H1(X,Z,D[1],…,D[k],α[1],…,α[n],Y,KC)
のように生成する端末鍵生成工程
をさらに備える
ことを特徴とするセッション鍵提供方法。
【請求項9】
コンピュータを、請求項1から4のいずれか1項に記載のセッション鍵システムの端末装置が備える各部として機能させることを特徴とするプログラム。
【請求項10】
コンピュータを、請求項1から4のいずれか1項に記載のセッション鍵システムのサーバ装置が備える各部として機能させることを特徴とするプログラム。
【請求項11】
請求項4に記載のセッション鍵システムであって、
前記端末装置は、k台の機器を備え、
i = 1,…,kについて、パスワードpw[i]はi番目の機器に保有され、γ[i],a[i]の取得およびw[i],A[i],w[i]の計算は、i番目の機器が、j (j≠i)番目の機器とは独立に行う
ことを特徴とするセッション鍵システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2007−134990(P2007−134990A)
【公開日】平成19年5月31日(2007.5.31)
【国際特許分類】
【出願番号】特願2005−326385(P2005−326385)
【出願日】平成17年11月10日(2005.11.10)
【出願人】(301022471)独立行政法人情報通信研究機構 (1,071)
【Fターム(参考)】