ブラインド署名生成・検証方法、ブラインド署名生成装置、利用者装置、ブラインド署名検証装置、ブラインド署名生成・検証システム、ブラインド署名生成プログラム、利用者プログラム、ブラインド署名検証プログラム
【課題】ハッシュ関数に依存することなく、安全性が保証された効率的なブラインド署名を実現する。
【解決手段】ブラインド署名生成装置10が、秘密鍵x,y,zと公開鍵g1,g2,w=g2x,u=g2y,v=g2zとを生成し、rをランダムに選択しh=g2rを計算して利用者装置20に送る。利用者装置20は、s,Rをランダムに選択し、X=g1m・ψ(u)・ψ(v)s・(ψ(w・h))Rを計算してブラインド署名生成装置10に送信する。ブラインド署名生成装置10はLをランダムに選択し、Y=(X・g1L・z)1/(x+r)を計算して(Y,L)を利用者装置20に送る。利用者装置20はtをランダムに選択してσ=(Y/g1R)1/t,α=wt-1・ht,β=s+L mod pを計算し、mとそのブラインド署名(σ,α,β)とをブラインド署名検証装置30に送る。ブラインド署名検証装置30は、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)が成立するか否か検証する。
【解決手段】ブラインド署名生成装置10が、秘密鍵x,y,zと公開鍵g1,g2,w=g2x,u=g2y,v=g2zとを生成し、rをランダムに選択しh=g2rを計算して利用者装置20に送る。利用者装置20は、s,Rをランダムに選択し、X=g1m・ψ(u)・ψ(v)s・(ψ(w・h))Rを計算してブラインド署名生成装置10に送信する。ブラインド署名生成装置10はLをランダムに選択し、Y=(X・g1L・z)1/(x+r)を計算して(Y,L)を利用者装置20に送る。利用者装置20はtをランダムに選択してσ=(Y/g1R)1/t,α=wt-1・ht,β=s+L mod pを計算し、mとそのブラインド署名(σ,α,β)とをブラインド署名検証装置30に送る。ブラインド署名検証装置30は、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)が成立するか否か検証する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号技術の応用技術分野に関し、特にブラインド署名技術に関する。
【背景技術】
【0002】
従来多くのブラインドディジタル署名方式が提案されているが、ほとんどの署名方式(RSAブラインド署名方式、DSAブラインド署名方式など(例えば、非特許文献1参照))は、ハッシュ関数を利用することで安全性が保証される。この場合、安全性の根拠はハッシュ値のランダム性に依存することになるが、ハッシュ値が完全にランダムなハッシュ関数は存在しない。
また、ハッシュ関数を利用しないブラインド署名方式としては、Juelsらの方式がある(例えば、非特許文献2参照)。
【非特許文献1】Chaum, D., "Security without Identification: Transaction Systems to Make Big Brother Obsolete", Communications of the ACM, vol.28, No.10, pp.1030-1044 (1985)
【非特許文献2】Juels, A., Luby, M, and Ostrovsky, R., "Security of Blind Digital Signatures, Proceedings of Crypto'97, LNCS 1294, pp.150-164 (1997)
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、Juelsらの方式は、一般的な二者間プロトコルに基づく方式であり、実用上の効率性は全く考慮されていない。そのため、この方式は全く実用性を持たない。
本発明はこのような点に鑑みてなされたものであり、ハッシュ関数に依存することなく、安全性が保証された効率的なブラインド署名を実現することを目的とする。
【課題を解決するための手段】
【0004】
第1の発明では、まず、ブラインド署名生成装置の秘密鍵生成部が、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成し、公開鍵生成部が、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成する。そして、h計算部が、h=g2r(r∈{0,1,...,p−1})を計算し、送信部が、hを利用者装置に送信する。
次に、利用者装置の受信部が、hと少なくともブラインド署名生成装置から送信された公開鍵g1,w,u,vとを受信する。そして、利用者装置のX計算部が、ψをG2からG1への写像ψ(g2)=g1とし、m∈{0,1,...,p−1}を署名対象情報とした場合における、X=g1m・ψ(u)・ψ(v)s・(ψ(w・h))R(s,R∈{0,1,...,p−1})を計算し、送信部が、Xをブラインド署名生成装置に送信する。
【0005】
次に、ブラインド署名生成装置の受信部がXを受信する。また、ブラインド署名生成装置のY計算部が、Y=(X・g1L・z)1/(x+r)(L,z∈{0,1,...,p−1})を計算し、送信部が、少なくともYを利用者装置に送信する。
次に、利用者装置の受信部が少なくともYを受信し、σ計算部が、σ=(Y/g1R)1/t(t∈{0,1,...,p−1})を計算し、α計算部が、α=wt−1・htを計算し、送信部が、署名対象情報mと、ブラインド署名(σ,α,β)と、をブラインド署名検証装置に送信する。
【0006】
次に、ブラインド署名検証装置の受信部が、署名対象情報mとそのブラインド署名(σ,α,β)とを受信し、ブラインド署名生成装置から送信された公開鍵g1,g2,w,u,vを受信する。そして、ブラインド署名検証装置の署名検証部が、eをG1×G2→GTの双線形写像とした場合における、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)(β=s+L mod p)が成立するか否かを検証する。
ここで、本発明では、双線形写像を用いることとしため、ハッシュ関数を必要としないブラインド署名を実現できる。また、このブラインド署名の安全性は、Strong Diffile-Hellman問題の求解困難性に基づいており、安全であるといえる。さらに、このブラインド署名の各処理に必要とされる演算量は、広く用いられているRSA署名などと同程度である。
【0007】
また、第1の発明において好ましくは、利用者装置の証明結果情報生成部が、当該利用者装置に(m,s,R)が保持されていることを、少なくともmを開示することなくブラインド署名生成装置に証明するための証明結果情報を生成し、送信部が、当該証明結果情報をブラインド署名生成装置に送信する。そして、ブラインド署名生成装置の受信部が、この証明結果情報を受信し、証明結果検証部が、証明結果情報を検証する。そして、この証明検証部が証明結果情報を合格と判断した場合にのみ、上述のブラインド署名生成装置のY計算部がYを計算するための処理を実行する。
【0008】
これにより、利用者装置が署名対象mに対応しないXをブラインド署名生成装置に送信し、不正な或いは誤ったブラインド署名が生成されることを防止できる。
また、第1の発明において好ましくは、利用者装置の乱数生成部が、a1,a2,a3を{0,1,...,p−1}からランダムに選択し、W計算部が、W=g1a1・ψ(v)a2・(ψ(w・h))a3(上付き添え字a1,a2,a3は、それぞれa1,a2,a3を示す)を計算し、送信部が、Wをブラインド署名生成装置に送信する。そして、ブラインド署名生成装置の受信部がWを受信した後、乱数生成部が、ηを{0,1,...,p−1}からランダムに選択し、送信部が、このηを利用者装置に送信する。次に、利用者装置の受信部が、ηを受信し、証明結果情報生成部が、証明結果情報としてz1=a1+η・m mod p,z2=a2+η・s mod p,z3=a3+η・R mod pを生成し、送信部が、当該証明結果情報をブラインド署名生成装置に送信する。そして、これに対し、ブラインド署名生成装置の証明結果検証部がg1z1・ψ(v)z2・(ψ(w・h))z3≡W・(X/ψ(u))η(上付き添え字z1,z2,z3は、それぞれz1,z2,z3を示す)が成り立つか否かにより、証明結果情報の検証を行う。
【0009】
また、第1の発明において好ましくは、写像ψはG2からG1への同型写像である。
これにより、正確な署名検証が可能になる。
また、第1の発明において好ましくは、ブラインド署名生成装置の秘密鍵生成部が、秘密鍵xを生成する際に、秘密鍵z∈{0,1,...,p−1}も生成して記憶部に格納するステップをさらに有し、ブラインド署名生成装置の公開鍵生成部が生成する公開鍵はv=g2zであり、ブラインド署名生成装置の受信部がXを受信するステップの後、ブラインド署名生成装置のY計算部がYを計算して記憶部に格納するステップの前に、ブラインド署名生成装置の乱数生成部が、Lを{0,1,...,p−1}からランダムに選択して記憶部に格納するステップをさらに有し、ブラインド署名生成装置の送信部は、YとともにLをも利用者装置に送信し、利用者装置の受信部は、YとともにLをも受信し、利用者装置の受信部が、YとともにLをも受信するステップの後、利用者装置の送信部が署名対象情報mとブラインド署名(σ,α,β)とをブラインド署名検証装置に送信するステップの前に、利用者装置のβ計算部が、β=s+L mod pを計算して記憶部に格納するステップをさらに有する。
【0010】
これにより、署名の安全性がより向上する。
また、第2の発明では、まず、ブラインド署名生成装置の秘密鍵生成部が、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成し、ブラインド署名生成装置の公開鍵生成部が、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成する。そして、利用者装置の受信部が、少なくともブラインド署名生成装置から送信された公開鍵g1,u,vを受信し、X計算部が、ψをG2からG1への写像ψ(g2)=g1とし、mを署名対象情報とした場合における、X=(g1m・ψ(u)・ψ(v)s)t(s,t∈{0,1,...,p−1})を計算し、送信部が、Xをブラインド署名生成装置に送信する。
【0011】
次に、ブラインド署名生成装置の受信部がXを受信し、Y計算部が、Y=(X・(ψ(v))L)1/(x+r)(r,L∈{0,1,...,p−1})を計算し、送信部が、少なくともYを利用者装置に送信する。
そして、利用者装置の受信部が少なくともYを受信し、ブラインド署名生成装置から送信された公開鍵wを受信し、τ計算部が、τ=(f・t)−1mod p(f∈{0,1,...,p−1})を計算し、σ計算部が、σ=Yτを計算し、α計算部が、α=wf−1・Rf(R=g2r,r∈{0,1,...,p−1})を計算し、送信部が、署名対象情報mと、ブラインド署名(σ,α,β)(β=s+L/t mod p)と、をブラインド署名検証装置に送信する。
【0012】
次に、ブラインド署名検証装置の受信部が、署名対象情報mとブラインド署名(σ,α,β)とを受信し、ブラインド署名生成装置から送信された公開鍵g1,g2,w,u,vを受信し、署名検証部が、eをG1×G2→GTの双線形写像とした場合における、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)が成立するか否かを検証する。
ここで、第2の発明では、双線形写像を用いることとしため、ハッシュ関数を必要としないブラインド署名を実現できる。また、このブラインド署名の安全性は、Strong Diffile-Hellman問題の求解困難性に基づいており、安全であるといえる。さらに、このブラインド署名の各処理に必要とされる演算量は、広く用いられているRSA署名などと同程度である。
【0013】
また、第2の発明において好ましくは、利用者装置の証明結果情報生成部が、(m・t mod p,t,s・t mod p)を保持又は算出可能であることを、少なくともmを開示することなくブラインド署名生成装置に証明するための証明結果情報を生成し、送信部が、証明結果情報をブラインド署名生成装置に送信し、ブラインド署名生成装置の受信部が、証明結果情報を受信し、証明結果検証部が、証明結果情報を検証する。そして、ブラインド署名生成装置のY計算部がYを計算するための処理は、ブラインド署名生成装置の証明検証部が証明結果情報を合格と判断した場合にのみ実行される。
【0014】
これにより、利用者装置が署名対象mに対応しないXをブラインド署名生成装置に送信し、不正な或いは誤ったブラインド署名が生成されることを防止できる。
また、第2の発明において好ましくは、利用者装置の乱数生成部が、a1,a2,a3を{0,1,...,p−1}からランダムに選択し、利用者装置のW計算部が、W=g1a1・ψ(u)a2・ψ(v)a3(上付き添え字a1,a2,a3は、それぞれa1,a2,a3を示す)を計算し、利用者装置の送信部が、Wをブラインド署名生成装置に送信する。次に、ブラインド署名生成装置の受信部がWを受信し、Wが受信された後、ブラインド署名生成装置の乱数生成部が、ηを{0,1,...,p−1}からランダムに選択し、送信部が、ηを利用者装置に送信し、利用者装置の受信部がηを受信する。そして、証明結果情報は、z1=a1+η・m・t mod p,z2=a2+η・t mod p,z3=a3+η・s・t mod pであり、ブラインド署名生成装置の証明結果検証部は、g1z1・ψ(u)z2・ψ(v)z3≡W・Xη(上付き添え字z1,z2,z3は、それぞれz1,z2,z3を示す)が成り立つか否かにより、証明結果情報の検証を行う。
【0015】
また、第2の発明において好ましくは、写像ψはG2からG1への同型写像である。
これにより、正確な署名検証が可能になる。
また、第2の発明において好ましくは、ブラインド署名生成装置の受信部がXを受信するステップの後、ブラインド署名生成装置の送信部が少なくともYを利用者装置に送信するステップの前に、乱数生成部がr,Lを{0,1,...,p−1}からランダムに選択して記憶部に格納するステップと、R計算部がR=g2rを計算し、送信部が、YとともにRとLをも利用者装置に送信する。利用者装置の受信部は、YとともにRとLをも受信し、α計算部は、受信されたRを用いてα=wf−1・Rfを計算する。また、利用者装置の受信部がYとともにRとLをも受信するステップの後、利用者装置の送信部が署名対象情報mとブラインド署名(σ,α,β)とをブラインド署名検証装置に送信するステップの前に、利用者装置のβ計算部がβ=s+L/t mod pを計算する。
【0016】
これにより、署名の安全性がより向上する。
【発明の効果】
【0017】
以上のように、本発明では、ハッシュ関数に依存することなく、安全性が保証された効率的なブラインド署名を実現できる。
【発明を実施するための最良の形態】
【0018】
第1の実施の形態:
以下、本発明の第1の実施の形態を図面を参照して説明する。
〔双線形写像〕
本発明は、双線形写像を用いる点に特徴がある。まず、本発明で用いる双線形写像の説明を行う。
本発明では、(G1,G2)を以下のような性質を持つ双線形群とする。
<性質1>G1とG2とは、位数がp(pは素数)の2つの巡回群である。
【0019】
<性質2>g2は、G1の生成元であり、g2は、G2の生成元である。
<性質3>ψは、G2からG1への同型写像であり、ψ(g2)=g1を満たす。
<性質4>eは、双線形写像であり、e:G1×G2→GTで定義される。なお、「×」は直積を示す。また、GTの位数もpである。つまり、a,b∈G1,c,d∈G2のとき、以下の関係が成り立つ。
e(a・b,c)=e(a,c)・e(b,c) …(1)
e(a,c・d)=e(a,c)・e(a,d) …(2)
<性質5>e,ψ,G1,G2,GTの群演算は効率的に計算できる。
【0020】
なお、上述のような双線形写像eを有限体上の楕円曲線を用いて実現する実現例については、文献「Boneh, D. and Franklin, M., "Identity Based Encryption from the Weil Pairing", SIAM J. of Computing, Vol. 32, No.3 pp.586-615, (2003)」などに記載されている。また、上述した記号の意味等については、文献「Boneh, D. and Boyen, X., "Short Signature Without Random Oracles", Proceedings of Crypto'04, LNCS, Springer-Verlag (2004)」とほぼ同様である。
〔構成〕
次に、本形態の構成について説明する。
【0021】
図1は、本形態におけるブラインド署名生成・検証システムの全体構成を例示したブロック図である。また、図2はブラインド署名生成装置の詳細構成を、図3は利用者装置の詳細構成を、図4はブラインド署名検証装置の詳細構成を、それぞれ例示したブロック図である。以下、これらの図を用いて、本形態の構成を説明する。
<全体構成>
図1に例示するように、本形態のブラインド署名生成・検証システム1は、ブラインド署名生成装置10と、利用者装置20と、ブラインド署名検証装置30とを有している。ここで、ブラインド署名生成装置10と利用者装置20と、及び利用者装置20とブラインド署名検証装置30とは、それぞれネットワークを通じて通信可能に接続されている。
【0022】
<ブラインド署名生成装置の構成>
図1及び図2に例示するように、本形態のブラインド署名生成装置10は、秘密鍵生成部10aと、公開鍵生成部10bと、乱数生成部10cと、h計算部10dと、記憶部10eと、証明結果検証部10fと、Y計算部10gと、送信部10hと、受信部10iと、制御部10jとを有している。
本形態のブラインド署名生成装置10は、CPU(Central Processing Unit)、補助記憶装置、RAM(Random Access Memory)、ROM(Read Only Memory)、入出力インタフェース、NIC(Network Interface Card)等から構成される公知のコンピュータにブラインド署名生成プログラムが読み込まれことにより構築されるものである。
【0023】
すなわち、図1及び図2の鍵生成部10a、公開鍵生成部10b、乱数生成部10c、h計算部10d、証明結果検証部10f、Y計算部10g及び制御部10jは、ブラインド署名生成プログラムが読み込まれたCPUに相当する。また、送信部10h及び受信部10iは、ブラインド署名生成プログラムが読み込まれたCPU11の制御のもと通信処理を行うNIC等に相当する。また、記憶部10eは、補助記憶装置、RAM、レジスタ等により構成される。なお、ブラインド署名生成装置10は、制御部10jの制御のもと各処理を実行する。
【0024】
<利用者装置の構成>
図1及び図3に例示するように、本形態の利用者装置20は、受信部20aと、送信部20bと、乱数生成部20cと、X計算部20dと、制御部20eと、証明結果情報生成部20fと、σ計算部20gと、α計算部20hと、β計算部20iと、記憶部20jとを有している。また、図3に例示するように、証明結果情報生成部20fは、W計算部20faとz計算部20fbを有している。
本形態の利用者装置20は、前述のような公知のコンピュータに利用者プログラムが読み込まれることにより構成される。すなわち、乱数生成部20c、X計算部20d、制御部20e、証明結果情報生成部20f、σ計算部20g、α計算部20h及びβ計算部20iは、利用者プログラムが読み込まれたCPUに相当する。また、受信部20a及び送信部20bは、利用者プログラムが読み込まれたCPUの制御のもと通信処理を行うNIC等に相当する。また、記憶部20jは、補助記憶装置、RAM、レジスタ等により構成される。なお、利用者装置20は、制御部20eの制御のもと各処理を実行する。
【0025】
<ブラインド署名検証装置の構成>
図1及び図4に例示するように、本形態のブラインド署名検証装置30は、受信部30aと、署名検証部30bと、署名検証結果出力部30cと、制御部30dと、記憶部30eとを有している。
本形態のブラインド署名検証装置30は、前述のような公知のコンピュータにブラインド署名検証プログラムが読み込まれることにより構成される。すなわち、署名検証部30b及び制御部30dは、ブラインド署名検証プログラムが読み込まれたCPUに相当する。また、受信部30aは、ブラインド署名検証プログラムが読み込まれたCPUの制御のもと通信処理を行うNIC等に相当する。また、署名検証結果出力部30cは、ブラインド署名検証プログラムが読み込まれたCPUの制御のもとデータ出力を行う入出力インタフェース等に相当する。なお、ブラインド署名検証装置30は、制御部30dの制御のもと各処理を実行する。
【0026】
〔処理〕
次に、本形態のブラインド署名生成・検証処理について説明する。
図5は、ブラインド署名生成装置10の処理を説明するためのフローチャートである。また、図6は、利用者装置20の処理を説明するためのフローチャートである。また、図7は、ブラインド署名検証装置30の処理を説明するためのフローチャートである。以下、これらの図を用いて本形態のブラインド署名生成・検証処理を説明する。
<ブラインド署名生成処理>
本処理の前提として、ブラインド署名生成装置10の秘密鍵生成部10a、乱数生成部10c、利用者装置20の乱数生成部20c、証明結果情報生成部20f、β計算部20iが、共通の素数pを利用できるように設定しておく。これは、ブラインド署名生成プログラム及び利用者プログラムのコードに素数pを記述して実現してもよいし、別途素数pのデータをCPUに読み込ませて実現してもよい。また、利用者装置20の記憶部20jに署名対象情報(例えば文書)m∈{0,1,...,p−1}を格納しておく。本形態では、この署名対象情報mのブラインド署名を生成する。
【0027】
本形態では、まず、ブラインド署名生成装置10(図2)の秘密鍵生成部10aが、秘密鍵x,y,z∈{0,1,...,p−1}を(例えばランダムに)生成し、当該秘密鍵(x,y,z)を記憶部10eに格納する(図5/ステップS1)。なお、ランダムな値の生成には、例えば、公知の擬似乱数生成アルゴリズムを利用するが、入力値や、予め定められた値をランダム(任意)な値として用いてもよい(以下も同様)。
次に、ブラインド署名生成装置10の公開鍵生成部10bが、記憶部10eから秘密鍵(x,y,z)を読み込み、公開鍵g1,g2,w=g2x,u=g2y,v=g2zを生成し、当該公開鍵(g1,g2,w,u,v)を記憶部10eに格納する(ステップS2)。
【0028】
次に、乱数生成部10cが、rを{0,1,...,p−1}からランダムに選択して記憶部10eに格納する(ステップS3)。そして、h計算部10dが、記憶部10eからrと公開鍵g2とを読み込み、h=g2rを計算し、このhを記憶部10eに格納する(ステップS4)。そして、記憶部10eに格納されたhが送信部10hに送られ、送信部10hは、hを利用者装置20に送信する(ステップS5)。
利用者装置20(図3)は、受信部20aにおいてhを受信し、記憶部20jに格納する(図6/ステップS21)。次に、乱数生成部20cが、sとRを{0,1,...,p−1}からそれぞれランダムに選択して記憶部20jに格納する(ステップS22)。
【0029】
また、利用者装置20は、制御部20eの制御のもと、送信部20bからブラインド署名生成装置10に対して公開鍵の発行要求情報を送信する。これを受けたブラインド署名生成装置10は、記憶部10eの公開鍵(g1,g2,w,u,v)を送信部10hから利用者装置20に送信し、利用者装置20は、受信部20aでこれを受信し記憶部20jに格納する(ステップS23)。なお、この例の利用者装置20は公開鍵g2を使用しない。よって、利用者装置20が公開鍵(g1,w,u,v)のみを取得する構成としてもよい。
【0030】
次に利用者装置20のX計算部20dが、記憶部20jから公開鍵(g1,w,u,v)と(s,R)とhと署名対象情報mとを読み込み、
X=g1m・ψ(u)・ψ(v)s・(ψ(w・h))R …(3)
を計算し、その演算結果Xを記憶部20jに格納する(ステップS24)。そして、このXが送信部20bに送られ、送信部20bが、このXをブラインド署名生成装置10に送信する(ステップS25)。なお、このXは、ブラインド署名生成装置10(図2)の受信部10iで受信され記憶部10eに格納される(図5/ステップS6)。
【0031】
また、利用者装置20(図3)は、(m,s,R)を保持していることを、少なくともmを開示することなく(s及びRの少なくとも一方も開示しない構成も含む)ブラインド署名生成装置10に証明する。
[証明の概要]
まず、証明結果情報生成部20fが、当該利用者装置20の記憶部20jに(m,s,R)が格納されていることを、少なくともmを開示することなく(好ましくは、m,s,Rを開示することなく)ブラインド署名生成装置10に証明するための処理を実行し、その証明を行うための証明結果情報を生成して記憶部20jに格納する(図6/ステップS26)。そして、送信部20bが、その証明結果情報をブラインド署名生成装置10に送信する(ステップS27)。ブラインド署名生成装置10の受信部10iは、この証明結果情報を受信し、証明結果検証部10fが、この証明結果情報を検証する(図5/ステップS7)。そして、証明結果検証部10fが、この証明結果情報を不合格と判断すれば、ブラインド署名生成装置10の制御部10jは処理をエラー終了させる。一方、証明結果検証部10fが、この証明結果情報を合格と判断すれば、ステップS9以降の処理が実行される(ステップS8)。
【0032】
[証明の具体例(証明の一例)]
次に、上記のステップS26,S27(図6)及びステップS7(図5)の処理の具体例を説明する。なお、本発明は、この具体例には限定されない。
図8は、上記のステップS26,S27及びステップS7の処理の具体例を説明するためのフローチャートである。以下、このフローチャートに従ってこの具体例の説明を行っていく。
まず、利用者装置20(図3)の乱数生成部20cが、(a1,a2,a3)を{0,1,...,p−1}からランダムに選択して記憶部20jに格納する(ステップS51)。次に、証明結果情報生成部20fのW計算部20faが、記憶部20jから(a1,a2,a3)とg1とvとwとhとを読み込み、
W=g1a1・ψ(v)a2・(ψ(w・h))a3 …(4)
を計算し、その演算結果Wを記憶部20jに格納する(ステップS52)。次に、記憶部20jに格納されたWが送信部20bに送られ、送信部20bは、Wをブラインド署名生成装置10に送信する(ステップS53)。
【0033】
ブラインド署名生成装置10(図2)の受信部10iはこのWを受信する(ステップS54)。Wが受信された後、乱数生成部10cが、ηを{0,1,...,p−1}からランダムに選択して記憶部10eに格納する(ステップS55)。このηは送信部10hに送られ、送信部10hは、このηを利用者装置20に送信する(ステップS56)。
利用者装置20(図3)の受信部20aは、このηを受信して記憶部20jに格納する(ステップS57)。次に、証明結果情報生成部20fのz計算部20fbが、記憶部20jから(a1,a2,a3)とηとmと(s,R)とを読み込み、
z1=a1+η・m mod p
z2=a2+η・s mod p …(5)
z3=a3+η・R mod p
を計算し、その演算結果(z1,z2,z3)を証明結果情報として記憶部20jに格納する(ステップS58)。次に、この証明結果情報(z1,z2,z3)は、送信部20bに送られ、送信部20bは、証明結果情報(z1,z2,z3)をブラインド署名生成装置10に送信する(ステップS59)。
【0034】
ブラインド署名生成装置10(図2)の受信部10iは、この証明結果情報(z1,z2,z3)を受信し、記憶部10eに格納する(ステップS60)。そして、証明結果検証部10fが、記憶部10eから、g1,w,u,v,h,W,X,η,(z1,z2,z3)を読み込み、
g1z1・ψ(v)z2・(ψ(w・h))z3≡W・(X/ψ(u))η …(6)
が成り立つか否かにより、証明結果情報の検証を行う(ステップS61)。ここで、式(6)が成立する場合、証明結果検証部10fは、証明結果が正当である旨を出力する(ステップS62)。一方、式(6)が成立しない場合、証明結果検証部10fは、証明結果が不当である旨を出力する(ステップS63)。
【0035】
そして、上述したステップS51以降の処理を複数回繰り返し、全てのループにおいて証明結果が正当であると出力された場合、証明結果検証部10fは、証明結果情報が合格であると判断し、1度でも証明結果が不当であると出力された場合、証明結果情報が不合格であると判断する(図5/ステップS8/[証明の具体例(証明の一例)]の説明終わり)。
証明結果検証部10fが、証明結果情報を合格と判断した場合、ブラインド署名生成装置10の乱数生成部10cは、Lを{0,1,...,p−1}からランダムに選択して記憶部10eに格納する(ステップS9)。次に、Y計算部10gが、記憶部10eからX,g1,L,z,x,rを読み込み、
Y=(X・g1L・z)1/(x+r) …(7)
を計算して記憶部10eに格納する(ステップS10)。次に、記憶部10eに格納された(Y,L)が送信部10hに送られ、送信部10hは、この(Y,L)を利用者装置20に送信する(ステップS11)。
【0036】
利用者装置20(図3)の受信部20aは、この(Y,L)を受信し、記憶部20jに格納する(図6/ステップS28)。次に、乱数生成部20cが、tを{0,1,...,p−1}からランダムに選択して記憶部20jに格納する(ステップS29)。そして、σ計算部20gが、記憶部20jからYとg1とRとtとを読み込み、
σ=(Y/g1R)1/t …(8)
を計算し、その演算結果σを記憶部20jに格納する(ステップS30)。また、α計算部20hが、記憶部20jからwとhとtとを読み込み、
α=wt-1・ht …(9)
を計算し、その演算結果αを記憶部20jに格納する(ステップS31)。さらに、β計算部20iが、記憶部20jからsとLとを読み込み、
β=s+L mod p …(10)
を計算し、その演算結果βを記憶部20jに格納する(ステップS32)。以上のように生成された(σ,α,β)が署名対象情報mのブラインド署名となる。そして、記憶部20jに格納された署名対象情報mとそのブラインド署名(σ,α,β)とは送信部20bに送られ、送信部20bは、署名対象情報mとそのブラインド署名(σ,α,β)とをブラインド署名検証装置30に送信する(ステップS33)。
【0037】
<ブラインド署名検証処理>
ブラインド署名検証装置(図4)の受信部30aは、上記の署名対象情報mとそのブラインド署名(σ,α,β)とを受信し、これらを記憶部30eに格納する(ステップS41)。また、受信部30aが、ブラインド署名生成装置10から送信された公開鍵(g1,g2,w,u,v)を受信し、記憶部30wに格納する(ステップS42)。なお、ブラインド署名生成装置10への公開鍵の配送依頼手順は、前述した利用者装置10の場合と同様であるため説明を省略する。
【0038】
次に署名検証部30bが、記憶部30eから署名対象情報mとそのブラインド署名(σ,α,β)と公開鍵(g1,g2,w,u,v)とを読み込み、
σ≠1, α∈G2, e(σ,w・α)=e(g1,g2m・u・vβ) …(11)
が全て成立するか否かを検証する(ステップS43)。ここで、式(11)が成立する場合、署名検証部30bは、署名検証が合格である旨の情報を署名検証結果出力部30cに送り、署名検証結果出力部30cは署名検証が合格である旨を出力する(ステップS44)。一方、式(11)が成立しなかった場合、署名検証部30bは、署名検証が不合格である旨の情報を署名検証結果出力部30cに送り、署名検証結果出力部30cは署名検証が不合格である旨を出力する(ステップS45)。
【0039】
<署名検証が正しく行われる理由>
次に、式(11)が成立する場合になぜ署名が合格であるといえるかについて説明する。
まず、前述の式(7)に式(3)を代入すると、
Y=(X・g1L・z)1/(x+r)=((g1m・ψ(u)・ψ(v)s・(ψ(w・h))R)・g1L・z)1/(x+r) …(12)
となる。また、前述の<性質3>より、ψは、G2からG1への同型写像であり、ψ(g2)=g1を満たすため、式(12)は、
Y=g1(m+y+(s+L)・z)/(x+r)・g1R …(13)
と変形できる。
【0040】
そして、式(13)と式(10)により、式(8)は、
σ=(Y/g1R)1/t=g1(m+y+(s+L)・z)/(t・x+t・r)=g1(m+y+β・z)/(t・x+t・r) …(14)
と変形できる。
ここで、δ=(t‐1)・x+t・rとすると、式(14)は、
σ=g1(m+y+β・z)/(x+((t‐1)・x+t・r))=g1(m+y+β・z)/(x+δ) …(15)
となる。
また、この場合、w=g2x(ステップS2),h=g2r(ステップS4)より、式(9)は、
α=wt-1・ht=g2(t‐1)・x+t・r=g2δ …(16)
となる。
【0041】
これらより、式(11)の左辺は、
e(σ,w・α)=e(g1(m+y+β・z)/(x+δ), g2x+δ) …(17)
と変形できる。さらに、<性質4>により、eは双線形写像であり、式(2)を満たすことから、式(17)は、
e(σ,w・α)=e(g1(m+y+β・z)/(x+δ), g2x+δ)
=e(g1(m+y+β・z)/(x+δ), g2)・e(g1(m+y+β・z)/(x+δ), g2)・…・e(g1(m+y+β・z)/(x+δ), g2) …(18)
と変形でき、式(1)を満たすことから、式(18)は、
e(σ,w・α)=e(g1(m+y+β・z), g2)
=e(g1, g2)・e(g1, g2)・…・e(g1, g2) …(19)
と変形できる。さらに、eは式(2)を満たし、u=g2y, v=g2z(ステップS2)より、式(19)は、
e(σ,w・α)=e(g1, g2(m+y+β・z))
=e(g1, g2mu・vβ)=式(11)の右辺
となる。
【0042】
〔本形態の効果〕
本形態のブラインド署名には、ハッシュ関数が使われていない。また、本形態のブラインド署名生成処理及びブラインド署名検証処理の安全性はStrong Diffile-Hellman問題の求解困難性に基づいており、安全であるといえる。さらに、本形態のブラインド署名生成処理及びブラインド署名検証処理の処理速度は、現在最も広く使われているRSA署名などと同程度であり、高い実用性を持つ。
例えば、双線形写像の典型的な実現例では、G1=G2となるような楕円曲線を用い、この楕円曲線のパラメータを200ビット程度にすることが可能である。このときのブラインド署名(σ,α,β)のデータサイズは200ビット程度(つまり、σ,α,β合計で600ビット程度)となり、RSA署名のデータサイズよりも小さくなる。
【0043】
〔変形例〕
なお、本発明は上述の実施の形態に限定されるものではない。例えば、本形態では、ステップS26,S27(図6)及びステップS7(図5)において、利用者装置20が、(m,s,R)を保持していることを、少なくともmを開示することなく、ブラインド署名生成装置10に証明し、この証明が成功した場合にのみ、ステップS9(図5)以降の処理を実行することとした。しかし、この証明処理を行うことなく、ステップS9(図5)以降の処理を実行することとしてもよい。
【0044】
また、本形態では、ψをG2からG1への同型写像とした。しかし、ψをG2からG1への準同型写像とした構成であってもよい。
また、本形態では、ブラインド署名生成装置10が秘密鍵x,y,zを生成し、u=g2yによって公開鍵uを生成することとした。しかし、秘密鍵yを生成せず、公開鍵uを巡回群G2から任意に選択する構成でもよい。
また、本形態では、ブラインド署名生成装置10がLを{0,1,...,p−1}からランダムに選択し、これを利用者装置20に送信することとした。しかし、ブラインド署名生成装置10がLの選択や送信を行わない構成としてもよい。この場合、ブラインド署名生成装置10が、利用者装置20との間で既に共有しているL(0も含む)を用いてY=(X・g1L・z)1/(x+r)を計算し、利用者装置20がこのLを用いてβを計算してもよい。ここでL=0であるなら秘密鍵zは不要となり、ブラインド署名生成装置10が、秘密鍵zを生成せず、公開鍵vを巡回群G2から任意に選択する構成を採ることもできる。また、この場合、利用者装置20はsをそのままβとして用いることもできる。
【0045】
また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよく、その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
第2の実施の形態:
次に、本発明の第2の実施の形態を図面を参照して説明する。なお、以下では、第1の実施の形態との相違点を中心に説明し、第1の実施の形態と共通する部分については説明を簡略化する。
【0046】
〔構成〕
次に、本形態の構成について説明する。
図9は、本形態におけるブラインド署名生成・検証システムの全体構成を例示したブロック図である。また、図10はブラインド署名生成装置の詳細構成を、図11は利用者装置の詳細構成を、それぞれ例示したブロック図である。なお、ブラインド署名検証装置30は、第1の実施の形態のものと同じである。以下、これらの図を用いて、本形態の構成を説明する。
【0047】
<全体構成>
図9に例示するように、本形態のブラインド署名生成・検証システム101は、ブラインド署名生成装置110と、利用者装置120と、ブラインド署名検証装置30とを有している。ここで、ブラインド署名生成装置110と利用者装置120と、及び利用者装置120とブラインド署名検証装置30とは、それぞれネットワークを通じて通信可能に接続されている。
<ブラインド署名生成装置の構成>
図9及び図10に例示するように、本形態のブラインド署名生成装置110は、秘密鍵生成部110aと、公開鍵生成部110bと、乱数生成部110cと、R計算部110d、記憶部110eと、証明結果検証部110fと、Y計算部110gと、送信部110hと、受信部110iと、制御部110jとを有している。
【0048】
本形態のブラインド署名生成装置110は、第1の実施の形態と同様、公知のコンピュータにブラインド署名生成プログラムが読み込まれことにより構築される。
すなわち、図9及び図10の鍵生成部110a、公開鍵生成部110b、乱数生成部110c、R計算部110d、証明結果検証部110f、Y計算部110g及び制御部110jは、ブラインド署名生成プログラムが読み込まれたCPUに相当する。また、送信部110h及び受信部110iは、ブラインド署名生成プログラムが読み込まれたCPUの制御のもと通信処理を行うNIC等に相当する。また、記憶部110eは、補助記憶装置、RAM、レジスタ等により構成される。なお、ブラインド署名生成装置110は、制御部110jの制御のもと各処理を実行する。
【0049】
<利用者装置の構成>
図9及び図11に例示するように、本形態の利用者装置120は、受信部120aと、送信部120bと、乱数生成部120cと、X計算部120dと、制御部120eと、証明結果情報生成部120fと、σ計算部120gと、α計算部120hと、β計算部120iと、記憶部120jと、τ計算部120kとを有している。また、図11に例示するように、証明結果情報生成部120fは、W計算部120faとz計算部120fbを有している。
【0050】
本形態の利用者装置120は、第1の実施の形態と同様、公知のコンピュータに利用者プログラムが読み込まれることにより構成される。すなわち、乱数生成部120c、X計算部120d、制御部120e、証明結果情報生成部120f、σ計算部120g、α計算部120h、β計算部120i及びτ計算部120kは、利用者プログラムが読み込まれたCPUに相当する。また、受信部120a及び送信部120bは、利用者プログラムが読み込まれたCPUの制御のもと通信処理を行うNIC等に相当する。また、記憶部120jは、補助記憶装置、RAM、レジスタ等により構成される。なお、利用者装置120は、制御部120eの制御のもと各処理を実行する。
【0051】
<ブラインド署名検証装置の構成>
第1の実施の形態で説明した通りである。ここでは説明を省略する。
〔処理〕
次に、本形態のブラインド署名生成処理について説明する。
図12は、ブラインド署名生成装置110の処理を説明するためのフローチャートである。また、図13は、利用者装置20の処理を説明するためのフローチャートである。以下、これらの図を用いて本形態のブラインド署名生成処理を説明する。なお、署名検証処理については、第1の実施の形態と同じであるため説明を省略する。
【0052】
<ブラインド署名生成処理>
本処理の前提として、ブラインド署名生成装置110の秘密鍵生成部110a、乱数生成部110c、利用者装置120の乱数生成部120c、証明結果情報生成部120f、β計算部120i,τ計算部120kが、共通の素数pを利用できるように設定しておく。これは、ブラインド署名生成プログラム及び利用者プログラムのコードに素数pを記述して実現してもよいし、別途素数pのデータをCPUに読み込ませて実現してもよい。また、利用者装置120の記憶部120jに署名対象情報(例えば文書)m∈{0,1,...,p−1}を格納しておく。本形態では、この署名対象情報mのブラインド署名を生成する。
【0053】
本形態では、まず、ブラインド署名生成装置110(図10)の秘密鍵生成部110aが、秘密鍵x∈{0,1,...,p−1}を(例えばランダムに)生成し、当該秘密鍵xを記憶部110eに格納する(図12/ステップS101)。
次に、ブラインド署名生成装置110の公開鍵生成部110bが、記憶部110eから秘密鍵xを読み込み、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成し、当該公開鍵(g1,g2,w,u,v)を記憶部110eに格納する(ステップS102)。
【0054】
次に、利用者装置120(図11)の乱数生成部120cが、sとtを{0,1,...,p−1}からそれぞれランダムに選択して記憶部120jに格納する(ステップS121)。
また、利用者装置120は、制御部120eの制御のもと、送信部120bからブラインド署名生成装置110に対して公開鍵の発行要求情報を送信する。これを受けたブラインド署名生成装置110は、記憶部110eの公開鍵(g1,g2,w,u,v)を送信部110hから利用者装置120に送信し、利用者装置120は、受信部120aでこれを受信し記憶部120jに格納する(ステップS122)。なお、この例の利用者装置120は公開鍵g2を使用しない。よって、利用者装置120が公開鍵(g1,w,u,v)のみを取得する構成としてもよい。
【0055】
次に利用者装置120のX計算部120dが、記憶部120jから公開鍵(g1,w,u,v)と(s,t)と署名対象情報mとを読み込み、
X=(g1m・ψ(u)・ψ(v)s)t …(20)
を計算し、その演算結果Xを記憶部120jに格納する(ステップS123)。
そして、このXが送信部120bに送られ、送信部120bが、このXをブラインド署名生成装置110に送信する(ステップS124)。なお、このXは、ブラインド署名生成装置110(図10)の受信部110iで受信され、記憶部110eに格納される(図12/ステップS103)。
【0056】
また、利用者装置120(図11)は、(m・t mod p,t,s・t mod p)を保持或いは算出可能である旨を、少なくともmを開示することなく(好ましくは、m,s,tを開示することなく)ブラインド署名生成装置110に証明する。
[証明の概要]
まず、証明結果情報生成部120fが、(m・t mod p,t,s・t mod p)を保持或いは算出可能である旨を、少なくともmを開示することなく(好ましくは、m,s,tを開示することなく)ブラインド署名生成装置110に証明するための処理を実行し、その証明を行うための証明結果情報を生成して記憶部120jに格納する(図13/ステップS125)。そして、送信部120bが、その証明結果情報をブラインド署名生成装置110に送信する(ステップS126)。ブラインド署名生成装置110の受信部110iは、この証明結果情報を受信し、証明結果検証部110fが、この証明結果情報を検証する(図12/ステップS104)。そして、証明結果検証部110fが、この証明結果情報を不合格と判断すれば、ブラインド署名生成装置110の制御部110jは処理をエラー終了させる。一方、証明結果検証部110fが、この証明結果情報を合格と判断すれば、ステップS106以降の処理が実行される(ステップS105)。
【0057】
[証明の具体例(証明の一例)]
次に、上記のステップS125,S126(図13)及びステップS104(図12)の処理の具体例を説明する。なお、本発明は、この具体例には限定されない。
図14は、上記のステップS125,S126及びステップS104の処理の具体例を説明するためのフローチャートである。以下、このフローチャートに従ってこの具体例の説明を行っていく。
まず、利用者装置120(図11)の乱数生成部120cが、(a1,a2,a3)を{0,1,...,p−1}からランダムに選択して記憶部120jに格納する(ステップS151)。次に、証明結果情報生成部120fのW計算部120faが、記憶部120jから(a1,a2,a3)とg1とuとvとを読み込み、
W=g1a1・ψ(u)a2・ψ(v)a3 …(21)
を計算し、その演算結果Wを記憶部120jに格納する(ステップS152)。次に、記憶部120jに格納されたWが送信部120bに送られ、送信部120bは、Wをブラインド署名生成装置110に送信する(ステップS153)。
【0058】
ブラインド署名生成装置110(図10)の受信部110iはこのWを受信する(ステップS154)。Wが受信された後、乱数生成部110cが、ηを{0,1,...,p−1}からランダムに選択して記憶部110eに格納する(ステップS155)。このηは送信部110hに送られ、送信部110hは、このηを利用者装置120に送信する(ステップS156)。
利用者装置120(図11)の受信部120aは、このηを受信して記憶部120jに格納する(ステップS157)。次に、証明結果情報生成部120fのz計算部120fbが、記憶部120jから(a1,a2,a3)とηとmとRとを読み込み、
z1=a1+η・m・t mod p
z2=a2+η・t mod p …(22)
z3=a3+η・s・t mod p
を計算し、その演算結果(z1,z2,z3)を証明結果情報として記憶部120jに格納する(ステップS158)。次に、この証明結果情報(z1,z2,z3)は、送信部120bに送られ、送信部120bは、証明結果情報(z1,z2,z3)をブラインド署名生成装置110に送信する(ステップS159)。
【0059】
ブラインド署名生成装置110(図10)の受信部110iは、この証明結果情報(z1,z2,z3)を受信し、記憶部110eに格納する(ステップS160)。そして、証明結果検証部110fが、記憶部110eから、g1,u,v,W,X,η,(z1,z2,z3)を読み込み、
g1z1・ψ(u)z2・ψ(v)z3≡W・(X)η …(23)
が成り立つか否かにより、証明結果情報の検証を行う(ステップS161)。ここで、式(23)が成立する場合、証明結果検証部110fは、証明結果が正当である旨を出力する(ステップS162)。一方、式(23)が成立しない場合、証明結果検証部110fは、証明結果が不当である旨を出力する(ステップS163)。
【0060】
そして、上述したステップS151以降の処理を複数回繰り返し、全てのループにおいて証明結果が正当であると出力された場合、証明結果検証部110fは、証明結果情報が合格であると判断し、1度でも証明結果が不当であると出力された場合、証明結果情報が不合格であると判断する(図12/ステップS105/[証明の具体例(証明の一例)]の説明終わり)。
証明結果検証部110fが、証明結果情報を合格と判断した場合、ブラインド署名生成装置110の乱数生成部110cは、r,Lを{0,1,...,p−1}からランダムに選択して記憶部110eに格納する(ステップS106)。次に、Y計算部110gが、記憶部110eからX,L,v,x,rを読み込み、
Y=(X・ψ(v)L)1/(x+r) …(24)
を計算して記憶部110eに格納する(ステップS107)。
【0061】
また、R計算部110dが、記憶部110eからg2,rを読み込み、
R=g2r …(25)
を計算して記憶部110eに格納する(ステップS108)。
次に、記憶部110eに格納された(Y,R,L)が送信部110hに送られ、送信部110hは、この(Y,R,L)を利用者装置120に送信する(ステップS109)。利用者装置120(図11)の受信部120aは、この(Y,R,L)を受信し、記憶部120jに格納する(図13/ステップS127)。次に、乱数生成部120cが、fを{0,1,...,p−1}からランダムに選択して記憶部120jに格納する(ステップS128)。そして、τ計算部120kが、記憶部120jからfとtとを読み込み、
τ=(f・t)-1mod p …(26)
を計算し、その演算結果τを記憶部120jに格納する(ステップS129)。また、σ計算部120gが、記憶部120jからYとτとを読み込み、
σ=Yτ …(27)
を計算し、その演算結果σを記憶部120jに格納する(ステップS130)。また、α計算部120hが、記憶部120jからwとhとtとを読み込み、
α=wf-1・Rf …(28)
を計算し、その演算結果αを記憶部120jに格納する(ステップS131)。さらに、β計算部120iが、記憶部120jからsとLとtとを読み込み、
β=s+L/t mod p …(29)
を計算し、その演算結果βを記憶部120jに格納する(ステップS132)。以上のように生成された(σ,α,β)が署名対象情報mのブラインド署名となる。そして、記憶部120jに格納された署名対象情報mとそのブラインド署名(σ,α,β)とは送信部120bに送られ、送信部120bは、署名対象情報mとそのブラインド署名(σ,α,β)とをブラインド署名検証装置130に送信する(ステップS133)。
【0062】
<ブラインド署名検証処理>
本形態のブラインド署名検証処理でも、第1の実施の形態と同じく、
σ≠1, α∈G2, e(σ,w・α)=e(g1,g2m・u・vβ) …(30)
が成立する場合に署名が合格であると判断する。
<署名検証が正しく行われる理由>
次に、式(30)が成立する場合になぜ署名が合格であるといえるかについて説明する。
【0063】
まず、前述の式(24)に式(20)を代入すると、
Y=(X・ψ(v)L)1/(x+r)=((g1m・ψ(u)・ψ(v)s)t・ψ(v)L)1/(x+r)
=(g1m・ψ(u)・ψ(v)s+L/t)t/(x+r) …(31)
となる。これと式(26)を式(27)に代入すると、
σ=Yτ=Y1/(f・t)=(g1m・ψ(u)・ψ(v)s+L/t)1/(f・x+f・r) …(32)
となる。そして、式(32)に式(29)を代入し、さらに、δ=(f‐1)x+f・r mod pとすると、
σ=(g1m・ψ(u)・ψ(v)β)1/(x+(f−1)x+f・r)=(g1m・ψ(u)・ψ(v)β)1/(x+δ) …(33)
となる。また、w=g2xと式(25)とを式(28)に代入し、上記のδを用いて表現すると、
α=wf-1・Rf=g2f-1+r=g2(f‐1)x+f・r)=g2δ …(34)
となる。
【0064】
これらより、式(11)の左辺は、
e(σ,w・α)=e((g1m・ψ(u)・ψ(v)β)1/(x+δ),g2x+δ) …(35)
と変形できる。さらに、<性質4>により、eは双線形写像であり、式(2)を満たすことから、式(35)は、
e(σ,w・α)=e((g1m・ψ(u)・ψ(v)β)1/(x+δ),g2x+δ)=e((g1m・ψ(u)・ψ(v)β)1/(x+δ),g2)・e((g1m・ψ(u)・ψ(v)β)1/(x+δ),g2)・…・e((g1m・ψ(u)・ψ(v)β)1/(x+δ),g2) …(36)
と変形でき、式(1)を満たすことから、式(36)は、
e(σ,w・α)=e(g1m・ψ(u)・ψ(v)β,g2) …(37)
と変形できる。また、u,v∈G2でありu=g2y, v=g2zと書ける(y,z∈{0,1,...,p−1})ため、式(37)は、
e(σ,w・α)=e(g1m・ψ(g2y)・ψ(g2z)β,g2) …(37)
と書ける。また、前述の<性質3>より、ψは、G2からG1への同型写像であり、さらにψ(g2)=g1を満たすため、式(37)は、
e(σ,w・α)=e(g1m・ψ(g2y)・ψ(g2z)β,g2)=e(g1(m+y+β・z), g2) …(38)
と変形できる。さらに、式(1)を満たすことから、式(38)は、
e(σ,w・α)=e(g1, g2)・e(g1, g2)・…・e(g1, g2) …(39)
と変形でき、式(2)を満たすことから、式(39)は、
e(σ,w・α)=e(g1, g2(m+y+β・z)) …(40)
と変形できる。そして、u=g2y, v=g2zとおいているのだから、式(40)は、
e(σ,w・α)=e(g1, g2mu・vβ)=式(30)の右辺
となる。
【0065】
〔本形態の効果〕
本形態のブラインド署名には、ハッシュ関数が使われていない。また、本形態のブラインド署名生成処理及びブラインド署名検証処理の安全性はStrong Diffile-Hellman問題の求解困難性に基づいており、安全であるといえる。さらに、本形態のブラインド署名生成処理及びブラインド署名検証処理の処理速度は、現在最も広く使われているRSA署名などと同程度であり、高い実用性を持つ。
〔変形例〕
なお、本発明は上述の実施の形態に限定されるものではない。例えば、本形態では、ステップS125,S126(図13)及びステップS104(図12)において、利用者装置120が、(m・t mod p,t,s・t mod p)を保持又は算出可能である旨を、少なくともmを開示することなく、ブラインド署名生成装置110に証明し、この証明が成功した場合にのみ、ステップS106(図12)以降の処理を実行することとした。しかし、この証明処理を行うことなく、ステップS106(図12)以降の処理を実行することとしてもよい。
【0066】
また、本形態では、ψをG2からG1への同型写像とした。しかし、ψをG2からG1への準同型写像とした構成であってもよい。
また、本形態では、ブラインド署名生成装置110がr,Lを{0,1,...,p−1}からランダムに選択し、R=g2rを算出し、YとともにLとRを利用者装置120に送信することとした。しかし、ブラインド署名生成装置110がRやLの選択・算出・送信を行わない構成としてもよい。この場合、例えば、ブラインド署名生成装置110と利用者装置120とは事前にr,Lを共用しているものとし、ブラインド署名生成装置110は、これらを用いてY=(X・ψ(v)L)1/(x+r)を計算し、利用者装置120は、これらr,Lをを用いて、R=g2r、α=wf−1・Rf及びβ=s+L/t mod pを計算する。
【0067】
また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよく、その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
また、各実施の形態の処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
【0068】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0069】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【0070】
本発明の産業上の利用分野としては、例えば、電子現金や電子投票の分野などを例示できる。
【図面の簡単な説明】
【0071】
【図1】図1は、第1の実施の形態におけるブラインド署名生成・検証システムの全体構成を例示したブロック図である。
【図2】図2は、第1の実施の形態におけるブラインド署名生成装置の詳細構成を例示したブロック図である。
【図3】図3は、第1の実施の形態における利用者装置の詳細構成を例示したブロック図である。
【図4】図4は、第1,2の実施の形態におけるブラインド署名検証装置の詳細構成を例示したブロック図である。
【図5】図5は、第1の実施の形態におけるブラインド署名生成装置の処理を説明するためのフローチャートである。
【図6】図6は、第1の実施の形態における利用者装置の処理を説明するためのフローチャートである。
【図7】図7は、第1,2の実施の形態におけるブラインド署名検証装置の処理を説明するためのフローチャートである。
【図8】図8は、ステップS26,S27及びステップS7の処理の具体例を説明するためのフローチャートである。
【図9】図9は、第2の実施の形態におけるブラインド署名生成・検証システムの全体構成を例示したブロック図である。
【図10】図10は、第2の実施の形態におけるブラインド署名生成装置の詳細構成を例示したブロック図である。
【図11】図11は、第2の実施の形態における利用者装置の詳細構成を例示したブロック図である。
【図12】図12は、第2の実施の形態におけるブラインド署名生成装置の処理を説明するためのフローチャートである。
【図13】図13は、第2の実施の形態における利用者装置の処理を説明するためのフローチャートである。
【図14】図14は、S125,S126及びステップS104の処理の具体例を説明するためのフローチャートである。
【符号の説明】
【0072】
1,101 ブラインド署名生成・検証システム
10,110 ブラインド署名生成装置
20,120 利用者装置
30 ブラインド署名検証装置
【技術分野】
【0001】
本発明は、暗号技術の応用技術分野に関し、特にブラインド署名技術に関する。
【背景技術】
【0002】
従来多くのブラインドディジタル署名方式が提案されているが、ほとんどの署名方式(RSAブラインド署名方式、DSAブラインド署名方式など(例えば、非特許文献1参照))は、ハッシュ関数を利用することで安全性が保証される。この場合、安全性の根拠はハッシュ値のランダム性に依存することになるが、ハッシュ値が完全にランダムなハッシュ関数は存在しない。
また、ハッシュ関数を利用しないブラインド署名方式としては、Juelsらの方式がある(例えば、非特許文献2参照)。
【非特許文献1】Chaum, D., "Security without Identification: Transaction Systems to Make Big Brother Obsolete", Communications of the ACM, vol.28, No.10, pp.1030-1044 (1985)
【非特許文献2】Juels, A., Luby, M, and Ostrovsky, R., "Security of Blind Digital Signatures, Proceedings of Crypto'97, LNCS 1294, pp.150-164 (1997)
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、Juelsらの方式は、一般的な二者間プロトコルに基づく方式であり、実用上の効率性は全く考慮されていない。そのため、この方式は全く実用性を持たない。
本発明はこのような点に鑑みてなされたものであり、ハッシュ関数に依存することなく、安全性が保証された効率的なブラインド署名を実現することを目的とする。
【課題を解決するための手段】
【0004】
第1の発明では、まず、ブラインド署名生成装置の秘密鍵生成部が、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成し、公開鍵生成部が、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成する。そして、h計算部が、h=g2r(r∈{0,1,...,p−1})を計算し、送信部が、hを利用者装置に送信する。
次に、利用者装置の受信部が、hと少なくともブラインド署名生成装置から送信された公開鍵g1,w,u,vとを受信する。そして、利用者装置のX計算部が、ψをG2からG1への写像ψ(g2)=g1とし、m∈{0,1,...,p−1}を署名対象情報とした場合における、X=g1m・ψ(u)・ψ(v)s・(ψ(w・h))R(s,R∈{0,1,...,p−1})を計算し、送信部が、Xをブラインド署名生成装置に送信する。
【0005】
次に、ブラインド署名生成装置の受信部がXを受信する。また、ブラインド署名生成装置のY計算部が、Y=(X・g1L・z)1/(x+r)(L,z∈{0,1,...,p−1})を計算し、送信部が、少なくともYを利用者装置に送信する。
次に、利用者装置の受信部が少なくともYを受信し、σ計算部が、σ=(Y/g1R)1/t(t∈{0,1,...,p−1})を計算し、α計算部が、α=wt−1・htを計算し、送信部が、署名対象情報mと、ブラインド署名(σ,α,β)と、をブラインド署名検証装置に送信する。
【0006】
次に、ブラインド署名検証装置の受信部が、署名対象情報mとそのブラインド署名(σ,α,β)とを受信し、ブラインド署名生成装置から送信された公開鍵g1,g2,w,u,vを受信する。そして、ブラインド署名検証装置の署名検証部が、eをG1×G2→GTの双線形写像とした場合における、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)(β=s+L mod p)が成立するか否かを検証する。
ここで、本発明では、双線形写像を用いることとしため、ハッシュ関数を必要としないブラインド署名を実現できる。また、このブラインド署名の安全性は、Strong Diffile-Hellman問題の求解困難性に基づいており、安全であるといえる。さらに、このブラインド署名の各処理に必要とされる演算量は、広く用いられているRSA署名などと同程度である。
【0007】
また、第1の発明において好ましくは、利用者装置の証明結果情報生成部が、当該利用者装置に(m,s,R)が保持されていることを、少なくともmを開示することなくブラインド署名生成装置に証明するための証明結果情報を生成し、送信部が、当該証明結果情報をブラインド署名生成装置に送信する。そして、ブラインド署名生成装置の受信部が、この証明結果情報を受信し、証明結果検証部が、証明結果情報を検証する。そして、この証明検証部が証明結果情報を合格と判断した場合にのみ、上述のブラインド署名生成装置のY計算部がYを計算するための処理を実行する。
【0008】
これにより、利用者装置が署名対象mに対応しないXをブラインド署名生成装置に送信し、不正な或いは誤ったブラインド署名が生成されることを防止できる。
また、第1の発明において好ましくは、利用者装置の乱数生成部が、a1,a2,a3を{0,1,...,p−1}からランダムに選択し、W計算部が、W=g1a1・ψ(v)a2・(ψ(w・h))a3(上付き添え字a1,a2,a3は、それぞれa1,a2,a3を示す)を計算し、送信部が、Wをブラインド署名生成装置に送信する。そして、ブラインド署名生成装置の受信部がWを受信した後、乱数生成部が、ηを{0,1,...,p−1}からランダムに選択し、送信部が、このηを利用者装置に送信する。次に、利用者装置の受信部が、ηを受信し、証明結果情報生成部が、証明結果情報としてz1=a1+η・m mod p,z2=a2+η・s mod p,z3=a3+η・R mod pを生成し、送信部が、当該証明結果情報をブラインド署名生成装置に送信する。そして、これに対し、ブラインド署名生成装置の証明結果検証部がg1z1・ψ(v)z2・(ψ(w・h))z3≡W・(X/ψ(u))η(上付き添え字z1,z2,z3は、それぞれz1,z2,z3を示す)が成り立つか否かにより、証明結果情報の検証を行う。
【0009】
また、第1の発明において好ましくは、写像ψはG2からG1への同型写像である。
これにより、正確な署名検証が可能になる。
また、第1の発明において好ましくは、ブラインド署名生成装置の秘密鍵生成部が、秘密鍵xを生成する際に、秘密鍵z∈{0,1,...,p−1}も生成して記憶部に格納するステップをさらに有し、ブラインド署名生成装置の公開鍵生成部が生成する公開鍵はv=g2zであり、ブラインド署名生成装置の受信部がXを受信するステップの後、ブラインド署名生成装置のY計算部がYを計算して記憶部に格納するステップの前に、ブラインド署名生成装置の乱数生成部が、Lを{0,1,...,p−1}からランダムに選択して記憶部に格納するステップをさらに有し、ブラインド署名生成装置の送信部は、YとともにLをも利用者装置に送信し、利用者装置の受信部は、YとともにLをも受信し、利用者装置の受信部が、YとともにLをも受信するステップの後、利用者装置の送信部が署名対象情報mとブラインド署名(σ,α,β)とをブラインド署名検証装置に送信するステップの前に、利用者装置のβ計算部が、β=s+L mod pを計算して記憶部に格納するステップをさらに有する。
【0010】
これにより、署名の安全性がより向上する。
また、第2の発明では、まず、ブラインド署名生成装置の秘密鍵生成部が、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成し、ブラインド署名生成装置の公開鍵生成部が、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成する。そして、利用者装置の受信部が、少なくともブラインド署名生成装置から送信された公開鍵g1,u,vを受信し、X計算部が、ψをG2からG1への写像ψ(g2)=g1とし、mを署名対象情報とした場合における、X=(g1m・ψ(u)・ψ(v)s)t(s,t∈{0,1,...,p−1})を計算し、送信部が、Xをブラインド署名生成装置に送信する。
【0011】
次に、ブラインド署名生成装置の受信部がXを受信し、Y計算部が、Y=(X・(ψ(v))L)1/(x+r)(r,L∈{0,1,...,p−1})を計算し、送信部が、少なくともYを利用者装置に送信する。
そして、利用者装置の受信部が少なくともYを受信し、ブラインド署名生成装置から送信された公開鍵wを受信し、τ計算部が、τ=(f・t)−1mod p(f∈{0,1,...,p−1})を計算し、σ計算部が、σ=Yτを計算し、α計算部が、α=wf−1・Rf(R=g2r,r∈{0,1,...,p−1})を計算し、送信部が、署名対象情報mと、ブラインド署名(σ,α,β)(β=s+L/t mod p)と、をブラインド署名検証装置に送信する。
【0012】
次に、ブラインド署名検証装置の受信部が、署名対象情報mとブラインド署名(σ,α,β)とを受信し、ブラインド署名生成装置から送信された公開鍵g1,g2,w,u,vを受信し、署名検証部が、eをG1×G2→GTの双線形写像とした場合における、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)が成立するか否かを検証する。
ここで、第2の発明では、双線形写像を用いることとしため、ハッシュ関数を必要としないブラインド署名を実現できる。また、このブラインド署名の安全性は、Strong Diffile-Hellman問題の求解困難性に基づいており、安全であるといえる。さらに、このブラインド署名の各処理に必要とされる演算量は、広く用いられているRSA署名などと同程度である。
【0013】
また、第2の発明において好ましくは、利用者装置の証明結果情報生成部が、(m・t mod p,t,s・t mod p)を保持又は算出可能であることを、少なくともmを開示することなくブラインド署名生成装置に証明するための証明結果情報を生成し、送信部が、証明結果情報をブラインド署名生成装置に送信し、ブラインド署名生成装置の受信部が、証明結果情報を受信し、証明結果検証部が、証明結果情報を検証する。そして、ブラインド署名生成装置のY計算部がYを計算するための処理は、ブラインド署名生成装置の証明検証部が証明結果情報を合格と判断した場合にのみ実行される。
【0014】
これにより、利用者装置が署名対象mに対応しないXをブラインド署名生成装置に送信し、不正な或いは誤ったブラインド署名が生成されることを防止できる。
また、第2の発明において好ましくは、利用者装置の乱数生成部が、a1,a2,a3を{0,1,...,p−1}からランダムに選択し、利用者装置のW計算部が、W=g1a1・ψ(u)a2・ψ(v)a3(上付き添え字a1,a2,a3は、それぞれa1,a2,a3を示す)を計算し、利用者装置の送信部が、Wをブラインド署名生成装置に送信する。次に、ブラインド署名生成装置の受信部がWを受信し、Wが受信された後、ブラインド署名生成装置の乱数生成部が、ηを{0,1,...,p−1}からランダムに選択し、送信部が、ηを利用者装置に送信し、利用者装置の受信部がηを受信する。そして、証明結果情報は、z1=a1+η・m・t mod p,z2=a2+η・t mod p,z3=a3+η・s・t mod pであり、ブラインド署名生成装置の証明結果検証部は、g1z1・ψ(u)z2・ψ(v)z3≡W・Xη(上付き添え字z1,z2,z3は、それぞれz1,z2,z3を示す)が成り立つか否かにより、証明結果情報の検証を行う。
【0015】
また、第2の発明において好ましくは、写像ψはG2からG1への同型写像である。
これにより、正確な署名検証が可能になる。
また、第2の発明において好ましくは、ブラインド署名生成装置の受信部がXを受信するステップの後、ブラインド署名生成装置の送信部が少なくともYを利用者装置に送信するステップの前に、乱数生成部がr,Lを{0,1,...,p−1}からランダムに選択して記憶部に格納するステップと、R計算部がR=g2rを計算し、送信部が、YとともにRとLをも利用者装置に送信する。利用者装置の受信部は、YとともにRとLをも受信し、α計算部は、受信されたRを用いてα=wf−1・Rfを計算する。また、利用者装置の受信部がYとともにRとLをも受信するステップの後、利用者装置の送信部が署名対象情報mとブラインド署名(σ,α,β)とをブラインド署名検証装置に送信するステップの前に、利用者装置のβ計算部がβ=s+L/t mod pを計算する。
【0016】
これにより、署名の安全性がより向上する。
【発明の効果】
【0017】
以上のように、本発明では、ハッシュ関数に依存することなく、安全性が保証された効率的なブラインド署名を実現できる。
【発明を実施するための最良の形態】
【0018】
第1の実施の形態:
以下、本発明の第1の実施の形態を図面を参照して説明する。
〔双線形写像〕
本発明は、双線形写像を用いる点に特徴がある。まず、本発明で用いる双線形写像の説明を行う。
本発明では、(G1,G2)を以下のような性質を持つ双線形群とする。
<性質1>G1とG2とは、位数がp(pは素数)の2つの巡回群である。
【0019】
<性質2>g2は、G1の生成元であり、g2は、G2の生成元である。
<性質3>ψは、G2からG1への同型写像であり、ψ(g2)=g1を満たす。
<性質4>eは、双線形写像であり、e:G1×G2→GTで定義される。なお、「×」は直積を示す。また、GTの位数もpである。つまり、a,b∈G1,c,d∈G2のとき、以下の関係が成り立つ。
e(a・b,c)=e(a,c)・e(b,c) …(1)
e(a,c・d)=e(a,c)・e(a,d) …(2)
<性質5>e,ψ,G1,G2,GTの群演算は効率的に計算できる。
【0020】
なお、上述のような双線形写像eを有限体上の楕円曲線を用いて実現する実現例については、文献「Boneh, D. and Franklin, M., "Identity Based Encryption from the Weil Pairing", SIAM J. of Computing, Vol. 32, No.3 pp.586-615, (2003)」などに記載されている。また、上述した記号の意味等については、文献「Boneh, D. and Boyen, X., "Short Signature Without Random Oracles", Proceedings of Crypto'04, LNCS, Springer-Verlag (2004)」とほぼ同様である。
〔構成〕
次に、本形態の構成について説明する。
【0021】
図1は、本形態におけるブラインド署名生成・検証システムの全体構成を例示したブロック図である。また、図2はブラインド署名生成装置の詳細構成を、図3は利用者装置の詳細構成を、図4はブラインド署名検証装置の詳細構成を、それぞれ例示したブロック図である。以下、これらの図を用いて、本形態の構成を説明する。
<全体構成>
図1に例示するように、本形態のブラインド署名生成・検証システム1は、ブラインド署名生成装置10と、利用者装置20と、ブラインド署名検証装置30とを有している。ここで、ブラインド署名生成装置10と利用者装置20と、及び利用者装置20とブラインド署名検証装置30とは、それぞれネットワークを通じて通信可能に接続されている。
【0022】
<ブラインド署名生成装置の構成>
図1及び図2に例示するように、本形態のブラインド署名生成装置10は、秘密鍵生成部10aと、公開鍵生成部10bと、乱数生成部10cと、h計算部10dと、記憶部10eと、証明結果検証部10fと、Y計算部10gと、送信部10hと、受信部10iと、制御部10jとを有している。
本形態のブラインド署名生成装置10は、CPU(Central Processing Unit)、補助記憶装置、RAM(Random Access Memory)、ROM(Read Only Memory)、入出力インタフェース、NIC(Network Interface Card)等から構成される公知のコンピュータにブラインド署名生成プログラムが読み込まれことにより構築されるものである。
【0023】
すなわち、図1及び図2の鍵生成部10a、公開鍵生成部10b、乱数生成部10c、h計算部10d、証明結果検証部10f、Y計算部10g及び制御部10jは、ブラインド署名生成プログラムが読み込まれたCPUに相当する。また、送信部10h及び受信部10iは、ブラインド署名生成プログラムが読み込まれたCPU11の制御のもと通信処理を行うNIC等に相当する。また、記憶部10eは、補助記憶装置、RAM、レジスタ等により構成される。なお、ブラインド署名生成装置10は、制御部10jの制御のもと各処理を実行する。
【0024】
<利用者装置の構成>
図1及び図3に例示するように、本形態の利用者装置20は、受信部20aと、送信部20bと、乱数生成部20cと、X計算部20dと、制御部20eと、証明結果情報生成部20fと、σ計算部20gと、α計算部20hと、β計算部20iと、記憶部20jとを有している。また、図3に例示するように、証明結果情報生成部20fは、W計算部20faとz計算部20fbを有している。
本形態の利用者装置20は、前述のような公知のコンピュータに利用者プログラムが読み込まれることにより構成される。すなわち、乱数生成部20c、X計算部20d、制御部20e、証明結果情報生成部20f、σ計算部20g、α計算部20h及びβ計算部20iは、利用者プログラムが読み込まれたCPUに相当する。また、受信部20a及び送信部20bは、利用者プログラムが読み込まれたCPUの制御のもと通信処理を行うNIC等に相当する。また、記憶部20jは、補助記憶装置、RAM、レジスタ等により構成される。なお、利用者装置20は、制御部20eの制御のもと各処理を実行する。
【0025】
<ブラインド署名検証装置の構成>
図1及び図4に例示するように、本形態のブラインド署名検証装置30は、受信部30aと、署名検証部30bと、署名検証結果出力部30cと、制御部30dと、記憶部30eとを有している。
本形態のブラインド署名検証装置30は、前述のような公知のコンピュータにブラインド署名検証プログラムが読み込まれることにより構成される。すなわち、署名検証部30b及び制御部30dは、ブラインド署名検証プログラムが読み込まれたCPUに相当する。また、受信部30aは、ブラインド署名検証プログラムが読み込まれたCPUの制御のもと通信処理を行うNIC等に相当する。また、署名検証結果出力部30cは、ブラインド署名検証プログラムが読み込まれたCPUの制御のもとデータ出力を行う入出力インタフェース等に相当する。なお、ブラインド署名検証装置30は、制御部30dの制御のもと各処理を実行する。
【0026】
〔処理〕
次に、本形態のブラインド署名生成・検証処理について説明する。
図5は、ブラインド署名生成装置10の処理を説明するためのフローチャートである。また、図6は、利用者装置20の処理を説明するためのフローチャートである。また、図7は、ブラインド署名検証装置30の処理を説明するためのフローチャートである。以下、これらの図を用いて本形態のブラインド署名生成・検証処理を説明する。
<ブラインド署名生成処理>
本処理の前提として、ブラインド署名生成装置10の秘密鍵生成部10a、乱数生成部10c、利用者装置20の乱数生成部20c、証明結果情報生成部20f、β計算部20iが、共通の素数pを利用できるように設定しておく。これは、ブラインド署名生成プログラム及び利用者プログラムのコードに素数pを記述して実現してもよいし、別途素数pのデータをCPUに読み込ませて実現してもよい。また、利用者装置20の記憶部20jに署名対象情報(例えば文書)m∈{0,1,...,p−1}を格納しておく。本形態では、この署名対象情報mのブラインド署名を生成する。
【0027】
本形態では、まず、ブラインド署名生成装置10(図2)の秘密鍵生成部10aが、秘密鍵x,y,z∈{0,1,...,p−1}を(例えばランダムに)生成し、当該秘密鍵(x,y,z)を記憶部10eに格納する(図5/ステップS1)。なお、ランダムな値の生成には、例えば、公知の擬似乱数生成アルゴリズムを利用するが、入力値や、予め定められた値をランダム(任意)な値として用いてもよい(以下も同様)。
次に、ブラインド署名生成装置10の公開鍵生成部10bが、記憶部10eから秘密鍵(x,y,z)を読み込み、公開鍵g1,g2,w=g2x,u=g2y,v=g2zを生成し、当該公開鍵(g1,g2,w,u,v)を記憶部10eに格納する(ステップS2)。
【0028】
次に、乱数生成部10cが、rを{0,1,...,p−1}からランダムに選択して記憶部10eに格納する(ステップS3)。そして、h計算部10dが、記憶部10eからrと公開鍵g2とを読み込み、h=g2rを計算し、このhを記憶部10eに格納する(ステップS4)。そして、記憶部10eに格納されたhが送信部10hに送られ、送信部10hは、hを利用者装置20に送信する(ステップS5)。
利用者装置20(図3)は、受信部20aにおいてhを受信し、記憶部20jに格納する(図6/ステップS21)。次に、乱数生成部20cが、sとRを{0,1,...,p−1}からそれぞれランダムに選択して記憶部20jに格納する(ステップS22)。
【0029】
また、利用者装置20は、制御部20eの制御のもと、送信部20bからブラインド署名生成装置10に対して公開鍵の発行要求情報を送信する。これを受けたブラインド署名生成装置10は、記憶部10eの公開鍵(g1,g2,w,u,v)を送信部10hから利用者装置20に送信し、利用者装置20は、受信部20aでこれを受信し記憶部20jに格納する(ステップS23)。なお、この例の利用者装置20は公開鍵g2を使用しない。よって、利用者装置20が公開鍵(g1,w,u,v)のみを取得する構成としてもよい。
【0030】
次に利用者装置20のX計算部20dが、記憶部20jから公開鍵(g1,w,u,v)と(s,R)とhと署名対象情報mとを読み込み、
X=g1m・ψ(u)・ψ(v)s・(ψ(w・h))R …(3)
を計算し、その演算結果Xを記憶部20jに格納する(ステップS24)。そして、このXが送信部20bに送られ、送信部20bが、このXをブラインド署名生成装置10に送信する(ステップS25)。なお、このXは、ブラインド署名生成装置10(図2)の受信部10iで受信され記憶部10eに格納される(図5/ステップS6)。
【0031】
また、利用者装置20(図3)は、(m,s,R)を保持していることを、少なくともmを開示することなく(s及びRの少なくとも一方も開示しない構成も含む)ブラインド署名生成装置10に証明する。
[証明の概要]
まず、証明結果情報生成部20fが、当該利用者装置20の記憶部20jに(m,s,R)が格納されていることを、少なくともmを開示することなく(好ましくは、m,s,Rを開示することなく)ブラインド署名生成装置10に証明するための処理を実行し、その証明を行うための証明結果情報を生成して記憶部20jに格納する(図6/ステップS26)。そして、送信部20bが、その証明結果情報をブラインド署名生成装置10に送信する(ステップS27)。ブラインド署名生成装置10の受信部10iは、この証明結果情報を受信し、証明結果検証部10fが、この証明結果情報を検証する(図5/ステップS7)。そして、証明結果検証部10fが、この証明結果情報を不合格と判断すれば、ブラインド署名生成装置10の制御部10jは処理をエラー終了させる。一方、証明結果検証部10fが、この証明結果情報を合格と判断すれば、ステップS9以降の処理が実行される(ステップS8)。
【0032】
[証明の具体例(証明の一例)]
次に、上記のステップS26,S27(図6)及びステップS7(図5)の処理の具体例を説明する。なお、本発明は、この具体例には限定されない。
図8は、上記のステップS26,S27及びステップS7の処理の具体例を説明するためのフローチャートである。以下、このフローチャートに従ってこの具体例の説明を行っていく。
まず、利用者装置20(図3)の乱数生成部20cが、(a1,a2,a3)を{0,1,...,p−1}からランダムに選択して記憶部20jに格納する(ステップS51)。次に、証明結果情報生成部20fのW計算部20faが、記憶部20jから(a1,a2,a3)とg1とvとwとhとを読み込み、
W=g1a1・ψ(v)a2・(ψ(w・h))a3 …(4)
を計算し、その演算結果Wを記憶部20jに格納する(ステップS52)。次に、記憶部20jに格納されたWが送信部20bに送られ、送信部20bは、Wをブラインド署名生成装置10に送信する(ステップS53)。
【0033】
ブラインド署名生成装置10(図2)の受信部10iはこのWを受信する(ステップS54)。Wが受信された後、乱数生成部10cが、ηを{0,1,...,p−1}からランダムに選択して記憶部10eに格納する(ステップS55)。このηは送信部10hに送られ、送信部10hは、このηを利用者装置20に送信する(ステップS56)。
利用者装置20(図3)の受信部20aは、このηを受信して記憶部20jに格納する(ステップS57)。次に、証明結果情報生成部20fのz計算部20fbが、記憶部20jから(a1,a2,a3)とηとmと(s,R)とを読み込み、
z1=a1+η・m mod p
z2=a2+η・s mod p …(5)
z3=a3+η・R mod p
を計算し、その演算結果(z1,z2,z3)を証明結果情報として記憶部20jに格納する(ステップS58)。次に、この証明結果情報(z1,z2,z3)は、送信部20bに送られ、送信部20bは、証明結果情報(z1,z2,z3)をブラインド署名生成装置10に送信する(ステップS59)。
【0034】
ブラインド署名生成装置10(図2)の受信部10iは、この証明結果情報(z1,z2,z3)を受信し、記憶部10eに格納する(ステップS60)。そして、証明結果検証部10fが、記憶部10eから、g1,w,u,v,h,W,X,η,(z1,z2,z3)を読み込み、
g1z1・ψ(v)z2・(ψ(w・h))z3≡W・(X/ψ(u))η …(6)
が成り立つか否かにより、証明結果情報の検証を行う(ステップS61)。ここで、式(6)が成立する場合、証明結果検証部10fは、証明結果が正当である旨を出力する(ステップS62)。一方、式(6)が成立しない場合、証明結果検証部10fは、証明結果が不当である旨を出力する(ステップS63)。
【0035】
そして、上述したステップS51以降の処理を複数回繰り返し、全てのループにおいて証明結果が正当であると出力された場合、証明結果検証部10fは、証明結果情報が合格であると判断し、1度でも証明結果が不当であると出力された場合、証明結果情報が不合格であると判断する(図5/ステップS8/[証明の具体例(証明の一例)]の説明終わり)。
証明結果検証部10fが、証明結果情報を合格と判断した場合、ブラインド署名生成装置10の乱数生成部10cは、Lを{0,1,...,p−1}からランダムに選択して記憶部10eに格納する(ステップS9)。次に、Y計算部10gが、記憶部10eからX,g1,L,z,x,rを読み込み、
Y=(X・g1L・z)1/(x+r) …(7)
を計算して記憶部10eに格納する(ステップS10)。次に、記憶部10eに格納された(Y,L)が送信部10hに送られ、送信部10hは、この(Y,L)を利用者装置20に送信する(ステップS11)。
【0036】
利用者装置20(図3)の受信部20aは、この(Y,L)を受信し、記憶部20jに格納する(図6/ステップS28)。次に、乱数生成部20cが、tを{0,1,...,p−1}からランダムに選択して記憶部20jに格納する(ステップS29)。そして、σ計算部20gが、記憶部20jからYとg1とRとtとを読み込み、
σ=(Y/g1R)1/t …(8)
を計算し、その演算結果σを記憶部20jに格納する(ステップS30)。また、α計算部20hが、記憶部20jからwとhとtとを読み込み、
α=wt-1・ht …(9)
を計算し、その演算結果αを記憶部20jに格納する(ステップS31)。さらに、β計算部20iが、記憶部20jからsとLとを読み込み、
β=s+L mod p …(10)
を計算し、その演算結果βを記憶部20jに格納する(ステップS32)。以上のように生成された(σ,α,β)が署名対象情報mのブラインド署名となる。そして、記憶部20jに格納された署名対象情報mとそのブラインド署名(σ,α,β)とは送信部20bに送られ、送信部20bは、署名対象情報mとそのブラインド署名(σ,α,β)とをブラインド署名検証装置30に送信する(ステップS33)。
【0037】
<ブラインド署名検証処理>
ブラインド署名検証装置(図4)の受信部30aは、上記の署名対象情報mとそのブラインド署名(σ,α,β)とを受信し、これらを記憶部30eに格納する(ステップS41)。また、受信部30aが、ブラインド署名生成装置10から送信された公開鍵(g1,g2,w,u,v)を受信し、記憶部30wに格納する(ステップS42)。なお、ブラインド署名生成装置10への公開鍵の配送依頼手順は、前述した利用者装置10の場合と同様であるため説明を省略する。
【0038】
次に署名検証部30bが、記憶部30eから署名対象情報mとそのブラインド署名(σ,α,β)と公開鍵(g1,g2,w,u,v)とを読み込み、
σ≠1, α∈G2, e(σ,w・α)=e(g1,g2m・u・vβ) …(11)
が全て成立するか否かを検証する(ステップS43)。ここで、式(11)が成立する場合、署名検証部30bは、署名検証が合格である旨の情報を署名検証結果出力部30cに送り、署名検証結果出力部30cは署名検証が合格である旨を出力する(ステップS44)。一方、式(11)が成立しなかった場合、署名検証部30bは、署名検証が不合格である旨の情報を署名検証結果出力部30cに送り、署名検証結果出力部30cは署名検証が不合格である旨を出力する(ステップS45)。
【0039】
<署名検証が正しく行われる理由>
次に、式(11)が成立する場合になぜ署名が合格であるといえるかについて説明する。
まず、前述の式(7)に式(3)を代入すると、
Y=(X・g1L・z)1/(x+r)=((g1m・ψ(u)・ψ(v)s・(ψ(w・h))R)・g1L・z)1/(x+r) …(12)
となる。また、前述の<性質3>より、ψは、G2からG1への同型写像であり、ψ(g2)=g1を満たすため、式(12)は、
Y=g1(m+y+(s+L)・z)/(x+r)・g1R …(13)
と変形できる。
【0040】
そして、式(13)と式(10)により、式(8)は、
σ=(Y/g1R)1/t=g1(m+y+(s+L)・z)/(t・x+t・r)=g1(m+y+β・z)/(t・x+t・r) …(14)
と変形できる。
ここで、δ=(t‐1)・x+t・rとすると、式(14)は、
σ=g1(m+y+β・z)/(x+((t‐1)・x+t・r))=g1(m+y+β・z)/(x+δ) …(15)
となる。
また、この場合、w=g2x(ステップS2),h=g2r(ステップS4)より、式(9)は、
α=wt-1・ht=g2(t‐1)・x+t・r=g2δ …(16)
となる。
【0041】
これらより、式(11)の左辺は、
e(σ,w・α)=e(g1(m+y+β・z)/(x+δ), g2x+δ) …(17)
と変形できる。さらに、<性質4>により、eは双線形写像であり、式(2)を満たすことから、式(17)は、
e(σ,w・α)=e(g1(m+y+β・z)/(x+δ), g2x+δ)
=e(g1(m+y+β・z)/(x+δ), g2)・e(g1(m+y+β・z)/(x+δ), g2)・…・e(g1(m+y+β・z)/(x+δ), g2) …(18)
と変形でき、式(1)を満たすことから、式(18)は、
e(σ,w・α)=e(g1(m+y+β・z), g2)
=e(g1, g2)・e(g1, g2)・…・e(g1, g2) …(19)
と変形できる。さらに、eは式(2)を満たし、u=g2y, v=g2z(ステップS2)より、式(19)は、
e(σ,w・α)=e(g1, g2(m+y+β・z))
=e(g1, g2mu・vβ)=式(11)の右辺
となる。
【0042】
〔本形態の効果〕
本形態のブラインド署名には、ハッシュ関数が使われていない。また、本形態のブラインド署名生成処理及びブラインド署名検証処理の安全性はStrong Diffile-Hellman問題の求解困難性に基づいており、安全であるといえる。さらに、本形態のブラインド署名生成処理及びブラインド署名検証処理の処理速度は、現在最も広く使われているRSA署名などと同程度であり、高い実用性を持つ。
例えば、双線形写像の典型的な実現例では、G1=G2となるような楕円曲線を用い、この楕円曲線のパラメータを200ビット程度にすることが可能である。このときのブラインド署名(σ,α,β)のデータサイズは200ビット程度(つまり、σ,α,β合計で600ビット程度)となり、RSA署名のデータサイズよりも小さくなる。
【0043】
〔変形例〕
なお、本発明は上述の実施の形態に限定されるものではない。例えば、本形態では、ステップS26,S27(図6)及びステップS7(図5)において、利用者装置20が、(m,s,R)を保持していることを、少なくともmを開示することなく、ブラインド署名生成装置10に証明し、この証明が成功した場合にのみ、ステップS9(図5)以降の処理を実行することとした。しかし、この証明処理を行うことなく、ステップS9(図5)以降の処理を実行することとしてもよい。
【0044】
また、本形態では、ψをG2からG1への同型写像とした。しかし、ψをG2からG1への準同型写像とした構成であってもよい。
また、本形態では、ブラインド署名生成装置10が秘密鍵x,y,zを生成し、u=g2yによって公開鍵uを生成することとした。しかし、秘密鍵yを生成せず、公開鍵uを巡回群G2から任意に選択する構成でもよい。
また、本形態では、ブラインド署名生成装置10がLを{0,1,...,p−1}からランダムに選択し、これを利用者装置20に送信することとした。しかし、ブラインド署名生成装置10がLの選択や送信を行わない構成としてもよい。この場合、ブラインド署名生成装置10が、利用者装置20との間で既に共有しているL(0も含む)を用いてY=(X・g1L・z)1/(x+r)を計算し、利用者装置20がこのLを用いてβを計算してもよい。ここでL=0であるなら秘密鍵zは不要となり、ブラインド署名生成装置10が、秘密鍵zを生成せず、公開鍵vを巡回群G2から任意に選択する構成を採ることもできる。また、この場合、利用者装置20はsをそのままβとして用いることもできる。
【0045】
また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよく、その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
第2の実施の形態:
次に、本発明の第2の実施の形態を図面を参照して説明する。なお、以下では、第1の実施の形態との相違点を中心に説明し、第1の実施の形態と共通する部分については説明を簡略化する。
【0046】
〔構成〕
次に、本形態の構成について説明する。
図9は、本形態におけるブラインド署名生成・検証システムの全体構成を例示したブロック図である。また、図10はブラインド署名生成装置の詳細構成を、図11は利用者装置の詳細構成を、それぞれ例示したブロック図である。なお、ブラインド署名検証装置30は、第1の実施の形態のものと同じである。以下、これらの図を用いて、本形態の構成を説明する。
【0047】
<全体構成>
図9に例示するように、本形態のブラインド署名生成・検証システム101は、ブラインド署名生成装置110と、利用者装置120と、ブラインド署名検証装置30とを有している。ここで、ブラインド署名生成装置110と利用者装置120と、及び利用者装置120とブラインド署名検証装置30とは、それぞれネットワークを通じて通信可能に接続されている。
<ブラインド署名生成装置の構成>
図9及び図10に例示するように、本形態のブラインド署名生成装置110は、秘密鍵生成部110aと、公開鍵生成部110bと、乱数生成部110cと、R計算部110d、記憶部110eと、証明結果検証部110fと、Y計算部110gと、送信部110hと、受信部110iと、制御部110jとを有している。
【0048】
本形態のブラインド署名生成装置110は、第1の実施の形態と同様、公知のコンピュータにブラインド署名生成プログラムが読み込まれことにより構築される。
すなわち、図9及び図10の鍵生成部110a、公開鍵生成部110b、乱数生成部110c、R計算部110d、証明結果検証部110f、Y計算部110g及び制御部110jは、ブラインド署名生成プログラムが読み込まれたCPUに相当する。また、送信部110h及び受信部110iは、ブラインド署名生成プログラムが読み込まれたCPUの制御のもと通信処理を行うNIC等に相当する。また、記憶部110eは、補助記憶装置、RAM、レジスタ等により構成される。なお、ブラインド署名生成装置110は、制御部110jの制御のもと各処理を実行する。
【0049】
<利用者装置の構成>
図9及び図11に例示するように、本形態の利用者装置120は、受信部120aと、送信部120bと、乱数生成部120cと、X計算部120dと、制御部120eと、証明結果情報生成部120fと、σ計算部120gと、α計算部120hと、β計算部120iと、記憶部120jと、τ計算部120kとを有している。また、図11に例示するように、証明結果情報生成部120fは、W計算部120faとz計算部120fbを有している。
【0050】
本形態の利用者装置120は、第1の実施の形態と同様、公知のコンピュータに利用者プログラムが読み込まれることにより構成される。すなわち、乱数生成部120c、X計算部120d、制御部120e、証明結果情報生成部120f、σ計算部120g、α計算部120h、β計算部120i及びτ計算部120kは、利用者プログラムが読み込まれたCPUに相当する。また、受信部120a及び送信部120bは、利用者プログラムが読み込まれたCPUの制御のもと通信処理を行うNIC等に相当する。また、記憶部120jは、補助記憶装置、RAM、レジスタ等により構成される。なお、利用者装置120は、制御部120eの制御のもと各処理を実行する。
【0051】
<ブラインド署名検証装置の構成>
第1の実施の形態で説明した通りである。ここでは説明を省略する。
〔処理〕
次に、本形態のブラインド署名生成処理について説明する。
図12は、ブラインド署名生成装置110の処理を説明するためのフローチャートである。また、図13は、利用者装置20の処理を説明するためのフローチャートである。以下、これらの図を用いて本形態のブラインド署名生成処理を説明する。なお、署名検証処理については、第1の実施の形態と同じであるため説明を省略する。
【0052】
<ブラインド署名生成処理>
本処理の前提として、ブラインド署名生成装置110の秘密鍵生成部110a、乱数生成部110c、利用者装置120の乱数生成部120c、証明結果情報生成部120f、β計算部120i,τ計算部120kが、共通の素数pを利用できるように設定しておく。これは、ブラインド署名生成プログラム及び利用者プログラムのコードに素数pを記述して実現してもよいし、別途素数pのデータをCPUに読み込ませて実現してもよい。また、利用者装置120の記憶部120jに署名対象情報(例えば文書)m∈{0,1,...,p−1}を格納しておく。本形態では、この署名対象情報mのブラインド署名を生成する。
【0053】
本形態では、まず、ブラインド署名生成装置110(図10)の秘密鍵生成部110aが、秘密鍵x∈{0,1,...,p−1}を(例えばランダムに)生成し、当該秘密鍵xを記憶部110eに格納する(図12/ステップS101)。
次に、ブラインド署名生成装置110の公開鍵生成部110bが、記憶部110eから秘密鍵xを読み込み、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成し、当該公開鍵(g1,g2,w,u,v)を記憶部110eに格納する(ステップS102)。
【0054】
次に、利用者装置120(図11)の乱数生成部120cが、sとtを{0,1,...,p−1}からそれぞれランダムに選択して記憶部120jに格納する(ステップS121)。
また、利用者装置120は、制御部120eの制御のもと、送信部120bからブラインド署名生成装置110に対して公開鍵の発行要求情報を送信する。これを受けたブラインド署名生成装置110は、記憶部110eの公開鍵(g1,g2,w,u,v)を送信部110hから利用者装置120に送信し、利用者装置120は、受信部120aでこれを受信し記憶部120jに格納する(ステップS122)。なお、この例の利用者装置120は公開鍵g2を使用しない。よって、利用者装置120が公開鍵(g1,w,u,v)のみを取得する構成としてもよい。
【0055】
次に利用者装置120のX計算部120dが、記憶部120jから公開鍵(g1,w,u,v)と(s,t)と署名対象情報mとを読み込み、
X=(g1m・ψ(u)・ψ(v)s)t …(20)
を計算し、その演算結果Xを記憶部120jに格納する(ステップS123)。
そして、このXが送信部120bに送られ、送信部120bが、このXをブラインド署名生成装置110に送信する(ステップS124)。なお、このXは、ブラインド署名生成装置110(図10)の受信部110iで受信され、記憶部110eに格納される(図12/ステップS103)。
【0056】
また、利用者装置120(図11)は、(m・t mod p,t,s・t mod p)を保持或いは算出可能である旨を、少なくともmを開示することなく(好ましくは、m,s,tを開示することなく)ブラインド署名生成装置110に証明する。
[証明の概要]
まず、証明結果情報生成部120fが、(m・t mod p,t,s・t mod p)を保持或いは算出可能である旨を、少なくともmを開示することなく(好ましくは、m,s,tを開示することなく)ブラインド署名生成装置110に証明するための処理を実行し、その証明を行うための証明結果情報を生成して記憶部120jに格納する(図13/ステップS125)。そして、送信部120bが、その証明結果情報をブラインド署名生成装置110に送信する(ステップS126)。ブラインド署名生成装置110の受信部110iは、この証明結果情報を受信し、証明結果検証部110fが、この証明結果情報を検証する(図12/ステップS104)。そして、証明結果検証部110fが、この証明結果情報を不合格と判断すれば、ブラインド署名生成装置110の制御部110jは処理をエラー終了させる。一方、証明結果検証部110fが、この証明結果情報を合格と判断すれば、ステップS106以降の処理が実行される(ステップS105)。
【0057】
[証明の具体例(証明の一例)]
次に、上記のステップS125,S126(図13)及びステップS104(図12)の処理の具体例を説明する。なお、本発明は、この具体例には限定されない。
図14は、上記のステップS125,S126及びステップS104の処理の具体例を説明するためのフローチャートである。以下、このフローチャートに従ってこの具体例の説明を行っていく。
まず、利用者装置120(図11)の乱数生成部120cが、(a1,a2,a3)を{0,1,...,p−1}からランダムに選択して記憶部120jに格納する(ステップS151)。次に、証明結果情報生成部120fのW計算部120faが、記憶部120jから(a1,a2,a3)とg1とuとvとを読み込み、
W=g1a1・ψ(u)a2・ψ(v)a3 …(21)
を計算し、その演算結果Wを記憶部120jに格納する(ステップS152)。次に、記憶部120jに格納されたWが送信部120bに送られ、送信部120bは、Wをブラインド署名生成装置110に送信する(ステップS153)。
【0058】
ブラインド署名生成装置110(図10)の受信部110iはこのWを受信する(ステップS154)。Wが受信された後、乱数生成部110cが、ηを{0,1,...,p−1}からランダムに選択して記憶部110eに格納する(ステップS155)。このηは送信部110hに送られ、送信部110hは、このηを利用者装置120に送信する(ステップS156)。
利用者装置120(図11)の受信部120aは、このηを受信して記憶部120jに格納する(ステップS157)。次に、証明結果情報生成部120fのz計算部120fbが、記憶部120jから(a1,a2,a3)とηとmとRとを読み込み、
z1=a1+η・m・t mod p
z2=a2+η・t mod p …(22)
z3=a3+η・s・t mod p
を計算し、その演算結果(z1,z2,z3)を証明結果情報として記憶部120jに格納する(ステップS158)。次に、この証明結果情報(z1,z2,z3)は、送信部120bに送られ、送信部120bは、証明結果情報(z1,z2,z3)をブラインド署名生成装置110に送信する(ステップS159)。
【0059】
ブラインド署名生成装置110(図10)の受信部110iは、この証明結果情報(z1,z2,z3)を受信し、記憶部110eに格納する(ステップS160)。そして、証明結果検証部110fが、記憶部110eから、g1,u,v,W,X,η,(z1,z2,z3)を読み込み、
g1z1・ψ(u)z2・ψ(v)z3≡W・(X)η …(23)
が成り立つか否かにより、証明結果情報の検証を行う(ステップS161)。ここで、式(23)が成立する場合、証明結果検証部110fは、証明結果が正当である旨を出力する(ステップS162)。一方、式(23)が成立しない場合、証明結果検証部110fは、証明結果が不当である旨を出力する(ステップS163)。
【0060】
そして、上述したステップS151以降の処理を複数回繰り返し、全てのループにおいて証明結果が正当であると出力された場合、証明結果検証部110fは、証明結果情報が合格であると判断し、1度でも証明結果が不当であると出力された場合、証明結果情報が不合格であると判断する(図12/ステップS105/[証明の具体例(証明の一例)]の説明終わり)。
証明結果検証部110fが、証明結果情報を合格と判断した場合、ブラインド署名生成装置110の乱数生成部110cは、r,Lを{0,1,...,p−1}からランダムに選択して記憶部110eに格納する(ステップS106)。次に、Y計算部110gが、記憶部110eからX,L,v,x,rを読み込み、
Y=(X・ψ(v)L)1/(x+r) …(24)
を計算して記憶部110eに格納する(ステップS107)。
【0061】
また、R計算部110dが、記憶部110eからg2,rを読み込み、
R=g2r …(25)
を計算して記憶部110eに格納する(ステップS108)。
次に、記憶部110eに格納された(Y,R,L)が送信部110hに送られ、送信部110hは、この(Y,R,L)を利用者装置120に送信する(ステップS109)。利用者装置120(図11)の受信部120aは、この(Y,R,L)を受信し、記憶部120jに格納する(図13/ステップS127)。次に、乱数生成部120cが、fを{0,1,...,p−1}からランダムに選択して記憶部120jに格納する(ステップS128)。そして、τ計算部120kが、記憶部120jからfとtとを読み込み、
τ=(f・t)-1mod p …(26)
を計算し、その演算結果τを記憶部120jに格納する(ステップS129)。また、σ計算部120gが、記憶部120jからYとτとを読み込み、
σ=Yτ …(27)
を計算し、その演算結果σを記憶部120jに格納する(ステップS130)。また、α計算部120hが、記憶部120jからwとhとtとを読み込み、
α=wf-1・Rf …(28)
を計算し、その演算結果αを記憶部120jに格納する(ステップS131)。さらに、β計算部120iが、記憶部120jからsとLとtとを読み込み、
β=s+L/t mod p …(29)
を計算し、その演算結果βを記憶部120jに格納する(ステップS132)。以上のように生成された(σ,α,β)が署名対象情報mのブラインド署名となる。そして、記憶部120jに格納された署名対象情報mとそのブラインド署名(σ,α,β)とは送信部120bに送られ、送信部120bは、署名対象情報mとそのブラインド署名(σ,α,β)とをブラインド署名検証装置130に送信する(ステップS133)。
【0062】
<ブラインド署名検証処理>
本形態のブラインド署名検証処理でも、第1の実施の形態と同じく、
σ≠1, α∈G2, e(σ,w・α)=e(g1,g2m・u・vβ) …(30)
が成立する場合に署名が合格であると判断する。
<署名検証が正しく行われる理由>
次に、式(30)が成立する場合になぜ署名が合格であるといえるかについて説明する。
【0063】
まず、前述の式(24)に式(20)を代入すると、
Y=(X・ψ(v)L)1/(x+r)=((g1m・ψ(u)・ψ(v)s)t・ψ(v)L)1/(x+r)
=(g1m・ψ(u)・ψ(v)s+L/t)t/(x+r) …(31)
となる。これと式(26)を式(27)に代入すると、
σ=Yτ=Y1/(f・t)=(g1m・ψ(u)・ψ(v)s+L/t)1/(f・x+f・r) …(32)
となる。そして、式(32)に式(29)を代入し、さらに、δ=(f‐1)x+f・r mod pとすると、
σ=(g1m・ψ(u)・ψ(v)β)1/(x+(f−1)x+f・r)=(g1m・ψ(u)・ψ(v)β)1/(x+δ) …(33)
となる。また、w=g2xと式(25)とを式(28)に代入し、上記のδを用いて表現すると、
α=wf-1・Rf=g2f-1+r=g2(f‐1)x+f・r)=g2δ …(34)
となる。
【0064】
これらより、式(11)の左辺は、
e(σ,w・α)=e((g1m・ψ(u)・ψ(v)β)1/(x+δ),g2x+δ) …(35)
と変形できる。さらに、<性質4>により、eは双線形写像であり、式(2)を満たすことから、式(35)は、
e(σ,w・α)=e((g1m・ψ(u)・ψ(v)β)1/(x+δ),g2x+δ)=e((g1m・ψ(u)・ψ(v)β)1/(x+δ),g2)・e((g1m・ψ(u)・ψ(v)β)1/(x+δ),g2)・…・e((g1m・ψ(u)・ψ(v)β)1/(x+δ),g2) …(36)
と変形でき、式(1)を満たすことから、式(36)は、
e(σ,w・α)=e(g1m・ψ(u)・ψ(v)β,g2) …(37)
と変形できる。また、u,v∈G2でありu=g2y, v=g2zと書ける(y,z∈{0,1,...,p−1})ため、式(37)は、
e(σ,w・α)=e(g1m・ψ(g2y)・ψ(g2z)β,g2) …(37)
と書ける。また、前述の<性質3>より、ψは、G2からG1への同型写像であり、さらにψ(g2)=g1を満たすため、式(37)は、
e(σ,w・α)=e(g1m・ψ(g2y)・ψ(g2z)β,g2)=e(g1(m+y+β・z), g2) …(38)
と変形できる。さらに、式(1)を満たすことから、式(38)は、
e(σ,w・α)=e(g1, g2)・e(g1, g2)・…・e(g1, g2) …(39)
と変形でき、式(2)を満たすことから、式(39)は、
e(σ,w・α)=e(g1, g2(m+y+β・z)) …(40)
と変形できる。そして、u=g2y, v=g2zとおいているのだから、式(40)は、
e(σ,w・α)=e(g1, g2mu・vβ)=式(30)の右辺
となる。
【0065】
〔本形態の効果〕
本形態のブラインド署名には、ハッシュ関数が使われていない。また、本形態のブラインド署名生成処理及びブラインド署名検証処理の安全性はStrong Diffile-Hellman問題の求解困難性に基づいており、安全であるといえる。さらに、本形態のブラインド署名生成処理及びブラインド署名検証処理の処理速度は、現在最も広く使われているRSA署名などと同程度であり、高い実用性を持つ。
〔変形例〕
なお、本発明は上述の実施の形態に限定されるものではない。例えば、本形態では、ステップS125,S126(図13)及びステップS104(図12)において、利用者装置120が、(m・t mod p,t,s・t mod p)を保持又は算出可能である旨を、少なくともmを開示することなく、ブラインド署名生成装置110に証明し、この証明が成功した場合にのみ、ステップS106(図12)以降の処理を実行することとした。しかし、この証明処理を行うことなく、ステップS106(図12)以降の処理を実行することとしてもよい。
【0066】
また、本形態では、ψをG2からG1への同型写像とした。しかし、ψをG2からG1への準同型写像とした構成であってもよい。
また、本形態では、ブラインド署名生成装置110がr,Lを{0,1,...,p−1}からランダムに選択し、R=g2rを算出し、YとともにLとRを利用者装置120に送信することとした。しかし、ブラインド署名生成装置110がRやLの選択・算出・送信を行わない構成としてもよい。この場合、例えば、ブラインド署名生成装置110と利用者装置120とは事前にr,Lを共用しているものとし、ブラインド署名生成装置110は、これらを用いてY=(X・ψ(v)L)1/(x+r)を計算し、利用者装置120は、これらr,Lをを用いて、R=g2r、α=wf−1・Rf及びβ=s+L/t mod pを計算する。
【0067】
また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよく、その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
また、各実施の形態の処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
【0068】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0069】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【0070】
本発明の産業上の利用分野としては、例えば、電子現金や電子投票の分野などを例示できる。
【図面の簡単な説明】
【0071】
【図1】図1は、第1の実施の形態におけるブラインド署名生成・検証システムの全体構成を例示したブロック図である。
【図2】図2は、第1の実施の形態におけるブラインド署名生成装置の詳細構成を例示したブロック図である。
【図3】図3は、第1の実施の形態における利用者装置の詳細構成を例示したブロック図である。
【図4】図4は、第1,2の実施の形態におけるブラインド署名検証装置の詳細構成を例示したブロック図である。
【図5】図5は、第1の実施の形態におけるブラインド署名生成装置の処理を説明するためのフローチャートである。
【図6】図6は、第1の実施の形態における利用者装置の処理を説明するためのフローチャートである。
【図7】図7は、第1,2の実施の形態におけるブラインド署名検証装置の処理を説明するためのフローチャートである。
【図8】図8は、ステップS26,S27及びステップS7の処理の具体例を説明するためのフローチャートである。
【図9】図9は、第2の実施の形態におけるブラインド署名生成・検証システムの全体構成を例示したブロック図である。
【図10】図10は、第2の実施の形態におけるブラインド署名生成装置の詳細構成を例示したブロック図である。
【図11】図11は、第2の実施の形態における利用者装置の詳細構成を例示したブロック図である。
【図12】図12は、第2の実施の形態におけるブラインド署名生成装置の処理を説明するためのフローチャートである。
【図13】図13は、第2の実施の形態における利用者装置の処理を説明するためのフローチャートである。
【図14】図14は、S125,S126及びステップS104の処理の具体例を説明するためのフローチャートである。
【符号の説明】
【0072】
1,101 ブラインド署名生成・検証システム
10,110 ブラインド署名生成装置
20,120 利用者装置
30 ブラインド署名検証装置
【特許請求の範囲】
【請求項1】
ブラインド署名生成装置と利用者装置とブラインド署名検証装置とによって実行されるブラインド署名生成・検証方法であって、
ブラインド署名生成装置の秘密鍵生成部が、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成して記憶部に格納するステップと、
ブラインド署名生成装置の公開鍵生成部が、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成して記憶部に格納するステップと、
ブラインド署名生成装置のh計算部が、h=g2r(r∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
ブラインド署名生成装置の送信部が、hを利用者装置に送信するステップと、
利用者装置の受信部が、hを受信するステップと、
利用者装置の受信部が、少なくともブラインド署名生成装置から送信された公開鍵g1,w,u,vを受信するステップと、
利用者装置のX計算部が、ψをG2からG1への写像ψ(g2)=g1とし、mを署名対象情報とした場合における、X=g1m・ψ(u)・ψ(v)s・(ψ(w・h))R(s,R∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
利用者装置の送信部が、Xをブラインド署名生成装置に送信するステップと、
ブラインド署名生成装置の受信部がXを受信するステップと、
ブラインド署名生成装置のY計算部が、Y=(X・g1L・z)1/(x+r)(L,z∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
ブラインド署名生成装置の送信部が、少なくともYを利用者装置に送信するステップと、
利用者装置の受信部が少なくともYを受信するステップと、
利用者装置のσ計算部が、σ=(Y/g1R)1/t(t∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
利用者装置のα計算部が、α=wt−1・htを計算して記憶部に格納するステップと、
利用者装置の送信部が、署名対象情報mと、ブラインド署名(σ,α,β)(β=s+L mod p)と、をブラインド署名検証装置に送信するステップと、
ブラインド署名検証装置の受信部が、署名対象情報mと上記ブラインド署名(σ,α,β)とを受信するステップと、
ブラインド署名検証装置の受信部が、ブラインド署名生成装置から送信された公開鍵g1,g2,w,u,vを受信するステップと、
ブラインド署名検証装置の署名検証部が、eをG1×G2→GTの双線形写像とした場合における、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)が成立するか否かを検証するステップと、
を有することを特徴とするブラインド署名生成・検証方法。
【請求項2】
請求項1に記載のブラインド署名生成・検証方法であって、
利用者装置の証明結果情報生成部が、当該利用者装置に(m,s,R)が保持されていることを、少なくともmを開示することなくブラインド署名生成装置に証明するための証明結果情報を生成し、それを記憶部に格納するステップと、
利用者装置の送信部が、上記証明結果情報をブラインド署名生成装置に送信するステップと、
ブラインド署名生成装置の受信部が、上記証明結果情報を受信するステップと、
ブラインド署名生成装置の証明結果検証部が、上記証明結果情報を検証するステップと、を有し、
上記のブラインド署名生成装置のY計算部がYを計算するための処理は、
ブラインド署名生成装置の証明検証部が上記証明結果情報を合格と判断した場合にのみ実行される、
ことを特徴とするブラインド署名生成・検証方法。
【請求項3】
請求項2に記載のブラインド署名生成・検証方法であって、
利用者装置の乱数生成部が、a1,a2,a3を{0,1,...,p−1}からランダムに選択して記憶部に格納するステップと、
利用者装置のW計算部が、W=g1a1・ψ(v)a2・(ψ(w・h))a3(上付き添え字a1,a2,a3は、それぞれa1,a2,a3を示す)を計算して記憶部に格納するステップと、
利用者装置の送信部が、Wをブラインド署名生成装置に送信するステップと、
ブラインド署名生成装置の受信部がWを受信するステップと、
Wが受信された後、ブラインド署名生成装置の乱数生成部が、ηを{0,1,...,p−1}からランダムに選択して記憶部に格納するステップと、
ブラインド署名生成装置の送信部が、ηを利用者装置に送信するステップと、
利用者装置の受信部が、ηを受信するステップと、を有し、
上記証明結果情報は、
z1=a1+η・m mod p,z2=a2+η・s mod p,z3=a3+η・R mod pであり、
上記ブラインド署名生成装置の証明結果検証部は、
g1z1・ψ(v)z2・(ψ(w・h))z3≡W・(X/ψ(u))η(上付き添え字z1,z2,z3は、それぞれz1,z2,z3を示す)が成り立つか否かにより、上記証明結果情報の検証を行う、
ことを特徴とするブラインド署名生成・検証方法。
【請求項4】
請求項1に記載のブラインド署名生成・検証方法であって、
上記写像ψはG2からG1への同型写像である、
ことを特徴とするブラインド署名生成・検証方法。
【請求項5】
請求項1に記載のブラインド署名生成・検証方法であって、
ブラインド署名生成装置の秘密鍵生成部が、秘密鍵xを生成する際に、秘密鍵z∈{0,1,...,p−1}も生成して記憶部に格納するステップをさらに有し、
ブラインド署名生成装置の公開鍵生成部が生成する公開鍵はv=g2zであり、
ブラインド署名生成装置の受信部がXを受信するステップの後、ブラインド署名生成装置のY計算部がYを計算して記憶部に格納するステップの前に、ブラインド署名生成装置の乱数生成部が、Lを{0,1,...,p−1}からランダムに選択して記憶部に格納するステップをさらに有し、
ブラインド署名生成装置の送信部は、YとともにLをも利用者装置に送信し、
利用者装置の受信部は、YとともにLをも受信し、
利用者装置の受信部が、YとともにLをも受信するステップの後、利用者装置の送信部が署名対象情報mとブラインド署名(σ,α,β)とをブラインド署名検証装置に送信するステップの前に、利用者装置のβ計算部が、β=s+L mod pを計算して記憶部に格納するステップをさらに有する、
ことを特徴とするブラインド署名生成・検証方法。
【請求項6】
ブラインド署名生成装置であって、
秘密鍵生成部と、公開鍵生成部と、送信部と、受信部と、h計算部と、Y計算部とを有し、
上記秘密鍵生成部は、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成し、
上記公開鍵生成部は、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成し、
上記送信部は、公開鍵g1,g2,w,u,vの少なくとも一部を利用者装置及びブラインド署名検証装置に送信し、
上記h計算部は、h=g2r(r∈{0,1,...,p−1})を計算し、
上記送信部は、hを利用者装置に送信し、
上記受信部は、利用者装置から送信されたXを受信し、
上記Y計算部は、Y=(X・g1L・z)1/(x+r)(L,z∈{0,1,...,p−1})を計算し、
上記送信部は、少なくともYを利用者装置に送信する、
ことを特徴とするブラインド署名生成装置。
【請求項7】
利用者装置であって、
送信部と、受信部と、X計算部と、σ計算部と、α計算部とを有し、
上記受信部は、hと公開鍵g1,w,u,vとを少なくとも受信し、
上記X計算部は、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とし、ψをG2からG1への写像ψ(g2)=g1とし、mを署名対象情報とした場合における、X=g1m・ψ(u)・ψ(v)s・(ψ(w・h))R(s,R∈{0,1,...,p−1})を計算し、
上記送信部は、Xをブラインド署名生成装置に送信し、
上記受信部は、少なくともブラインド署名生成装置から送信されたYを受信し、
上記σ計算部は、σ=(Y/g1R)1/t(t∈{0,1,...,p−1})を計算し、
上記α計算部は、α=wt−1・htを計算し、
上記送信部は、署名対象情報mと、ブラインド署名(σ,α,β)(β=s+L mod p,L∈{0,1,...,p−1})と、をブラインド署名検証装置に送信する、
ことを特徴とする利用者装置。
【請求項8】
ブラインド署名検証装置であって、
受信部と、署名検証部とを有し、
上記受信部は、署名対象情報mと、ブラインド署名(σ,α,β)と、公開鍵g1,g2,w,u,vとを受信し、
上記署名検証部は、pを素数とし、G1とG2を位数がpの巡回群とし、eをG1×G2→GTの双線形写像とした場合における、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)が成立するか否かを検証する、
ことを特徴とするブラインド署名検証装置。
【請求項9】
ブラインド署名生成装置と利用者装置とブラインド署名検証装置とからなるブラインド署名生成・検証システムであって、
上記ブラインド署名生成装置は、秘密鍵生成部と、公開鍵生成部と、送信部と、受信部と、h計算部と、Y計算部とを有し、
上記秘密鍵生成部は、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成し、上記公開鍵生成部は、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成し、上記ブラインド署名生成装置の送信部は、公開鍵g1,g2,w,u,vの少なくとも一部を利用者装置及びブラインド署名検証装置に送信し、上記h計算部は、h=g2r(r∈{0,1,...,p−1})を計算し、上記送信部は、hを利用者装置に送信し、上記受信部は、利用者装置から送信されたXを受信し、上記Y計算部は、Y=(X・g1L・z)1/(x+r)(L,z∈{0,1,...,p−1})を計算し、上記ブラインド署名生成装置の送信部は、少なくともYを利用者装置に送信し、
上記利用者装置は、送信部と、受信部と、X計算部と、σ計算部と、α計算部とを有し、上記利用者装置の受信部は、hと公開鍵g1,w,u,vとを少なくとも受信し、上記X計算部は、ψをG2からG1への写像ψ(g2)=g1とし、mを署名対象情報とした場合における、X=g1m・ψ(u)・ψ(v)s・(ψ(w・h))R(s,R∈{0,1,...,p−1})を計算し、上記利用者装置の上記送信部は、Xをブラインド署名生成装置に送信し、上記利用者装置の上記受信部は、ブラインド署名生成装置から送信されたYを少なくとも受信し、上記σ計算部は、σ=(Y/g1R)1/t(t∈{0,1,...,p−1})を計算し、上記α計算部は、α=wt−1・htを計算し、上記利用者装置の上記送信部は、署名対象情報mと、ブラインド署名(σ,α,β)と、をブラインド署名検証装置に送信し、
上記ブラインド署名検証装置は、受信部と、署名検証部とを有し、
上記ブラインド署名検証装置の受信部は、署名対象情報mと上記ブラインド署名と公開鍵g1,g2,w,u,vとを受信し、上記署名検証部は、pを素数とし、G1とG2を位数がpの巡回群とし、eをG1×G2→GTの双線形写像とした場合における、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)(β=s+L mod p)が成立するか否かを検証する、
ことを特徴とするブラインド署名生成・検証システム。
【請求項10】
ブラインド署名生成装置と利用者装置とブラインド署名検証装置とによって実行されるブラインド署名生成・検証方法であって、
ブラインド署名生成装置の秘密鍵生成部が、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成して記憶部に格納するステップと、
ブラインド署名生成装置の公開鍵生成部が、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成して記憶部に格納するステップと、
利用者装置の受信部が、少なくともブラインド署名生成装置から送信された公開鍵g1,u,vを受信するステップと、
利用者装置のX計算部が、ψをG2からG1への写像ψ(g2)=g1とし、mを署名対象情報とした場合における、X=(g1m・ψ(u)・ψ(v)s)t(s,t∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
利用者装置の送信部が、Xをブラインド署名生成装置に送信するステップと、
ブラインド署名生成装置の受信部がXを受信するステップと、
ブラインド署名生成装置のY計算部が、Y=(X・(ψ(v))L)1/(x+r)(r,L∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
ブラインド署名生成装置の送信部が、少なくともYを利用者装置に送信するステップと、
利用者装置の受信部が少なくともYを受信するステップと、
利用者装置の受信部が、ブラインド署名生成装置から送信された公開鍵wを受信するステップと、
利用者装置のτ計算部が、τ=(f・t)−1 mod p(f∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
利用者装置のσ計算部が、σ=Yτを計算して記憶部に格納するステップと、
利用者装置のα計算部が、α=wf−1・Rf(R=g2r,r∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
利用者装置の送信部が、署名対象情報mと、ブラインド署名(σ,α,β)(β=s+L/t mod p)と、をブラインド署名検証装置に送信するステップと、
ブラインド署名検証装置の受信部が、署名対象情報mと上記ブラインド署名(σ,α,β)とを受信するステップと、
ブラインド署名検証装置の受信部が、ブラインド署名生成装置から送信された公開鍵g1,g2,w,u,vを受信するステップと、
ブラインド署名検証装置の署名検証部が、eをG1×G2→GTの双線形写像とした場合における、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)が成立するか否かを検証するステップと、
を有することを特徴とするブラインド署名生成・検証方法。
【請求項11】
請求項10に記載のブラインド署名生成・検証方法であって、
利用者装置の証明結果情報生成部が、(m・t mod p,t,s・t mod p)を保持又は算出可能であることを、少なくともmを開示することなくブラインド署名生成装置に証明するための証明結果情報を生成し、それを記憶部に格納するステップと、
利用者装置の送信部が、上記証明結果情報をブラインド署名生成装置に送信するステップと、
ブラインド署名生成装置の受信部が、上記証明結果情報を受信するステップと、
ブラインド署名生成装置の証明結果検証部が、上記証明結果情報を検証するステップと、を有し、
上記のブラインド署名生成装置のY計算部がYを計算するための処理は、
ブラインド署名生成装置の証明検証部が上記証明結果情報を合格と判断した場合にのみ実行される、
ことを特徴とするブラインド署名生成・検証方法。
【請求項12】
請求項11に記載のブラインド署名生成・検証方法であって、
利用者装置の乱数生成部が、a1,a2,a3を{0,1,...,p−1}からランダムに選択して記憶部に格納するステップと、
利用者装置のW計算部が、W=g1a1・ψ(u)a2・ψ(v)a3(上付き添え字a1,a2,a3は、それぞれa1,a2,a3を示す)を計算して記憶部に格納するステップと、
利用者装置の送信部が、Wをブラインド署名生成装置に送信するステップと、
ブラインド署名生成装置の受信部がWを受信するステップと、
Wが受信された後、ブラインド署名生成装置の乱数生成部が、ηを{0,1,...,p−1}からランダムに選択して記憶部に格納するステップと、
ブラインド署名生成装置の送信部が、ηを利用者装置に送信するステップと、
利用者装置の受信部が、ηを受信するステップと、を有し、
上記証明結果情報は、
z1=a1+η・m・t mod p,z2=a2+η・t mod p,z3=a3+η・s・t mod pであり、
上記ブラインド署名生成装置の証明結果検証部は、
g1z1・ψ(u)z2・ψ(v)z3≡W・Xη(上付き添え字z1,z2,z3は、それぞれz1,z2,z3を示す)が成り立つか否かにより、上記証明結果情報の検証を行う、
ことを特徴とするブラインド署名生成・検証方法。
【請求項13】
請求項10に記載のブラインド署名生成・検証方法であって、
上記写像ψはG2からG1への同型写像である、
ことを特徴とするブラインド署名生成・検証方法。
【請求項14】
請求項10に記載のブラインド署名生成・検証方法であって、
ブラインド署名生成装置の受信部がXを受信するステップの後、ブラインド署名生成装置の送信部が少なくともYを利用者装置に送信するステップの前に、ブラインド署名生成装置の乱数生成部がr,Lを{0,1,...,p−1}からランダムに選択して記憶部に格納するステップと、R計算部がR=g2rを計算して記憶部に格納するステップとを有し、
ブラインド署名生成装置の送信部は、YとともにRとLをも利用者装置に送信し、
利用者装置の受信部は、YとともにRとLをも受信し、
利用者装置のα計算部は、受信されたRを用いてα=wf−1・Rfを計算し、
利用者装置の受信部がYとともにRとLをも受信するステップの後、利用者装置の送信部が署名対象情報mとブラインド署名(σ,α,β)とをブラインド署名検証装置に送信するステップの前に、利用者装置のβ計算部がβ=s+L/t mod pを計算して記憶部に格納するステップをさらに有する、
ことを特徴とするブラインド署名生成・検証方法。
【請求項15】
ブラインド署名生成装置であって、
秘密鍵生成部と、公開鍵生成部と、送信部と、受信部と、Y計算部とを有し、
上記秘密鍵生成部は、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成し、
上記公開鍵生成部は、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成し、
上記受信部は、利用者装置から送信されたXを受信し、
上記Y計算部は、Y=(X・(ψ(v))L)1/(x+r)(r,L∈{0,1,...,p−1})を計算し、
上記送信部は、少なくともYを利用者装置に送信する、
ことを特徴とするブラインド署名生成装置。
【請求項16】
利用者装置であって、
送信部と、受信部と、X計算部と、τ計算部と、σ計算部と、α計算部とを有し、
上記受信部は、少なくともブラインド署名生成装置から送信された公開鍵g1,u,vを受信し、
上記X計算部は、ψをG2からG1への写像ψ(g2)=g1とし、mを署名対象情報とした場合における、X=(g1m・ψ(u)・ψ(v)s)t(s,t∈{0,1,...,p−1})を計算し、
上記送信部は、Xをブラインド署名生成装置に送信し、
上記受信部は、少なくともブランド署名生成装置から送信されたYを受信し、
上記受信部は、ブラインド署名生成装置から送信された公開鍵wを受信し、
上記τ計算部は、τ=(f・t)−1 mod p(f∈{0,1,...,p−1})を計算し、
上記σ計算部は、σ=Yτを計算し、
上記α計算部は、α=wf−1・Rf(R=g2r,r∈{0,1,...,p−1})を計算し、
上記送信部は、署名対象情報mと、ブラインド署名(σ,α,β)(β=s+L/t mod p)と、をブラインド署名検証装置に送信する、
ことを特徴とする利用者装置。
【請求項17】
ブラインド署名生成装置と利用者装置とブラインド署名検証装置とからなるブラインド署名生成・検証システムであって、
上記ブラインド署名生成装置は、秘密鍵生成部と、公開鍵生成部と、送信部と、受信部と、Y計算部とを有し、
上記秘密鍵生成部は、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成し、上記公開鍵生成部は、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成し、上記受信部は、利用者装置から送信されたXを受信し、上記Y計算部は、Y=(X・(ψ(v))L)1/(x+r)(r,L∈{0,1,...,p−1})を計算し、上記送信部は、少なくともYを利用者装置に送信し、
上記利用者装置は、送信部と、受信部と、X計算部と、τ計算部と、σ計算部と、α計算部とを有し、
上記受信部は、少なくともブラインド署名生成装置から送信された公開鍵g1,u,vを受信し、上記X計算部は、ψをG2からG1への写像ψ(g2)=g1とし、mを署名対象情報とした場合における、X=(g1m・ψ(u)・ψ(v)s)t(s,t∈{0,1,...,p−1})を計算し、上記送信部は、Xをブラインド署名生成装置に送信し、上記受信部は、少なくともブランド署名生成装置から送信されたYを受信し、上記受信部は、ブラインド署名生成装置から送信された公開鍵wを受信し、上記τ計算部は、τ=(f・t)−1mod p(f∈{0,1,...,p−1})を計算し、上記σ計算部は、σ=Yτを計算し、上記α計算部は、α=wf−1・Rf(R=g2r,r∈{0,1,...,p−1})を計算し、上記送信部は、署名対象情報mと、ブラインド署名(σ,α,β)(β=s+L/t mod p)と、をブラインド署名検証装置に送信し、
上記ブラインド署名検証装置は、受信部と、署名検証部とを有し、
上記受信部は、署名対象情報mと上記ブラインド署名(σ,α,β)と、公開鍵g1,g2,w,u,vとを受信し、上記署名検証部は、eをG1×G2→GTの双線形写像とした場合における、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)が成立するか否かを検証する、
ことを特徴とするブラインド署名生成・検証システム。
【請求項18】
請求項6又は15に記載のブラインド署名生成装置としてコンピュータを機能させるためのブラインド署名生成プログラム。
【請求項19】
請求項7又は16に記載の利用者装置としてコンピュータを機能させるための利用者プログラム。
【請求項20】
請求項8に記載のブラインド署名検証装置としてコンピュータを機能させるためのブラインド署名検証プログラム。
【請求項1】
ブラインド署名生成装置と利用者装置とブラインド署名検証装置とによって実行されるブラインド署名生成・検証方法であって、
ブラインド署名生成装置の秘密鍵生成部が、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成して記憶部に格納するステップと、
ブラインド署名生成装置の公開鍵生成部が、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成して記憶部に格納するステップと、
ブラインド署名生成装置のh計算部が、h=g2r(r∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
ブラインド署名生成装置の送信部が、hを利用者装置に送信するステップと、
利用者装置の受信部が、hを受信するステップと、
利用者装置の受信部が、少なくともブラインド署名生成装置から送信された公開鍵g1,w,u,vを受信するステップと、
利用者装置のX計算部が、ψをG2からG1への写像ψ(g2)=g1とし、mを署名対象情報とした場合における、X=g1m・ψ(u)・ψ(v)s・(ψ(w・h))R(s,R∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
利用者装置の送信部が、Xをブラインド署名生成装置に送信するステップと、
ブラインド署名生成装置の受信部がXを受信するステップと、
ブラインド署名生成装置のY計算部が、Y=(X・g1L・z)1/(x+r)(L,z∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
ブラインド署名生成装置の送信部が、少なくともYを利用者装置に送信するステップと、
利用者装置の受信部が少なくともYを受信するステップと、
利用者装置のσ計算部が、σ=(Y/g1R)1/t(t∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
利用者装置のα計算部が、α=wt−1・htを計算して記憶部に格納するステップと、
利用者装置の送信部が、署名対象情報mと、ブラインド署名(σ,α,β)(β=s+L mod p)と、をブラインド署名検証装置に送信するステップと、
ブラインド署名検証装置の受信部が、署名対象情報mと上記ブラインド署名(σ,α,β)とを受信するステップと、
ブラインド署名検証装置の受信部が、ブラインド署名生成装置から送信された公開鍵g1,g2,w,u,vを受信するステップと、
ブラインド署名検証装置の署名検証部が、eをG1×G2→GTの双線形写像とした場合における、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)が成立するか否かを検証するステップと、
を有することを特徴とするブラインド署名生成・検証方法。
【請求項2】
請求項1に記載のブラインド署名生成・検証方法であって、
利用者装置の証明結果情報生成部が、当該利用者装置に(m,s,R)が保持されていることを、少なくともmを開示することなくブラインド署名生成装置に証明するための証明結果情報を生成し、それを記憶部に格納するステップと、
利用者装置の送信部が、上記証明結果情報をブラインド署名生成装置に送信するステップと、
ブラインド署名生成装置の受信部が、上記証明結果情報を受信するステップと、
ブラインド署名生成装置の証明結果検証部が、上記証明結果情報を検証するステップと、を有し、
上記のブラインド署名生成装置のY計算部がYを計算するための処理は、
ブラインド署名生成装置の証明検証部が上記証明結果情報を合格と判断した場合にのみ実行される、
ことを特徴とするブラインド署名生成・検証方法。
【請求項3】
請求項2に記載のブラインド署名生成・検証方法であって、
利用者装置の乱数生成部が、a1,a2,a3を{0,1,...,p−1}からランダムに選択して記憶部に格納するステップと、
利用者装置のW計算部が、W=g1a1・ψ(v)a2・(ψ(w・h))a3(上付き添え字a1,a2,a3は、それぞれa1,a2,a3を示す)を計算して記憶部に格納するステップと、
利用者装置の送信部が、Wをブラインド署名生成装置に送信するステップと、
ブラインド署名生成装置の受信部がWを受信するステップと、
Wが受信された後、ブラインド署名生成装置の乱数生成部が、ηを{0,1,...,p−1}からランダムに選択して記憶部に格納するステップと、
ブラインド署名生成装置の送信部が、ηを利用者装置に送信するステップと、
利用者装置の受信部が、ηを受信するステップと、を有し、
上記証明結果情報は、
z1=a1+η・m mod p,z2=a2+η・s mod p,z3=a3+η・R mod pであり、
上記ブラインド署名生成装置の証明結果検証部は、
g1z1・ψ(v)z2・(ψ(w・h))z3≡W・(X/ψ(u))η(上付き添え字z1,z2,z3は、それぞれz1,z2,z3を示す)が成り立つか否かにより、上記証明結果情報の検証を行う、
ことを特徴とするブラインド署名生成・検証方法。
【請求項4】
請求項1に記載のブラインド署名生成・検証方法であって、
上記写像ψはG2からG1への同型写像である、
ことを特徴とするブラインド署名生成・検証方法。
【請求項5】
請求項1に記載のブラインド署名生成・検証方法であって、
ブラインド署名生成装置の秘密鍵生成部が、秘密鍵xを生成する際に、秘密鍵z∈{0,1,...,p−1}も生成して記憶部に格納するステップをさらに有し、
ブラインド署名生成装置の公開鍵生成部が生成する公開鍵はv=g2zであり、
ブラインド署名生成装置の受信部がXを受信するステップの後、ブラインド署名生成装置のY計算部がYを計算して記憶部に格納するステップの前に、ブラインド署名生成装置の乱数生成部が、Lを{0,1,...,p−1}からランダムに選択して記憶部に格納するステップをさらに有し、
ブラインド署名生成装置の送信部は、YとともにLをも利用者装置に送信し、
利用者装置の受信部は、YとともにLをも受信し、
利用者装置の受信部が、YとともにLをも受信するステップの後、利用者装置の送信部が署名対象情報mとブラインド署名(σ,α,β)とをブラインド署名検証装置に送信するステップの前に、利用者装置のβ計算部が、β=s+L mod pを計算して記憶部に格納するステップをさらに有する、
ことを特徴とするブラインド署名生成・検証方法。
【請求項6】
ブラインド署名生成装置であって、
秘密鍵生成部と、公開鍵生成部と、送信部と、受信部と、h計算部と、Y計算部とを有し、
上記秘密鍵生成部は、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成し、
上記公開鍵生成部は、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成し、
上記送信部は、公開鍵g1,g2,w,u,vの少なくとも一部を利用者装置及びブラインド署名検証装置に送信し、
上記h計算部は、h=g2r(r∈{0,1,...,p−1})を計算し、
上記送信部は、hを利用者装置に送信し、
上記受信部は、利用者装置から送信されたXを受信し、
上記Y計算部は、Y=(X・g1L・z)1/(x+r)(L,z∈{0,1,...,p−1})を計算し、
上記送信部は、少なくともYを利用者装置に送信する、
ことを特徴とするブラインド署名生成装置。
【請求項7】
利用者装置であって、
送信部と、受信部と、X計算部と、σ計算部と、α計算部とを有し、
上記受信部は、hと公開鍵g1,w,u,vとを少なくとも受信し、
上記X計算部は、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とし、ψをG2からG1への写像ψ(g2)=g1とし、mを署名対象情報とした場合における、X=g1m・ψ(u)・ψ(v)s・(ψ(w・h))R(s,R∈{0,1,...,p−1})を計算し、
上記送信部は、Xをブラインド署名生成装置に送信し、
上記受信部は、少なくともブラインド署名生成装置から送信されたYを受信し、
上記σ計算部は、σ=(Y/g1R)1/t(t∈{0,1,...,p−1})を計算し、
上記α計算部は、α=wt−1・htを計算し、
上記送信部は、署名対象情報mと、ブラインド署名(σ,α,β)(β=s+L mod p,L∈{0,1,...,p−1})と、をブラインド署名検証装置に送信する、
ことを特徴とする利用者装置。
【請求項8】
ブラインド署名検証装置であって、
受信部と、署名検証部とを有し、
上記受信部は、署名対象情報mと、ブラインド署名(σ,α,β)と、公開鍵g1,g2,w,u,vとを受信し、
上記署名検証部は、pを素数とし、G1とG2を位数がpの巡回群とし、eをG1×G2→GTの双線形写像とした場合における、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)が成立するか否かを検証する、
ことを特徴とするブラインド署名検証装置。
【請求項9】
ブラインド署名生成装置と利用者装置とブラインド署名検証装置とからなるブラインド署名生成・検証システムであって、
上記ブラインド署名生成装置は、秘密鍵生成部と、公開鍵生成部と、送信部と、受信部と、h計算部と、Y計算部とを有し、
上記秘密鍵生成部は、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成し、上記公開鍵生成部は、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成し、上記ブラインド署名生成装置の送信部は、公開鍵g1,g2,w,u,vの少なくとも一部を利用者装置及びブラインド署名検証装置に送信し、上記h計算部は、h=g2r(r∈{0,1,...,p−1})を計算し、上記送信部は、hを利用者装置に送信し、上記受信部は、利用者装置から送信されたXを受信し、上記Y計算部は、Y=(X・g1L・z)1/(x+r)(L,z∈{0,1,...,p−1})を計算し、上記ブラインド署名生成装置の送信部は、少なくともYを利用者装置に送信し、
上記利用者装置は、送信部と、受信部と、X計算部と、σ計算部と、α計算部とを有し、上記利用者装置の受信部は、hと公開鍵g1,w,u,vとを少なくとも受信し、上記X計算部は、ψをG2からG1への写像ψ(g2)=g1とし、mを署名対象情報とした場合における、X=g1m・ψ(u)・ψ(v)s・(ψ(w・h))R(s,R∈{0,1,...,p−1})を計算し、上記利用者装置の上記送信部は、Xをブラインド署名生成装置に送信し、上記利用者装置の上記受信部は、ブラインド署名生成装置から送信されたYを少なくとも受信し、上記σ計算部は、σ=(Y/g1R)1/t(t∈{0,1,...,p−1})を計算し、上記α計算部は、α=wt−1・htを計算し、上記利用者装置の上記送信部は、署名対象情報mと、ブラインド署名(σ,α,β)と、をブラインド署名検証装置に送信し、
上記ブラインド署名検証装置は、受信部と、署名検証部とを有し、
上記ブラインド署名検証装置の受信部は、署名対象情報mと上記ブラインド署名と公開鍵g1,g2,w,u,vとを受信し、上記署名検証部は、pを素数とし、G1とG2を位数がpの巡回群とし、eをG1×G2→GTの双線形写像とした場合における、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)(β=s+L mod p)が成立するか否かを検証する、
ことを特徴とするブラインド署名生成・検証システム。
【請求項10】
ブラインド署名生成装置と利用者装置とブラインド署名検証装置とによって実行されるブラインド署名生成・検証方法であって、
ブラインド署名生成装置の秘密鍵生成部が、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成して記憶部に格納するステップと、
ブラインド署名生成装置の公開鍵生成部が、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成して記憶部に格納するステップと、
利用者装置の受信部が、少なくともブラインド署名生成装置から送信された公開鍵g1,u,vを受信するステップと、
利用者装置のX計算部が、ψをG2からG1への写像ψ(g2)=g1とし、mを署名対象情報とした場合における、X=(g1m・ψ(u)・ψ(v)s)t(s,t∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
利用者装置の送信部が、Xをブラインド署名生成装置に送信するステップと、
ブラインド署名生成装置の受信部がXを受信するステップと、
ブラインド署名生成装置のY計算部が、Y=(X・(ψ(v))L)1/(x+r)(r,L∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
ブラインド署名生成装置の送信部が、少なくともYを利用者装置に送信するステップと、
利用者装置の受信部が少なくともYを受信するステップと、
利用者装置の受信部が、ブラインド署名生成装置から送信された公開鍵wを受信するステップと、
利用者装置のτ計算部が、τ=(f・t)−1 mod p(f∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
利用者装置のσ計算部が、σ=Yτを計算して記憶部に格納するステップと、
利用者装置のα計算部が、α=wf−1・Rf(R=g2r,r∈{0,1,...,p−1})を計算して記憶部に格納するステップと、
利用者装置の送信部が、署名対象情報mと、ブラインド署名(σ,α,β)(β=s+L/t mod p)と、をブラインド署名検証装置に送信するステップと、
ブラインド署名検証装置の受信部が、署名対象情報mと上記ブラインド署名(σ,α,β)とを受信するステップと、
ブラインド署名検証装置の受信部が、ブラインド署名生成装置から送信された公開鍵g1,g2,w,u,vを受信するステップと、
ブラインド署名検証装置の署名検証部が、eをG1×G2→GTの双線形写像とした場合における、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)が成立するか否かを検証するステップと、
を有することを特徴とするブラインド署名生成・検証方法。
【請求項11】
請求項10に記載のブラインド署名生成・検証方法であって、
利用者装置の証明結果情報生成部が、(m・t mod p,t,s・t mod p)を保持又は算出可能であることを、少なくともmを開示することなくブラインド署名生成装置に証明するための証明結果情報を生成し、それを記憶部に格納するステップと、
利用者装置の送信部が、上記証明結果情報をブラインド署名生成装置に送信するステップと、
ブラインド署名生成装置の受信部が、上記証明結果情報を受信するステップと、
ブラインド署名生成装置の証明結果検証部が、上記証明結果情報を検証するステップと、を有し、
上記のブラインド署名生成装置のY計算部がYを計算するための処理は、
ブラインド署名生成装置の証明検証部が上記証明結果情報を合格と判断した場合にのみ実行される、
ことを特徴とするブラインド署名生成・検証方法。
【請求項12】
請求項11に記載のブラインド署名生成・検証方法であって、
利用者装置の乱数生成部が、a1,a2,a3を{0,1,...,p−1}からランダムに選択して記憶部に格納するステップと、
利用者装置のW計算部が、W=g1a1・ψ(u)a2・ψ(v)a3(上付き添え字a1,a2,a3は、それぞれa1,a2,a3を示す)を計算して記憶部に格納するステップと、
利用者装置の送信部が、Wをブラインド署名生成装置に送信するステップと、
ブラインド署名生成装置の受信部がWを受信するステップと、
Wが受信された後、ブラインド署名生成装置の乱数生成部が、ηを{0,1,...,p−1}からランダムに選択して記憶部に格納するステップと、
ブラインド署名生成装置の送信部が、ηを利用者装置に送信するステップと、
利用者装置の受信部が、ηを受信するステップと、を有し、
上記証明結果情報は、
z1=a1+η・m・t mod p,z2=a2+η・t mod p,z3=a3+η・s・t mod pであり、
上記ブラインド署名生成装置の証明結果検証部は、
g1z1・ψ(u)z2・ψ(v)z3≡W・Xη(上付き添え字z1,z2,z3は、それぞれz1,z2,z3を示す)が成り立つか否かにより、上記証明結果情報の検証を行う、
ことを特徴とするブラインド署名生成・検証方法。
【請求項13】
請求項10に記載のブラインド署名生成・検証方法であって、
上記写像ψはG2からG1への同型写像である、
ことを特徴とするブラインド署名生成・検証方法。
【請求項14】
請求項10に記載のブラインド署名生成・検証方法であって、
ブラインド署名生成装置の受信部がXを受信するステップの後、ブラインド署名生成装置の送信部が少なくともYを利用者装置に送信するステップの前に、ブラインド署名生成装置の乱数生成部がr,Lを{0,1,...,p−1}からランダムに選択して記憶部に格納するステップと、R計算部がR=g2rを計算して記憶部に格納するステップとを有し、
ブラインド署名生成装置の送信部は、YとともにRとLをも利用者装置に送信し、
利用者装置の受信部は、YとともにRとLをも受信し、
利用者装置のα計算部は、受信されたRを用いてα=wf−1・Rfを計算し、
利用者装置の受信部がYとともにRとLをも受信するステップの後、利用者装置の送信部が署名対象情報mとブラインド署名(σ,α,β)とをブラインド署名検証装置に送信するステップの前に、利用者装置のβ計算部がβ=s+L/t mod pを計算して記憶部に格納するステップをさらに有する、
ことを特徴とするブラインド署名生成・検証方法。
【請求項15】
ブラインド署名生成装置であって、
秘密鍵生成部と、公開鍵生成部と、送信部と、受信部と、Y計算部とを有し、
上記秘密鍵生成部は、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成し、
上記公開鍵生成部は、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成し、
上記受信部は、利用者装置から送信されたXを受信し、
上記Y計算部は、Y=(X・(ψ(v))L)1/(x+r)(r,L∈{0,1,...,p−1})を計算し、
上記送信部は、少なくともYを利用者装置に送信する、
ことを特徴とするブラインド署名生成装置。
【請求項16】
利用者装置であって、
送信部と、受信部と、X計算部と、τ計算部と、σ計算部と、α計算部とを有し、
上記受信部は、少なくともブラインド署名生成装置から送信された公開鍵g1,u,vを受信し、
上記X計算部は、ψをG2からG1への写像ψ(g2)=g1とし、mを署名対象情報とした場合における、X=(g1m・ψ(u)・ψ(v)s)t(s,t∈{0,1,...,p−1})を計算し、
上記送信部は、Xをブラインド署名生成装置に送信し、
上記受信部は、少なくともブランド署名生成装置から送信されたYを受信し、
上記受信部は、ブラインド署名生成装置から送信された公開鍵wを受信し、
上記τ計算部は、τ=(f・t)−1 mod p(f∈{0,1,...,p−1})を計算し、
上記σ計算部は、σ=Yτを計算し、
上記α計算部は、α=wf−1・Rf(R=g2r,r∈{0,1,...,p−1})を計算し、
上記送信部は、署名対象情報mと、ブラインド署名(σ,α,β)(β=s+L/t mod p)と、をブラインド署名検証装置に送信する、
ことを特徴とする利用者装置。
【請求項17】
ブラインド署名生成装置と利用者装置とブラインド署名検証装置とからなるブラインド署名生成・検証システムであって、
上記ブラインド署名生成装置は、秘密鍵生成部と、公開鍵生成部と、送信部と、受信部と、Y計算部とを有し、
上記秘密鍵生成部は、pを素数とした場合における、秘密鍵x∈{0,1,...,p−1}を生成し、上記公開鍵生成部は、G1とG2を位数がpの巡回群とし、g1をG1の生成元とし、g2をG2の生成元とした場合における、公開鍵g1,g2,w=g2x,u∈G2,v∈G2を生成し、上記受信部は、利用者装置から送信されたXを受信し、上記Y計算部は、Y=(X・(ψ(v))L)1/(x+r)(r,L∈{0,1,...,p−1})を計算し、上記送信部は、少なくともYを利用者装置に送信し、
上記利用者装置は、送信部と、受信部と、X計算部と、τ計算部と、σ計算部と、α計算部とを有し、
上記受信部は、少なくともブラインド署名生成装置から送信された公開鍵g1,u,vを受信し、上記X計算部は、ψをG2からG1への写像ψ(g2)=g1とし、mを署名対象情報とした場合における、X=(g1m・ψ(u)・ψ(v)s)t(s,t∈{0,1,...,p−1})を計算し、上記送信部は、Xをブラインド署名生成装置に送信し、上記受信部は、少なくともブランド署名生成装置から送信されたYを受信し、上記受信部は、ブラインド署名生成装置から送信された公開鍵wを受信し、上記τ計算部は、τ=(f・t)−1mod p(f∈{0,1,...,p−1})を計算し、上記σ計算部は、σ=Yτを計算し、上記α計算部は、α=wf−1・Rf(R=g2r,r∈{0,1,...,p−1})を計算し、上記送信部は、署名対象情報mと、ブラインド署名(σ,α,β)(β=s+L/t mod p)と、をブラインド署名検証装置に送信し、
上記ブラインド署名検証装置は、受信部と、署名検証部とを有し、
上記受信部は、署名対象情報mと上記ブラインド署名(σ,α,β)と、公開鍵g1,g2,w,u,vとを受信し、上記署名検証部は、eをG1×G2→GTの双線形写像とした場合における、σ≠1,α∈G2,e(σ,w・α)=e(g1,g2m・u・vβ)が成立するか否かを検証する、
ことを特徴とするブラインド署名生成・検証システム。
【請求項18】
請求項6又は15に記載のブラインド署名生成装置としてコンピュータを機能させるためのブラインド署名生成プログラム。
【請求項19】
請求項7又は16に記載の利用者装置としてコンピュータを機能させるための利用者プログラム。
【請求項20】
請求項8に記載のブラインド署名検証装置としてコンピュータを機能させるためのブラインド署名検証プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2007−110668(P2007−110668A)
【公開日】平成19年4月26日(2007.4.26)
【国際特許分類】
【出願番号】特願2006−54594(P2006−54594)
【出願日】平成18年3月1日(2006.3.1)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
【公開日】平成19年4月26日(2007.4.26)
【国際特許分類】
【出願日】平成18年3月1日(2006.3.1)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
[ Back to top ]