(57)【要約】【課題】署名者が署名対象を制限しつつ署名生成処理を第三者に委託する。【解決手段】署名者装置は、任意値ｔを選択し、メッセージｍに対してｈ＝Ｈ（ｍ，ｔ）∈Ｇ２を算出し、秘密鍵ｓｋを用いてｗ＝ｈｓｋ∈Ｇ２を算出し、ｍとｔとｗとｒｋ（＝ｇ１ｓｋ∈Ｇ１）とを代理署名装置２０に送信する。代理署名装置２０は、これらを受信し、ｆ＝ｅ（ｇ１，ｈ）∈Ｇ３を算出し、任意値ｒを選択し、ａ＝（ｇ３）ｒ∈Ｇ３とｂ＝ｆｒ∈Ｇ３を算出し、ｃ＝Ｈ’（ｍ，ｔ，ｗ，ａ，ｂ）を算出し、ｚ＝（ｇ１）ｒ／（ｒｋ）ｃ∈Ｇ１を算出する。そして、代理署名装置は、メッセージｍと署名σ＝（ｔ，ｗ，ｃ，ｚ）とを送信する。【選択図】図４
2008148033.tif 000002
【特許請求の範囲】
【請求項１】
署名者装置に代わって署名生成を行う代理署名装置であって、
ｇ１が巡回群Ｇ１の生成元であり、ｇ２が巡回群Ｇ２の生成元であり、ｅが巡回群Ｇ１の元と巡回群Ｇ２の元とを入力として巡回群Ｇ３の元を出力するペアリング関数ｅ：Ｇ１×Ｇ２→Ｇ３であり、ｇ３＝ｅ（ｇ１，ｇ２）∈Ｇ３であり、上記署名者装置の秘密鍵が整数ｓｋであり、上記署名者装置の公開鍵がｐｋ＝（ｇ２）ｓｋ∈Ｇ２であり、上記署名者装置の署名生成鍵がｒｋ＝（ｇ１）ｓｋ∈Ｇ１であり、ｍが署名対象のメッセージであり、ｔが署名者装置で選択された任意値であり、Ｈが巡回群Ｇ２の元を値域とする関数Ｈ：｛０，１｝＊→Ｇ２であり、ｈが関数値ｈ＝Ｈ（ｍ，ｔ）∈Ｇ２であり、Ｈ’が値域を整数とする関数であり、ｗ＝ｈｓｋ∈Ｇ２であり、
少なくとも上記メッセージｍと上記任意値ｔと上記ｗと上記署名生成鍵ｒｋと上記公開鍵ｐｋとを受信する受信部と、
少なくとも上記メッセージｍと上記任意値ｔと上記ｗと上記署名生成鍵ｒｋと上記公開鍵ｐｋとを格納する記憶部と、
ｆ＝ｅ（ｇ１，ｈ）∈Ｇ３を算出する第１ペアリング演算部と、
整数である任意値ｒを選択する任意値選択部と、
ａ＝（ｇ３）ｒ∈Ｇ３を算出する第１Ｇ３演算部と、
ｂ＝ｆｒ∈Ｇ３を算出する第２Ｇ３演算部と、
ｃ＝Ｈ’（ｍ，ｔ，ｗ，ａ，ｂ）を算出する第１関数演算部と、
ｚ＝（ｇ１）ｒ／（ｒｋ）ｃ∈Ｇ１を算出するＧ１演算部と、
上記メッセージｍと署名σ＝（ｔ，ｗ，ｃ，ｚ）とを送信する送信部と、
を有することを特徴とする代理署名装置。
【請求項２】
請求項１に記載の代理署名装置であって、
ｅ（ｒｋ，ｇ２）∈Ｇ３を算出する第２ペアリング演算部と、
ｅ（ｇ１，ｐｋ）∈Ｇ３を算出する第３ペアリング演算部と、
ｅ（ｒｋ，ｇ２）＝ｅ（ｇ１，ｐｋ）が成立するか否かを判定し、これが成立した場合に上記署名生成鍵ｒｋと上記公開鍵ｐｋとを受理する旨を出力し、これが成立しなかった場合に上記署名生成鍵ｒｋと上記公開鍵ｐｋとを拒絶する旨を出力する鍵判定部を有する、
ことを特徴とする代理署名装置。
【請求項３】
請求項１又は２に記載の代理署名装置であって、
ｈ’’＝Ｈ（ｍ，ｔ）∈Ｇ２を算出する第２関数演算部と、
ｅ（ｒｋ，ｈ’’）∈Ｇ３を算出する第４ペアリング演算部と、
ｅ（ｇ１，ｗ）∈Ｇ３を算出する第５ペアリング演算部と、
ｅ（ｒｋ，ｈ’’）＝ｅ（ｇ１，ｗ）が成立するか否かを判定し、これが成立した場合に上記任意値ｔと上記ｗとを受理する旨を出力し、これが成立しなかった場合に上記任意値ｔと上記ｗとを拒絶する旨を出力する署名可能化子判定部を有する、
ことを特徴とする代理署名装置。
【請求項４】
代理署名装置に署名を生成させる署名者装置であって、
整数の秘密鍵ｓｋを格納する第１記憶部と、
ｇ１が巡回群Ｇ１の生成元である場合における、署名生成鍵ｒｋ＝（ｇ１）ｓｋ∈Ｇ１を格納する第２記憶部と、
署名対象のメッセージｍを格納する第３記憶部と、
任意値ｔを選択する任意値選択部と、
Ｇ２が巡回群であり、ＨがＧ２の元を値域とする関数Ｈ：｛０，１｝＊→Ｇ２である場合における、関数値ｈ＝Ｈ（ｍ，ｔ）∈Ｇ２を算出する関数演算部と、
ｗ＝ｈｓｋ∈Ｇ２を算出するＧ２演算部と、
少なくとも上記メッセージｍと上記任意値ｔと上記演算結果ｗと上記署名生成鍵ｒｋとを上記代理署名装置に送信する送信部と、
を有することを特徴とする署名者装置。
【請求項５】
署名検証を行う署名検証装置であって、
ｇ１が巡回群Ｇ１の生成元であり、ｇ２が巡回群Ｇ２の生成元であり、ｅが巡回群Ｇ１の元と巡回群Ｇ２の元とを入力として巡回群Ｇ３の元を出力するペアリング関数ｅ：Ｇ１×Ｇ２→Ｇ３であり、Ｈが巡回群Ｇ２の元を値域とする関数Ｈ：｛０，１｝＊→Ｇ２であり、Ｈ’が値域を整数とする関数であり、署名者装置の秘密鍵が整数ｓｋであり、当該署名者装置の公開鍵がｐｋ＝（ｇ２）ｓｋ∈Ｇ２であり、
署名対象のメッセージｍと署名σ＝（ｔ，ｗ，ｃ，ｚ）と上記公開鍵ｐｋとを受信する受信部と、
上記メッセージｍと上記署名σ＝（ｔ，ｗ，ｃ，ｚ）と上記公開鍵ｐｋとを格納する記憶部と、
関数値ｈ’＝Ｈ（ｍ，ｔ）を算出する第１関数演算部と、
ａ’＝ｅ（ｚ，ｇ２）・ｅ（ｇ１，ｐｋ）ｃ∈Ｇ３を算出する第１ペアリング演算部と、
ｂ’＝ｅ（ｚ，ｈ’）・ｅ（ｇ１，ｗ）ｃ∈Ｇ３を算出する第２ペアリング演算部と、
Ｈ’（ｍ，ｔ，ｗ，ａ’，ｂ’）を算出する第２関数演算部と、
ｃ＝Ｈ’（ｍ，ｔ，ｗ，ａ’，ｂ’）を満たすか否かを判定し、これが成立した場合に上記署名σを受理する旨を出力し、これが成立しなかった場合に上記署名σを拒絶する旨を出力する署名判定部とを有する、
ことを特徴とする署名検証装置。
【請求項６】
署名クループを構成するｕ個（ｕ≧２）の署名者装置の１つであるｉ番目（ｉ∈Ｌ，Ｌ＝｛０，…，ｕ−１｝）の署名者装置に代わって署名生成を行う代理署名装置であって、
ｇ１が巡回群Ｇ１の生成元であり、ｇ２が巡回群Ｇ２の生成元であり、ｅが巡回群Ｇ１の元と巡回群Ｇ２の元とを入力として巡回群Ｇ３の元を出力するペアリング関数ｅ：Ｇ１×Ｇ２→Ｇ３であり、ｇ３＝ｅ（ｇ１，ｇ２）∈Ｇ３であり、ｉ番目の署名者装置の秘密鍵が整数ｓｋ（ｉ）であり、各ｊ番目（∀ｊ∈Ｌ，ｊ≠ｉ）の署名者装置の秘密鍵が整数ｓｋ（ｊ）であり、各ｊ番目の署名者装置の公開鍵がｐｋ（ｊ）＝（ｇ２）ｓｋ（ｊ）∈Ｇ２であり、ｉ番目の署名者装置の署名生成鍵ｒｋ（ｉ）がｒｋ（ｉ）＝（ｇ１）ｓｋ（ｉ）∈Ｇ１であり、ｍ（ｉ）が署名対象のメッセージであり、ｔ（ｉ）がｉ番目の署名者装置で選択された任意値であり、Ｈが巡回群Ｇ２の元を値域とする関数Ｈ：｛０，１｝＊→Ｇ２であり、ｈ（ｉ）が関数値ｈ（ｉ）＝Ｈ（ｍ（ｉ），ｔ（ｉ））∈Ｇ２であり、Ｈ’が値域を整数とする関数であり、ｗ（ｉ）＝｛ｈ（ｉ）｝ｓｋ（ｉ）∈Ｇ２であり、
少なくとも上記メッセージｍ（ｉ）と上記任意値ｔ（ｉ）と上記ｗ（ｉ）と上記署名生成鍵ｒｋ（ｉ）と上記各公開鍵ｐｋ（ｊ）とを受信する受信部と、
少なくとも上記メッセージｍ（ｉ）と上記任意値ｔ（ｉ）と上記ｗ（ｉ）と上記署名生成鍵ｒｋ（ｉ）と上記各公開鍵ｐｋ（ｊ）とを格納する記憶部と、
ｆ＝ｅ（ｇ１，ｈ（ｉ））∈Ｇ３を算出する第１ペアリング演算部と、
整数である任意値ｒを選択する第１任意値選択部と、
ａ（ｉ）＝（ｇ３）ｒ∈Ｇ３を算出する第１Ｇ３演算部と、
ｂ（ｉ）＝ｆｒ∈Ｇ３を算出する第２Ｇ３演算部と、
各ｊに対して任意値ｗ（ｊ）∈Ｇ２を選択する第２任意値選択部と、
各ｊに対して任意値ｚ（ｊ）∈Ｇ１を選択する第３任意値選択部と、
各ｊに対して整数の任意値ｃ（ｊ）を選択する第４任意値選択部と、
ａ（ｊ）＝ｅ（ｚ（ｊ），ｇ２）・ｅ（ｇ１，ｐｋ（ｊ））ｃ（ｊ）∈Ｇ３を算出する第２ペアリング演算部と、
ｂ（ｊ）＝ｅ（ｚ（ｊ），ｈ（ｉ））・ｅ（ｇ１，ｗ（ｊ））ｃ（ｊ）∈Ｇ３を算出する第３ペアリング演算部と、
ｃ＝Ｈ’（ｍ（ｉ），ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ａ（ｋ））∀ｋ∈Ｌ，（ｂ（ｋ））∀ｋ∈Ｌ）を算出する関数演算部と、
ｃ（ｉ）＝ｃ−Σｊ≠ｉｃ（ｊ） ｍｏｄ ｐを算出する整数演算部と、
ｚ（ｉ）＝（ｇ１）ｒ／｛ｒｋ（ｉ）｝ｃ（ｉ）∈Ｇ１を算出するＧ１演算部と、
上記メッセージｍ（ｉ）と署名σ＝（ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ｃ（ｋ））∀ｋ∈Ｌ，（ｚ（ｋ））∀ｋ∈Ｌ）とを送信する送信部と、
を有することを特徴とする代理署名装置。
【請求項７】
署名クループを構成するｕ個（ｕ≧２）の署名者装置の１つであるｉ番目（ｉ∈Ｌ，Ｌ＝｛０，…，ｕ−１｝）の署名者装置に代わって代理署名装置が生成した署名を検証する署名検証装置であって、
ｇ１が巡回群Ｇ１の生成元であり、ｇ２が巡回群Ｇ２の生成元であり、ｅが巡回群Ｇ１の元と巡回群Ｇ２の元とを入力として巡回群Ｇ３の元を出力するペアリング関数ｅ：Ｇ１×Ｇ２→Ｇ３であり、Ｈが巡回群Ｇ２の元を値域とする関数Ｈ：｛０，１｝＊→Ｇ２であり、Ｈ’が値域を整数とする関数であり、各ｋ番目（∀ｋ∈Ｌ）の署名者装置の秘密鍵が整数ｓｋ（ｋ）であり、各ｋ番目の署名者装置の公開鍵がｐｋ（ｋ）＝（ｇ２）ｓｋ（ｋ）∈Ｇ２であり、
署名対象のメッセージｍ（ｉ）と署名σ＝（ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ｃ（ｋ））∀ｋ∈Ｌ，（ｚ（ｋ））∀ｋ∈Ｌ）と上記各公開鍵ｐｋ（ｋ）とを受信する受信部と、
上記メッセージｍ（ｉ）と署名σ＝（ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ｃ（ｋ））∀ｋ∈Ｌ，（ｚ（ｋ））∀ｋ∈Ｌ）と上記各公開鍵ｐｋ（ｋ）とを格納する記憶部と、
関数値ｈ（ｉ）’＝Ｈ（ｍ（ｉ），ｔ（ｉ））を算出する第１関数演算部と、
ａ（ｋ）’＝ｅ（ｚ（ｋ），ｇ２）・ｅ（ｇ１，ｐｋ（ｋ））ｃ（ｋ）∈Ｇ３を算出する第１ペアリング演算部と、
ｂ（ｋ）’＝ｅ（ｚ（ｋ），ｈ（ｉ）’）・ｅ（ｇ１，ｗ（ｋ））ｃ（ｋ）∈Ｇ３を算出する第２ペアリング演算部と、
Ｈ’（ｍ（ｉ），ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ａ（ｋ）’）∀ｋ∈Ｌ，（ｂ（ｋ）’）∀ｋ∈Ｌ）を算出する第２関数演算部と、
Ｈ’（ｍ（ｉ），ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ａ（ｋ）’）∀ｋ∈Ｌ，（ｂ（ｋ）’）∀ｋ∈Ｌ）＝Σk∈Ｌｃ（ｋ）  ｍｏｄ  ｐを満たすか否かを判定し、これが成立した場合に上記署名σを受理する旨を出力し、これが成立しなかった場合に上記署名σを拒絶する旨を出力する署名判定部とを有する、
ことを特徴とする署名検証装置。
【請求項８】
請求項１，２，３、６のいずれかに記載の代理署名装置としてコンピュータを機能させるためのプログラム。
【請求項９】
請求項４記載の署名者装置としてコンピュータを機能させるためのプログラム。
【請求項１０】
請求項５又は７に記載の署名検証装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算量理論に基づく情報セキュリティ技術に関し、特に、署名技術に関する。
【背景技術】
【０００２】
近年、公衆電話通信網の発達に従い、情報セキュリティ技術に注目が集まっている。情報セキュリティ技術は、情報理論や計算量理論など様々な背景技術に基づき構成されうる。中でも計算量理論に基づくものが効率等の面から最も実用的と考えられており、現在盛んに研究が行われている。
このような計算量理論に基づく情報セキュリティ技術の１つに署名技術がある。
計算量理論に基づく署名技術としては、ＲＳＡ署名や楕円ＥｌＧａｍａｌ署名などが知られている。
また、署名者の匿名性を守りつつ電子署名を行う匿名署名技術も存在する。この匿名署名には大別して以下の２つの方法がある。
【０００３】
１つは１９９１年にChaumらが提案した「グループ署名」の概念である（例えば、非特許文献１参照）。この方法には以下の性質がある。
・署名が確かにグループのメンバーによって作成されたことを第三者が検証できる。
・署名がメンバーの誰によって作成されたかに関する情報を第三者は得ることができない。
・グループ管理者は署名がメンバーの誰によって作成されたかを知ることができる。
・署名のグループを決定する為に予めグループ管理者と通信する必要がある。
なお、この最後の性質は、グループからメンバーを排除したり新たにメンバーを加えたり、グループメンバの一部だけを含む子グループを作成する場合にもグループ管理者と通信する必要があることを意味している。
【０００４】
一方、もう１つの匿名署名方法は、２００１年にRivestらが提案した「リング署名」の概念である（例えば、非特許文献２参照）。この方法には以下の性質がある。
・署名が確かにグループのメンバーによって作成されたことを第三者が検証できる。
・署名がメンバーの誰によって作成されたかに関する情報を第三者は得ることができない。
・グループ管理者は存在しない。グループは公開鍵リストの中から署名者が任意に指定できる。
この方法にはグループ管理者が存在しない。署名者は、自身が所有する公開鍵リストから任意に公開鍵を選び、自分の公開鍵、秘密鍵、及び選んだ公開鍵から自分を含む任意のグループに関して匿名署名を生成できる。
【特許文献１】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
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、従来の署名技術では、署名者が署名対象を制限しつつ署名生成処理を第三者に委託することができなかった。
通常の電子署名は、署名者のみが知り得る秘密鍵を用い、公開鍵暗号方式によって署名対象のメッセージを暗号化した暗号文の一種である。署名検証者は、署名者の公開鍵を用いてその暗号文が復号できることを根拠に、確かにその電子署名を生成したのは秘密鍵を知り得る署名者であると納得する。
【０００６】
このような署名方式において署名者が署名生成処理を第三者に委託する場合、署名者は自らの秘密鍵をその第三者に知らせなければならない。しかし、秘密鍵を知った第三者は、その後秘密鍵が有効である限り、自由に署名者の署名を生成できてしまう。そのため、署名者が署名対象を特定のメッセージに制限して第三者に署名生成を委託したとしても、一旦秘密鍵を知った第三者は署名者の意思とは無関係に署名者の署名を生成できてしまう。
【０００７】
本発明はこのような点に鑑みてなされたものであり、署名者が署名対象を制限しつつ署名生成処理を第三者に委託することができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
第１の本発明では、署名者装置が代理署名装置に署名を生成させ、その署名を署名検証装置が検証する。なお、第１の本発明では、ｇ１が巡回群Ｇ１の生成元であり、ｇ２が巡回群Ｇ２の生成元であり、ｅが巡回群Ｇ１の元と巡回群Ｇ２の元とを入力として巡回群Ｇ３の元を出力するペアリング関数ｅ：Ｇ１×Ｇ２→Ｇ３であり、ｇ３＝ｅ（ｇ１，ｇ２）∈Ｇ３であり、署名者装置の秘密鍵が整数ｓｋであり、署名者装置の公開鍵がｐｋ＝（ｇ２）ｓｋ∈Ｇ２であり、署名者装置の署名生成鍵がｒｋ＝（ｇ１）ｓｋ∈Ｇ１であり、ｍが署名対象のメッセージであり、ｔが署名者装置で選択された任意値であり、Ｈが巡回群Ｇ２の元を値域とする関数Ｈ：｛０，１｝＊→Ｇ２であり、ｈが関数値ｈ＝Ｈ（ｍ，ｔ）∈Ｇ２であり、Ｈ’が値域を整数とする関数であり、ｗ＝ｈｓｋ∈Ｇ２であるものとする。また、巡回群Ｇにおけるα・β∈Ｇは、αとβとを被演算子として巡回群Ｇで定義されている演算を行うことを意味する。また、αβ∈Ｇは、αを被演算子として巡回群Ｇで定義されている演算をβ回行うことを意味する。また、α／β∈Ｇは、αと巡回群で定義されたβの逆元とを演算子とし、巡回群Ｇで定義されている演算を行うことを意味する。例えば、巡回群Ｇが楕円曲線Ｅ上の有理点のなす群であった場合、α・β∈Ｇは楕円曲線Ｅ上でのαとβとの楕円加算を意味し、αβ∈Ｇはαの楕円スカラーβ倍算を意味し、α／β∈Ｇはαからβの楕円減算を意味する。また、例えば、巡回群Ｇが有限体の乗法群であった場合、α・β∈Ｇはαとβとの乗算を意味し、αβ∈Ｇはαのβ乗を意味し、α／β∈Ｇはαのβによる除算を意味する。
【０００９】
まず、署名者装置は、整数の秘密鍵ｓｋを第１記憶部に格納し、署名生成鍵ｒｋを第２記憶部に格納し、署名対象のメッセージｍを第３記憶部に格納する。そして、署名者装置は、任意値選択部で任意値ｔを選択し、関数演算部で関数値ｈ＝Ｈ（ｍ，ｔ）∈Ｇ２を算出し、Ｇ２演算部でｗ＝ｈｓｋ∈Ｇ２を算出する。その後、署名者装置は、少なくともメッセージｍと任意値ｔと演算結果ｗと署名生成鍵ｒｋとを代理署名装置に送信する。なお、本発明におけるＨ（＊）は、＊を含む情報に関数Ｈを作用させた演算結果を意味する。また、「＊を含む情報」とは、＊と他の情報とからなる情報だけではなく、＊のみからなる情報をも包含する概念である。ただし、この際「＊を含む情報」の構成は全てのＨ（＊）間において統一する。
【００１０】
代理署名装置は、受信部で少なくともメッセージｍと任意値ｔとｗと署名生成鍵ｒｋと公開鍵ｐｋとを受信し、これらを記憶部に格納する。次に、代理署名装置は、第１ペアリング演算部でｆ＝ｅ（ｇ１，ｈ）∈Ｇ３を算出し、任意値選択部が整数である任意値ｒを選択し、第１Ｇ３演算部でａ＝（ｇ３）ｒ∈Ｇ３を算出し、第２Ｇ３演算部でｂ＝ｆｒ∈Ｇ３を算出する。さらに、代理署名装置は、第１関数演算部でｃ＝Ｈ’（ｍ，ｔ，ｗ，ａ，ｂ）を算出し、Ｇ１演算部でｚ＝（ｇ１）ｒ／（ｒｋ）ｃ∈Ｇ１を算出し、送信部でメッセージｍと署名σ＝（ｔ，ｗ，ｃ，ｚ）とを送信する。なお、本発明におけるＨ’（＊）は、＊を含む情報に関数Ｈ’を作用させた演算結果を意味する。また、この際「＊を含む情報」の構成は全てのＨ’（＊）間において統一する。また、σ＝（＊）は、＊を含む情報がσであることを意味する。また、この際「＊を含む情報」の構成は全てのσ＝（＊）間において統一する。
【００１１】
また、第１の本発明の署名検証装置は、署名σの検証を以下のように行う。
まず、署名検証装置は受信部で、署名対象のメッセージｍと署名σ＝（ｔ，ｗ，ｃ，ｚ）と公開鍵ｐｋとを受信し、これらを記憶部に格納する。署名検証装置は、第１関数演算部で関数値ｈ’＝Ｈ（ｍ，ｔ）を算出し、第１ペアリング演算部でａ’＝ｅ（ｚ，ｇ２）・ｅ（ｇ１，ｐｋ）ｃを算出し、第２ペアリング演算部でｂ’＝ｅ（ｚ，ｈ’）・ｅ（ｇ１，ｗ）ｃを算出し、第２関数演算部でＨ’（ｍ，ｔ，ｗ，ａ’，ｂ’）を算出する。そして、署名検証装置の署名判定部は、ｃ＝Ｈ’（ｍ，ｔ，ｗ，ａ’，ｂ’）を満たすか否かを判定し、これが成立した場合に署名σを受理する旨を出力し、これが成立しなかった場合に署名σを拒絶する旨を出力する。
【００１２】
ここで、メッセージｍと任意値ｔと演算結果ｗと署名生成鍵ｒｋと公開鍵ｐｋとを与えられた代理署名装置は、上述のようにメッセージｍについての署名者装置の署名σを生成できる。また、この署名σが署名検証装置での署名検証で受理されるのはｗ＝ｈｓｋ∈Ｇ２，ｈ＝Ｈ（ｍ，ｔ）の関係を満たす場合のみである。署名者装置が代理署名装置に署名生成を委託する際に代理署名装置に送るメッセージｍと任意値ｔと演算結果ｗとはこの関係を満たす。一方、代理署名装置は署名者装置の秘密鍵ｓｋを知らない。そのため、離散対数問題の求解が困難であるとの仮定のもとでは、代理署名装置は、任意のメッセージｍ’に対してｗ’＝ｈ’ｓｋ∈Ｇ２，ｈ’＝Ｈ（ｍ’，ｔ’）の関係を満たすｗ’，ｍ’，ｔ’を求めることは困難である。よって、代理署名装置は、署名者装置から署名生成を委託されたメッセージｍ以外のメッセージｍ’に対し、署名検証装置に受理される署名者装置の署名を生成することができない。すなわち、第１の本発明では、署名生成を行うための署名生成鍵ｒｋと署名対象のメッセージを特定するための秘密鍵ｓｋとを独立させ、署名者装置が代理署名装置に署名生成を委託する際、署名生成鍵ｒｋは代理署名装置に知らせるが秘密鍵ｓｋは代理署名装置に知らせない。これにより、代理署名装置は、署名者者装置が特定したメッセージｍについては受理される署名を生成できるが、それ以外のメッセージについては受理される署名を生成できない。
【００１３】
なお、署名者生成装置が代理署名装置に委託した署名σが署名検証装置での検証で受理される理由は以下の通りである。
上述のように正当に署名生成が代理署名装置に委託された場合、ｈ＝Ｈ（ｍ，ｔ）を満たす。また、ｆ＝ｅ（ｇ１，ｈ）であり、ｇ３＝ｅ（ｇ１，ｇ２）∈Ｇ３であるため、代理署名装置が生成するａ＝（ｇ３）ｒ∈Ｇ３及びｂ＝ｆｒ∈Ｇ３は、
a=e(g1,g2)ｒ∈G3 …(1)
b=e(g1,h)ｒ∈G3   …(2)
と変形できる。
【００１４】
一方、ｚ＝（ｇ１）ｒ／（ｒｋ）ｃ∈Ｇ１であり、ｒｋ＝（ｇ１）ｓｋ∈Ｇ１であり、ｐｋ＝（ｇ２）ｓｋ∈Ｇ２であり、正当に署名生成が代理署名装置に委託された場合、ｗ＝ｈｓｋ∈Ｇ２であり、ｈ’＝Ｈ（ｍ，ｔ）＝ｈであるため、署名検証装置で算出されるａ’＝ｅ（ｚ，ｇ２）・ｅ（ｇ１，ｐｋ）ｃ∈Ｇ３及びｂ’＝ｅ（ｚ，ｈ’）・ｅ（ｇ１，ｗ）ｃ∈Ｇ３は、
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)
と変形できる。後述のようにペアリング関数ｅには、楕円曲線上の任意の３点Ｒ１，Ｒ２，Ｒ３に対して、ｅ（Ｒ１・Ｒ２，Ｒ３）＝ｅ（Ｒ１，Ｒ３）・ｅ（Ｒ２，Ｒ３）とｅ（Ｒ１，Ｒ２・Ｒ３）＝ｅ（Ｒ１，Ｒ２）・ｅ（Ｒ１，Ｒ３）との関係が成り立つ。なお、ここでのＲ１・Ｒ２やＲ２・Ｒ３は、楕円曲線上の有理点のなす巡回群での演算であり、これらの演算は楕円加算である。一方、ｅ（Ｒ１，Ｒ３）・ｅ（Ｒ２，Ｒ３）やｅ（Ｒ１，Ｒ２）・ｅ（Ｒ１，Ｒ３）は、有限体の乗法群での演算であり、これらの演算は乗算である。
【００１５】
この関係により、式（３）（４）は以下のように変形できる。
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)
（１）（２）（５）（６）から分かるように、正当に署名生成が代理署名装置に委託され署名が生成された場合、ａ＝ａ’，ｂ＝ｂ’となり、Ｈ’（ｍ，ｔ，ｗ，ａ’，ｂ’）＝Ｈ’（ｍ，ｔ，ｗ，ａ，ｂ）＝ｃとなるため、署名σは署名検証装置に受理される。
【００１６】
また、第１の本発明の代理署名装置は、好ましくは、第２ペアリング演算部でｅ（ｒｋ，ｇ２）を算出し、第３ペアリング演算部でｅ（ｇ１，ｐｋ）を算出する。そして、代理署名装置は、鍵判定部でｅ（ｒｋ，ｇ２）＝ｅ（ｇ１，ｐｋ）が成立するか否かを判定し、これが成立した場合に署名生成鍵ｒｋと公開鍵ｐｋとを受理する旨を出力し、これが成立しなかった場合に署名生成鍵ｒｋと公開鍵ｐｋとを拒絶する旨を出力する。
【００１７】
ここで、正当に生成された公開鍵はｐｋ＝（ｇ２）ｓｋ∈Ｇ２を満たし、署名生成鍵はｒｋ＝（ｇ１）ｓｋ∈Ｇ１を満たす。よって、上述のペアリング関数ｅの性質を用いると、ｅ（ｒｋ，ｇ２），ｅ（ｇ１，ｐｋ）はそれぞれ以下のように変形でき、ｅ（ｒｋ，ｇ２）＝ｅ（ｇ１，ｐｋ）が成立する。
e(rk,g2)=e((g1)sk,g2)=e(g1,g2)sk…(7)
e(g1,pk)=e(g1,(g2)sk)=e(g1,g2)sk…(8)
一方、署名生成鍵ｒｋ及び公開鍵ｐｋの少なくとも一方が不正であり、ｐｋ＝（ｇ２）ｓｋ∈Ｇ２或いはｒｋ＝（ｇ１）ｓｋ∈Ｇ１を満たさない場合、ｅ（ｒｋ，ｇ２）≠ｅ（ｇ１，ｐｋ）となり、署名生成鍵ｒｋ及び公開鍵ｐｋは受理されない。これにより、代理署名装置が不正な鍵によって署名を生成することを防止できる。
【００１８】
また、第１の本発明の代理署名装置は、好ましくは、第２関数演算部でｈ’’＝Ｈ（ｍ，ｔ）∈Ｇ２を算出し、第４ペアリング演算部でｅ（ｒｋ，ｈ’’）を算出し、第５ペアリング演算部でｅ（ｇ１，ｗ）を算出する。そして、署名可能化子判定部でｅ（ｒｋ，ｈ’’）＝ｅ（ｇ１，ｗ）が成立するか否かを判定し、これが成立した場合に任意値ｔとｗとを受理する旨を出力し、これが成立しなかった場合に任意値ｔとｗとを拒絶する旨を出力する。
【００１９】
ここで、正規に生成された署名生成鍵はｒｋ＝（ｇ１）ｓｋ∈Ｇ１を満たし、ｗはｗ＝ｈｓｋ∈Ｇ２，ｈ＝Ｈ（ｍ，ｔ）＝ｈ’’∈Ｇ２を満たす。よって、上述のペアリング関数ｅの性質を用いると、ｅ（ｒｋ，ｈ’’），ｅ（ｇ１，ｗ）はそれぞれ以下のように変形でき、ｅ（ｒｋ，ｈ’’）＝ｅ（ｇ１，ｗ）を満たす。
e(rk,h’’)=e(rk,h’’)=e(g1,h)sk …(9)
e(g1,w)=e(g1,hsk)=e(g1,h)sk…(10)
一方、ｔ及びｗのいずれかが不正であり、ｗ＝ｈｓｋ∈Ｇ２或いはｈ＝Ｈ（ｍ，ｔ）＝ｈ’’∈Ｇ２を満たさない場合、ｅ（ｒｋ，ｈ’’）≠ｅ（ｇ１，ｗ）となり、ｗやｔは受理されない。これにより、代理署名装置が不正なｗやｔによって署名を生成することを防止できる。
【００２０】
また、第２の本発明の代理署名装置は、署名クループを構成するｕ個（ｕ≧２）の署名者装置の１つであるｉ番目（ｉ∈Ｌ，Ｌ＝｛０，…，ｕ−１｝）の署名者装置に代わって署名生成を行う。なお、第２の本発明では、ｇ１が巡回群Ｇ１の生成元であり、ｇ２が巡回群Ｇ２の生成元であり、ｅが巡回群Ｇ１の元と巡回群Ｇ２の元とを入力として巡回群Ｇ３の元を出力するペアリング関数ｅ：Ｇ１×Ｇ２→Ｇ３であり、ｇ３＝ｅ（ｇ１，ｇ２）∈Ｇ３であり、ｉ番目の署名者装置の秘密鍵が整数ｓｋ（ｉ）であり、各ｊ番目（∀ｊ∈Ｌ，ｊ≠ｉ）の署名者装置の秘密鍵が整数ｓｋ（ｊ）であり、各ｊ番目の署名者装置の公開鍵がｐｋ（ｊ）＝（ｇ２）ｓｋ（ｊ）∈Ｇ２であり、ｉ番目の署名者装置の署名生成鍵ｒｋ（ｉ）がｒｋ（ｉ）＝（ｇ１）ｓｋ（ｉ）∈Ｇ１であり、ｍ（ｉ）が署名対象のメッセージであり、ｔ（ｉ）がｉ番目の署名者装置で選択された任意値であり、Ｈが巡回群Ｇ２の元を値域とする関数Ｈ：｛０，１｝＊→Ｇ２であり、ｈ（ｉ）が関数値ｈ（ｉ）＝Ｈ（ｍ（ｉ），ｔ（ｉ））∈Ｇ２であり、Ｈ’が値域を整数とする関数であり、ｗ（ｉ）＝｛ｈ（ｉ）｝ｓｋ（ｉ）∈Ｇ２である。
【００２１】
代理署名装置は、第１の本発明と同様にｉ番目の署名者装置から送信されたメッセージｍ（ｉ）と任意値ｔ（ｉ）とｗ（ｉ）と署名生成鍵ｒｋ（ｉ）と各公開鍵ｐｋ（ｊ）とを受信し、これらを記憶部に格納する。次に代理署名装置は、第１ペアリング演算部でｆ＝ｅ（ｇ１，ｈ（ｉ））∈Ｇ３を算出し、第１任意値選択部で整数である任意値ｒを選択し、第１Ｇ３演算部でａ（ｉ）＝（ｇ３）ｒ∈Ｇ３を算出し、第２Ｇ３演算部でｂ（ｉ）＝ｆｒ∈Ｇ３を算出する。また、代理署名装置は、第２任意値選択部で各ｊに対して任意値ｗ（ｊ）∈Ｇ２を選択し、第３任意値選択部で各ｊに対して任意値ｚ（ｊ）∈Ｇ１を選択し、第４任意値選択部で各ｊに対して整数の任意値ｃ（ｊ）を選択する。また、代理署名装置は、第２ペアリング演算部でａ（ｊ）＝ｅ（ｚ（ｊ），ｇ２）・ｅ（ｇ１，ｐｋ（ｊ））ｃ（ｊ）∈Ｇ３を算出し、第３ペアリング演算部でｂ（ｊ）＝ｅ（ｚ（ｊ），ｈ（ｉ））・ｅ（ｇ１，ｗ（ｊ））ｃ（ｊ）∈Ｇ３を算出する。そして、代理署名装置は、関数演算部でｃ＝Ｈ’（ｍ（ｉ），ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ａ（ｋ））∀ｋ∈Ｌ，（ｂ（ｋ））∀ｋ∈Ｌ）を算出し、整数演算部でｃ（ｉ）＝ｃ−Σｊ≠ｉｃ（ｊ） ｍｏｄ ｐを算出し、Ｇ１演算部でｚ（ｉ）＝（ｇ１）ｒ／{ｒｋ（ｉ）}ｃ（ｉ）∈Ｇ１を算出する。その後、代理署名装置は、送信部でメッセージｍ（ｉ）と署名σ＝（ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ｃ（ｋ））∀ｋ∈Ｌ，（ｚ（ｋ））∀ｋ∈Ｌ）とを送信する。なお、（α（β））∀β∈Ｌは、集合Ｌのすべての元βに対するα（β）を意味する。
【００２２】
また、第２の本発明の署名検証装置は、署名σの検証を以下のように行う。
まず、署名検証装置は受信部で署名対象のメッセージｍ（ｉ）と署名σ＝（ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ｃ（ｋ））∀ｋ∈Ｌ，（ｚ（ｋ））∀ｋ∈Ｌ）と各公開鍵ｐｋ（ｋ）とを受信し、これらを記憶部に格納する。次に署名検証装置は、第１関数演算部で関数値ｈ（ｉ）’＝Ｈ（ｍ（ｉ），ｔ（ｉ））を算出し、第１ペアリング演算部でａ（ｋ）’＝ｅ（ｚ（ｋ），ｇ２）・ｅ（ｇ１，ｐｋ（ｋ））ｃ（ｋ）を算出し、第２ペアリング演算部でｂ（ｋ）’＝ｅ（ｚ（ｋ），ｈ（ｉ）’）・ｅ（ｇ１，ｗ（ｋ））ｃ（ｋ）を算出し、第２関数演算部でＨ’（ｍ（ｉ），ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ａ（ｋ）’）∀ｋ∈Ｌ，（ｂ（ｋ）’）∀ｋ∈Ｌ）算出する。そして、署名検証装置は、署名判定部でＨ’（ｍ（ｉ），ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ａ（ｋ）’）∀ｋ∈Ｌ，（ｂ（ｋ）’）∀ｋ∈Ｌ）＝Σk∈Ｌｃ（ｋ）  ｍｏｄ  ｐを満たすか否かを判定し、これが成立した場合に署名σを受理する旨を出力し、これが成立しなかった場合に署名σを拒絶する旨を出力する。
【００２３】
ここで、メッセージｍ（ｉ）と任意値ｔ（ｉ）とｗ（ｋ）と署名生成鍵ｒｋ（ｉ）と公開鍵ｐｋ（ｊ）とを与えられた代理署名装置は、上述のようにメッセージｍ（ｉ）についての署名者装置の署名σを生成できる。また、この署名σが署名検証装置での署名検証で受理されるのはｗ（ｉ）＝｛ｈ（ｉ）｝ｓｋ（ｉ）∈Ｇ２，ｈ（ｉ）＝Ｈ（ｍ（ｉ），ｔ（ｉ））の関係を満たす場合のみである。署名者装置が代理署名装置に署名生成を委託する際に代理署名装置に送るメッセージｍ（ｉ）と任意値ｔ（ｉ）と演算結果ｗ（ｉ）とはこの関係を満たす。一方、代理署名装置は署名者装置の秘密鍵ｓｋ（ｉ）を知らない。そのため、離散対数問題の求解が困難であるとの仮定のもとでは、代理署名装置は、任意のメッセージｍ’に対してｗ’＝ｈ’ｓｋ∈Ｇ２，ｈ’＝Ｈ（ｍ’，ｔ’）の関係を満たすｗ’，ｍ’，ｔ’を求めることは困難である。よって、代理署名装置は、署名者装置から署名生成を委託されたメッセージｍ（ｉ）あ以外のメッセージｍ’に対し、署名検証装置に受理される署名者装置の署名を生成することができない。すなわち、第２の本発明では、署名生成を行うための署名生成鍵ｒｋ（ｋ）と署名対象のメッセージを特定するための秘密鍵ｓｋ（ｋ）とを独立させ、ｉ番目の署名者装置が代理署名装置に署名生成を委託する際、署名生成鍵ｒｋ（ｉ）は代理署名装置に知らせるが秘密鍵ｓｋ（ｉ）は代理署名装置に知らせない。これにより、代理署名装置は、ｉ番目の署名者者装置が特定したメッセージｍ（ｉ）については受理される署名を生成できるが、それ以外のメッセージについては受理される署名を生成できない。
【００２４】
なお、署名者生成装置が代理署名装置に委託した署名σを署名検証装置で検証できる理由は以下の通りである。
真の署名者はｉ番目（ｉ∈Ｌ）の署名者装置である。代理署名装置は、ｉ番目の署名者装置に対応するｉについては、ａ（ｉ）＝（ｇ３）ｒ∈Ｇ３，ｂ（ｉ）＝ｆｒ∈Ｇ３，ｆ＝ｅ（ｇ１，ｈ（ｉ））∈Ｇ３によってａ（ｉ），ｂ（ｉ）を求め、それ以外のｊ∈Ｌ（ｊ≠ｉ）については、任意にｚ（ｊ）とｗ（ｊ）を選択し、ａ（ｊ）＝ｅ（ｚ（ｊ），ｇ２）・ｅ（ｇ１，ｐｋ（ｊ））ｃ（ｊ）∈Ｇ３，ｂ（ｊ）＝ｅ（ｚ（ｊ），ｈ（ｉ））・ｅ（ｇ１，ｗ（ｊ））ｃ（ｊ）∈Ｇ３によってａ（ｊ），ｂ（ｊ）を求める。そして、代理署名装置は、ｉ番目の署名者装置の署名生成鍵ｒｋ（ｉ）を用い、ｚ（ｉ）＝(ｇ１）ｒ／{ｒｋ（ｉ）}ｃ（ｉ）∈Ｇ１としている。このｚ（ｉ）により、ａ（ｉ），ｂ（ｉ）も、ａ（ｉ）＝ｅ（ｚ（ｉ），ｇ２）・ｅ（ｇ１，ｐｋ（ｉ））ｃ（ｉ）∈Ｇ３，ｂ（ｉ）＝ｅ（ｚ（ｉ），ｈ（ｉ））・ｅ（ｇ１，ｗ（ｉ））ｃ（ｉ）∈Ｇ３と変換でき、ｊに対応するａ（ｊ），ｂ（ｊ）と同様の構成とできる。これにより、真の署名者装置に対応するｉを知らない署名検証装置でも、署名σ及びメッセージｍ（ｉ）から、署名グループを構成する署名者装置に対応するすべてのｋ∈Ｌに対し、ａ（ｋ）’，ｂ（ｋ）’を算出することができ、Ｈ’（ｍ（ｉ），ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ａ（ｋ）’）∀ｋ∈Ｌ，（ｂ（ｋ）’）∀ｋ∈Ｌ）＝Σｋ∈Ｌｃ（ｋ）  ｍｏｄ  ｐの判定を行うことができる。
【００２５】
また、代理署名装置は、ｉ番目の署名者装置から提供された署名生成鍵ｒｋ（ｉ）を用い、ｚ（ｉ）＝（ｇ１）ｒ／{ｒｋ（ｉ）}ｃ（ｉ）∈Ｇ１を算出している。ここで、ｃ（ｉ）はｃ（ｉ）＝ｃ−Σｊ≠ｉｃ（ｊ） ｍｏｄ ｐを満たすが、署名生成鍵ｒｋ（ｉ）を知らない第三者は、このような関係を充足するｚ（ｉ）を算出することができない。すなわち、署名生成鍵ｒｋ（ｉ）を知らない第三者は、ｚ（ｉ）＝(ｇ１)ｒ／{ｒｋ（ｉ）}ｃ（ｉ）∈Ｇ１を正しく算出できない。
【００２６】
これにより、署名検証装置は、Ｈ’（ｍ（ｉ），ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ａ（ｋ）’）∀ｋ∈Ｌ，（ｂ（ｋ）’）∀ｋ∈Ｌ）＝Σｋ∈Ｌｃ（ｋ）  ｍｏｄ  ｐが成立するか否かを判定することにより、署名グループを構成する何れかの署名者装置から正規に委託を受けた代理署名装置が署名生成を行ったか否かを判定することができる。ただし、署名検証装置は、どの署名者装置が代理署名装置に署名生成を委託したかを知ることはできない。
【発明の効果】
【００２７】
以上のように、本発明の匿名署名では、署名者が署名対象を制限しつつ署名生成処理を第三者に委託することができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明を実施するための最良の形態を図面を参照して説明する。
〔前提事項〕
まず、本形態の前提事項について説明する。
［bilinear group］
ペアリング可能な楕円曲線を用いるとbilinear groupと呼ばれる以下の同型写像ｅ，ψをもつ巡回群の組Ｇ１，Ｇ２，Ｇ３を作れることがよく知られている（参考文献１：星野文学，鈴木幸太郎，小林鉄太郎，“Pairingを用いたRevocable DDHとその応用”，SCIS 2005, 1609-1612）。
・eは非退化双線形写像ｅ：Ｇ１×Ｇ２→Ｇ３
・ψは同型写像ψ：Ｇ２→Ｇ１
【００２９】
ここで、Ｇ２，Ｇ３上のＤＤＨ問題を多項式時間で解く方法は知られていない。また、Ｇ１上のＤＨ問題を多項式時間で解く方法は知られていない。また、非退化双線形写像ｅは多項式時間で計算可能に構成でき、ｅをペアリング（pairing）関数と呼ぶ（詳細は後述）。なお、ＤＤＨ問題とは、巡回群Ｇの４つの元（ｇ，ｙ，ｈ，ｗ）に対し（ただしｇは巡回群Ｇの生成元）、δ∈｛０，１｝を求める問題である。ここで、Ｇが乗法群ならばｙ＝ｇα，ｈ＝ｇβ，ｗ＝ｇγに対して（Ｇが加法群ならばｙ＝α・ｇ，ｈ＝β・ｇ，ｗ＝γ・ｇに対して）γ＝α・βを満たすのであればδ＝１が正解となり、γ＝α・βを満たさないのであればδ＝０が正解となる。なお、巡回群Ｇの４つの元（ｇ，ｙ，ｈ，ｗ）をrandom tupleの集合と呼び、そのうちγ＝α・βを満たす巡回群Ｇの４つの元（ｇ，ｙ，ｈ，ｗ）をDDH tupleの集合と呼ぶ。また、ＤＨ問題とは、巡回群Ｇの３つの元（ｇ，ｙ，ｈ）に対し、巡回群Ｇの元ｗを求める問題である。ここで、Ｇが乗法群ならばｙ＝ｇα，ｈ＝ｇβに対するｗ＝ｇα・βが正解となり、Ｇが加法群ならばｙ＝α・ｇ，ｈ＝β・ｇに対するｗ＝α・β・ｇが正解となる。
【００３０】
［楕円曲線］
次に、位数ｑ（一般的にｑは素数）の有限体Ｆｑ上で定義された楕円曲線について説明する。
一般に、有限体Ｆｑ上で定義された楕円曲線Ｅ／Ｆｑとは、ａ１，ａ２，ａ３，ａ４，ａ６∈Ｅ／Ｆｑとして、等式
E/Fq: y2+a1・x・y+a3・y=x3+a2・x2+a4・x+a6    …(11)
を満たす点（ｘ,ｙ）の集合に無限遠点と呼ばれる特別な点Ｏを付加したものである。有限体Ｆｑ上に定義された楕円曲線Ｅ／Ｆｑ上の任意の２点に対して楕円加算と呼ばれる二項演算＋及び楕円曲線Ｅ／Ｆｑ上の任意の１点に対して楕円逆元と呼ばれる単項演算−がそれぞれ定義できる。また、この楕円加算に関して群をなすこと及び楕円加算を用いて楕円スカラー倍算と呼ばれる演算が定義できることはよく知られている。
【００３１】
また、楕円曲線Ｅ／Ｆｑ上の点のうち、ｘ，ｙ∈Ｆｑとなる元の集合に無限遠点Ｏを付加したものをＥ（Ｆｑ）と記述する。また、ｘ，ｙ∈Ｆｑｍとなる元の集合に無限遠点Ｏを付加したものをＥ（Ｆｑｍ）と記述する。楕円加算に関してＥ（Ｆｑｍ）はＥ／Ｆｑの部分群であり、Ｅ（Ｆｑ）はＥ（Ｆｑｍ）の部分群である。
【００３２】
ここでｐを素数とし、楕円曲線Ｅ／Ｆｑ上の点Ｒのうち、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算値ｐ・Ｒがｐ・Ｒ＝Ｏを満たす点Ｒの集合を楕円曲線Ｅ／Ｆｑのｐ等分点と呼び、Ｅ［ｐ］と記述する。Ｅ［ｐ］はＥ／Ｆｑの部分群である。
なお、本形態に用いる楕円曲線Ｅ／Ｆｑは、非trace-2の非超特異楕円曲線であることが望ましい。trace-2の楕円曲線及び超特異楕円曲線では、巡回群上のＤＤＨ問題を多項式時間で解くアルゴリズムが知られており、署名の安全性要件を満たさなくなるからである。
【００３３】
［楕円曲線のフロベニウス写像］
次に、楕円曲線のフロベニウス写像について説明する。
楕円曲線Ｅ／Ｆｑ上の任意の点Ｒ＝（ｘ,ｙ）及び無限遠点Ｏに対し、ｑ乗のフロベニウス写像φは、
【数１】
2008148033.tif 000003
と定義される。
【００３４】
参考文献２：「イアン・Ｆ・ブラケ，ガディエル・セロッシ，ナイジェル・Ｐ・スマート＝著、鈴木治郎＝訳，「楕円曲線暗号」，出版＝ピアソン・エデュケーション，ISBN4-89471-431-0，p112」にあるように、フロベニウス写像φは楕円曲線Ｅ／Ｆｑ上の点Ｒ＝（ｘ,ｙ）∈Ｅ（Ｆｑｍ）に対して、
(φ2‐t・φ+q)・R=Ｏ    …(13)
を満たす（ただし、ｔは、ｑ，ａ１，ａ２，ａ３，ａ４，ａ６によって一意に決定される整数であり、トレースと呼ばれる）。ここで、フロベニウス写像φに関する多項式φ2‐t・φ+qを特性多項式と呼ぶ。楕円曲線をＥ［ｐ］に限定すると、楕円スカラー倍はＺ／ｐＺで考えればよい。Ｚ／ｐＺ係数の特性多項式は分解体上で、
φ2‐t・φ+q=(φ‐λ１)(φ‐λ2)        …(14)
と分解でき、λ１、λ２をフロベニウス写像φの固有値と呼ぶ。以下においては、λ１、λ２∈Ｚ／ｐＺでかつλ１≠λ２である場合を考える。線形空間であるＥ［ｐ］の線形変換関数ψλ１，ψλ２（ただし、下付き添え字のλ１及びλ２は、それぞれλ１及びλ２を表す。）を
ψλ1=(λ1‐λ2)-1(φ‐λ2)       …(15)
ψλ2=(λ2‐λ1)-1(φ‐λ1)       …(16)
と定義すると、任意のＥ［ｐ］上の点Ｒに対して、
P=ψλ1R=(λ1‐λ2)-1(φR‐λ2R)     …(17)
Q=ψλ2R=(λ2‐λ1)-1(φR‐λ1R)     …(18)
なるＥ［ｐ］上の点Ｐ，Ｑが存在する。
【００３５】
ここで、Ｅ［ｐ］の線形変換関数ψλ１による像ψλ１（Ｅ［ｐ］）を、「フロベニウス写像φの固有値λ１に関する固有空間」と呼ぶ。この固有空間ψλ１（Ｅ［ｐ］）は、点Ｐを生成元とした位数ｐの巡回群＜Ｐ＞となる。また、線形空間Ｅ［ｐ］の線形変換関数ψλ２による像ψλ２（Ｅ［ｐ］）を、「フロベニウス写像φの固有値λ２に関する固有空間」と呼ぶ。この固有空間ψλ２（Ｅ［ｐ］）は、点Ｑを生成元とした位数ｐの巡回群＜Ｑ＞となる。例えば、Ｅ［ｐ］かつＥ（Ｆｑ）であるＥ（Ｆｑ）［ｐ］は、フロベニウス写像φの固有値λ１＝１に関する固有空間である。また、固有値λ１＝１に対するもう一方の固有値はλ２＝ｑ  ｍｏｄ  ｐとなり、これに対する固有空間はＥ［ｐ］かつＥ（Ｆｑｍ）であるＥ（Ｆｑｍ）［ｐ］に存在する。また、Ｅ［ｐ］は、これらの巡回群＜Ｐ＞，＜Ｑ＞の直積で表現できる。そして、Ｅ［ｐ］上の任意の点Ｒはε，μ∈Ｚ／ｐＺとすると必ずＲ＝ε・Ｐ＋μ・Ｑと書け、Ｒを生成元とする巡回群＜Ｒ＞が構成できる。
【００３６】
［ペアリング関数］
次に、ペアリング（pairing）関数について説明する。
μｐを、楕円曲線の定義体の代数閉体上の乗法単位元１のｐ乗根の作る乗法群とする。参考文献３：「Alfred. J. Menezes，ELLIPTIC CURVE PUBLIC KEY CRYPTOSYSTEMS， KLUWER ACADEMIC PUBLISHERS， ISBN0-7923-9368-6，pp. 61-81」に示すように、ペアリング関数ｅとは、
ｅ：E[p]×E[p]=μｐ    …(19)
なる関数であり、次の性質を持つ。
［１］Ｅ［ｐ］上の任意の点Ｒ１に対して、ｅ（Ｒ１，Ｒ１）＝１が成り立つ。
［２］Ｅ［ｐ］上の任意の２点Ｒ１、Ｒ２に対して、ｅ（Ｒ１，Ｒ２）＝ｅ（Ｒ２，Ｒ１）−１が成り立つ。
［３］Ｅ［ｐ］上の任意の３点Ｒ１，Ｒ２，Ｒ３に対して、ｅ（Ｒ１・Ｒ２，Ｒ３）＝ｅ（Ｒ１，Ｒ３）・ｅ（Ｒ２，Ｒ３）であり、ｅ（Ｒ１，Ｒ２・Ｒ３）＝ｅ（Ｒ１，Ｒ２）・ｅ（Ｒ１，Ｒ３）が成り立つ。なお、「Ｒ１・Ｒ２」及び「Ｒ２・Ｒ３」の「・」は、Ｅ［ｐ］上で定義された楕円加算を意味する。また、「ｅ（Ｒ１，Ｒ３）・ｅ（Ｒ２，Ｒ３）」及び「ｅ（Ｒ１，Ｒ２）・ｅ（Ｒ１，Ｒ３）」は有限体上の乗算を意味する。
［４］Ｅ［ｐ］上の任意の点Ｒ１に対して、ｅ（Ｒ１，Ｏ）＝１が成り立つ。
［５］Ｅ［ｐ］上のある点Ｒ１がＥ［ｐ］上のすべての点Ｒ２に対して、ｅ（Ｒ１，Ｒ２）＝１を満たすなら、Ｒ１＝Ｏが成り立つ。
【００３７】
なお、ペアリング関数ｅの具体例としては、参考文献２に示されるＷｅｉｌペアリングやＴａｔｅペアリングなどを挙げることができる。また、ペアリング関数が効率的に計算可能な非超特異楕円曲線（non-supersingular curve）の生成方法については、以下の参考文献などに開示されている。
参考文献４：「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」
参考文献５：「M. Scott, P. S. L. M. Barreto, "Generating more NMT elliptic curve s," http://eprint .iacr. org/2004/058/」
参考文献６：「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」
参考文献７：「R. Dupont, A. Enge, F. Morain, "Building curves with arbitrary small MOV degree over finite prime fields," http://eprint.iacr.org/2002/094/」
【００３８】
［本形態の巡回群Ｇ１，Ｇ２］
本形態では、楕円曲線Ｅ／Ｆｑ上の点からなるいずれかの巡回群Ｇ１，Ｇ２を用いる。また、上述のペアリング関数の性質「［１］Ｅ［ｐ］上の任意の点Ｒ１に対して、ｅ（Ｒ１，Ｒ１）＝１」より、巡回群Ｇ１，Ｇ２は重複しないことが望ましい。例えば、前述の［楕円曲線］の欄で示した巡回群＜Ｐ＞，＜Ｑ＞，＜Ｒ＞から、重複しないように２つの巡回群を選びそれぞれ巡回群Ｇ１，Ｇ２とする。
【００３９】
〔第１実施形態〕
次に、本発明の第１実施形態について説明する。
＜全体構成＞
図１は、第１実施形態の署名システム１の全体構成を示した概念図である。
図１に示すように、本形態の署名システム１は、署名生成を依託する署名者装置１０、依託された署名を生成する代理署名装置２０、署名検証を行う署名検証装置３０及び公開鍵サーバ装置４０を有し、これらはネットワーク５０を通じて通信可能に接続されている。なお、各装置は、ＣＰＵ（Central Processing Unit）やメモリを具備する公知のコンピュータに、所定のプログラムが読み込まれることにより構成される。また、署名者装置１０や代理署名装置２０や署名検証装置３０や公開鍵サーバ装置４０は、図１に示す数以上存在してもよいが、本形態では説明の簡略化のため、それぞれ１つずつ存在する場合を例示する。
【００４０】
＜署名者装置１０の構成＞
次に、署名者装置１０の構成について説明する。
［ハードウェア構成］
図２は、第１実施形態における署名者装置１０のハードウェア構成を例示したブロック図である。
図２に例示するように、この例の署名者装置１０は、ＣＰＵ１１、入力部１２、出力部１３、補助記憶装置１４、ＲＯＭ（Read Only Memory）１５、ＲＡＭ（Random Access Memory）１６、バス１７及び通信部１８を有している。
【００４１】
この例のＣＰＵ１１は、制御部１１ａ、演算部１１ｂ及びレジスタ１１ｃを有し、レジスタ１１ｃに読み込まれた各種プログラムに従って様々な演算処理を実行する。また、この例の入力部１２は、データが入力される入力ポート、キーボード、マウス等であり、出力部１３は、データを出力する出力ポート、外部記録媒体へのデータ記憶装置、印刷装置、ディスプレイなどである。補助記憶装置１４は、例えば、ハードディスク、ＭＯ（Magneto-Optical disc）、半導体メモリ等であり、各種プログラムを格納したプログラム領域１４ａ及び各種データが格納されるデータ領域１４ｂを有している。また、ＲＡＭ１６は、例えば、ＳＲＡＭ (Static Random Access Memory)、ＤＲＡＭ (Dynamic Random Access Memory)等であり、上記のプログラムが書き込まれるプログラム領域１６ａ及び各種データが書き込まれるデータ領域１６ｂを有している。また、通信部１８は、ネットワークカードなどである。また、この例のバス１７は、ＣＰＵ１１、入力部１２、出力部１３、補助記憶装置１４、ＲＯＭ１５、ＲＡＭ１６及び通信部１８を、データのやり取りが可能なように接続する。
【００４２】
［ハードウェアとプログラムとの協働］
ＣＰＵ１１（図２）は、読み込まれたＯＳ（Operating System）プログラムに従い、補助記憶装置１４のプログラム領域１４ａに格納されているプログラムをＲＡＭ１６のプログラム領域１６ａに書き込む。同様にＣＰＵ１１は、補助記憶装置１４のデータ領域１４ｂに格納されている各種データを、ＲＡＭ１６のデータ領域１６ｂに書き込む。そして、このプログラムやデータが書き込まれたＲＡＭ１６上のアドレスがＣＰＵ１１のレジスタ１１ｃに格納される。ＣＰＵ１１の制御部１１ｂは、レジスタ１１ｃに格納されたこれらのアドレスを順次読み出し、読み出したアドレスが示すＲＡＭ１６上の領域からプログラムやデータを読み出し、そのプログラムが示す演算を演算部１１ｂに順次実行させ、その演算結果をレジスタ１１ｃに格納していく。なお、各プログラムは、単一のプログラム列として記載されていてもよく、また、少なくとも一部のプログラムが別個のモジュールとしてライブラリに格納されていてもよい。
【００４３】
図３は、ＣＰＵ１１にプログラムが読み込まれることにより構成される第１実施形態における署名者装置１０の機能構成を例示したブロック図である。なお、図３における矢印はデータの流れを示すが、一時メモリ１０ｈや制御部１０ｇに入出力されるデータの流れは省略してある。
【００４４】
図３に例示するように、第１実施形態における署名者装置１０は、鍵生成部１０ａと、入力部１０ｂと、任意値生成部１０ｃと、関数演算部１０ｄと、Ｇ２演算部１０ｅと、通信部１０ｆ（「送信部」に対応）と、制御部１０ｇと、一時メモリ１０ｈと、記憶部１０ｉとを有する。また、鍵生成部１０ａは、秘密鍵生成部１０ａａと署名生成鍵生成部１０ａｂと公開鍵生成部１０ａｃとを有する。
【００４５】
なお、記憶部１０ｉ及び一時メモリ１０ｈは、例えば、図２に記載したレジスタ１１ｃ、補助記憶装置１４、ＲＡＭ１６、或いはこれらを結合した記憶領域に相当する。また、鍵生成部１０ａと、任意値生成部１０ｃと、関数演算部１０ｄと、Ｇ２演算部１０ｅと、制御部１０ｇとは、それぞれ処理を実現するためのプログラムがＣＰＵ１１に読み込まれることにより構成されるものである。また、入力部１０ｂは、所定のプログラムが読み込まれたＣＰＵ１１の制御のもと駆動する入力部１２であり、通信部１０ｆは、所定のプログラムが読み込まれたＣＰＵ１１の制御のもと駆動する通信部１８である。また、署名者装置１０は、制御部１０ｇの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ１０ｈに読み書きされる。
【００４６】
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ（記載していない）を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名者装置１０の機能をコンピュータに実行させるためのプログラムに相当する。
【００４７】
＜代理署名装置２０の構成＞
次に、代理署名装置２０の構成について説明する。
［ハードウェア構成］
代理署名装置２０は、図２に例示したのと同様なコンピュータによって構成される。
［ハードウェアとプログラムとの協働］
署名者装置１０の場合と同様、代理署名装置２０は、コンピュータにプログラムが読み込まれることにより構成される。図４は、第１実施形態における代理署名装置２０の機能構成を例示したブロック図である。なお、図４における矢印はデータの流れを示すが、制御部２０ｊや一時メモリ２０ｋに入出力されるデータの流れは省略してある。
【００４８】
図４に例示するように、第１実施形態における代理署名装置２０は、ペアリング演算部２０ａ，２０ｇａ，２０ｇｂ，２０ｈｂ，２０ｈｃと、任意値選択部２０ｂと、Ｇ３演算部２０ｃ，２０ｄと、関数演算部２０ｅ，２０ｈａと、データ判定部２０ｇｄ，２０ｈｅと、Ｇ１演算部２０ｆと、鍵判定部２０ｇｃと、署名可能化子判定部２０ｈｄと、通信部２０ｉ（「受信部」及び「送信部」に対応）と、制御部２０ｊと、一時メモリ２０ｋと、出力部２０ｍと、記憶部２０ｎとを有する。
【００４９】
なお、記憶部２０ｎおよび一時メモリ２０ｋは、例えば、レジスタ、補助記憶装置、ＲＡＭ、或いはこれらを結合した記憶領域に相当する。また、ペアリング演算部２０ａ，２０ｇａ，２０ｇｂ，２０ｈｂ，２０ｈｃ、任意値選択部２０ｂ、Ｇ３演算部２０ｃ，２０ｄ、データ判定部２０ｇｄ，２０ｈｅ、関数演算部２０ｅ，２０ｈａ、Ｇ１演算部２０ｆ、鍵判定部２０ｇｃ、署名可能化子判定部２０ｈｄ及び制御部２０ｊは、それぞれ処理を実現するためのプログラムがＣＰＵに読み込まれることにより構成されるものである。また、通信部２０ｉは、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動する通信部である。また、出力部２０ｍは、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動する。また、代理署名装置２０は、制御部２０ｊの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ２０ｋに読み書きされる。
【００５０】
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ（記載していない）を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、代理署名装置２０の機能をコンピュータに実行させるためのプログラムに相当する。
【００５１】
＜署名検証装置３０の構成＞
次に、署名検証装置３０の構成について説明する。
［ハードウェア構成］
署名検証装置３０は、図２に例示したのと同様なコンピュータによって構成される。
［ハードウェアとプログラムとの協働］
署名者装置１０の場合と同様、署名検証装置３０は、コンピュータにプログラムが読み込まれることにより構成される。図５は、第１実施形態における署名検証装置３０の機能構成を例示したブロック図である。なお、図５における矢印はデータの流れを示すが、一時メモリ３０ｊや制御部３０ｉに入出力されるデータの流れは省略してある。
【００５２】
図５に例示するように、第１実施形態における署名検証装置３０は、関数演算部３０ａ，３０ｄと、ペアリング演算部３０ｂ，３０ｃと、署名判定部３０ｅと、データ判定部３０ｆと、出力部３０ｇと、通信部３０ｈ（「受信部」に対応）と、制御部３０ｉと、一時メモリ３０ｊと、記憶部３０ｋとを有する。
【００５３】
なお、記憶部３０ｋおよび一時メモリ３０ｊは、例えば、レジスタ、補助記憶装置、ＲＡＭ、或いはこれらを結合した記憶領域に相当する。また、関数演算部３０ａ，３０ｄ、ペアリング演算部３０ｂ，３０ｃ、署名判定部３０ｅ、データ判定部３０ｆ及び制御部３０ｉは、それぞれ処理を実現するためのプログラムがＣＰＵに読み込まれることにより構成されるものである。また、通信部３０ｈは、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動する通信部であり、出力部３０ｇは、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動する。また、署名検証装置３０は、制御部３０ｉの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ３０ｊに読み書きされる。
【００５４】
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ（記載していない）を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名検証装置３０の機能をコンピュータに実行させるためのプログラムに相当する。
【００５５】
＜処理＞
次に、第１実施形態の署名システム１の処理について説明する。
［前処理］
まず、楕円曲線Ｅ／Ｆｑが選択される。前述のように、楕円曲線Ｅ／Ｆｑは、非trace-2の非超特異楕円曲線であることが望ましい。また、楕円曲線Ｅ／Ｆｑ上の点からなる位数がｐである２つの巡回群Ｇ１，Ｇ２（Ｇ１≠Ｇ２）が選択される。例えば、前述の［楕円曲線］の欄で示した巡回群＜Ｐ＞，＜Ｑ＞，＜Ｒ＞から、重複しないように２つの巡回群を選び、それぞれを巡回群Ｇ１，Ｇ２とする。そして、巡回群Ｇ１，Ｇ２の各生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２が選択される。なお、安全性の面から、ｐは素数や因数分解が困難な合成数であることが望ましいが、ｐがその他の整数であってもよい。また、巡回群Ｇ１，Ｇ２の各群のビット長がセキュリティパラメータとなる。また、また、ペアリング関数ｅ：Ｇ１×Ｇ２→Ｇ３が選択される。そして、署名者装置１０の記憶部１０ｉには、生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２とｐとが格納される。また、代理署名装置２０の記憶部２０ｎには、生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２とｐとｇ３＝ｅ（ｇ１，ｇ２）≠１∈Ｇ３とが格納される。また、署名検証装置３０の記憶部３０ｋには、生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２とｐとが格納される。
【００５６】
また、２つの別個のハッシュ関数Ｈ：｛０，１｝＊→Ｇ２及びＨ’：｛０，１｝＊→Ｚｑが設定される。ここで、ハッシュ関数Ｈ：｛０，１｝＊→Ｇ２は、任意のビット値を巡回群Ｇ２の元に写すハッシュ関数を意味する。また、Ｈ’：｛０，１｝＊→Ｚｑは、任意のビット値を剰余類Ｚｑの元に写すハッシュ関数を意味する。このようなハッシュ関数Ｈ，Ｈ’は、ＳＨＡ−１やＭＤ５等を応用して容易に構成できる。ハッシュ関数Ｈ，Ｈ’は、署名者装置１０、代理署名装置２０及び署名検証装置３０をそれぞれ構成するための各プログラムに書き込まれる。これにより、署名者装置１０、代理署名装置２０及び署名検証装置３０では、共通のハッシュ関数Ｈ，Ｈ’によるハッシュ演算が可能となる。
【００５７】
［鍵生成処理］
次に、本形態の鍵生成処理について説明する。
図６（ａ）は、第１実施形態の鍵生成処理を説明するためのフローチャートである。以下、図６（ａ）に沿って、第１実施形態の鍵生成処理について説明する。
まず、署名者装置１０（図３）の秘密鍵生成部１０ａａが、記憶部１０ｉからｐを読み込む。秘密鍵生成部１０ａａは、任意値ｘ（ｉ）∈ＵＺｐを署名者装置１０の秘密鍵ｓｋ∈Ｚｐとして選択し、選択した秘密鍵ｓｋ∈Ｚｐを記憶部１０ｉに格納する（ステップＳ１）。なお、任意値の具体例としては、擬似乱数を例示できる。また、擬似乱数の生成は、例えば、ＳＨＡ-１等の一方向性ハッシュ関数を用いて構成される、計算量理論に基づく擬似乱数生成アルゴリズムなどを用いて行う。また、擬似乱数ではなく、例えば、乱数表や利用者が設定した秘密情報などを用い、他の署名者装置と重複しないように秘密鍵ｓｋを設定してもよい。
【００５８】
次に、署名生成鍵生成部１０ａｂが、記憶部１０ｉから秘密鍵ｓｋ∈Ｚｐと生成元ｇ１∈Ｇ１とを読み込む。署名生成鍵生成部１０ａｂは、このように入力された秘密鍵ｓｋ∈Ｚｐと生成元ｇ１∈Ｇ１とを用い、署名生成鍵ｒｋ＝ｇ１ｓｋ∈Ｇ１を算出し、記憶部１０ｉに格納する（ステップＳ２）。
【００５９】
次に、公開鍵生成部１０ａｃが、記憶部１０ｉから秘密鍵ｓｋ∈Ｚｐと生成元ｇ２∈Ｇ２とを読み込む。公開鍵生成部１０ａｃは、このように入力された秘密鍵ｓｋ∈Ｚｐと生成元ｇ２∈Ｇ２とを用い、公開鍵ｐｋ＝ｇ２ｓｋ∈Ｇ２を算出し、記憶部１０ｉに格納する（ステップＳ３）。
【００６０】
その後、制御部１０ｇの制御のもと、通信部１０ｆが、公開鍵ｐｋ∈Ｇ２をネットワーク５０を通じて公開鍵サーバ装置４０へ送信する（ステップＳ４）。公開鍵サーバ装置４０は、送信された公開鍵ｐｋ∈Ｇ２を自らのメモリに格納し、公開鍵ｐｋ∈Ｇ２を署名者装置１０の公開鍵としてネットワーク５０で公開する。これにより、ネットワーク５０に接続された外部装置は、公開鍵ｐｋ∈Ｇ２の取得が可能となる。
【００６１】
［署名委託処理］
次に、署名者装置１０が代理署名装置２０に署名生成を依託する際に、署名者装置１０が実行する処理を説明する。
図６（ｂ）は、この署名者装置１０による署名委託処理を説明するためのフローチャートである。以下、図６（ｂ）に沿って、第１実施形態の署名委託処理について説明する。
【００６２】
まず、署名者装置１０の入力部１０ｂ（図３）に署名対象のメッセージｍが入力され、記憶部１０ｉに格納される（ステップＳ１１）。次に、任意値生成部１０ｃがｄビット（ｄは自然数）の任意値ｔ∈Ｕ｛０，１｝ｄを選択し、選択した任意値ｔ∈｛０，１｝ｄを記憶部１０ｉに格納する（ステップＳ１２）。なお、任意値の具体例としては、擬似乱数等を例示できる。次に、関数演算部１０ｄが、記憶部１０ｉからメッセージｍと任意値ｔとを読み込み、ｈ＝Ｈ（ｍ，ｔ）∈Ｇ２を算出し、その演算結果ｈを記憶部１０ｉに格納する（ステップＳ１３）。次に、Ｇ２演算部が、記憶部１０ｉから演算結果ｈと秘密鍵ｓｋとを読み込み、ｗ＝ｈｓｋ∈Ｇ２を算出し、その演算結果ｗを記憶部１０ｉに格納する（ステップＳ１４）。そして、制御部１０ｇの制御のもと、メッセージｍと任意値ｔと演算結果ｗと署名生成鍵ｒｋとｈとが記憶部１０ｉから読み出され、通信部１０ｆからネットワーク５０を通じて代理署名装置２０に送信される（ステップＳ１５）。なお、（ｔ，ｗ）の組を署名可能化子と呼ぶ。
【００６３】
［署名生成処理］
次に、署名者装置１０から署名生成を依託された代理署名装置２０の署名生成処理について説明する。
図７，８は、第１実施形態の署名生成処理を説明するためのフローチャートである。以下、図７，８に従って、第１実施形態の署名生成処理について説明する。
【００６４】
上述のように署名者装置１０から送信されたメッセージｍと任意値ｔと演算結果ｗと署名生成鍵ｒｋとｈとは、代理署名装置２０（図４）の通信部２０ｉで受信され、記憶部２０ｎに格納される（ステップＳ２１）。本形態の代理署名装置２０は、これをトリガとし、公開鍵サーバ装置４０に対して署名者装置１０の公開鍵ｐｋの送信を依頼し、公開鍵サーバ装置４０から送信された公開鍵ｐｋを通信部２０ｉで受信し、記憶部２０ｎに格納する（ステップＳ２２）。なお、予め代理署名装置２０が公開鍵ｐｋを取得しておく構成であってもよい。
【００６５】
次に、データ判定部２０ｇｄが、記憶部２０ｎから署名生成鍵ｒｋと公開鍵ｐｋとを読み込み、ｒｋ∈Ｇ１とｐｋ∈Ｇ２とを共に満たすか否かを判定する（ステップＳ２２ａ）。ここで、ｒｋ∈Ｇ１とｐｋ∈Ｇ２との何れかが成立しないと判定された場合、データ判定部２０ｇｄは、署名生成鍵ｒｋと公開鍵ｐｋとを拒絶する旨（０）を出力する。この出力を受けた制御部２０ｊは署名生成処理をエラー終了させる（ステップＳ２６）。一方、ｒｋ∈Ｇ１とｐｋ∈Ｇ２とが共に成立すると判定された場合、データ判定部２０ｇｄは、署名生成鍵ｒｋと公開鍵ｐｋとを受理する旨（１）を出力する。この出力を受けた制御部２０ｊは、処理を以下のステップＳ２３に移す。
【００６６】
ステップＳ２３では、ペアリング演算部２０ｇａが、記憶部２０ｎから署名生成鍵ｒｋと生成元ｇ２とを読み込み、ｅ（ｒｋ，ｇ２）∈Ｇ３を算出し、その演算結果を記憶部２０ｎに格納する（ステップＳ２３）。また、ペアリング演算部２０ｇｂが、記憶部２０ｎから生成元ｇ１と公開鍵ｐｋとを読み込み、ｅ（ｇ１，ｐｋ）∈Ｇ３を算出し、その演算結果を記憶部２０ｎに格納する（ステップＳ２４）。そして、鍵判定部２０ｇｃが、記憶部２０ｎからｅ（ｒｋ，ｇ２）∈Ｇ３とｅ（ｇ１，ｐｋ）∈Ｇ３とを読み込み、ｅ（ｒｋ，ｇ２）＝ｅ（ｇ１，ｐｋ）が成立するか否かを判定する（ステップＳ２５）。ここで、（ｒｋ，ｇ２）＝ｅ（ｇ１，ｐｋ）が成立しないと判定された場合、鍵判定部２０ｇｃは、署名生成鍵ｒｋと公開鍵ｐｋとを拒絶する旨（０）を出力する。この出力を受けた制御部２０ｊは署名生成処理をエラー終了させる（ステップＳ２６）。一方、（ｒｋ，ｇ２）＝ｅ（ｇ１，ｐｋ）が成立すると判定された場合、鍵判定部２０ｇｃは、署名生成鍵ｒｋと公開鍵ｐｋとを受理する旨（１）を出力する。この出力を受けた制御部２０ｊは処理をステップＳ２５ａに移す。
【００６７】
ステップＳ２５ａでは、データ判定部２０ｈｅが、記憶部２０ｎからｗを読み込み、ｗ∈Ｇ２を満たすか否かを判定する（ステップＳ２５ａ）。ここで、ｗ∈Ｇ２を満たさないと判定された場合、データ判定部２０ｈｅは、署名可能化子（ｔ，ｗ）を拒絶する旨（０）を出力する。この出力を受けた制御部２０ｊは署名生成処理をエラー終了させる（ステップＳ２６）。ｗ∈Ｇ２を満たすと判定された場合、データ判定部２０ｈｅは、署名可能化子（ｔ，ｗ）を受理する旨（１）を出力する。この出力を受けた制御部２０ｊは、処理を以下のステップＳ２７に移す。
【００６８】
ステップＳ２７では、関数演算部２０ｈａが、記憶部２０ｎからメッセージｍと任意値ｔとを読み込み、ｈ’’＝Ｈ（ｍ，ｔ）∈Ｇ２を算出し、ｈ’’ ∈Ｇ２を記憶部２０ｎに格納する（ステップＳ２７）。また、ペアリング演算部２０ｈｂが、記憶部２０ｎから署名生成鍵ｒｋとｈ’’とを読み込み、ｅ（ｒｋ，ｈ’’）∈Ｇ３を算出し、その演算結果を記憶部２０ｎに格納する（ステップＳ２８）。また、ペアリング演算部２０ｈｃが、記憶部２０ｎから生成元ｇ１とｗとを読み込み、ｅ（ｇ１，ｗ）∈Ｇ３を算出し、その演算結果を記憶部２０ｎに格納する（ステップＳ２９）。そして、署名可能化子判定部２０ｈｄが、記憶部２０ｎからｅ（ｒｋ，ｈ’’）∈Ｇ３とｅ（ｇ１，ｗ）∈Ｇ３とを読み込み、ｅ（ｒｋ，ｈ’’）＝ｅ（ｇ１，ｗ）が成立するか否かを判定する（ステップＳ３０）。ここで、ｅ（ｒｋ，ｈ’’）＝ｅ（ｇ１，ｗ）が成立しないと判定された場合、署名可能化子判定部２０ｈｄは、署名可能化子（ｔ，ｗ）を拒絶する旨（０）を出力する。この出力を受けた制御部２０ｊは署名生成処理をエラー終了させる（ステップＳ２６）。一方、ｅ（ｒｋ，ｈ’’）＝ｅ（ｇ１，ｗ）が成立すると判定された場合、署名可能化子判定部２０ｈｄは、署名可能化子（ｔ，ｗ）を受理する旨（１）を出力する。この出力を受けた制御部２０ｊは処理をステップＳ３１に移す。
【００６９】
ステップＳ３１では、ペアリング演算部２０ａが、記憶部２０ｎから生成元ｇ１とｈとを読み込み、ｆ＝ｅ（ｇ１，ｈ）∈Ｇ３を算出し、算出したｆ∈Ｇ３を記憶部２０ｎに格納する（ステップＳ３１）。次に、任意値選択部２０ｂが、記憶部２０ｎからｐを読み込み、任意値ｒ∈ＵＺｐを選択し、記憶部２０ｎに格納する（ステップＳ３２）。次に、Ｇ３演算部２０ｃが、記憶部２０ｎからｇ３∈Ｇ３と任意値ｒとを読み込み、ａ＝（ｇ３）ｒ∈Ｇ３を算出し、算出したａ∈Ｇ３を記憶部２０ｎに格納する（ステップＳ３３）。次に、Ｇ３演算部２０ｄが、記憶部２０ｎからｆ∈Ｇ３と任意値ｒとを読み込み、ｂ＝ｆｒ∈Ｇ３を算出し、ｂ∈Ｇ３を記憶部２０ｎに格納する（ステップＳ３４）。次に、関数演算部２０ｅが、記憶部２０ｎからｍ，ｔ，ｗ，ａ，ｂを読み込み、ｃ＝Ｈ’（ｍ，ｔ，ｗ，ａ，ｂ）を算出し、算出したｃを記憶部２０ｎに格納する（ステップＳ３５）。さらに、Ｇ１演算部２０ｆが、記憶部２０ｎから生成元ｇ１と署名生成鍵ｒｋとｒとｃとを読み込み、ｚ＝（ｇ１）ｒ／（ｒｋ）ｃ∈Ｇ１を算出し、算出したｚを記憶部２０ｎに格納する（ステップＳ３６）。そして、制御部２０ｊの制御のもと、記憶部２０ｎからσ＝（ｔ，ｗ，ｃ，ｚ）が署名として読み出され、さらにメッセージｍが読み出され、通信部２０ｉが、メッセージｍと署名σ＝（ｔ，ｗ，ｃ，ｚ）とを送信する（ステップＳ３７）。なお、この署名σは、ｇ２，ｐｋ，ｈ，ｗがＤＤＨ  Ｔｕｐｐｌｅであることの非対話証明にあたる。
【００７０】
＜署名検証処理＞
次に、本形態の署名検証処理について説明する。
図９は、第１実施形態の署名検証処理を説明するためのフローチャートである。以下、図９に従って、第１実施形態の署名検証処理について説明する。
まず、署名検証装置３０の通信部３０ｈ（図５）が、署名対象のメッセージｍと署名σ＝（ｔ，ｗ，ｃ，ｚ）とを受信し、これらを記憶部３０ｋに格納する（ステップＳ４１）。次に、本形態の署名検証装置３０は、これをトリガとし、公開鍵サーバ装置４０に対して署名者装置１０の公開鍵ｐｋの送信を依頼し、公開鍵サーバ装置４０から送信された公開鍵ｐｋを通信部３０ｈで受信し、記憶部３０ｋに格納する（ステップＳ４２）。なお、予め署名検証装置３０が公開鍵ｐｋを取得しておく構成であってもよい。
【００７１】
次に、データ判定部３０ｆが記憶部３０ｋから公開鍵ｐｋと署名σのｃ，ｚ，ｗを読み込み、ｃ∈Ｚｐとｚ∈Ｇ１とｐｋ∈Ｇ２とｗ∈Ｇ２を全て満たすか否かを判定する（ステップＳ４３）。ここで、ｃ∈Ｚｐとｚ∈Ｇ１とｐｋ∈Ｇ２とｗ∈Ｇ２の何れかが満たされないと判定された場合、その結果が出力部３０ｇに転送され、出力部３０ｇは署名σを拒絶する旨（０）を出力し（ステップＳ５０）、制御部３０ｉは署名検証処理を終了させる。一方、ｃ∈Ｚｐとｚ∈Ｇ１とｐｋ∈Ｇ２とｗ∈Ｇ２を全て満たすと判定された場合、制御部３０ｉは処理をステップＳ４４に移す。
【００７２】
ステップＳ４４では、関数演算部３０ａが、記憶部３０ｋからメッセージｍと署名σのｔとを読み込み、関数値ｈ’＝Ｈ（ｍ，ｔ）を算出し、算出したｈ’を記憶部３０ｋに格納する（ステップＳ４４）。次に、ペアリング演算部３０ｂが、記憶部３０ｋから生成元ｇ１，ｇ２と公開鍵ｐｋと署名σのｚとを読み込み、ａ’＝ｅ（ｚ，ｇ２）・ｅ（ｇ１，ｐｋ）ｃ∈Ｇ３を算出し、算出したａ’を記憶部３０ｋに格納する（ステップＳ４５）。また、ペアリング演算部３０ｃが、記憶部３０ｋから生成元ｇ１と算出されたｈ’と署名σのｚ，ｗとを読み込み、ｂ’＝ｅ（ｚ，ｈ’）・ｅ（ｇ１，ｗ）ｃ∈Ｇ３を算出し、算出したｂ’を記憶部３０ｋに格納する（ステップＳ４６）。次に、関数演算部３０ｄが、記憶部３０ｋからメッセージｍと署名σのｔ，ｗと算出されたａ’，ｂ’とを読み込み、Ｈ’（ｍ，ｔ，ｗ，ａ’，ｂ’）を算出し、Ｈ’（ｍ，ｔ，ｗ，ａ’，ｂ’）を記憶部３０ｋに格納する（ステップＳ４７）。
【００７３】
そして、署名判定部３０ｅが、記憶部３０ｋから署名σのｃと算出されたＨ’（ｍ，ｔ，ｗ，ａ’，ｂ’）とを読み込み、ｃ＝Ｈ’（ｍ，ｔ，ｗ，ａ’，ｂ’）を満たすか否かを判定する（ステップＳ４８）。ここで、ｃ＝Ｈ’（ｍ，ｔ，ｗ，ａ’，ｂ’）を満たすと判定された場合、その結果が出力部３０ｇに転送され、出力部３０ｇは署名σを受理する旨（１）を出力する（ステップＳ４９）。一方、ｃ＝Ｈ’（ｍ，ｔ，ｗ，ａ’，ｂ’）を満たさないと判定された場合、その結果が出力部３０ｇに転送され、出力部３０ｇは署名σを拒絶する旨（０）を出力する（ステップＳ５０）。
【００７４】
〔第２実施形態〕
次に、本発明の第２実施形態について説明する。本形態は、本発明をグループ署名に適用した実施形態である。なお、以下において第１実施形態と共通する事項については説明を簡略化する。
【００７５】
＜全体構成＞
図１０は、第２実施形態の署名システム１００の全体構成を示した概念図である。
図１０に示すように、本形態の署名システム１００は、署名クループを構成し得るｎ個（ｎ≧２）の署名者装置１１０−０〜（ｎ−１）、何れかの署名者装置１１０−０〜（ｎ−１）から委託を受けてグループ署名を生成する代理署名装置１２０、署名検証を行う署名検証装置１３０及び公開鍵サーバ装置１４０を有し、署名者装置１１０−０〜（ｎ−１）、代理署名装置１２０、署名検証装置１３０及び公開鍵サーバ装置１４０は、相互にネットワーク１５０を通じて接続可能に構成されている。
【００７６】
なお、署名者装置１１０−ｗ（ｗ∈Ｎ，Ｎ＝｛０,...,ｎ−１｝）を、それぞれｗ番目の署名者装置１１０−ｗと呼ぶこととし、署名者装置１１０−ｗ（ｗ∈Ｎ）の集合を集合Ｎ＝（０,...,ｎ−１）と呼ぶものとする。また、本形態では、集合Ｎ＝（０,...,ｎ−１）に属する署名者装置１１０−ｗの１つであるｉ番目の署名者装置１１０−ｉが代理署名装置１２０に署名生成を委託する。代理署名装置１２０は、このｉ番目の署名者装置１１０−ｉを含むｕ個の署名者装置１１０−ｋ（ｋ∈Ｌ，Ｌ＝｛０,...,ｕ−１｝⊆Ｎ）からなる集合Ｌ（署名グループ）による匿名署名を生成し、署名検証装置１３０がその匿名署名を検証する。
【００７７】
＜署名者装置１１０の構成＞
次に、署名者装置１１０の構成について説明する。なお、以下では署名者装置１１０−ｉを例にとって説明する。その他の署名者装置の構成も署名者装置１１０−ｉと同様である。
［ハードウェア構成］
署名者装置１１０は、図２に例示したのと同様なコンピュータによって構成される。
［ハードウェアとプログラムとの協働］
第１実施形態の署名者装置１０の場合と同様、本形態の署名者装置１１０は、コンピュータにプログラムが読み込まれることにより構成される。図１１は、署名者装置１１０の機能構成を例示したブロック図である。なお、図１１における矢印はデータの流れを示すが、一時メモリ１１０ｈ−ｉや制御部１１０ｇ−ｉに入出力されるデータの流れは省略してある。
【００７８】
図１１に例示するように、第２実施形態における署名者装置１１０−ｉは、鍵生成部１１０ａ−ｉと、入力部１１０ｂ−ｉと、任意値生成部１１０ｃ−ｉと、関数演算部１１０ｄ−ｉと、Ｇ２演算部１１０ｅ−ｉと、通信部１１０ｆ−ｉ（「送信部」に対応）と、制御部１１０ｇ−ｉと、一時メモリ１１０ｈ−ｉと、記憶部１１０ｉ−ｉとを有する。また、鍵生成部１１０ａ−ｉは、秘密鍵生成部１１０ａａ−ｉと署名生成鍵生成部１１０ａｂ−ｉと公開鍵生成部１１０ａｃ−ｉとを有する。
【００７９】
なお、記憶部１１０ｉ−ｉ及び一時メモリ１１０ｈ−ｉは、例えば、レジスタ、補助記憶装置、ＲＡＭ、或いはこれらを結合した記憶領域に相当する。また、鍵生成部１１０ａ−ｉと、任意値生成部１１０ｃ−ｉと、関数演算部１１０ｄ−ｉと、Ｇ２演算部１１０ｅ−ｉと、制御部１１０ｇ−ｉとは、それぞれ処理を実現するためのプログラムがＣＰＵに読み込まれることにより構成されるものである。また、入力部１１０ｂ−ｉは、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動し、通信部１１０ｆ−ｉは、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動する。また、署名者装置１１０−ｉは、制御部１１０ｇ−ｉの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ１１０ｈ−ｉに読み書きされる。
【００８０】
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ（記載していない）を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名者装置１１０−ｉの機能をコンピュータに実行させるためのプログラムに相当する。
【００８１】
＜代理署名装置１２０の構成＞
次に、代理署名装置１２０の構成について説明する。
［ハードウェア構成］
代理署名装置１２０は、図２に例示したのと同様なコンピュータによって構成される。
［ハードウェアとプログラムとの協働］
代理署名装置１２０は、コンピュータにプログラムが読み込まれることにより構成される。図１２は、第２実施形態における代理署名装置１２０の機能構成を例示したブロック図である。なお、図１２における矢印はデータの流れを示すが、制御部１２０ｊや一時メモリ１２０ｋに入出力されるデータの流れは省略してある。
【００８２】
図１２に例示するように、第２実施形態における代理署名装置１２０は、ペアリング演算部１２０ａ，１２０ｐ，１２０ｑ，１２０ｇａ，１２０ｇｂ，１２０ｈｂ，１２０ｈｃと、任意値選択部１２０ｂと、Ｇ３演算部１２０ｃ，１２０ｄと、関数演算部１２０ｅ，１２０ｈａと、データ判定部１２０ｇｄ，１２０ｈｅと、Ｇ１演算部１２０ｆと、鍵判定部１２０ｇｃと、署名可能化子判定部１２０ｈｄと、通信部１２０ｉ（「受信部」及び「送信部」に対応）と、制御部１２０ｊと、一時メモリ１２０ｋと、出力部１２０ｍと、記憶部１２０ｎと、整数演算部１２０ｒとを有する。
【００８３】
なお、記憶部１２０ｎおよび一時メモリ１２０ｋは、例えば、レジスタ、補助記憶装置、ＲＡＭ、或いはこれらを結合した記憶領域に相当する。また、ペアリング演算部１２０ａ，１２０ｐ，１２０ｑ，１２０ｇａ，１２０ｇｂ，１２０ｈｂ，１２０ｈｃ、任意値選択部１２０ｂ、Ｇ３演算部１２０ｃ，１２０ｄ、データ判定部１２０ｇｄ，１２０ｈｅ、関数演算部１２０ｅ，１２０ｈａ、Ｇ１演算部１２０ｆ、鍵判定部１２０ｇｃ、署名可能化子判定部１２０ｈｄ、制御部１２０ｊ及び整数演算部１２０ｒは、それぞれ処理を実現するためのプログラムがＣＰＵに読み込まれることにより構成されるものである。また、通信部１２０ｉは、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動する通信部である。また、出力部１２０ｍは、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動する。また、代理署名装置１２０は、制御部１２０ｊの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ１２０ｋに読み書きされる。
【００８４】
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ（記載していない）を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、代理署名装置１２０の機能をコンピュータに実行させるためのプログラムに相当する。
【００８５】
＜署名検証装置１３０の構成＞
次に、署名検証装置１３０の構成について説明する。
［ハードウェア構成］
署名検証装置１３０は、図２に例示したのと同様なコンピュータによって構成される。
［ハードウェアとプログラムとの協働］
署名検証装置１３０は、コンピュータにプログラムが読み込まれることにより構成される。図１３は、第２実施形態における署名検証装置１３０の機能構成を例示したブロック図である。なお、図１３における矢印はデータの流れを示すが、一時メモリ１３０ｊや制御部１３０ｉに入出力されるデータの流れは省略してある。
【００８６】
図１３に例示するように、第２実施形態における署名検証装置１３０は、関数演算部１３０ａ，１３０ｄと、ペアリング演算部１３０ｂ，１３０ｃと、署名判定部１３０ｅと、データ判定部１３０ｆと、出力部１３０ｇと、通信部１３０ｈ（「受信部」に対応）と、制御部１３０ｉと、一時メモリ１３０ｊと、記憶部１３０ｋと、加算部１３０ｍとを有する。
【００８７】
なお、記憶部１３０ｋおよび一時メモリ１３０ｊは、例えば、レジスタ、補助記憶装置、ＲＡＭ、或いはこれらを結合した記憶領域に相当する。また、関数演算部１３０ａ，１３０ｄ、ペアリング演算部１３０ｂ，１３０ｃ、署名判定部１３０ｅ、データ判定部１３０ｆ、制御部１３０ｉ及び加算部１３０ｍは、それぞれ処理を実現するためのプログラムがＣＰＵに読み込まれることにより構成されるものである。また、通信部１３０ｈは、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動する通信部であり、出力部１３０ｇは、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動する。また、署名検証装置１３０は、制御部１３０ｉの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ１３０ｊに読み書きされる。
【００８８】
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ（記載していない）を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名検証装置１３０の機能をコンピュータに実行させるためのプログラムに相当する。
【００８９】
＜処理＞
次に、第２実施形態の署名システム１００の処理について説明する。
［前処理］
第１実施形態と同様、署名者装置１１０−ｉの記憶部１１０ｉ−ｉには、生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２とｐとが格納される（他の署名者装置についても同様）。また、代理署名装置１２０−ｉの記憶部２０ｎには、生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２とｐとｇ３＝ｅ（ｇ１，ｇ２）≠１∈Ｇ３とが格納される。また、署名検証装置１３０−ｉの記憶部１３０ｋ−ｉには、生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２とｐとが格納される。
【００９０】
また、第１実施形態と同様、２つの別個のハッシュ関数Ｈ：｛０，１｝＊→Ｇ２及びＨ’：｛０，１｝＊→Ｚｑが設定され、ハッシュ関数Ｈ，Ｈ’は、各署名者装置１１０−ｗ（ｗ∈Ｎ）、代理署名装置１２０及び署名検証装置１３０をそれぞれ構成するための各プログラムに書き込まれる。これにより、各署名者装置１１０−ｗ、代理署名装置１２０及び署名検証装置１３０では、共通のハッシュ関数Ｈ，Ｈ’によるハッシュ演算が可能となる。
【００９１】
［鍵生成処理］
次に、本形態の鍵生成処理について説明する。
図１４（ａ）は、第２実施形態の鍵生成処理を説明するためのフローチャートである。この処理は第１実施形態の鍵生成処理と同様であり、各署名者装置１１０−ｗがそれぞれ鍵生成を行う点のみが第１実施形態と相違する。
署名者装置１１０−ｉでの処理を例にとると、まず、署名者装置１１０−ｉ（図１１）の秘密鍵生成部１１０ａａ−ｉが、記憶部１１０ｉからｐを読み込む。秘密鍵生成部１１０ａａ−ｉは、任意値ｘ（ｉ）∈ＵＺｐを署名者装置１１０−ｉの秘密鍵ｓｋ（ｉ）∈Ｚｐとして選択し、選択した秘密鍵ｓｋ（ｉ）∈Ｚｐを記憶部１１０ｉ−ｉに格納する（ステップＳ１０１）。任意値の具体例は第１実施形態と同様、例えば、擬似乱数等である。
【００９２】
次に、署名生成鍵生成部１１０ａｂ−ｉが、記憶部１１０ｉ−ｉから秘密鍵ｓｋ（ｉ）∈Ｚｐと生成元ｇ１∈Ｇ１とを読み込む。署名生成鍵生成部１１０ａｂ−ｉは、このように入力された秘密鍵ｓｋ（ｉ）∈Ｚｐと生成元ｇ１∈Ｇ１とを用い、署名生成鍵ｒｋ（ｉ）＝ｇ１ｓｋ∈Ｇ１を算出し、記憶部１１０ｉ−ｉに格納する（ステップＳ１０２）。
次に、公開鍵生成部１１０ａｃ−ｉが、記憶部１１０ｉ−ｉから秘密鍵ｓｋ（ｉ）∈Ｚｐと生成元ｇ２∈Ｇ２とを読み込む。公開鍵生成部１１０ａｃ−ｉは、このように入力された秘密鍵ｓｋ（ｉ）∈Ｚｐと生成元ｇ２∈Ｇ２とを用い、公開鍵ｐｋ（ｉ）＝ｇ２ｓｋ∈Ｇ２を算出し、記憶部１１０ｉ−ｉに格納する（ステップＳ１０３）。
【００９３】
その後、制御部１１０ｇ−ｉの制御のもと、通信部１１０ｆ−ｉが、公開鍵ｐｋ（ｉ）∈Ｇ２を、ネットワーク１５０を通じて公開鍵サーバ装置１４０へ送信する（ステップＳ１０４）。公開鍵サーバ装置１４０は、送信された公開鍵ｐｋ（ｉ）∈Ｇ２を自らのメモリに格納し、公開鍵ｐｋ（ｉ）∈Ｇ２を署名者装置１１０−ｉの公開鍵としてネットワーク１５０で公開する。ステップＳ１０１〜Ｓ１０４と同様な処理は他の署名者装置についても実行される。これにより、ネットワーク１５０に接続された外部装置は、何れの公開鍵ｐｋ（ｗ）∈Ｇ２の取得も可能となる。
【００９４】
［署名委託処理］
次に、署名生成を委託する署名者装置１１０−ｉが代理署名装置１２０に署名生成を依託する際に、署名者装置１１０−ｉが実行する処理を説明する。
図１４（ｂ）は、この署名者装置１０による署名委託処理を説明するためのフローチャートである。この処理の第１実施形態との相違点は、署名者装置１１０−ｉが、署名グループである署名者装置１１０−ｉを含むｕ個の署名者装置１１０−ｋ（ｋ∈Ｌ，Ｌ＝｛０,...,ｕ−１｝⊆Ｎ）からなる集合Ｌを特定する情報を代理署名装置１２０に送信する点である。
【００９５】
まず、署名者装置１１０−ｉの入力部１１０ｂ−ｉ（図１１）に署名対象のメッセージｍ（ｉ）と上述の集合Ｌを示す情報とが入力され、記憶部１１０ｉ−ｉに格納される（ステップＳ１１１）。次に、任意値生成部１１０ｃ−ｉがｄビット（ｄは自然数）の任意値ｔ（ｉ）∈Ｕ｛０，１｝ｄを選択し、選択した任意値ｔ（ｉ）∈｛０，１｝ｄを記憶部１１０ｉ−ｉに格納する（ステップＳ１１２）。なお、任意値の具体例としては、擬似乱数等を例示できる。次に、関数演算部１１０ｄ−ｉが、記憶部１１０ｉ−ｉからメッセージｍ（ｉ）と任意値ｔ（ｉ）とを読み込み、ｈ（ｉ）＝Ｈ（ｍ（ｉ），ｔ（ｉ））∈Ｇ２を算出し、その演算結果ｈ（ｉ）を記憶部１１０ｉ−ｉに格納する（ステップＳ１１３）。次に、Ｇ２演算部が、記憶部１１０ｉ−ｉから演算結果ｈ（ｉ）と秘密鍵ｓｋ（ｉ）とを読み込み、ｗ（ｉ）＝ｈ（ｉ）ｓｋ（ｉ）∈Ｇ２を算出し、その演算結果ｗ（ｉ）を記憶部１１０ｉ−ｉに格納する（ステップＳ１１４）。そして、制御部１１０ｇ−ｉの制御のもと、メッセージｍ（ｉ）と任意値ｔ（ｉ）と演算結果ｗ（ｉ）と署名生成鍵ｒｋ（ｉ）とｈ（ｉ）と集合Ｌを示す情報が記憶部１１０ｉ−ｉから読み出され、通信部１１０ｆ−ｉからネットワーク１５０を通じて代理署名装置１２０に送信される（ステップＳ１１５）。なお、（ｔ（ｉ），ｗ（ｉ））の組を署名者装置１１０−ｉの署名可能化子と呼ぶ。
【００９６】
［署名生成処理］
次に、署名者装置１１０−ｉから署名生成を依託された代理署名装置１２０の署名生成処理について説明する。
図１５，１６は、第２実施形態の署名生成処理を説明するためのフローチャートである。以下、図１５，１６に従って、第２実施形態の署名生成処理について説明する。
【００９７】
上述のように署名者装置１１０−ｉから送信されたメッセージｍ（ｉ）と任意値ｔ（ｉ）と演算結果ｗ（ｉ）と署名生成鍵ｒｋ（ｉ）とｈ（ｉ）と集合Ｌを示す情報とは、代理署名装置１２０（図１２）の通信部１２０ｉで受信され、記憶部１２０ｎに格納される（ステップＳ１２１）。本形態の代理署名装置１２０は、これをトリガとし、公開鍵サーバ装置１４０に対して署名者装置１１０−ｋ（∀ｋ∈Ｌ）の公開鍵ｐｋ（ｋ）の送信を依頼し、公開鍵サーバ装置１４０から送信された公開鍵ｐｋ（ｋ）を通信部１２０ｉで受信し、記憶部１２０ｎに格納する（ステップＳ１２２）。なお、予め代理署名装置１２０が公開鍵ｐｋ（ｗ）（∀ｗ∈Ｎ）を取得しておく構成であってもよい。
【００９８】
次に、データ判定部１２０ｇｄが、記憶部１２０ｎから署名生成鍵ｒｋ（ｉ）と公開鍵ｐｋ（ｋ）とを読み込み、ｒｋ（ｉ）∈Ｇ１とｐｋ（ｋ）∈Ｇ２とを共に満たすか否かを判定する（ステップＳ１２２ａ）。ここで、ｒｋ（ｉ）∈Ｇ１とｐｋ（ｋ）∈Ｇ２との何れかが成立しないと判定された場合、データ判定部１２０ｇｄは、署名生成鍵ｒｋ（ｉ）と公開鍵ｐｋ（ｋ）とを拒絶する旨（０）を出力する。この出力を受けた制御部１２０ｊは署名生成処理をエラー終了させる（ステップＳ１２６）。一方、ｒｋ（ｉ）∈Ｇ１とｐｋ（ｋ）∈Ｇ２とが共に成立すると判定された場合、データ判定部１２０ｇｄは、署名生成鍵ｒｋ（ｉ）と公開鍵ｐｋ（ｋ）とを受理する旨（１）を出力する。この出力を受けた制御部１２０ｊは、処理を以下のステップＳ１２３に移す。
【００９９】
ステップＳ１２３では、まず、ペアリング演算部１２０ｇａが、記憶部１２０ｎから署名生成鍵ｒｋ（ｉ）と生成元ｇ２とを読み込み、ｅ（ｒｋ（ｉ），ｇ２）∈Ｇ３を算出し、その演算結果を記憶部１２０ｎに格納する（ステップＳ１２３）。また、ペアリング演算部１２０ｇｂが、記憶部１２０ｎから生成元ｇ１と公開鍵ｐｋ（ｉ）とを読み込み、ｅ（ｇ１，ｐｋ（ｉ））∈Ｇ３を算出し、その演算結果を記憶部１２０ｎに格納する（ステップＳ１２４）。そして、鍵判定部１２０ｇｃが、記憶部１２０ｎからｅ（ｒｋ（ｉ），ｇ２）∈Ｇ３とｅ（ｇ１，ｐｋ（ｉ））∈Ｇ３とを読み込み、ｅ（ｒｋ（ｉ），ｇ２）＝ｅ（ｇ１，ｐｋ（ｉ））が成立するか否かを判定する（ステップＳ１２５）。ここで、（ｒｋ（ｉ），ｇ２）＝ｅ（ｇ１，ｐｋ（ｉ））が成立しないと判定された場合、鍵判定部１２０ｇｃは、署名生成鍵ｒｋ（ｉ）と公開鍵ｐｋ（ｉ）とを拒絶する旨（０）を出力する。この出力を受けた制御部１２０ｊは署名生成処理をエラー終了させる（ステップＳ１２６）。一方、（ｒｋ（ｉ），ｇ２）＝ｅ（ｇ１，ｐｋ（ｉ））が成立すると判定された場合、鍵判定部１２０ｇｃは、署名生成鍵ｒｋ（ｉ）と公開鍵ｐｋ（ｉ）とを受理する旨（１）を出力する。この出力を受けた制御部１２０ｊは処理をステップＳ１２５ａに移す。
【０１００】
ステップＳ１２５ａでは、データ判定部１２０ｈｅが、記憶部１２０ｎからｗ（ｉ）を読み込み、ｗ（ｉ）∈Ｇ２を満たすか否かを判定する（ステップＳ１２５ａ）。ここで、ｗ（ｉ）∈Ｇ２を満たさないと判定された場合、データ判定部１２０ｈｅは、署名可能化子（ｔ（ｉ），ｗ（ｉ））を拒絶する旨（０）を出力する。この出力を受けた制御部１２０ｊは署名生成処理をエラー終了させる（ステップＳ１２６）。ｗ（ｉ）∈Ｇ２を満たすと判定された場合、データ判定部１２０ｈｅは、署名可能化子（ｔ（ｉ），ｗ（ｉ））を受理する旨（１）を出力する。この出力を受けた制御部１２０ｊは、処理を以下のステップＳ１２７に移す。
【０１０１】
ステップＳ１２７では、関数演算部１２０ｈａが、記憶部１２０ｎからメッセージｍ（ｉ）と任意値ｔ（ｉ）とを読み込み、ｈ（ｉ）’’＝Ｈ（ｍ（ｉ），ｔ（ｉ））∈Ｇ２を算出し、ｈ（ｉ）’’∈Ｇ２を記憶部１２０ｎに格納する（ステップＳ１２７）。また、ペアリング演算部１２０ｈｂが、記憶部１２０ｎから署名生成鍵ｒｋ（ｉ）とｈ（ｉ）’’とを読み込み、ｅ（ｒｋ（ｉ），ｈ（ｉ）’’）∈Ｇ３を算出し、その演算結果を記憶部１２０ｎに格納する（ステップＳ１２８）。また、ペアリング演算部１２０ｈｃが、記憶部１２０ｎから生成元ｇ１とｗ（ｉ）とを読み込み、ｅ（ｇ１，ｗ（ｉ））∈Ｇ３を算出し、その演算結果を記憶部１２０ｎに格納する（ステップＳ１２９）。そして、署名可能化子判定部１２０ｈｄが、記憶部１２０ｎからｅ（ｒｋ（ｉ），ｈ（ｉ）’’）∈Ｇ３とｅ（ｇ１，ｗ（ｉ））∈Ｇ３とを読み込み、ｅ（ｒｋ（ｉ），ｈ（ｉ）’’）＝ｅ（ｇ１，ｗ（ｉ））が成立するか否かを判定する（ステップＳ１３０）。ここで、ｅ（ｒｋ（ｉ），ｈ（ｉ）’’）＝ｅ（ｇ１，ｗ（ｉ））が成立しないと判定された場合、署名可能化子判定部１２０ｈｄは、署名可能化子（ｔ（ｉ），ｗ（ｉ））を拒絶する旨（０）を出力する。この出力を受けた制御部１２０ｊは署名生成処理をエラー終了させる（ステップＳ１２６）。一方、ｅ（ｒｋ（ｉ），ｈ（ｉ）’’）＝ｅ（ｇ１，ｗ（ｉ））が成立すると判定された場合、署名可能化子判定部１２０ｈｄは、署名可能化子（ｔ（ｉ），ｗ（ｉ））を受理する旨（１）を出力する。この出力を受けた制御部１２０ｊは処理をステップＳ１３１に移す。
【０１０２】
ステップＳ１３１では、署名者装置１１０−ｉの署名生成鍵と公開鍵と署名可能化子の判定結果が全て受理であった場合、ペアリング演算部１２０ａが、記憶部１２０ｎから生成元ｇ１とｈ（ｉ）とを読み込み、ｆ＝ｅ（ｇ１，ｈ（ｉ））∈Ｇ３を算出し、算出したｆ∈Ｇ３を記憶部１２０ｎに格納する（ステップＳ１３１）。次に、任意値選択部１２０ｂが、記憶部１２０ｎからｐを読み込み、任意値ｒ∈ＵＺｐを選択し、記憶部１２０ｎに格納する（ステップＳ１３２）。なお、任意値の具体例としては、擬似乱数等を例示できる。次に、Ｇ３演算部１２０ｃが、記憶部１２０ｎからｇ３∈Ｇ３と任意値ｒとを読み込み、ａ（ｉ）＝（ｇ３）ｒ∈Ｇ３を算出し、算出したａ（ｉ）∈Ｇ３を記憶部１２０ｎに格納する（ステップＳ１３３）。次に、Ｇ３演算部１２０ｄが、記憶部１２０ｎからｆ∈Ｇ３と任意値ｒとを読み込み、ｂ（ｉ）＝ｆｒ∈Ｇ３を算出し、ｂ（ｉ）∈Ｇ３を記憶部１２０ｎに格納する（ステップＳ１３４）。
【０１０３】
次に、任意値選択部１２０ｂが、全てのｊ∈Ｌ（ｊ≠ｉ）に対して任意値ｗ（ｊ）∈ＵＧ２を選択し、各任意値ｗ（ｊ）∈Ｇ２を記憶部１２０ｎに格納する（ステップＳ１３５）。また、任意値選択部１２０ｂが、全てのｊに対して任意値ｚ（ｊ）∈ＵＧ１を選択し、各任意値ｚ（ｊ）∈Ｇ１を記憶部１２０ｎに格納する（ステップＳ１３６）。また、任意値選択部１２０ｂが、全てのｊに対しての任意値ｃ（ｊ）∈ＵＺｐを選択し、各任意値ｃ（ｊ）∈Ｚｐを記憶部１２０ｎに格納する（ステップＳ１３７）。
【０１０４】
次に、ペアリング演算部１２０ｐが、記憶部１２０ｎから生成元ｇ１、ｇ２とｚ（ｊ）と公開鍵ｐｋ（ｊ）とを読み込み、ａ（ｊ）＝ｅ（ｚ（ｊ），ｇ２）・ｅ（ｇ１，ｐｋ（ｊ））ｃ（ｊ）∈Ｇ３を算出し、各演算結果ａ（ｊ）を記憶部１２０ｎに格納する（ステップＳ１３８）。また、ペアリング演算部１２０ｑが、記憶部１２０ｎから生成元ｇ１とｚ（ｊ）とｈ（ｉ）とｗ（ｊ）とを読み込み、ｂ（ｊ）＝ｅ（ｚ（ｊ），ｈ（ｉ））・ｅ（ｇ１，ｗ（ｊ））ｃ（ｊ）∈Ｇ３を算出し、各演算結果ｂ（ｊ）を記憶部１２０ｎに格納する（ステップＳ１３９）。
【０１０５】
次に、関数演算部１２０ｅが、記憶部１２０ｎからｍ（ｉ）とｔ（ｉ）とｗ（ｋ）と（ａ（ｋ）とｂ（ｋ）とを読み込み、ｃ＝Ｈ’（ｍ（ｉ），ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ａ（ｋ））∀ｋ∈Ｌ，（ｂ（ｋ））∀ｋ∈Ｌ）を算出し、算出したｃを記憶部１２０ｎに格納する（ステップＳ１４０）。その後、整数演算部１２０ｒが、記憶部１２０ｎからｃとｃ（ｊ）とｐとを読み込み、ｃ（ｉ）＝ｃ−Σｊ≠ｉｃ（ｊ） ｍｏｄ ｐを算出し、算出したｃ（ｉ）を記憶部１２０ｎに格納する（ステップＳ１４１）。さらにその後、Ｇ１演算部１２０ｆが、記憶部１２０ｎから生成元ｇ１とｒと署名生成鍵ｒｋ（ｉ）とｃ（ｉ）とを読み込み、ｚ（ｉ）＝（ｇ１）ｒ／｛ｒｋ（ｉ）｝ｃ（ｉ）∈Ｇ１を算出し、算出したｚ（ｉ）を記憶部１２０ｎに格納する（ステップＳ１４２）。そして、制御部１２０ｊの制御のもと、記憶部１２０ｎからσ＝（ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ｃ（ｋ））∀ｋ∈Ｌ，（ｚ（ｋ））∀ｋ∈Ｌ）が署名として読み出され、さらにメッセージｍ（ｉ）が読み出され、通信部２０ｉが、メッセージｍ（ｉ）と署名σ＝（ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ｃ（ｋ））∀ｋ∈Ｌ，（ｚ（ｋ））∀ｋ∈Ｌ）とを送信する（ステップＳ１４３）。なお、署名σはＬを特定するための情報を含む。また、代理署名装置１２０は、集合Ｌを変更（ただしｉは含む）して署名σを生成することや、一旦、署名者装置１１０−ｉから指定された集合Ｌに対して署名σを生成した後、代理署名装置１２０が変更した集合Ｌに対して署名σを作り直すこともできる。
【０１０６】
＜署名検証処理＞
次に、本形態の署名検証処理について説明する。
図１７は、第２実施形態の署名検証処理を説明するためのフローチャートである。以下、図１７に従って、第２実施形態の署名検証処理について説明する。
まず、署名検証装置１３０の通信部１３０ｈ（図１３）が、署名対象のメッセージｍ（ｉ）と署名σ＝（ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ｃ（ｋ））∀ｋ∈Ｌ，（ｚ（ｋ））∀ｋ∈Ｌ）とを受信し、これらを記憶部１３０ｋに格納する（ステップＳ１５１）。次に、本形態の署名検証装置１３０は、これをトリガとし、公開鍵サーバ装置１４０に対して、全てのｋ∈Ｌに対する公開鍵ｐｋ（ｋ）の送信を署名者装置１１０に依頼し、公開鍵サーバ装置１４０から送信された公開鍵ｐｋ（ｋ）を通信部１３０ｈで受信し、記憶部１３０ｋに格納する（ステップＳ１５２）。なお、予め署名検証装置１３０が公開鍵ｐｋ（ｋ）を取得しておく構成であってもよい。
【０１０７】
次に、データ判定部１３０ｆが記憶部１３０ｋから公開鍵ｐｋ（ｋ）と署名σのｃ（ｋ），ｚ（ｋ），ｗ（ｋ）とを読み込み、ｃ（ｋ）∈Ｚｐとｚ（ｋ）∈Ｇ１とｐｋ（ｋ）∈Ｇ２とｗ（ｋ）∈Ｇ２を全て満たすか否かを判定する（ステップＳ１５３）。ここで、ｃ（ｋ）∈Ｚｐとｚ（ｋ）∈Ｇ１とｐｋ（ｋ）∈Ｇ２とｗ（ｋ）∈Ｇ２の何れかが満たされないと判定された場合、その結果が出力部１３０ｇに転送され、出力部１３０ｇは署名σを拒絶する旨（０）を出力し（ステップＳ１６１）、制御部１３０ｉは署名検証処理を終了させる。一方、ｃ（ｋ）∈Ｚｐとｚ（ｋ）∈Ｇ１とｐｋ（ｋ）∈Ｇ２とｗ（ｋ）∈Ｇ２を全て満たすと判定された場合、制御部１３０ｉは処理をステップＳ１５４に移す。
【０１０８】
ステップＳ１５４では、関数演算部１３０ａが、記憶部１３０ｋからメッセージｍ（ｉ）と署名σのｔ（ｉ）とを読み込み、関数値ｈ（ｉ）’＝Ｈ（ｍ（ｉ），ｔ（ｉ））を算出し、算出したｈ（ｉ）’を記憶部１３０ｋに格納する（ステップＳ１５４）。次に、ペアリング演算部１３０ｂが、記憶部１３０ｋから生成元ｇ１，ｇ２と公開鍵ｐｋ（ｋ）と署名σのｚ（ｋ）とを読み込み、ａ（ｋ）’＝ｅ（ｚ（ｋ），ｇ２）・ｅ（ｇ１，ｐｋ（ｋ））ｃ（ｋ）∈Ｇ３を算出し、算出したａ（ｋ）’を記憶部１３０ｋに格納する（ステップＳ１５５）。また、ペアリング演算部１３０ｃが、記憶部１３０ｋから生成元ｇ１と算出されたｈ（ｉ）’と署名σのｚ（ｋ），ｗ（ｋ）とを読み込み、ｂ（ｋ）’＝ｅ（ｚ（ｋ），ｈ（ｉ）’）・ｅ（ｇ１，ｗ（ｋ））ｃ（ｋ）∈Ｇ３を算出し、算出したｂ（ｋ）’を記憶部１３０ｋに格納する（ステップＳ１５６）。次に、関数演算部１３０ｄが、記憶部１３０ｋからメッセージｍ（ｉ）と署名σのｔ（ｋ），ｗ（ｋ）と算出されたａ（ｋ）’，ｂ（ｋ）’とを読み込み、Ｈ’（ｍ（ｉ），ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ａ（ｋ）’）∀ｋ∈Ｌ，（ｂ（ｋ）’）∀ｋ∈Ｌ）を算出し、Ｈ’（ｍ（ｉ），ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ａ（ｋ）’）∀ｋ∈Ｌ，（ｂ（ｋ）’）∀ｋ∈Ｌ）を記憶部１３０ｋに格納する（ステップＳ１５７）。次に、加算部１３０ｍが記憶部１３０ｋから署名σのｃ（ｋ）を読み込み、Σk∈Ｌｃ（ｋ）  ｍｏｄ  ｐを算出し、その演算結果を記憶部１３０ｋに格納する（ステップＳ１５８）。
【０１０９】
そして、署名判定部１３０ｅが、記憶部１３０ｋから算出されたＨ’（ｍ（ｉ），ｔ（ｉ），（ｗ（ｋ））∀ｋ∈Ｌ，（ａ（ｋ）’）∀ｋ∈Ｌ，（ｂ（ｋ）’）∀ｋ∈Ｌ）とΣk∈Ｌｃ（ｋ）  ｍｏｄ  ｐとを読み込み、これらが一致するか否かを判定する（ステップＳ１５９）。これらが一致すると判定された場合、その結果が出力部１３０ｇに転送され、出力部１３０ｇは署名σを受理する旨（１）を出力する（ステップＳ１６０）。一方、これらが一致しないと判定された場合、その結果が出力部１３０ｇに転送され、出力部１３０ｇは署名σを拒絶する旨（０）を出力する（ステップＳ１６１）。
【０１１０】
〔変形例〕
なお、本発明は上述の各実施の形態に限定されるものではない。例えば、上述の各実施形態では、署名者装置が代理署名装置に署名生成を委託する際にｈやｈ（ｉ）を代理署名装置に送信する構成であった。しかし、署名者装置が代理署名装置に署名生成を委託する際にｈやｈ（ｉ）を代理署名装置に送信せず、代理署名装置がｈ＝Ｈ（ｍ，ｔ）やｈ（ｉ）＝Ｈ（ｍ（ｉ），ｔ（ｉ））によってｈやｈ（ｉ）を算出する構成であってもよい。
【０１１１】
また、上述の各実施形態では、署名者装置が鍵生成を行う構成としたが、署名者装置以外の鍵生成装置が鍵生成を行ってもよい。また、上述の各実施形態では、代理署名装置の鍵判定部が鍵の判定を行い、署名可能化子判定部が署名可能化子の判定を行うこととしたが、これらの処理（データ判定処理、ペアリング演算処理、ペアリング演算結果比較処理など）の少なくとも一部を代理署名装置以外の鍵判定装置や署名可能化子判定装置が行ってもよい。
【０１１２】
また、各実施形態の剰余類Ｚｑを整数に置換した実施形態であってもよい。
また、各実施形態では、２つの別個のハッシュ関数Ｈ：｛０，１｝＊→Ｇ２及びＨ’：｛０，１｝＊→Ｚｑを用いたが、ハッシュ関数以外の関数Ｈ：｛０，１｝＊→Ｇ２及びＨ’：｛０，１｝＊→Ｚｑを用いてもよい。
【０１１３】
また、上述の各実施の形態では、生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２を事前に装置間で共有する構成であった。しかし、生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２を事前に装置間で共有せず、ｐｋとｇ１∈Ｇ１，ｇ２∈Ｇ２との組を公開鍵としてもよい。また、ｇ１，ｇ２，ｐの情報を各装置の記憶部に格納するのではなく、各装置にインストールされるプログラムがこれらの情報を保持していてもよい。
【０１１４】
また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【０１１５】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【０１１６】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【０１１７】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【０１１８】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェアで実現してもよい。
【産業上の利用可能性】
【０１１９】
本発明は、電子署名を用いるあらゆる利用分野に適用可能である。例えば、高機能なＣＰＵや高容量のメモリを搭載していない装置（例えば、携帯電話等）を署名者装置とし、高機能なＣＰＵや高容量のメモリを搭載した代理署名装置に署名生成を委託するシステム等への利用が想定できる。
【図面の簡単な説明】
【０１２０】
【図１】図１は、第１実施形態の署名システムの全体構成を示した概念図である。
【図２】図２は、第１実施形態の署名者装置のハードウェア構成を例示したブロック図である。
【図３】図３は、第１実施形態の署名者装置の機能構成を例示したブロック図である。
【図４】図４は、第１実施形態の代理署名装置の機能構成を例示したブロック図である。
【図５】図５は、第１実施形態の署名検証装置の機能構成を例示したブロック図である。
【図６】図６（ａ）は、第１実施形態の鍵生成処理を説明するためのフローチャートである。図６（ｂ）は第１実施形態の署名生成委託処理を説明するためのフローチャートである。
【図７】図７は、第１実施形態の署名生成処理を説明するためのフローチャートである。
【図８】図８は、第１実施形態の署名生成処理を説明するためのフローチャートである。
【図９】図９は、第１実施形態の署名検証処理を説明するためのフローチャートである。
【図１０】図１０は、第２実施形態の署名システムの全体構成を示した概念図である。
【図１１】図１１は、第２実施形態の署名者装置の機能構成を例示したブロック図である。
【図１２】図１２は、第２実施形態の代理署名装置の機能構成を例示したブロック図である。
【図１３】図１３は、第２実施形態の署名検証装置の機能構成を例示したブロック図である。
【図１４】図１４（ａ）は、第２実施形態の鍵生成処理を説明するためのフローチャートである。図１４（ｂ）は第２実施形態の署名生成委託処理を説明するためのフローチャートである。
【図１５】図１５は、第２実施形態の署名生成処理を説明するためのフローチャートである。
【図１６】図１６は、第２実施形態の署名生成処理を説明するためのフローチャートである。
【図１７】図１７は、第２実施形態の署名検証処理を説明するためのフローチャートである。
【符号の説明】
【０１２１】
１，１００  署名システム
１０，１１０  署名者装置
２０，１２０  代理署名装置
３０，１３０  署名検証装置
【図１】
2008148033.tif 000004
【図２】
2008148033.tif 000005
【図３】
2008148033.tif 000006
【図４】
2008148033.tif 000007
【図５】
2008148033.tif 000008
【図６】
2008148033.tif 000009
【図７】
2008148033.tif 000010
【図８】
2008148033.tif 000011
【図９】
2008148033.tif 000012
【図１０】
2008148033.tif 000013
【図１１】
2008148033.tif 000014
【図１２】
2008148033.tif 000015
【図１３】
2008148033.tif 000016
【図１４】
2008148033.tif 000017
【図１５】
2008148033.tif 000018
【図１６】
2008148033.tif 000019
【図１７】
2008148033.tif 000020