JP4773941B2 - 代理署名装置、署名者装置、署名検証装置及びそれらのプログラム - Google Patents

代理署名装置、署名者装置、署名検証装置及びそれらのプログラム Download PDF

Info

Publication number
JP4773941B2
JP4773941B2 JP2006333269A JP2006333269A JP4773941B2 JP 4773941 B2 JP4773941 B2 JP 4773941B2 JP 2006333269 A JP2006333269 A JP 2006333269A JP 2006333269 A JP2006333269 A JP 2006333269A JP 4773941 B2 JP4773941 B2 JP 4773941B2
Authority
JP
Japan
Prior art keywords
signature
unit
signer
function
cyclic group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006333269A
Other languages
English (en)
Other versions
JP2008148033A (ja
Inventor
文学 星野
幸太郎 鈴木
鉄太郎 小林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2006333269A priority Critical patent/JP4773941B2/ja
Publication of JP2008148033A publication Critical patent/JP2008148033A/ja
Application granted granted Critical
Publication of JP4773941B2 publication Critical patent/JP4773941B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、計算量理論に基づく情報セキュリティ技術に関し、特に、署名技術に関する。
近年、公衆電話通信網の発達に従い、情報セキュリティ技術に注目が集まっている。情報セキュリティ技術は、情報理論や計算量理論など様々な背景技術に基づき構成されうる。中でも計算量理論に基づくものが効率等の面から最も実用的と考えられており、現在盛んに研究が行われている。
このような計算量理論に基づく情報セキュリティ技術の1つに署名技術がある。
計算量理論に基づく署名技術としては、RSA署名や楕円ElGamal署名などが知られている。
また、署名者の匿名性を守りつつ電子署名を行う匿名署名技術も存在する。この匿名署名には大別して以下の2つの方法がある。
1つは1991年にChaumらが提案した「グループ署名」の概念である(例えば、非特許文献1参照)。この方法には以下の性質がある。
・署名が確かにグループのメンバーによって作成されたことを第三者が検証できる。
・署名がメンバーの誰によって作成されたかに関する情報を第三者は得ることができない。
・グループ管理者は署名がメンバーの誰によって作成されたかを知ることができる。
・署名のグループを決定する為に予めグループ管理者と通信する必要がある。
なお、この最後の性質は、グループからメンバーを排除したり新たにメンバーを加えたり、グループメンバの一部だけを含む子グループを作成する場合にもグループ管理者と通信する必要があることを意味している。
一方、もう1つの匿名署名方法は、2001年にRivestらが提案した「リング署名」の概念である(例えば、非特許文献2参照)。この方法には以下の性質がある。
・署名が確かにグループのメンバーによって作成されたことを第三者が検証できる。
・署名がメンバーの誰によって作成されたかに関する情報を第三者は得ることができない。
・グループ管理者は存在しない。グループは公開鍵リストの中から署名者が任意に指定できる。
この方法にはグループ管理者が存在しない。署名者は、自身が所有する公開鍵リストから任意に公開鍵を選び、自分の公開鍵、秘密鍵、及び選んだ公開鍵から自分を含む任意のグループに関して匿名署名を生成できる。
David Chaum, Eugene van Heyst: Group Signatures. EUROCRYPT 1991: 257-265 Ronald L. Rivest, Adi Shamir, Yeal Tauman: How to Leak a Secret. ASIACRYPT 2001: 552-565
しかし、従来の署名技術では、署名者が署名対象を制限しつつ署名生成処理を第三者に委託することができなかった。
通常の電子署名は、署名者のみが知り得る秘密鍵を用い、公開鍵暗号方式によって署名対象のメッセージを暗号化した暗号文の一種である。署名検証者は、署名者の公開鍵を用いてその暗号文が復号できることを根拠に、確かにその電子署名を生成したのは秘密鍵を知り得る署名者であると納得する。
このような署名方式において署名者が署名生成処理を第三者に委託する場合、署名者は自らの秘密鍵をその第三者に知らせなければならない。しかし、秘密鍵を知った第三者は、その後秘密鍵が有効である限り、自由に署名者の署名を生成できてしまう。そのため、署名者が署名対象を特定のメッセージに制限して第三者に署名生成を委託したとしても、一旦秘密鍵を知った第三者は署名者の意思とは無関係に署名者の署名を生成できてしまう。
本発明はこのような点に鑑みてなされたものであり、署名者が署名対象を制限しつつ署名生成処理を第三者に委託することができる技術を提供することを目的とする。
第1の本発明では、署名者装置が代理署名装置に署名を生成させ、その署名を署名検証装置が検証する。なお、第1の本発明では、g1が巡回群G1の生成元であり、g2が巡回群G2の生成元であり、eが巡回群G1の元と巡回群G2の元とを入力として巡回群G3の元を出力するペアリング関数e:G1×G2→G3であり、g3=e(g1,g2)∈G3であり、署名者装置の秘密鍵が整数skであり、署名者装置の公開鍵がpk=(g2)sk∈G2であり、署名者装置の署名生成鍵がrk=(g1)sk∈G1であり、mが署名対象のメッセージであり、tが署名者装置で選択された任意値であり、Hが巡回群G2の元を値域とする関数H:{0,1}→G2であり、hが関数値h=H(m,t)∈G2であり、H’が値域を整数とする関数であり、w=hsk∈G2であるものとする。また、巡回群Gにおけるα・β∈Gは、αとβとを被演算子として巡回群Gで定義されている演算を行うことを意味する。また、αβ∈Gは、αを被演算子として巡回群Gで定義されている演算をβ回行うことを意味する。また、α/β∈Gは、αと巡回群で定義されたβの逆元とを演算子とし、巡回群Gで定義されている演算を行うことを意味する。例えば、巡回群Gが楕円曲線E上の有理点のなす群であった場合、α・β∈Gは楕円曲線E上でのαとβとの楕円加算を意味し、αβ∈Gはαの楕円スカラーβ倍算を意味し、α/β∈Gはαからβの楕円減算を意味する。また、例えば、巡回群Gが有限体の乗法群であった場合、α・β∈Gはαとβとの乗算を意味し、αβ∈Gはαのβ乗を意味し、α/β∈Gはαのβによる除算を意味する。
まず、署名者装置は、整数の秘密鍵skを第1記憶部に格納し、署名生成鍵rkを第2記憶部に格納し、署名対象のメッセージmを第3記憶部に格納する。そして、署名者装置は、任意値選択部で任意値tを選択し、関数演算部で関数値h=H(m,t)∈G2を算出し、G2演算部でw=hsk∈G2を算出する。その後、署名者装置は、少なくともメッセージmと任意値tと演算結果wと署名生成鍵rkとを代理署名装置に送信する。なお、本発明におけるH(*)は、*を含む情報に関数Hを作用させた演算結果を意味する。また、「*を含む情報」とは、*と他の情報とからなる情報だけではなく、*のみからなる情報をも包含する概念である。ただし、この際「*を含む情報」の構成は全てのH(*)間において統一する。
代理署名装置は、受信部で少なくともメッセージmと任意値tとwと署名生成鍵rkと公開鍵pkとを受信し、これらを記憶部に格納する。次に、代理署名装置は、第1ペアリング演算部でf=e(g1,h)∈G3を算出し、任意値選択部が整数である任意値rを選択し、第1G3演算部でa=(g3)∈G3を算出し、第2G3演算部でb=f∈G3を算出する。さらに、代理署名装置は、第1関数演算部でc=H’(m,t,w,a,b)を算出し、G1演算部でz=(g1)/(rk)∈G1を算出し、送信部でメッセージmと署名σ=(t,w,c,z)とを送信する。なお、本発明におけるH’(*)は、*を含む情報に関数H’を作用させた演算結果を意味する。また、この際「*を含む情報」の構成は全てのH’(*)間において統一する。また、σ=(*)は、*を含む情報がσであることを意味する。また、この際「*を含む情報」の構成は全てのσ=(*)間において統一する。
また、第1の本発明の署名検証装置は、署名σの検証を以下のように行う。
まず、署名検証装置は受信部で、署名対象のメッセージmと署名σ=(t,w,c,z)と公開鍵pkとを受信し、これらを記憶部に格納する。署名検証装置は、第1関数演算部で関数値h’=H(m,t)を算出し、第1ペアリング演算部でa’=e(z,g2)・e(g1,pk)を算出し、第2ペアリング演算部でb’=e(z,h’)・e(g1,w)を算出し、第2関数演算部でH’(m,t,w,a’,b’)を算出する。そして、署名検証装置の署名判定部は、c=H’(m,t,w,a’,b’)を満たすか否かを判定し、これが成立した場合に署名σを受理する旨を出力し、これが成立しなかった場合に署名σを拒絶する旨を出力する。
ここで、メッセージmと任意値tと演算結果wと署名生成鍵rkと公開鍵pkとを与えられた代理署名装置は、上述のようにメッセージmについての署名者装置の署名σを生成できる。また、この署名σが署名検証装置での署名検証で受理されるのはw=hsk∈G2,h=H(m,t)の関係を満たす場合のみである。署名者装置が代理署名装置に署名生成を委託する際に代理署名装置に送るメッセージmと任意値tと演算結果wとはこの関係を満たす。一方、代理署名装置は署名者装置の秘密鍵skを知らない。そのため、離散対数問題の求解が困難であるとの仮定のもとでは、代理署名装置は、任意のメッセージm’に対してw’=h’sk∈G2,h’=H(m’,t’)の関係を満たすw’,m’,t’を求めることは困難である。よって、代理署名装置は、署名者装置から署名生成を委託されたメッセージm以外のメッセージm’に対し、署名検証装置に受理される署名者装置の署名を生成することができない。すなわち、第1の本発明では、署名生成を行うための署名生成鍵rkと署名対象のメッセージを特定するための秘密鍵skとを独立させ、署名者装置が代理署名装置に署名生成を委託する際、署名生成鍵rkは代理署名装置に知らせるが秘密鍵skは代理署名装置に知らせない。これにより、代理署名装置は、署名者者装置が特定したメッセージmについては受理される署名を生成できるが、それ以外のメッセージについては受理される署名を生成できない。
なお、署名者生成装置が代理署名装置に委託した署名σが署名検証装置での検証で受理される理由は以下の通りである。
上述のように正当に署名生成が代理署名装置に委託された場合、h=H(m,t)を満たす。また、f=e(g1,h)であり、g3=e(g1,g2)∈G3であるため、代理署名装置が生成するa=(g3)∈G3及びb=f∈G3は、
a=e(g1,g2)∈G3 …(1)
b=e(g1,h)∈G3 …(2)
と変形できる。
一方、z=(g1)/(rk)∈G1であり、rk=(g1)sk∈G1であり、pk=(g2)sk∈G2であり、正当に署名生成が代理署名装置に委託された場合、w=hsk∈G2であり、h’=H(m,t)=hであるため、署名検証装置で算出されるa’=e(z,g2)・e(g1,pk)∈G3及びb’=e(z,h’)・e(g1,w)∈G3は、
a’=e((g1)r-sk・c,g2)・e(g1,(g2)sk)c∈G3 …(3)
b’=e((g1)r-sk・c,h)・e(g1,hsk)c∈G3 …(4)
と変形できる。後述のようにペアリング関数eには、楕円曲線上の任意の3点R,R,Rに対して、e(R・R,R)=e(R,R)・e(R,R)とe(R,R・R)=e(R,R)・e(R,R)との関係が成り立つ。なお、ここでのR・RやR・Rは、楕円曲線上の有理点のなす巡回群での演算であり、これらの演算は楕円加算である。一方、e(R,R)・e(R,R)やe(R,R)・e(R,R)は、有限体の乗法群での演算であり、これらの演算は乗算である。
この関係により、式(3)(4)は以下のように変形できる。
a’=e((g1)r-sk・c,g2)・e(g1,(g2)sk)c∈G3
=e(g1,g2)r-sk・c・e(g1,g2)sk・c
=e(g1,g2)r ∈G3 …(5)
b’=e((g1)r-sk・c,h)・e(g1,h)sk・c
=e(g1,h)r-sk・c・e(g1,h)sk・c
=e(g1,h)r …(6)
(1)(2)(5)(6)から分かるように、正当に署名生成が代理署名装置に委託され署名が生成された場合、a=a’,b=b’となり、H’(m,t,w,a’,b’)=H’(m,t,w,a,b)=cとなるため、署名σは署名検証装置に受理される。
また、第1の本発明の代理署名装置は、好ましくは、第2ペアリング演算部でe(rk,g2)を算出し、第3ペアリング演算部でe(g1,pk)を算出する。そして、代理署名装置は、鍵判定部でe(rk,g2)=e(g1,pk)が成立するか否かを判定し、これが成立した場合に署名生成鍵rkと公開鍵pkとを受理する旨を出力し、これが成立しなかった場合に署名生成鍵rkと公開鍵pkとを拒絶する旨を出力する。
ここで、正当に生成された公開鍵はpk=(g2)sk∈G2を満たし、署名生成鍵はrk=(g1)sk∈G1を満たす。よって、上述のペアリング関数eの性質を用いると、e(rk,g2),e(g1,pk)はそれぞれ以下のように変形でき、e(rk,g2)=e(g1,pk)が成立する。
e(rk,g2)=e((g1)sk,g2)=e(g1,g2)sk…(7)
e(g1,pk)=e(g1,(g2)sk)=e(g1,g2)sk…(8)
一方、署名生成鍵rk及び公開鍵pkの少なくとも一方が不正であり、pk=(g2)sk∈G2或いはrk=(g1)sk∈G1を満たさない場合、e(rk,g2)≠e(g1,pk)となり、署名生成鍵rk及び公開鍵pkは受理されない。これにより、代理署名装置が不正な鍵によって署名を生成することを防止できる。
また、第1の本発明の代理署名装置は、好ましくは、第2関数演算部でh’’=H(m,t)∈G2を算出し、第4ペアリング演算部でe(rk,h’’)を算出し、第5ペアリング演算部でe(g1,w)を算出する。そして、署名可能化子判定部でe(rk,h’’)=e(g1,w)が成立するか否かを判定し、これが成立した場合に任意値tとwとを受理する旨を出力し、これが成立しなかった場合に任意値tとwとを拒絶する旨を出力する。
ここで、正規に生成された署名生成鍵はrk=(g1)sk∈G1を満たし、wはw=hsk∈G2,h=H(m,t)=h’’∈G2を満たす。よって、上述のペアリング関数eの性質を用いると、e(rk,h’’),e(g1,w)はそれぞれ以下のように変形でき、e(rk,h’’)=e(g1,w)を満たす。
e(rk,h’’)=e(rk,h’’)=e(g1,h)sk …(9)
e(g1,w)=e(g1,hsk)=e(g1,h)sk…(10)
一方、t及びwのいずれかが不正であり、w=hsk∈G2或いはh=H(m,t)=h’’∈G2を満たさない場合、e(rk,h’’)≠e(g1,w)となり、wやtは受理されない。これにより、代理署名装置が不正なwやtによって署名を生成することを防止できる。
また、第2の本発明の代理署名装置は、署名クループを構成するu個(u≧2)の署名者装置の1つであるi番目(i∈L,L={0,…,u−1})の署名者装置に代わって署名生成を行う。なお、第2の本発明では、g1が巡回群G1の生成元であり、g2が巡回群G2の生成元であり、eが巡回群G1の元と巡回群G2の元とを入力として巡回群G3の元を出力するペアリング関数e:G1×G2→G3であり、g3=e(g1,g2)∈G3であり、i番目の署名者装置の秘密鍵が整数sk(i)であり、各j番目(∀j∈L,j≠i)の署名者装置の秘密鍵が整数sk(j)であり、各j番目の署名者装置の公開鍵がpk(j)=(g2)sk(j)∈G2であり、i番目の署名者装置の署名生成鍵rk(i)がrk(i)=(g1)sk(i)∈G1であり、m(i)が署名対象のメッセージであり、t(i)がi番目の署名者装置で選択された任意値であり、Hが巡回群G2の元を値域とする関数H:{0,1}→G2であり、h(i)が関数値h(i)=H(m(i),t(i))∈G2であり、H’が値域を整数とする関数であり、w(i)={h(i)}sk(i)∈G2である。
代理署名装置は、第1の本発明と同様にi番目の署名者装置から送信されたメッセージm(i)と任意値t(i)とw(i)と署名生成鍵rk(i)と各公開鍵pk(j)とを受信し、これらを記憶部に格納する。次に代理署名装置は、第1ペアリング演算部でf=e(g1,h(i))∈G3を算出し、第1任意値選択部で整数である任意値rを選択し、第1G3演算部でa(i)=(g3)∈G3を算出し、第2G3演算部でb(i)=f∈G3を算出する。また、代理署名装置は、第2任意値選択部で各jに対して任意値w(j)∈G2を選択し、第3任意値選択部で各jに対して任意値z(j)∈G1を選択し、第4任意値選択部で各jに対して整数の任意値c(j)を選択する。また、代理署名装置は、第2ペアリング演算部でa(j)=e(z(j),g2)・e(g1,pk(j))c(j)∈G3を算出し、第3ペアリング演算部でb(j)=e(z(j),h(i))・e(g1,w(j))c(j)∈G3を算出する。そして、代理署名装置は、関数演算部でc=H’(m(i),t(i),(w(k))∀k∈L,(a(k))∀k∈L,(b(k))∀k∈L)を算出し、整数演算部でc(i)=c−Σj≠ic(j) mod pを算出し、G1演算部でz(i)=(g1)/{rk(i)}c(i)∈G1を算出する。その後、代理署名装置は、送信部でメッセージm(i)と署名σ=(t(i),(w(k))∀k∈L,(c(k))∀k∈L,(z(k))∀k∈L)とを送信する。なお、(α(β))∀β∈Lは、集合Lのすべての元βに対するα(β)を意味する。
また、第2の本発明の署名検証装置は、署名σの検証を以下のように行う。
まず、署名検証装置は受信部で署名対象のメッセージm(i)と署名σ=(t(i),(w(k))∀k∈L,(c(k))∀k∈L,(z(k))∀k∈L)と各公開鍵pk(k)とを受信し、これらを記憶部に格納する。次に署名検証装置は、第1関数演算部で関数値h(i)’=H(m(i),t(i))を算出し、第1ペアリング演算部でa(k)’=e(z(k),g2)・e(g1,pk(k))c(k)を算出し、第2ペアリング演算部でb(k)’=e(z(k),h(i)’)・e(g1,w(k))c(k)を算出し、第2関数演算部でH’(m(i),t(i),(w(k))∀k∈L,(a(k)’)∀k∈L,(b(k)’)∀k∈L)算出する。そして、署名検証装置は、署名判定部でH’(m(i),t(i),(w(k))∀k∈L,(a(k)’)∀k∈L,(b(k)’)∀k∈L)=Σk∈Lc(k) mod pを満たすか否かを判定し、これが成立した場合に署名σを受理する旨を出力し、これが成立しなかった場合に署名σを拒絶する旨を出力する。
ここで、メッセージm(i)と任意値t(i)とw(k)と署名生成鍵rk(i)と公開鍵pk(j)とを与えられた代理署名装置は、上述のようにメッセージm(i)についての署名者装置の署名σを生成できる。また、この署名σが署名検証装置での署名検証で受理されるのはw(i)={h(i)}sk(i)∈G2,h(i)=H(m(i),t(i))の関係を満たす場合のみである。署名者装置が代理署名装置に署名生成を委託する際に代理署名装置に送るメッセージm(i)と任意値t(i)と演算結果w(i)とはこの関係を満たす。一方、代理署名装置は署名者装置の秘密鍵sk(i)を知らない。そのため、離散対数問題の求解が困難であるとの仮定のもとでは、代理署名装置は、任意のメッセージm’に対してw’=h’sk∈G2,h’=H(m’,t’)の関係を満たすw’,m’,t’を求めることは困難である。よって、代理署名装置は、署名者装置から署名生成を委託されたメッセージm(i)あ以外のメッセージm’に対し、署名検証装置に受理される署名者装置の署名を生成することができない。すなわち、第2の本発明では、署名生成を行うための署名生成鍵rk(k)と署名対象のメッセージを特定するための秘密鍵sk(k)とを独立させ、i番目の署名者装置が代理署名装置に署名生成を委託する際、署名生成鍵rk(i)は代理署名装置に知らせるが秘密鍵sk(i)は代理署名装置に知らせない。これにより、代理署名装置は、i番目の署名者者装置が特定したメッセージm(i)については受理される署名を生成できるが、それ以外のメッセージについては受理される署名を生成できない。
なお、署名者生成装置が代理署名装置に委託した署名σを署名検証装置で検証できる理由は以下の通りである。
真の署名者はi番目(i∈L)の署名者装置である。代理署名装置は、i番目の署名者装置に対応するiについては、a(i)=(g3)∈G3,b(i)=f∈G3,f=e(g1,h(i))∈G3によってa(i),b(i)を求め、それ以外のj∈L(j≠i)については、任意にz(j)とw(j)を選択し、a(j)=e(z(j),g2)・e(g1,pk(j))c(j)∈G3,b(j)=e(z(j),h(i))・e(g1,w(j))c(j)∈G3によってa(j),b(j)を求める。そして、代理署名装置は、i番目の署名者装置の署名生成鍵rk(i)を用い、z(i)=(g1)/{rk(i)}c(i)∈G1としている。このz(i)により、a(i),b(i)も、a(i)=e(z(i),g2)・e(g1,pk(i))c(i)∈G3,b(i)=e(z(i),h(i))・e(g1,w(i))c(i)∈G3と変換でき、jに対応するa(j),b(j)と同様の構成とできる。これにより、真の署名者装置に対応するiを知らない署名検証装置でも、署名σ及びメッセージm(i)から、署名グループを構成する署名者装置に対応するすべてのk∈Lに対し、a(k)’,b(k)’を算出することができ、H’(m(i),t(i),(w(k))∀k∈L,(a(k)’)∀k∈L,(b(k)’)∀k∈L)=Σk∈Lc(k) mod pの判定を行うことができる。
また、代理署名装置は、i番目の署名者装置から提供された署名生成鍵rk(i)を用い、z(i)=(g1)/{rk(i)}c(i)∈G1を算出している。ここで、c(i)はc(i)=c−Σj≠ic(j) mod pを満たすが、署名生成鍵rk(i)を知らない第三者は、このような関係を充足するz(i)を算出することができない。すなわち、署名生成鍵rk(i)を知らない第三者は、z(i)=(g1)/{rk(i)}c(i)∈G1を正しく算出できない。
これにより、署名検証装置は、H’(m(i),t(i),(w(k))∀k∈L,(a(k)’)∀k∈L,(b(k)’)∀k∈L)=Σk∈Lc(k) mod pが成立するか否かを判定することにより、署名グループを構成する何れかの署名者装置から正規に委託を受けた代理署名装置が署名生成を行ったか否かを判定することができる。ただし、署名検証装置は、どの署名者装置が代理署名装置に署名生成を委託したかを知ることはできない。
以上のように、本発明の匿名署名では、署名者が署名対象を制限しつつ署名生成処理を第三者に委託することができる。
以下、本発明を実施するための最良の形態を図面を参照して説明する。
〔前提事項〕
まず、本形態の前提事項について説明する。
[bilinear group]
ペアリング可能な楕円曲線を用いるとbilinear groupと呼ばれる以下の同型写像e,ψをもつ巡回群の組G1,G2,G3を作れることがよく知られている(参考文献1:星野文学,鈴木幸太郎,小林鉄太郎,“Pairingを用いたRevocable DDHとその応用”,SCIS 2005, 1609-1612)。
・eは非退化双線形写像e:G1×G2→G3
・ψは同型写像ψ:G2→G1
ここで、G2,G3上のDDH問題を多項式時間で解く方法は知られていない。また、G1上のDH問題を多項式時間で解く方法は知られていない。また、非退化双線形写像eは多項式時間で計算可能に構成でき、eをペアリング(pairing)関数と呼ぶ(詳細は後述)。なお、DDH問題とは、巡回群Gの4つの元(g,y,h,w)に対し(ただしgは巡回群Gの生成元)、δ∈{0,1}を求める問題である。ここで、Gが乗法群ならばy=gα,h=gβ,w=gγに対して(Gが加法群ならばy=α・g,h=β・g,w=γ・gに対して)γ=α・βを満たすのであればδ=1が正解となり、γ=α・βを満たさないのであればδ=0が正解となる。なお、巡回群Gの4つの元(g,y,h,w)をrandom tupleの集合と呼び、そのうちγ=α・βを満たす巡回群Gの4つの元(g,y,h,w)をDDH tupleの集合と呼ぶ。また、DH問題とは、巡回群Gの3つの元(g,y,h)に対し、巡回群Gの元wを求める問題である。ここで、Gが乗法群ならばy=gα,h=gβに対するw=gα・βが正解となり、Gが加法群ならばy=α・g,h=β・gに対するw=α・β・gが正解となる。
[楕円曲線]
次に、位数q(一般的にqは素数)の有限体F上で定義された楕円曲線について説明する。
一般に、有限体F上で定義された楕円曲線E/Fとは、a,a,a,a,a∈E/Fとして、等式
E/Fq: y2+a1・x・y+a3・y=x3+a2・x2+a4・x+a6 …(11)
を満たす点(x,y)の集合に無限遠点と呼ばれる特別な点Oを付加したものである。有限体F上に定義された楕円曲線E/F上の任意の2点に対して楕円加算と呼ばれる二項演算+及び楕円曲線E/F上の任意の1点に対して楕円逆元と呼ばれる単項演算−がそれぞれ定義できる。また、この楕円加算に関して群をなすこと及び楕円加算を用いて楕円スカラー倍算と呼ばれる演算が定義できることはよく知られている。
また、楕円曲線E/F上の点のうち、x,y∈Fとなる元の集合に無限遠点Oを付加したものをE(F)と記述する。また、x,y∈F となる元の集合に無限遠点Oを付加したものをE(F )と記述する。楕円加算に関してE(F )はE/Fの部分群であり、E(F)はE(F )の部分群である。
ここでpを素数とし、楕円曲線E/F上の点Rのうち、楕円曲線E/F上での楕円スカラー倍算値p・Rがp・R=Oを満たす点Rの集合を楕円曲線E/Fのp等分点と呼び、E[p]と記述する。E[p]はE/Fの部分群である。
なお、本形態に用いる楕円曲線E/Fは、非trace-2の非超特異楕円曲線であることが望ましい。trace-2の楕円曲線及び超特異楕円曲線では、巡回群上のDDH問題を多項式時間で解くアルゴリズムが知られており、署名の安全性要件を満たさなくなるからである。
[楕円曲線のフロベニウス写像]
次に、楕円曲線のフロベニウス写像について説明する。
楕円曲線E/F上の任意の点R=(x,y)及び無限遠点Oに対し、q乗のフロベニウス写像φは、
Figure 0004773941
と定義される。
参考文献2:「イアン・F・ブラケ,ガディエル・セロッシ,ナイジェル・P・スマート=著、鈴木治郎=訳,「楕円曲線暗号」,出版=ピアソン・エデュケーション,ISBN4-89471-431-0,p112」にあるように、フロベニウス写像φは楕円曲線E/F上の点R=(x,y)∈E(F )に対して、
2‐t・φ+q)・R=O …(13)
を満たす(ただし、tは、q,a,a,a,a,aによって一意に決定される整数であり、トレースと呼ばれる)。ここで、フロベニウス写像φに関する多項式φ2‐t・φ+qを特性多項式と呼ぶ。楕円曲線をE[p]に限定すると、楕円スカラー倍はZ/pZで考えればよい。Z/pZ係数の特性多項式は分解体上で、
φ2‐t・φ+q=(φ‐λ)(φ‐λ2) …(14)
と分解でき、λ、λをフロベニウス写像φの固有値と呼ぶ。以下においては、λ、λ∈Z/pZでかつλ≠λである場合を考える。線形空間であるE[p]の線形変換関数ψλ1,ψλ2(ただし、下付き添え字のλ1及びλ2は、それぞれλ及びλを表す。)を
ψλ1=(λ1‐λ2)-1(φ‐λ2) …(15)
ψλ2=(λ2‐λ1)-1(φ‐λ1) …(16)
と定義すると、任意のE[p]上の点Rに対して、
P=ψλ1R=(λ1‐λ2)-1(φR‐λ2R) …(17)
Q=ψλ2R=(λ2‐λ1)-1(φR‐λ1R) …(18)
なるE[p]上の点P,Qが存在する。
ここで、E[p]の線形変換関数ψλ1による像ψλ1(E[p])を、「フロベニウス写像φの固有値λに関する固有空間」と呼ぶ。この固有空間ψλ1(E[p])は、点Pを生成元とした位数pの巡回群<P>となる。また、線形空間E[p]の線形変換関数ψλ2による像ψλ2(E[p])を、「フロベニウス写像φの固有値λに関する固有空間」と呼ぶ。この固有空間ψλ2(E[p])は、点Qを生成元とした位数pの巡回群<Q>となる。例えば、E[p]かつE(F)であるE(F)[p]は、フロベニウス写像φの固有値λ=1に関する固有空間である。また、固有値λ=1に対するもう一方の固有値はλ=q mod pとなり、これに対する固有空間はE[p]かつE(F )であるE(F )[p]に存在する。また、E[p]は、これらの巡回群<P>,<Q>の直積で表現できる。そして、E[p]上の任意の点Rはε,μ∈Z/pZとすると必ずR=ε・P+μ・Qと書け、Rを生成元とする巡回群<R>が構成できる。
[ペアリング関数]
次に、ペアリング(pairing)関数について説明する。
μを、楕円曲線の定義体の代数閉体上の乗法単位元1のp乗根の作る乗法群とする。参考文献3:「Alfred. J. Menezes,ELLIPTIC CURVE PUBLIC KEY CRYPTOSYSTEMS, KLUWER ACADEMIC PUBLISHERS, ISBN0-7923-9368-6,pp. 61-81」に示すように、ペアリング関数eとは、
e:E[p]×E[p]=μ …(19)
なる関数であり、次の性質を持つ。
[1]E[p]上の任意の点Rに対して、e(R,R)=1が成り立つ。
[2]E[p]上の任意の2点R、Rに対して、e(R,R)=e(R,R−1が成り立つ。
[3]E[p]上の任意の3点R,R,Rに対して、e(R・R,R)=e(R,R)・e(R,R)であり、e(R,R・R)=e(R,R)・e(R,R)が成り立つ。なお、「R・R」及び「R・R」の「・」は、E[p]上で定義された楕円加算を意味する。また、「e(R,R)・e(R,R)」及び「e(R,R)・e(R,R)」は有限体上の乗算を意味する。
[4]E[p]上の任意の点Rに対して、e(R,O)=1が成り立つ。
[5]E[p]上のある点RがE[p]上のすべての点Rに対して、e(R,R)=1を満たすなら、R=Oが成り立つ。
なお、ペアリング関数eの具体例としては、参考文献2に示されるWeilペアリングやTateペアリングなどを挙げることができる。また、ペアリング関数が効率的に計算可能な非超特異楕円曲線(non-supersingular curve)の生成方法については、以下の参考文献などに開示されている。
参考文献4:「A. Miyaji, M. Nakabayashi, S.Takano, "New explicit conditions of elliptic curve Traces for FR-Reduction," IEICE Trans. Fundamentals, vol. E84-A, no05, pp. 1234-1243, May 2001」
参考文献5:「M. Scott, P. S. L. M. Barreto, "Generating more NMT elliptic curve s," http://eprint .iacr. org/2004/058/」
参考文献6:「P.S.L.M. Barreto, B. Lynn, M. Scott, "Constructing elliptic curves with prescribed embedding degrees," Proc. SCN '2002, LNCS 2576, pp.257-267, Springer-Verlag. 2003」
参考文献7:「R. Dupont, A. Enge, F. Morain, "Building curves with arbitrary small MOV degree over finite prime fields," http://eprint.iacr.org/2002/094/」
[本形態の巡回群G1,G2]
本形態では、楕円曲線E/F上の点からなるいずれかの巡回群G1,G2を用いる。また、上述のペアリング関数の性質「[1]E[p]上の任意の点Rに対して、e(R,R)=1」より、巡回群G1,G2は重複しないことが望ましい。例えば、前述の[楕円曲線]の欄で示した巡回群<P>,<Q>,<R>から、重複しないように2つの巡回群を選びそれぞれ巡回群G1,G2とする。
〔第1実施形態〕
次に、本発明の第1実施形態について説明する。
<全体構成>
図1は、第1実施形態の署名システム1の全体構成を示した概念図である。
図1に示すように、本形態の署名システム1は、署名生成を依託する署名者装置10、依託された署名を生成する代理署名装置20、署名検証を行う署名検証装置30及び公開鍵サーバ装置40を有し、これらはネットワーク50を通じて通信可能に接続されている。なお、各装置は、CPU(Central Processing Unit)やメモリを具備する公知のコンピュータに、所定のプログラムが読み込まれることにより構成される。また、署名者装置10や代理署名装置20や署名検証装置30や公開鍵サーバ装置40は、図1に示す数以上存在してもよいが、本形態では説明の簡略化のため、それぞれ1つずつ存在する場合を例示する。
<署名者装置10の構成>
次に、署名者装置10の構成について説明する。
[ハードウェア構成]
図2は、第1実施形態における署名者装置10のハードウェア構成を例示したブロック図である。
図2に例示するように、この例の署名者装置10は、CPU11、入力部12、出力部13、補助記憶装置14、ROM(Read Only Memory)15、RAM(Random Access Memory)16、バス17及び通信部18を有している。
この例のCPU11は、制御部11a、演算部11b及びレジスタ11cを有し、レジスタ11cに読み込まれた各種プログラムに従って様々な演算処理を実行する。また、この例の入力部12は、データが入力される入力ポート、キーボード、マウス等であり、出力部13は、データを出力する出力ポート、外部記録媒体へのデータ記憶装置、印刷装置、ディスプレイなどである。補助記憶装置14は、例えば、ハードディスク、MO(Magneto-Optical disc)、半導体メモリ等であり、各種プログラムを格納したプログラム領域14a及び各種データが格納されるデータ領域14bを有している。また、RAM16は、例えば、SRAM (Static Random Access Memory)、DRAM (Dynamic Random Access Memory)等であり、上記のプログラムが書き込まれるプログラム領域16a及び各種データが書き込まれるデータ領域16bを有している。また、通信部18は、ネットワークカードなどである。また、この例のバス17は、CPU11、入力部12、出力部13、補助記憶装置14、ROM15、RAM16及び通信部18を、データのやり取りが可能なように接続する。
[ハードウェアとプログラムとの協働]
CPU11(図2)は、読み込まれたOS(Operating System)プログラムに従い、補助記憶装置14のプログラム領域14aに格納されているプログラムをRAM16のプログラム領域16aに書き込む。同様にCPU11は、補助記憶装置14のデータ領域14bに格納されている各種データを、RAM16のデータ領域16bに書き込む。そして、このプログラムやデータが書き込まれたRAM16上のアドレスがCPU11のレジスタ11cに格納される。CPU11の制御部11bは、レジスタ11cに格納されたこれらのアドレスを順次読み出し、読み出したアドレスが示すRAM16上の領域からプログラムやデータを読み出し、そのプログラムが示す演算を演算部11bに順次実行させ、その演算結果をレジスタ11cに格納していく。なお、各プログラムは、単一のプログラム列として記載されていてもよく、また、少なくとも一部のプログラムが別個のモジュールとしてライブラリに格納されていてもよい。
図3は、CPU11にプログラムが読み込まれることにより構成される第1実施形態における署名者装置10の機能構成を例示したブロック図である。なお、図3における矢印はデータの流れを示すが、一時メモリ10hや制御部10gに入出力されるデータの流れは省略してある。
図3に例示するように、第1実施形態における署名者装置10は、鍵生成部10aと、入力部10bと、任意値生成部10cと、関数演算部10dと、G2演算部10eと、通信部10f(「送信部」に対応)と、制御部10gと、一時メモリ10hと、記憶部10iとを有する。また、鍵生成部10aは、秘密鍵生成部10aaと署名生成鍵生成部10abと公開鍵生成部10acとを有する。
なお、記憶部10i及び一時メモリ10hは、例えば、図2に記載したレジスタ11c、補助記憶装置14、RAM16、或いはこれらを結合した記憶領域に相当する。また、鍵生成部10aと、任意値生成部10cと、関数演算部10dと、G2演算部10eと、制御部10gとは、それぞれ処理を実現するためのプログラムがCPU11に読み込まれることにより構成されるものである。また、入力部10bは、所定のプログラムが読み込まれたCPU11の制御のもと駆動する入力部12であり、通信部10fは、所定のプログラムが読み込まれたCPU11の制御のもと駆動する通信部18である。また、署名者装置10は、制御部10gの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ10hに読み書きされる。
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名者装置10の機能をコンピュータに実行させるためのプログラムに相当する。
<代理署名装置20の構成>
次に、代理署名装置20の構成について説明する。
[ハードウェア構成]
代理署名装置20は、図2に例示したのと同様なコンピュータによって構成される。
[ハードウェアとプログラムとの協働]
署名者装置10の場合と同様、代理署名装置20は、コンピュータにプログラムが読み込まれることにより構成される。図4は、第1実施形態における代理署名装置20の機能構成を例示したブロック図である。なお、図4における矢印はデータの流れを示すが、制御部20jや一時メモリ20kに入出力されるデータの流れは省略してある。
図4に例示するように、第1実施形態における代理署名装置20は、ペアリング演算部20a,20ga,20gb,20hb,20hcと、任意値選択部20bと、G3演算部20c,20dと、関数演算部20e,20haと、データ判定部20gd,20heと、G1演算部20fと、鍵判定部20gcと、署名可能化子判定部20hdと、通信部20i(「受信部」及び「送信部」に対応)と、制御部20jと、一時メモリ20kと、出力部20mと、記憶部20nとを有する。
なお、記憶部20nおよび一時メモリ20kは、例えば、レジスタ、補助記憶装置、RAM、或いはこれらを結合した記憶領域に相当する。また、ペアリング演算部20a,20ga,20gb,20hb,20hc、任意値選択部20b、G3演算部20c,20d、データ判定部20gd,20he、関数演算部20e,20ha、G1演算部20f、鍵判定部20gc、署名可能化子判定部20hd及び制御部20jは、それぞれ処理を実現するためのプログラムがCPUに読み込まれることにより構成されるものである。また、通信部20iは、所定のプログラムが読み込まれたCPUの制御のもと駆動する通信部である。また、出力部20mは、所定のプログラムが読み込まれたCPUの制御のもと駆動する。また、代理署名装置20は、制御部20jの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ20kに読み書きされる。
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、代理署名装置20の機能をコンピュータに実行させるためのプログラムに相当する。
<署名検証装置30の構成>
次に、署名検証装置30の構成について説明する。
[ハードウェア構成]
署名検証装置30は、図2に例示したのと同様なコンピュータによって構成される。
[ハードウェアとプログラムとの協働]
署名者装置10の場合と同様、署名検証装置30は、コンピュータにプログラムが読み込まれることにより構成される。図5は、第1実施形態における署名検証装置30の機能構成を例示したブロック図である。なお、図5における矢印はデータの流れを示すが、一時メモリ30jや制御部30iに入出力されるデータの流れは省略してある。
図5に例示するように、第1実施形態における署名検証装置30は、関数演算部30a,30dと、ペアリング演算部30b,30cと、署名判定部30eと、データ判定部30fと、出力部30gと、通信部30h(「受信部」に対応)と、制御部30iと、一時メモリ30jと、記憶部30kとを有する。
なお、記憶部30kおよび一時メモリ30jは、例えば、レジスタ、補助記憶装置、RAM、或いはこれらを結合した記憶領域に相当する。また、関数演算部30a,30d、ペアリング演算部30b,30c、署名判定部30e、データ判定部30f及び制御部30iは、それぞれ処理を実現するためのプログラムがCPUに読み込まれることにより構成されるものである。また、通信部30hは、所定のプログラムが読み込まれたCPUの制御のもと駆動する通信部であり、出力部30gは、所定のプログラムが読み込まれたCPUの制御のもと駆動する。また、署名検証装置30は、制御部30iの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ30jに読み書きされる。
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名検証装置30の機能をコンピュータに実行させるためのプログラムに相当する。
<処理>
次に、第1実施形態の署名システム1の処理について説明する。
[前処理]
まず、楕円曲線E/Fが選択される。前述のように、楕円曲線E/Fは、非trace-2の非超特異楕円曲線であることが望ましい。また、楕円曲線E/F上の点からなる位数がpである2つの巡回群G1,G2(G1≠G2)が選択される。例えば、前述の[楕円曲線]の欄で示した巡回群<P>,<Q>,<R>から、重複しないように2つの巡回群を選び、それぞれを巡回群G1,G2とする。そして、巡回群G1,G2の各生成元g1∈G1,g2∈G2が選択される。なお、安全性の面から、pは素数や因数分解が困難な合成数であることが望ましいが、pがその他の整数であってもよい。また、巡回群G1,G2の各群のビット長がセキュリティパラメータとなる。また、また、ペアリング関数e:G1×G2→G3が選択される。そして、署名者装置10の記憶部10iには、生成元g1∈G1,g2∈G2とpとが格納される。また、代理署名装置20の記憶部20nには、生成元g1∈G1,g2∈G2とpとg3=e(g1,g2)≠1∈G3とが格納される。また、署名検証装置30の記憶部30kには、生成元g1∈G1,g2∈G2とpとが格納される。
また、2つの別個のハッシュ関数H:{0,1}→G2及びH’:{0,1}→Zが設定される。ここで、ハッシュ関数H:{0,1}→G2は、任意のビット値を巡回群G2の元に写すハッシュ関数を意味する。また、H’:{0,1}→Zは、任意のビット値を剰余類Zの元に写すハッシュ関数を意味する。このようなハッシュ関数H,H’は、SHA−1やMD5等を応用して容易に構成できる。ハッシュ関数H,H’は、署名者装置10、代理署名装置20及び署名検証装置30をそれぞれ構成するための各プログラムに書き込まれる。これにより、署名者装置10、代理署名装置20及び署名検証装置30では、共通のハッシュ関数H,H’によるハッシュ演算が可能となる。
[鍵生成処理]
次に、本形態の鍵生成処理について説明する。
図6(a)は、第1実施形態の鍵生成処理を説明するためのフローチャートである。以下、図6(a)に沿って、第1実施形態の鍵生成処理について説明する。
まず、署名者装置10(図3)の秘密鍵生成部10aaが、記憶部10iからpを読み込む。秘密鍵生成部10aaは、任意値x(i)∈を署名者装置10の秘密鍵sk∈Zとして選択し、選択した秘密鍵sk∈Zを記憶部10iに格納する(ステップS1)。なお、任意値の具体例としては、擬似乱数を例示できる。また、擬似乱数の生成は、例えば、SHA-1等の一方向性ハッシュ関数を用いて構成される、計算量理論に基づく擬似乱数生成アルゴリズムなどを用いて行う。また、擬似乱数ではなく、例えば、乱数表や利用者が設定した秘密情報などを用い、他の署名者装置と重複しないように秘密鍵skを設定してもよい。
次に、署名生成鍵生成部10abが、記憶部10iから秘密鍵sk∈Zと生成元g1∈G1とを読み込む。署名生成鍵生成部10abは、このように入力された秘密鍵sk∈Zと生成元g1∈G1とを用い、署名生成鍵rk=g1sk∈G1を算出し、記憶部10iに格納する(ステップS2)。
次に、公開鍵生成部10acが、記憶部10iから秘密鍵sk∈Zと生成元g2∈G2とを読み込む。公開鍵生成部10acは、このように入力された秘密鍵sk∈Zと生成元g2∈G2とを用い、公開鍵pk=g2sk∈G2を算出し、記憶部10iに格納する(ステップS3)。
その後、制御部10gの制御のもと、通信部10fが、公開鍵pk∈G2をネットワーク50を通じて公開鍵サーバ装置40へ送信する(ステップS4)。公開鍵サーバ装置40は、送信された公開鍵pk∈G2を自らのメモリに格納し、公開鍵pk∈G2を署名者装置10の公開鍵としてネットワーク50で公開する。これにより、ネットワーク50に接続された外部装置は、公開鍵pk∈G2の取得が可能となる。
[署名委託処理]
次に、署名者装置10が代理署名装置20に署名生成を依託する際に、署名者装置10が実行する処理を説明する。
図6(b)は、この署名者装置10による署名委託処理を説明するためのフローチャートである。以下、図6(b)に沿って、第1実施形態の署名委託処理について説明する。
まず、署名者装置10の入力部10b(図3)に署名対象のメッセージmが入力され、記憶部10iに格納される(ステップS11)。次に、任意値生成部10cがdビット(dは自然数)の任意値t∈{0,1}を選択し、選択した任意値t∈{0,1}を記憶部10iに格納する(ステップS12)。なお、任意値の具体例としては、擬似乱数等を例示できる。次に、関数演算部10dが、記憶部10iからメッセージmと任意値tとを読み込み、h=H(m,t)∈G2を算出し、その演算結果hを記憶部10iに格納する(ステップS13)。次に、G2演算部が、記憶部10iから演算結果hと秘密鍵skとを読み込み、w=hsk∈G2を算出し、その演算結果wを記憶部10iに格納する(ステップS14)。そして、制御部10gの制御のもと、メッセージmと任意値tと演算結果wと署名生成鍵rkとhとが記憶部10iから読み出され、通信部10fからネットワーク50を通じて代理署名装置20に送信される(ステップS15)。なお、(t,w)の組を署名可能化子と呼ぶ。
[署名生成処理]
次に、署名者装置10から署名生成を依託された代理署名装置20の署名生成処理について説明する。
図7,8は、第1実施形態の署名生成処理を説明するためのフローチャートである。以下、図7,8に従って、第1実施形態の署名生成処理について説明する。
上述のように署名者装置10から送信されたメッセージmと任意値tと演算結果wと署名生成鍵rkとhとは、代理署名装置20(図4)の通信部20iで受信され、記憶部20nに格納される(ステップS21)。本形態の代理署名装置20は、これをトリガとし、公開鍵サーバ装置40に対して署名者装置10の公開鍵pkの送信を依頼し、公開鍵サーバ装置40から送信された公開鍵pkを通信部20iで受信し、記憶部20nに格納する(ステップS22)。なお、予め代理署名装置20が公開鍵pkを取得しておく構成であってもよい。
次に、データ判定部20gdが、記憶部20nから署名生成鍵rkと公開鍵pkとを読み込み、rk∈G1とpk∈G2とを共に満たすか否かを判定する(ステップS22a)。ここで、rk∈G1とpk∈G2との何れかが成立しないと判定された場合、データ判定部20gdは、署名生成鍵rkと公開鍵pkとを拒絶する旨(0)を出力する。この出力を受けた制御部20jは署名生成処理をエラー終了させる(ステップS26)。一方、rk∈G1とpk∈G2とが共に成立すると判定された場合、データ判定部20gdは、署名生成鍵rkと公開鍵pkとを受理する旨(1)を出力する。この出力を受けた制御部20jは、処理を以下のステップS23に移す。
ステップS23では、ペアリング演算部20gaが、記憶部20nから署名生成鍵rkと生成元g2とを読み込み、e(rk,g2)∈G3を算出し、その演算結果を記憶部20nに格納する(ステップS23)。また、ペアリング演算部20gbが、記憶部20nから生成元g1と公開鍵pkとを読み込み、e(g1,pk)∈G3を算出し、その演算結果を記憶部20nに格納する(ステップS24)。そして、鍵判定部20gcが、記憶部20nからe(rk,g2)∈G3とe(g1,pk)∈G3とを読み込み、e(rk,g2)=e(g1,pk)が成立するか否かを判定する(ステップS25)。ここで、(rk,g2)=e(g1,pk)が成立しないと判定された場合、鍵判定部20gcは、署名生成鍵rkと公開鍵pkとを拒絶する旨(0)を出力する。この出力を受けた制御部20jは署名生成処理をエラー終了させる(ステップS26)。一方、(rk,g2)=e(g1,pk)が成立すると判定された場合、鍵判定部20gcは、署名生成鍵rkと公開鍵pkとを受理する旨(1)を出力する。この出力を受けた制御部20jは処理をステップS25aに移す。
ステップS25aでは、データ判定部20heが、記憶部20nからwを読み込み、w∈G2を満たすか否かを判定する(ステップS25a)。ここで、w∈G2を満たさないと判定された場合、データ判定部20heは、署名可能化子(t,w)を拒絶する旨(0)を出力する。この出力を受けた制御部20jは署名生成処理をエラー終了させる(ステップS26)。w∈G2を満たすと判定された場合、データ判定部20heは、署名可能化子(t,w)を受理する旨(1)を出力する。この出力を受けた制御部20jは、処理を以下のステップS27に移す。
ステップS27では、関数演算部20haが、記憶部20nからメッセージmと任意値tとを読み込み、h’’=H(m,t)∈G2を算出し、h’’ ∈G2を記憶部20nに格納する(ステップS27)。また、ペアリング演算部20hbが、記憶部20nから署名生成鍵rkとh’’とを読み込み、e(rk,h’’)∈G3を算出し、その演算結果を記憶部20nに格納する(ステップS28)。また、ペアリング演算部20hcが、記憶部20nから生成元g1とwとを読み込み、e(g1,w)∈G3を算出し、その演算結果を記憶部20nに格納する(ステップS29)。そして、署名可能化子判定部20hdが、記憶部20nからe(rk,h’’)∈G3とe(g1,w)∈G3とを読み込み、e(rk,h’’)=e(g1,w)が成立するか否かを判定する(ステップS30)。ここで、e(rk,h’’)=e(g1,w)が成立しないと判定された場合、署名可能化子判定部20hdは、署名可能化子(t,w)を拒絶する旨(0)を出力する。この出力を受けた制御部20jは署名生成処理をエラー終了させる(ステップS26)。一方、e(rk,h’’)=e(g1,w)が成立すると判定された場合、署名可能化子判定部20hdは、署名可能化子(t,w)を受理する旨(1)を出力する。この出力を受けた制御部20jは処理をステップS31に移す。
ステップS31では、ペアリング演算部20aが、記憶部20nから生成元g1とhとを読み込み、f=e(g1,h)∈G3を算出し、算出したf∈G3を記憶部20nに格納する(ステップS31)。次に、任意値選択部20bが、記憶部20nからpを読み込み、任意値r∈を選択し、記憶部20nに格納する(ステップS32)。次に、G3演算部20cが、記憶部20nからg3∈G3と任意値rとを読み込み、a=(g3)∈G3を算出し、算出したa∈G3を記憶部20nに格納する(ステップS33)。次に、G3演算部20dが、記憶部20nからf∈G3と任意値rとを読み込み、b=f∈G3を算出し、b∈G3を記憶部20nに格納する(ステップS34)。次に、関数演算部20eが、記憶部20nからm,t,w,a,bを読み込み、c=H’(m,t,w,a,b)を算出し、算出したcを記憶部20nに格納する(ステップS35)。さらに、G1演算部20fが、記憶部20nから生成元g1と署名生成鍵rkとrとcとを読み込み、z=(g1)/(rk)∈G1を算出し、算出したzを記憶部20nに格納する(ステップS36)。そして、制御部20jの制御のもと、記憶部20nからσ=(t,w,c,z)が署名として読み出され、さらにメッセージmが読み出され、通信部20iが、メッセージmと署名σ=(t,w,c,z)とを送信する(ステップS37)。なお、この署名σは、g2,pk,h,wがDDH Tuppleであることの非対話証明にあたる。
<署名検証処理>
次に、本形態の署名検証処理について説明する。
図9は、第1実施形態の署名検証処理を説明するためのフローチャートである。以下、図9に従って、第1実施形態の署名検証処理について説明する。
まず、署名検証装置30の通信部30h(図5)が、署名対象のメッセージmと署名σ=(t,w,c,z)とを受信し、これらを記憶部30kに格納する(ステップS41)。次に、本形態の署名検証装置30は、これをトリガとし、公開鍵サーバ装置40に対して署名者装置10の公開鍵pkの送信を依頼し、公開鍵サーバ装置40から送信された公開鍵pkを通信部30hで受信し、記憶部30kに格納する(ステップS42)。なお、予め署名検証装置30が公開鍵pkを取得しておく構成であってもよい。
次に、データ判定部30fが記憶部30kから公開鍵pkと署名σのc,z,wを読み込み、c∈Zとz∈G1とpk∈G2とw∈G2を全て満たすか否かを判定する(ステップS43)。ここで、c∈Zとz∈G1とpk∈G2とw∈G2の何れかが満たされないと判定された場合、その結果が出力部30gに転送され、出力部30gは署名σを拒絶する旨(0)を出力し(ステップS50)、制御部30iは署名検証処理を終了させる。一方、c∈Zとz∈G1とpk∈G2とw∈G2を全て満たすと判定された場合、制御部30iは処理をステップS44に移す。
ステップS44では、関数演算部30aが、記憶部30kからメッセージmと署名σのtとを読み込み、関数値h’=H(m,t)を算出し、算出したh’を記憶部30kに格納する(ステップS44)。次に、ペアリング演算部30bが、記憶部30kから生成元g1,g2と公開鍵pkと署名σのzとを読み込み、a’=e(z,g2)・e(g1,pk)∈G3を算出し、算出したa’を記憶部30kに格納する(ステップS45)。また、ペアリング演算部30cが、記憶部30kから生成元g1と算出されたh’と署名σのz,wとを読み込み、b’=e(z,h’)・e(g1,w)∈G3を算出し、算出したb’を記憶部30kに格納する(ステップS46)。次に、関数演算部30dが、記憶部30kからメッセージmと署名σのt,wと算出されたa’,b’とを読み込み、H’(m,t,w,a’,b’)を算出し、H’(m,t,w,a’,b’)を記憶部30kに格納する(ステップS47)。
そして、署名判定部30eが、記憶部30kから署名σのcと算出されたH’(m,t,w,a’,b’)とを読み込み、c=H’(m,t,w,a’,b’)を満たすか否かを判定する(ステップS48)。ここで、c=H’(m,t,w,a’,b’)を満たすと判定された場合、その結果が出力部30gに転送され、出力部30gは署名σを受理する旨(1)を出力する(ステップS49)。一方、c=H’(m,t,w,a’,b’)を満たさないと判定された場合、その結果が出力部30gに転送され、出力部30gは署名σを拒絶する旨(0)を出力する(ステップS50)。
〔第2実施形態〕
次に、本発明の第2実施形態について説明する。本形態は、本発明をグループ署名に適用した実施形態である。なお、以下において第1実施形態と共通する事項については説明を簡略化する。
<全体構成>
図10は、第2実施形態の署名システム100の全体構成を示した概念図である。
図10に示すように、本形態の署名システム100は、署名クループを構成し得るn個(n≧2)の署名者装置110−0〜(n−1)、何れかの署名者装置110−0〜(n−1)から委託を受けてグループ署名を生成する代理署名装置120、署名検証を行う署名検証装置130及び公開鍵サーバ装置140を有し、署名者装置110−0〜(n−1)、代理署名装置120、署名検証装置130及び公開鍵サーバ装置140は、相互にネットワーク150を通じて接続可能に構成されている。
なお、署名者装置110−w(w∈N,N={0,...,n−1})を、それぞれw番目の署名者装置110−wと呼ぶこととし、署名者装置110−w(w∈N)の集合を集合N=(0,...,n−1)と呼ぶものとする。また、本形態では、集合N=(0,...,n−1)に属する署名者装置110−wの1つであるi番目の署名者装置110−iが代理署名装置120に署名生成を委託する。代理署名装置120は、このi番目の署名者装置110−iを含むu個の署名者装置110−k(k∈L,L={0,...,u−1}⊆N)からなる集合L(署名グループ)による匿名署名を生成し、署名検証装置130がその匿名署名を検証する。
<署名者装置110の構成>
次に、署名者装置110の構成について説明する。なお、以下では署名者装置110−iを例にとって説明する。その他の署名者装置の構成も署名者装置110−iと同様である。
[ハードウェア構成]
署名者装置110は、図2に例示したのと同様なコンピュータによって構成される。
[ハードウェアとプログラムとの協働]
第1実施形態の署名者装置10の場合と同様、本形態の署名者装置110は、コンピュータにプログラムが読み込まれることにより構成される。図11は、署名者装置110の機能構成を例示したブロック図である。なお、図11における矢印はデータの流れを示すが、一時メモリ110h−iや制御部110g−iに入出力されるデータの流れは省略してある。
図11に例示するように、第2実施形態における署名者装置110−iは、鍵生成部110a−iと、入力部110b−iと、任意値生成部110c−iと、関数演算部110d−iと、G2演算部110e−iと、通信部110f−i(「送信部」に対応)と、制御部110g−iと、一時メモリ110h−iと、記憶部110i−iとを有する。また、鍵生成部110a−iは、秘密鍵生成部110aa−iと署名生成鍵生成部110ab−iと公開鍵生成部110ac−iとを有する。
なお、記憶部110i−i及び一時メモリ110h−iは、例えば、レジスタ、補助記憶装置、RAM、或いはこれらを結合した記憶領域に相当する。また、鍵生成部110a−iと、任意値生成部110c−iと、関数演算部110d−iと、G2演算部110e−iと、制御部110g−iとは、それぞれ処理を実現するためのプログラムがCPUに読み込まれることにより構成されるものである。また、入力部110b−iは、所定のプログラムが読み込まれたCPUの制御のもと駆動し、通信部110f−iは、所定のプログラムが読み込まれたCPUの制御のもと駆動する。また、署名者装置110−iは、制御部110g−iの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ110h−iに読み書きされる。
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名者装置110−iの機能をコンピュータに実行させるためのプログラムに相当する。
<代理署名装置120の構成>
次に、代理署名装置120の構成について説明する。
[ハードウェア構成]
代理署名装置120は、図2に例示したのと同様なコンピュータによって構成される。
[ハードウェアとプログラムとの協働]
代理署名装置120は、コンピュータにプログラムが読み込まれることにより構成される。図12は、第2実施形態における代理署名装置120の機能構成を例示したブロック図である。なお、図12における矢印はデータの流れを示すが、制御部120jや一時メモリ120kに入出力されるデータの流れは省略してある。
図12に例示するように、第2実施形態における代理署名装置120は、ペアリング演算部120a,120p,120q,120ga,120gb,120hb,120hcと、任意値選択部120bと、G3演算部120c,120dと、関数演算部120e,120haと、データ判定部120gd,120heと、G1演算部120fと、鍵判定部120gcと、署名可能化子判定部120hdと、通信部120i(「受信部」及び「送信部」に対応)と、制御部120jと、一時メモリ120kと、出力部120mと、記憶部120nと、整数演算部120rとを有する。
なお、記憶部120nおよび一時メモリ120kは、例えば、レジスタ、補助記憶装置、RAM、或いはこれらを結合した記憶領域に相当する。また、ペアリング演算部120a,120p,120q,120ga,120gb,120hb,120hc、任意値選択部120b、G3演算部120c,120d、データ判定部120gd,120he、関数演算部120e,120ha、G1演算部120f、鍵判定部120gc、署名可能化子判定部120hd、制御部120j及び整数演算部120rは、それぞれ処理を実現するためのプログラムがCPUに読み込まれることにより構成されるものである。また、通信部120iは、所定のプログラムが読み込まれたCPUの制御のもと駆動する通信部である。また、出力部120mは、所定のプログラムが読み込まれたCPUの制御のもと駆動する。また、代理署名装置120は、制御部120jの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ120kに読み書きされる。
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、代理署名装置120の機能をコンピュータに実行させるためのプログラムに相当する。
<署名検証装置130の構成>
次に、署名検証装置130の構成について説明する。
[ハードウェア構成]
署名検証装置130は、図2に例示したのと同様なコンピュータによって構成される。
[ハードウェアとプログラムとの協働]
署名検証装置130は、コンピュータにプログラムが読み込まれることにより構成される。図13は、第2実施形態における署名検証装置130の機能構成を例示したブロック図である。なお、図13における矢印はデータの流れを示すが、一時メモリ130jや制御部130iに入出力されるデータの流れは省略してある。
図13に例示するように、第2実施形態における署名検証装置130は、関数演算部130a,130dと、ペアリング演算部130b,130cと、署名判定部130eと、データ判定部130fと、出力部130gと、通信部130h(「受信部」に対応)と、制御部130iと、一時メモリ130jと、記憶部130kと、加算部130mとを有する。
なお、記憶部130kおよび一時メモリ130jは、例えば、レジスタ、補助記憶装置、RAM、或いはこれらを結合した記憶領域に相当する。また、関数演算部130a,130d、ペアリング演算部130b,130c、署名判定部130e、データ判定部130f、制御部130i及び加算部130mは、それぞれ処理を実現するためのプログラムがCPUに読み込まれることにより構成されるものである。また、通信部130hは、所定のプログラムが読み込まれたCPUの制御のもと駆動する通信部であり、出力部130gは、所定のプログラムが読み込まれたCPUの制御のもと駆動する。また、署名検証装置130は、制御部130iの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ130jに読み書きされる。
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名検証装置130の機能をコンピュータに実行させるためのプログラムに相当する。
<処理>
次に、第2実施形態の署名システム100の処理について説明する。
[前処理]
第1実施形態と同様、署名者装置110−iの記憶部110i−iには、生成元g1∈G1,g2∈G2とpとが格納される(他の署名者装置についても同様)。また、代理署名装置120−iの記憶部20nには、生成元g1∈G1,g2∈G2とpとg3=e(g1,g2)≠1∈G3とが格納される。また、署名検証装置130−iの記憶部130k−iには、生成元g1∈G1,g2∈G2とpとが格納される。
また、第1実施形態と同様、2つの別個のハッシュ関数H:{0,1}→G2及びH’:{0,1}→Zが設定され、ハッシュ関数H,H’は、各署名者装置110−w(w∈N)、代理署名装置120及び署名検証装置130をそれぞれ構成するための各プログラムに書き込まれる。これにより、各署名者装置110−w、代理署名装置120及び署名検証装置130では、共通のハッシュ関数H,H’によるハッシュ演算が可能となる。
[鍵生成処理]
次に、本形態の鍵生成処理について説明する。
図14(a)は、第2実施形態の鍵生成処理を説明するためのフローチャートである。この処理は第1実施形態の鍵生成処理と同様であり、各署名者装置110−wがそれぞれ鍵生成を行う点のみが第1実施形態と相違する。
署名者装置110−iでの処理を例にとると、まず、署名者装置110−i(図11)の秘密鍵生成部110aa−iが、記憶部110iからpを読み込む。秘密鍵生成部110aa−iは、任意値x(i)∈を署名者装置110−iの秘密鍵sk(i)∈Zとして選択し、選択した秘密鍵sk(i)∈Zを記憶部110i−iに格納する(ステップS101)。任意値の具体例は第1実施形態と同様、例えば、擬似乱数等である。
次に、署名生成鍵生成部110ab−iが、記憶部110i−iから秘密鍵sk(i)∈Zと生成元g1∈G1とを読み込む。署名生成鍵生成部110ab−iは、このように入力された秘密鍵sk(i)∈Zと生成元g1∈G1とを用い、署名生成鍵rk(i)=g1sk∈G1を算出し、記憶部110i−iに格納する(ステップS102)。
次に、公開鍵生成部110ac−iが、記憶部110i−iから秘密鍵sk(i)∈Zと生成元g2∈G2とを読み込む。公開鍵生成部110ac−iは、このように入力された秘密鍵sk(i)∈Zと生成元g2∈G2とを用い、公開鍵pk(i)=g2sk∈G2を算出し、記憶部110i−iに格納する(ステップS103)。
その後、制御部110g−iの制御のもと、通信部110f−iが、公開鍵pk(i)∈G2を、ネットワーク150を通じて公開鍵サーバ装置140へ送信する(ステップS104)。公開鍵サーバ装置140は、送信された公開鍵pk(i)∈G2を自らのメモリに格納し、公開鍵pk(i)∈G2を署名者装置110−iの公開鍵としてネットワーク150で公開する。ステップS101〜S104と同様な処理は他の署名者装置についても実行される。これにより、ネットワーク150に接続された外部装置は、何れの公開鍵pk(w)∈G2の取得も可能となる。
[署名委託処理]
次に、署名生成を委託する署名者装置110−iが代理署名装置120に署名生成を依託する際に、署名者装置110−iが実行する処理を説明する。
図14(b)は、この署名者装置10による署名委託処理を説明するためのフローチャートである。この処理の第1実施形態との相違点は、署名者装置110−iが、署名グループである署名者装置110−iを含むu個の署名者装置110−k(k∈L,L={0,...,u−1}⊆N)からなる集合Lを特定する情報を代理署名装置120に送信する点である。
まず、署名者装置110−iの入力部110b−i(図11)に署名対象のメッセージm(i)と上述の集合Lを示す情報とが入力され、記憶部110i−iに格納される(ステップS111)。次に、任意値生成部110c−iがdビット(dは自然数)の任意値t(i)∈{0,1}を選択し、選択した任意値t(i)∈{0,1}を記憶部110i−iに格納する(ステップS112)。なお、任意値の具体例としては、擬似乱数等を例示できる。次に、関数演算部110d−iが、記憶部110i−iからメッセージm(i)と任意値t(i)とを読み込み、h(i)=H(m(i),t(i))∈G2を算出し、その演算結果h(i)を記憶部110i−iに格納する(ステップS113)。次に、G2演算部が、記憶部110i−iから演算結果h(i)と秘密鍵sk(i)とを読み込み、w(i)=h(i)sk(i)∈G2を算出し、その演算結果w(i)を記憶部110i−iに格納する(ステップS114)。そして、制御部110g−iの制御のもと、メッセージm(i)と任意値t(i)と演算結果w(i)と署名生成鍵rk(i)とh(i)と集合Lを示す情報が記憶部110i−iから読み出され、通信部110f−iからネットワーク150を通じて代理署名装置120に送信される(ステップS115)。なお、(t(i),w(i))の組を署名者装置110−iの署名可能化子と呼ぶ。
[署名生成処理]
次に、署名者装置110−iから署名生成を依託された代理署名装置120の署名生成処理について説明する。
図15,16は、第2実施形態の署名生成処理を説明するためのフローチャートである。以下、図15,16に従って、第2実施形態の署名生成処理について説明する。
上述のように署名者装置110−iから送信されたメッセージm(i)と任意値t(i)と演算結果w(i)と署名生成鍵rk(i)とh(i)と集合Lを示す情報とは、代理署名装置120(図12)の通信部120iで受信され、記憶部120nに格納される(ステップS121)。本形態の代理署名装置120は、これをトリガとし、公開鍵サーバ装置140に対して署名者装置110−k(∀k∈L)の公開鍵pk(k)の送信を依頼し、公開鍵サーバ装置140から送信された公開鍵pk(k)を通信部120iで受信し、記憶部120nに格納する(ステップS122)。なお、予め代理署名装置120が公開鍵pk(w)(∀w∈N)を取得しておく構成であってもよい。
次に、データ判定部120gdが、記憶部120nから署名生成鍵rk(i)と公開鍵pk(k)とを読み込み、rk(i)∈G1とpk(k)∈G2とを共に満たすか否かを判定する(ステップS122a)。ここで、rk(i)∈G1とpk(k)∈G2との何れかが成立しないと判定された場合、データ判定部120gdは、署名生成鍵rk(i)と公開鍵pk(k)とを拒絶する旨(0)を出力する。この出力を受けた制御部120jは署名生成処理をエラー終了させる(ステップS126)。一方、rk(i)∈G1とpk(k)∈G2とが共に成立すると判定された場合、データ判定部120gdは、署名生成鍵rk(i)と公開鍵pk(k)とを受理する旨(1)を出力する。この出力を受けた制御部120jは、処理を以下のステップS123に移す。
ステップS123では、まず、ペアリング演算部120gaが、記憶部120nから署名生成鍵rk(i)と生成元g2とを読み込み、e(rk(i),g2)∈G3を算出し、その演算結果を記憶部120nに格納する(ステップS123)。また、ペアリング演算部120gbが、記憶部120nから生成元g1と公開鍵pk(i)とを読み込み、e(g1,pk(i))∈G3を算出し、その演算結果を記憶部120nに格納する(ステップS124)。そして、鍵判定部120gcが、記憶部120nからe(rk(i),g2)∈G3とe(g1,pk(i))∈G3とを読み込み、e(rk(i),g2)=e(g1,pk(i))が成立するか否かを判定する(ステップS125)。ここで、(rk(i),g2)=e(g1,pk(i))が成立しないと判定された場合、鍵判定部120gcは、署名生成鍵rk(i)と公開鍵pk(i)とを拒絶する旨(0)を出力する。この出力を受けた制御部120jは署名生成処理をエラー終了させる(ステップS126)。一方、(rk(i),g2)=e(g1,pk(i))が成立すると判定された場合、鍵判定部120gcは、署名生成鍵rk(i)と公開鍵pk(i)とを受理する旨(1)を出力する。この出力を受けた制御部120jは処理をステップS125aに移す。
ステップS125aでは、データ判定部120heが、記憶部120nからw(i)を読み込み、w(i)∈G2を満たすか否かを判定する(ステップS125a)。ここで、w(i)∈G2を満たさないと判定された場合、データ判定部120heは、署名可能化子(t(i),w(i))を拒絶する旨(0)を出力する。この出力を受けた制御部120jは署名生成処理をエラー終了させる(ステップS126)。w(i)∈G2を満たすと判定された場合、データ判定部120heは、署名可能化子(t(i),w(i))を受理する旨(1)を出力する。この出力を受けた制御部120jは、処理を以下のステップS127に移す。
ステップS127では、関数演算部120haが、記憶部120nからメッセージm(i)と任意値t(i)とを読み込み、h(i)’’=H(m(i),t(i))∈G2を算出し、h(i)’’∈G2を記憶部120nに格納する(ステップS127)。また、ペアリング演算部120hbが、記憶部120nから署名生成鍵rk(i)とh(i)’’とを読み込み、e(rk(i),h(i)’’)∈G3を算出し、その演算結果を記憶部120nに格納する(ステップS128)。また、ペアリング演算部120hcが、記憶部120nから生成元g1とw(i)とを読み込み、e(g1,w(i))∈G3を算出し、その演算結果を記憶部120nに格納する(ステップS129)。そして、署名可能化子判定部120hdが、記憶部120nからe(rk(i),h(i)’’)∈G3とe(g1,w(i))∈G3とを読み込み、e(rk(i),h(i)’’)=e(g1,w(i))が成立するか否かを判定する(ステップS130)。ここで、e(rk(i),h(i)’’)=e(g1,w(i))が成立しないと判定された場合、署名可能化子判定部120hdは、署名可能化子(t(i),w(i))を拒絶する旨(0)を出力する。この出力を受けた制御部120jは署名生成処理をエラー終了させる(ステップS126)。一方、e(rk(i),h(i)’’)=e(g1,w(i))が成立すると判定された場合、署名可能化子判定部120hdは、署名可能化子(t(i),w(i))を受理する旨(1)を出力する。この出力を受けた制御部120jは処理をステップS131に移す。
ステップS131では、署名者装置110−iの署名生成鍵と公開鍵と署名可能化子の判定結果が全て受理であった場合、ペアリング演算部120aが、記憶部120nから生成元g1とh(i)とを読み込み、f=e(g1,h(i))∈G3を算出し、算出したf∈G3を記憶部120nに格納する(ステップS131)。次に、任意値選択部120bが、記憶部120nからpを読み込み、任意値r∈を選択し、記憶部120nに格納する(ステップS132)。なお、任意値の具体例としては、擬似乱数等を例示できる。次に、G3演算部120cが、記憶部120nからg3∈G3と任意値rとを読み込み、a(i)=(g3)∈G3を算出し、算出したa(i)∈G3を記憶部120nに格納する(ステップS133)。次に、G3演算部120dが、記憶部120nからf∈G3と任意値rとを読み込み、b(i)=f∈G3を算出し、b(i)∈G3を記憶部120nに格納する(ステップS134)。
次に、任意値選択部120bが、全てのj∈L(j≠i)に対して任意値w(j)∈G2を選択し、各任意値w(j)∈G2を記憶部120nに格納する(ステップS135)。また、任意値選択部120bが、全てのjに対して任意値z(j)∈G1を選択し、各任意値z(j)∈G1を記憶部120nに格納する(ステップS136)。また、任意値選択部120bが、全てのjに対しての任意値c(j)∈を選択し、各任意値c(j)∈Zを記憶部120nに格納する(ステップS137)。
次に、ペアリング演算部120pが、記憶部120nから生成元g1、g2とz(j)と公開鍵pk(j)とを読み込み、a(j)=e(z(j),g2)・e(g1,pk(j))c(j)∈G3を算出し、各演算結果a(j)を記憶部120nに格納する(ステップS138)。また、ペアリング演算部120qが、記憶部120nから生成元g1とz(j)とh(i)とw(j)とを読み込み、b(j)=e(z(j),h(i))・e(g1,w(j))c(j)∈G3を算出し、各演算結果b(j)を記憶部120nに格納する(ステップS139)。
次に、関数演算部120eが、記憶部120nからm(i)とt(i)とw(k)と(a(k)とb(k)とを読み込み、c=H’(m(i),t(i),(w(k))∀k∈L,(a(k))∀k∈L,(b(k))∀k∈L)を算出し、算出したcを記憶部120nに格納する(ステップS140)。その後、整数演算部120rが、記憶部120nからcとc(j)とpとを読み込み、c(i)=c−Σj≠ic(j) mod pを算出し、算出したc(i)を記憶部120nに格納する(ステップS141)。さらにその後、G1演算部120fが、記憶部120nから生成元g1とrと署名生成鍵rk(i)とc(i)とを読み込み、z(i)=(g1)/{rk(i)}c(i)∈G1を算出し、算出したz(i)を記憶部120nに格納する(ステップS142)。そして、制御部120jの制御のもと、記憶部120nからσ=(t(i),(w(k))∀k∈L,(c(k))∀k∈L,(z(k))∀k∈L)が署名として読み出され、さらにメッセージm(i)が読み出され、通信部20iが、メッセージm(i)と署名σ=(t(i),(w(k))∀k∈L,(c(k))∀k∈L,(z(k))∀k∈L)とを送信する(ステップS143)。なお、署名σはLを特定するための情報を含む。また、代理署名装置120は、集合Lを変更(ただしiは含む)して署名σを生成することや、一旦、署名者装置110−iから指定された集合Lに対して署名σを生成した後、代理署名装置120が変更した集合Lに対して署名σを作り直すこともできる。
<署名検証処理>
次に、本形態の署名検証処理について説明する。
図17は、第2実施形態の署名検証処理を説明するためのフローチャートである。以下、図17に従って、第2実施形態の署名検証処理について説明する。
まず、署名検証装置130の通信部130h(図13)が、署名対象のメッセージm(i)と署名σ=(t(i),(w(k))∀k∈L,(c(k))∀k∈L,(z(k))∀k∈L)とを受信し、これらを記憶部130kに格納する(ステップS151)。次に、本形態の署名検証装置130は、これをトリガとし、公開鍵サーバ装置140に対して、全てのk∈Lに対する公開鍵pk(k)の送信を署名者装置110に依頼し、公開鍵サーバ装置140から送信された公開鍵pk(k)を通信部130hで受信し、記憶部130kに格納する(ステップS152)。なお、予め署名検証装置130が公開鍵pk(k)を取得しておく構成であってもよい。
次に、データ判定部130fが記憶部130kから公開鍵pk(k)と署名σのc(k),z(k),w(k)とを読み込み、c(k)∈Zとz(k)∈G1とpk(k)∈G2とw(k)∈G2を全て満たすか否かを判定する(ステップS153)。ここで、c(k)∈Zとz(k)∈G1とpk(k)∈G2とw(k)∈G2の何れかが満たされないと判定された場合、その結果が出力部130gに転送され、出力部130gは署名σを拒絶する旨(0)を出力し(ステップS161)、制御部130iは署名検証処理を終了させる。一方、c(k)∈Zとz(k)∈G1とpk(k)∈G2とw(k)∈G2を全て満たすと判定された場合、制御部130iは処理をステップS154に移す。
ステップS154では、関数演算部130aが、記憶部130kからメッセージm(i)と署名σのt(i)とを読み込み、関数値h(i)’=H(m(i),t(i))を算出し、算出したh(i)’を記憶部130kに格納する(ステップS154)。次に、ペアリング演算部130bが、記憶部130kから生成元g1,g2と公開鍵pk(k)と署名σのz(k)とを読み込み、a(k)’=e(z(k),g2)・e(g1,pk(k))c(k)∈G3を算出し、算出したa(k)’を記憶部130kに格納する(ステップS155)。また、ペアリング演算部130cが、記憶部130kから生成元g1と算出されたh(i)’と署名σのz(k),w(k)とを読み込み、b(k)’=e(z(k),h(i)’)・e(g1,w(k))c(k)∈G3を算出し、算出したb(k)’を記憶部130kに格納する(ステップS156)。次に、関数演算部130dが、記憶部130kからメッセージm(i)と署名σのt(k),w(k)と算出されたa(k)’,b(k)’とを読み込み、H’(m(i),t(i),(w(k))∀k∈L,(a(k)’)∀k∈L,(b(k)’)∀k∈L)を算出し、H’(m(i),t(i),(w(k))∀k∈L,(a(k)’)∀k∈L,(b(k)’)∀k∈L)を記憶部130kに格納する(ステップS157)。次に、加算部130mが記憶部130kから署名σのc(k)を読み込み、Σk∈Lc(k) mod pを算出し、その演算結果を記憶部130kに格納する(ステップS158)。
そして、署名判定部130eが、記憶部130kから算出されたH’(m(i),t(i),(w(k))∀k∈L,(a(k)’)∀k∈L,(b(k)’)∀k∈L)とΣk∈Lc(k) mod pとを読み込み、これらが一致するか否かを判定する(ステップS159)。これらが一致すると判定された場合、その結果が出力部130gに転送され、出力部130gは署名σを受理する旨(1)を出力する(ステップS160)。一方、これらが一致しないと判定された場合、その結果が出力部130gに転送され、出力部130gは署名σを拒絶する旨(0)を出力する(ステップS161)。
〔変形例〕
なお、本発明は上述の各実施の形態に限定されるものではない。例えば、上述の各実施形態では、署名者装置が代理署名装置に署名生成を委託する際にhやh(i)を代理署名装置に送信する構成であった。しかし、署名者装置が代理署名装置に署名生成を委託する際にhやh(i)を代理署名装置に送信せず、代理署名装置がh=H(m,t)やh(i)=H(m(i),t(i))によってhやh(i)を算出する構成であってもよい。
また、上述の各実施形態では、署名者装置が鍵生成を行う構成としたが、署名者装置以外の鍵生成装置が鍵生成を行ってもよい。また、上述の各実施形態では、代理署名装置の鍵判定部が鍵の判定を行い、署名可能化子判定部が署名可能化子の判定を行うこととしたが、これらの処理(データ判定処理、ペアリング演算処理、ペアリング演算結果比較処理など)の少なくとも一部を代理署名装置以外の鍵判定装置や署名可能化子判定装置が行ってもよい。
また、各実施形態の剰余類Zを整数に置換した実施形態であってもよい。
また、各実施形態では、2つの別個のハッシュ関数H:{0,1}→G2及びH’:{0,1}→Zを用いたが、ハッシュ関数以外の関数H:{0,1}→G2及びH’:{0,1}→Zを用いてもよい。
また、上述の各実施の形態では、生成元g1∈G1,g2∈G2を事前に装置間で共有する構成であった。しかし、生成元g1∈G1,g2∈G2を事前に装置間で共有せず、pkとg1∈G1,g2∈G2との組を公開鍵としてもよい。また、g1,g2,pの情報を各装置の記憶部に格納するのではなく、各装置にインストールされるプログラムがこれらの情報を保持していてもよい。
また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、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)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェアで実現してもよい。
本発明は、電子署名を用いるあらゆる利用分野に適用可能である。例えば、高機能なCPUや高容量のメモリを搭載していない装置(例えば、携帯電話等)を署名者装置とし、高機能なCPUや高容量のメモリを搭載した代理署名装置に署名生成を委託するシステム等への利用が想定できる。
図1は、第1実施形態の署名システムの全体構成を示した概念図である。 図2は、第1実施形態の署名者装置のハードウェア構成を例示したブロック図である。 図3は、第1実施形態の署名者装置の機能構成を例示したブロック図である。 図4は、第1実施形態の代理署名装置の機能構成を例示したブロック図である。 図5は、第1実施形態の署名検証装置の機能構成を例示したブロック図である。 図6(a)は、第1実施形態の鍵生成処理を説明するためのフローチャートである。図6(b)は第1実施形態の署名生成委託処理を説明するためのフローチャートである。 図7は、第1実施形態の署名生成処理を説明するためのフローチャートである。 図8は、第1実施形態の署名生成処理を説明するためのフローチャートである。 図9は、第1実施形態の署名検証処理を説明するためのフローチャートである。 図10は、第2実施形態の署名システムの全体構成を示した概念図である。 図11は、第2実施形態の署名者装置の機能構成を例示したブロック図である。 図12は、第2実施形態の代理署名装置の機能構成を例示したブロック図である。 図13は、第2実施形態の署名検証装置の機能構成を例示したブロック図である。 図14(a)は、第2実施形態の鍵生成処理を説明するためのフローチャートである。図14(b)は第2実施形態の署名生成委託処理を説明するためのフローチャートである。 図15は、第2実施形態の署名生成処理を説明するためのフローチャートである。 図16は、第2実施形態の署名生成処理を説明するためのフローチャートである。 図17は、第2実施形態の署名検証処理を説明するためのフローチャートである。
符号の説明
1,100 署名システム
10,110 署名者装置
20,120 代理署名装置
30,130 署名検証装置

Claims (10)

  1. 署名者装置に代わって署名生成を行う代理署名装置であって、
    g1が巡回群G1の生成元であり、g2が巡回群G2の生成元であり、eが巡回群G1の元と巡回群G2の元とを入力として巡回群G3の元を出力するペアリング関数e:G1×G2→G3であり、g3=e(g1,g2)∈G3であり、上記署名者装置の秘密鍵が整数skであり、上記署名者装置の公開鍵がpk=(g2)sk∈G2であり、上記署名者装置の署名生成鍵がrk=(g1)sk∈G1であり、mが署名対象のメッセージであり、tが署名者装置で選択された任意値であり、Hが巡回群G2の元を値域とする関数H:{0,1}→G2であり、hが関数値h=H(m,t)∈G2であり、H’が値域を整数とする関数であり、w=hsk∈G2であり、
    少なくとも上記メッセージmと上記任意値tと上記wと上記署名生成鍵rkと上記公開鍵pkとを受信する受信部と、
    少なくとも上記メッセージmと上記任意値tと上記wと上記署名生成鍵rkと上記公開鍵pkとを格納する記憶部と、
    f=e(g1,h)∈G3を算出する第1ペアリング演算部と、
    整数である任意値rを選択する任意値選択部と、
    a=(g3)∈G3を算出する第1G3演算部と、
    b=f∈G3を算出する第2G3演算部と、
    c=H’(m,t,w,a,b)を算出する第1関数演算部と、
    z=(g1)/(rk)∈G1を算出するG1演算部と、
    上記メッセージmと署名σ=(t,w,c,z)とを送信する送信部と、
    を有することを特徴とする代理署名装置。
  2. 請求項1に記載の代理署名装置であって、
    e(rk,g2)∈G3を算出する第2ペアリング演算部と、
    e(g1,pk)∈G3を算出する第3ペアリング演算部と、
    e(rk,g2)=e(g1,pk)が成立するか否かを判定し、これが成立した場合に上記署名生成鍵rkと上記公開鍵pkとを受理する旨を出力し、これが成立しなかった場合に上記署名生成鍵rkと上記公開鍵pkとを拒絶する旨を出力する鍵判定部を有する、
    ことを特徴とする代理署名装置。
  3. 請求項1又は2に記載の代理署名装置であって、
    h’’=H(m,t)∈G2を算出する第2関数演算部と、
    e(rk,h’’)∈G3を算出する第4ペアリング演算部と、
    e(g1,w)∈G3を算出する第5ペアリング演算部と、
    e(rk,h’’)=e(g1,w)が成立するか否かを判定し、これが成立した場合に上記任意値tと上記wとを受理する旨を出力し、これが成立しなかった場合に上記任意値tと上記wとを拒絶する旨を出力する署名可能化子判定部を有する、
    ことを特徴とする代理署名装置。
  4. 代理署名装置に署名を生成させる署名者装置であって、
    整数の秘密鍵skを格納する第1記憶部と、
    g1が巡回群G1の生成元である場合における、署名生成鍵rk=(g1)sk∈G1を格納する第2記憶部と、
    署名対象のメッセージmを格納する第3記憶部と、
    任意値tを選択する任意値選択部と、
    G2が巡回群であり、HがG2の元を値域とする関数H:{0,1}→G2である場合における、関数値h=H(m,t)∈G2を算出する関数演算部と、
    w=hsk∈G2を算出するG2演算部と、
    少なくとも上記メッセージmと上記任意値tと上記演算結果wと上記署名生成鍵rkとを上記代理署名装置に送信する送信部と、
    を有することを特徴とする署名者装置。
  5. 署名検証を行う署名検証装置であって、
    g1が巡回群G1の生成元であり、g2が巡回群G2の生成元であり、eが巡回群G1の元と巡回群G2の元とを入力として巡回群G3の元を出力するペアリング関数e:G1×G2→G3であり、Hが巡回群G2の元を値域とする関数H:{0,1}→G2であり、H’が値域を整数とする関数であり、署名者装置の秘密鍵が整数skであり、当該署名者装置の公開鍵がpk=(g2)sk∈G2であり、
    署名対象のメッセージmと署名σ=(t,w,c,z)と上記公開鍵pkとを受信する受信部と、
    上記メッセージmと上記署名σ=(t,w,c,z)と上記公開鍵pkとを格納する記憶部と、
    関数値h’=H(m,t)を算出する第1関数演算部と、
    a’=e(z,g2)・e(g1,pk)∈G3を算出する第1ペアリング演算部と、
    b’=e(z,h’)・e(g1,w)∈G3を算出する第2ペアリング演算部と、
    H’(m,t,w,a’,b’)を算出する第2関数演算部と、
    c=H’(m,t,w,a’,b’)を満たすか否かを判定し、これが成立した場合に上記署名σを受理する旨を出力し、これが成立しなかった場合に上記署名σを拒絶する旨を出力する署名判定部とを有する、
    ことを特徴とする署名検証装置。
  6. 署名クループを構成するu個(u≧2)の署名者装置の1つであるi番目(i∈L,L={0,…,u−1})の署名者装置に代わって署名生成を行う代理署名装置であって、
    g1が巡回群G1の生成元であり、g2が巡回群G2の生成元であり、eが巡回群G1の元と巡回群G2の元とを入力として巡回群G3の元を出力するペアリング関数e:G1×G2→G3であり、g3=e(g1,g2)∈G3であり、i番目の署名者装置の秘密鍵が整数sk(i)であり、各j番目(∀j∈L,j≠i)の署名者装置の秘密鍵が整数sk(j)であり、各j番目の署名者装置の公開鍵がpk(j)=(g2)sk(j)∈G2であり、i番目の署名者装置の署名生成鍵rk(i)がrk(i)=(g1)sk(i)∈G1であり、m(i)が署名対象のメッセージであり、t(i)がi番目の署名者装置で選択された任意値であり、Hが巡回群G2の元を値域とする関数H:{0,1}→G2であり、h(i)が関数値h(i)=H(m(i),t(i))∈G2であり、H’が値域を整数とする関数であり、w(i)={h(i)}sk(i)∈G2であり、
    少なくとも上記メッセージm(i)と上記任意値t(i)と上記w(i)と上記署名生成鍵rk(i)と上記各公開鍵pk(j)とを受信する受信部と、
    少なくとも上記メッセージm(i)と上記任意値t(i)と上記w(i)と上記署名生成鍵rk(i)と上記各公開鍵pk(j)とを格納する記憶部と、
    f=e(g1,h(i))∈G3を算出する第1ペアリング演算部と、
    整数である任意値rを選択する第1任意値選択部と、
    a(i)=(g3)∈G3を算出する第1G3演算部と、
    b(i)=f∈G3を算出する第2G3演算部と、
    各jに対して任意値w(j)∈G2を選択する第2任意値選択部と、
    各jに対して任意値z(j)∈G1を選択する第3任意値選択部と、
    各jに対して整数の任意値c(j)を選択する第4任意値選択部と、
    a(j)=e(z(j),g2)・e(g1,pk(j))c(j)∈G3を算出する第2ペアリング演算部と、
    b(j)=e(z(j),h(i))・e(g1,w(j))c(j)∈G3を算出する第3ペアリング演算部と、
    c=H’(m(i),t(i),(w(k))∀k∈L,(a(k))∀k∈L,(b(k))∀k∈L)を算出する関数演算部と、
    c(i)=c−Σj≠ic(j) mod pを算出する整数演算部と、
    z(i)=(g1)/{rk(i)}c(i)∈G1を算出するG1演算部と、
    上記メッセージm(i)と署名σ=(t(i),(w(k))∀k∈L,(c(k))∀k∈L,(z(k))∀k∈L)とを送信する送信部と、
    を有することを特徴とする代理署名装置。
  7. 署名クループを構成するu個(u≧2)の署名者装置の1つであるi番目(i∈L,L={0,…,u−1})の署名者装置に代わって代理署名装置が生成した署名を検証する署名検証装置であって、
    g1が巡回群G1の生成元であり、g2が巡回群G2の生成元であり、eが巡回群G1の元と巡回群G2の元とを入力として巡回群G3の元を出力するペアリング関数e:G1×G2→G3であり、Hが巡回群G2の元を値域とする関数H:{0,1}→G2であり、H’が値域を整数とする関数であり、各k番目(∀k∈L)の署名者装置の秘密鍵が整数sk(k)であり、各k番目の署名者装置の公開鍵がpk(k)=(g2)sk(k)∈G2であり、
    署名対象のメッセージm(i)と署名σ=(t(i),(w(k))∀k∈L,(c(k))∀k∈L,(z(k))∀k∈L)と上記各公開鍵pk(k)とを受信する受信部と、
    上記メッセージm(i)と署名σ=(t(i),(w(k))∀k∈L,(c(k))∀k∈L,(z(k))∀k∈L)と上記各公開鍵pk(k)とを格納する記憶部と、
    関数値h(i)’=H(m(i),t(i))を算出する第1関数演算部と、
    a(k)’=e(z(k),g2)・e(g1,pk(k))c(k)∈G3を算出する第1ペアリング演算部と、
    b(k)’=e(z(k),h(i)’)・e(g1,w(k))c(k)∈G3を算出する第2ペアリング演算部と、
    H’(m(i),t(i),(w(k))∀k∈L,(a(k)’)∀k∈L,(b(k)’)∀k∈L)を算出する第2関数演算部と、
    H’(m(i),t(i),(w(k))∀k∈L,(a(k)’)∀k∈L,(b(k)’)∀k∈L)=Σk∈Lc(k) mod pを満たすか否かを判定し、これが成立した場合に上記署名σを受理する旨を出力し、これが成立しなかった場合に上記署名σを拒絶する旨を出力する署名判定部とを有する、
    ことを特徴とする署名検証装置。
  8. 請求項1,2,3、6のいずれかに記載の代理署名装置としてコンピュータを機能させるためのプログラム。
  9. 請求項4記載の署名者装置としてコンピュータを機能させるためのプログラム。
  10. 請求項5又は7に記載の署名検証装置としてコンピュータを機能させるためのプログラム。
JP2006333269A 2006-12-11 2006-12-11 代理署名装置、署名者装置、署名検証装置及びそれらのプログラム Expired - Fee Related JP4773941B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006333269A JP4773941B2 (ja) 2006-12-11 2006-12-11 代理署名装置、署名者装置、署名検証装置及びそれらのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006333269A JP4773941B2 (ja) 2006-12-11 2006-12-11 代理署名装置、署名者装置、署名検証装置及びそれらのプログラム

Publications (2)

Publication Number Publication Date
JP2008148033A JP2008148033A (ja) 2008-06-26
JP4773941B2 true JP4773941B2 (ja) 2011-09-14

Family

ID=39607712

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006333269A Expired - Fee Related JP4773941B2 (ja) 2006-12-11 2006-12-11 代理署名装置、署名者装置、署名検証装置及びそれらのプログラム

Country Status (1)

Country Link
JP (1) JP4773941B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5513255B2 (ja) * 2010-05-20 2014-06-04 日本電信電話株式会社 代理署名システム、方法
JP5494603B2 (ja) 2011-09-29 2014-05-21 沖電気工業株式会社 セキュリティ処理代行システム
CN114448623A (zh) * 2022-01-24 2022-05-06 中国银联股份有限公司 代理签名及验证方法、代理秘钥生成方法、装置和系统

Also Published As

Publication number Publication date
JP2008148033A (ja) 2008-06-26

Similar Documents

Publication Publication Date Title
US10277395B2 (en) Cryptographic key-generation with application to data deduplication
Liu et al. An efficient privacy-preserving outsourced computation over public data
WO2012132136A1 (ja) 暗号処理システム、鍵生成装置、暗号化装置、復号装置、暗号処理方法及び暗号処理プログラム
US20220045840A1 (en) Methods and systems for somewhat homomorphic encryption and key updates based on geometric algebra for distributed ledger/blockchain technology
WO2012011565A1 (ja) 秘密分散システム、分散装置、分散管理装置、取得装置、秘密分散方法、プログラム、及び記録媒体
WO2010123114A1 (ja) 秘密分散システム、分散装置、分散管理装置、取得装置、それらの処理方法、秘密分散方法、プログラム及び記録媒体
Basu et al. Privacy preserving collaborative filtering for SaaS enabling PaaS clouds
Mishra et al. Dynamic large branching hash tree based secure and efficient dynamic auditing protocol for cloud environment
Drucker et al. Achieving trustworthy Homomorphic Encryption by combining it with a Trusted Execution Environment.
ALmarwani et al. An effective, secure and efficient tagging method for integrity protection of outsourced data in a public cloud storage
US20220413807A1 (en) Secure random number generation system, secure computation apparatus, secure random number generation method, and program
JP4773941B2 (ja) 代理署名装置、署名者装置、署名検証装置及びそれらのプログラム
Hedabou Cloud Key Management Based on Verifiable Secret Sharing
JP4875448B2 (ja) 鍵生成装置、匿名署名システム、管理装置、匿名署名方法及びプログラム
JP2010160235A (ja) 検索システム、端末装置、データベース装置、検索方法及びプログラム
JP4528114B2 (ja) 鍵生成装置、暗号化装置、検査装置、復号化装置並びに鍵生成プログラム、暗号化プログラム、検査プログラム、復号化プログラム
Thirumalai et al. Modelling a side channel resistant CHAN-PKC cryptomata for medical data security
Hong et al. Constructing conditional PKEET with verification mechanism for data privacy protection in intelligent systems
JP4758814B2 (ja) 匿名暗号文通信システム、鍵生成装置、通信装置、それらの方法、プログラム及び記録媒体
Bickson et al. Peer-to-peer secure multi-party numerical computation facing malicious adversaries
Kim et al. An efficient public key functional encryption for inner product evaluations
Wang et al. Faster fog-aided private set intersectionwith integrity preserving
JP2009130872A (ja) 鍵共有方法、第1装置、第2装置、及び、それらのプログラム
JP2005084568A (ja) セキュリティ方法、セキュリティ装置及びセキュリティプログラム
Patsakis et al. Private aggregation with custom collusion tolerance

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110603

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110614

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110624

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140701

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4773941

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees