(57)【要約】【課題】署名者が任意にグループを指定可能でありながら、グループ管理者が悪意のメンバーを追跡でき、なおかつ安全性要件を満たす匿名署名技術を提供する。【解決手段】各匿名署名生成装置に公開鍵y(w),秘密鍵x(w),追跡鍵t(w)を生成する。x(w)は任意整数、y(w)は楕円スカラー倍算値y(w)=x(w)・g1∈G1、t(w)は楕円スカラー倍算値y(w)=x(w)・g2∈G2である。匿名署名生成装置は、自らの秘密鍵x(i)と署名グループを構成する他の匿名署名生成装置の公開鍵y(j)とを用い、巡回群G1の4つの元(g1,y(i),h,σ(i))∈G14の組のみがDDH tupleの集合となるように、署名グループを構成する全ての匿名署名生成装置についての(g1,y(k),h,σ(k))を生成し、これらを含む匿名署名σを生成する。管理装置30がその匿名署名σの匿名性を無効にする場合は、すべてのk∈Lの追跡鍵t(k)を用い、e(h,t(k))=e(σ(k),g2)=1となるk=iを検出し、真の匿名署名生成装置を検出する。【選択図】図５
2008098933.tif 000002
【特許請求の範囲】
【請求項１】
匿名署名処理に必要な鍵を生成する鍵生成装置であって、
整数の任意値ｘ（ｗ）をｗ番目（ｗ∈Ｎ（Ｎ＝｛０，…，ｎ−１｝））の匿名署名生成装置の秘密鍵ｘ（ｗ）として生成し、生成した各秘密鍵ｘ（ｗ）を出力する秘密鍵生成部と、
各ｗ∈Ｎに対応する各秘密鍵ｘ（ｗ）を入力とし、有限体Ｆｑ上に定義された楕円曲線Ｅ／Ｆｑ上の点からなる位数ｐの巡回群Ｇ１の生成元をｇ１とした場合における、当該楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｙ（ｗ）＝ｘ（ｗ）・ｇ１∈Ｇ１を行い、各演算結果ｙ（ｗ）をｋ番目の匿名署名生成装置の公開鍵ｙ（ｗ）として出力する公開鍵生成部と、
各ｗ∈Ｎに対応する各秘密鍵ｘ（ｗ）を入力とし、上記楕円曲線Ｅ／Ｆｑ上の点からなる位数ｐの巡回群Ｇ２の生成元をｇ２とした場合における、当該楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｔ（ｗ）＝ｘ（ｗ）・ｇ２を行い、各演算結果ｔ（ｗ）をｗ番目の匿名署名生成装置の追跡鍵ｔ（ｗ）として出力する追跡鍵生成部と、
を有することを特徴とする鍵生成装置。
【請求項２】
請求項１に記載の鍵生成装置であって、
上記巡回群Ｇ１と上記巡回群Ｇ２とで重複する元が存在しない、
ことを特徴とする鍵生成装置。
【請求項３】
署名クループを構成するｕ個（ｕ≧２）の匿名署名生成装置の１つであるｉ番目（ｉ∈Ｌ，Ｌ＝｛０，…，ｕ−１｝）の匿名署名生成装置であって、
整数である自らの秘密鍵ｘ（ｉ）を格納する第１記憶部と、
有限体Ｆｑ上に定義された楕円曲線Ｅ／Ｆｑ上の点からなる位数ｐの巡回群Ｇ１の生成元をｇ１とし、ｊ番目（ｊ∈Ｌ，ｊ≠ｉ）の匿名署名生成装置の秘密鍵をｘ（ｊ）とした場合における、当該楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算値ｙ（ｊ）＝ｘ（ｊ）・ｇ１∈Ｇ１であるｊ番目の匿名署名生成装置の公開鍵ｙ（ｊ）を、すべてのｊについて格納する第２記憶部と、
署名対象であるメッセージｍを格納する第３記憶部と、
上記メッセージｍを含む値に対し、当該値を上記巡回群Ｇ１の元へ写す関数Ｈを作用させた演算結果ｈ∈Ｇ１と、上記秘密鍵ｘ（ｉ）とを入力とし、上記楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算σ（ｉ）＝ｘ（ｉ）・ｈ∈Ｇ１を行い、その演算結果σ（ｉ）を出力する第１楕円スカラー倍算部と、
各ｊ∈Ｌ（ｊ≠ｉ）に対し、任意値σ（ｊ）∈Ｇ１を生成して出力する第１任意値生成部と、
整数の任意値ｒ（ｉ）を生成して出力する第２任意値生成部と、
上記任意値ｒ（ｉ）を入力とし、上記楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ａ（ｉ）＝ｒ（ｉ）・ｇ１∈Ｇ１を行い、その演算結果ａ（ｉ）を出力する第２楕円スカラー倍算部と、
上記任意値ｒ（ｉ）と上記演算結果ｈとを入力とし、上記楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｂ（ｉ）＝ｒ（ｉ）・ｈ∈Ｇ１を行い、その演算結果ｂ（ｉ）を出力する第３楕円スカラー倍算部と、
各ｊ∈Ｌ（ｊ≠ｉ）に対し、整数の任意値ｚ（ｊ），ｃ（ｊ）を生成して出力する第３任意値生成部と、
上記任意値ｚ（ｊ），ｃ（ｊ）と上記公開鍵ｙ（ｊ）とを入力とし、各ｊ∈Ｌ（ｊ≠ｉ）に対し、それぞれ、上記楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｊ）・ｇ１及びｃ（ｊ）・ｙ（ｊ）∈Ｇ１と、楕円加算ａ（ｊ）＝ｚ（ｊ）・ｇ１＋ｃ（ｊ）・ｙ（ｊ）∈Ｇ１とを行い、当該演算結果ａ（ｊ）を出力する第１楕円演算部と、
上記演算結果ｈ及び上記任意値ｚ（ｊ），ｃ（ｊ），σ（ｊ）を入力とし、各ｊ∈Ｌ（ｊ≠ｉ）に対し、それぞれ、上記楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｊ）・ｈ及びｃ（ｊ）・σ（ｊ）∈Ｇ１と、楕円加算ｂ（ｊ）＝ｚ（ｊ）・ｈ＋ｃ（ｊ）・σ（ｊ）∈Ｇ１とを行い、当該演算結果ｂ（ｊ）を出力する第２楕円演算部と、
すべてのｋ∈Ｌについてのσ（ｋ），ａ（ｋ），ｂ（ｋ）の各要素と上記メッセージｍとを含む入力値に対し、当該入力値を整数へ写すハッシュ関数Ｈ’を作用させ、その演算結果ｃを出力するＨ’関数演算部と、
上記任意値ｃ（ｊ）と演算結果ｃとを入力とし、
ｃ（ｉ）＝ｃ−Σｊ≠ｉｃ（ｊ） ｍｏｄ ｐ
の演算を行い、その演算結果ｃ（ｉ）を出力する第１整数演算部と、
上記任意値ｒ（ｉ）と上記演算結果ｃ（ｉ）と秘密鍵ｘ（ｉ）とｐを入力とし、
ｚ（ｉ）＝ｒ（ｉ）−ｃ（ｉ）・ｘ（ｉ） ｍｏｄ  p
の演算を行い、その演算結果ｚ（ｉ）を出力する第２整数演算部と、
すべてのｋ∈Ｌについてのσ（ｋ），ｃ（ｋ），ｚ（ｋ）を含む情報を上記メッセージｍの匿名署名σとし、当該匿名署名σを上記メッセージｍとともに出力する匿名署名出力部と、
を有することを特徴とする匿名署名生成装置。
【請求項４】
請求項３に記載の匿名署名生成装置であって、
整数の任意値ｒを生成する第４任意値生成部をさらに有し、
上記関数Ｈは、
入力値を上記巡回群Ｇ１の元へ写すハッシュ関数であり、
上記演算結果ｈは、
上記メッセージｍと上記任意値ｒとからなる値に対し、上記ハッシュ関数Ｈを作用させた演算結果であり、
上記Ｈ’関数演算部は、
上記任意値ｒとすべてのｋ∈Ｌについてのσ（ｋ），ａ（ｋ），ｂ（ｋ）の各要素と上記メッセージｍとからなる入力値に対し、当該入力値を整数へ写すハッシュ関数Ｈ’を作用させ、その演算結果ｃを出力し、
上記匿名署名出力部は、
上記任意値ｒとすべてのｋ∈Ｌについてのσ（ｋ），ｃ（ｋ），ｚ（ｋ）とからなる情報を上記メッセージｍの匿名署名σとし、当該匿名署名σを上記メッセージｍとともに出力する、
ことを特徴とする匿名署名生成装置。
【請求項５】
匿名署名を検証する署名検証装置であって、
有限体Ｆｑ上に定義された楕円曲線Ｅ／Ｆｑ上の点からなる位数ｐの巡回群Ｇ１の生成元をｇ１とし、ｋ番目（ｋ∈Ｌ）の匿名署名生成装置の秘密鍵をｘ（ｋ）とした場合における、当該楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算値ｙ（ｋ）＝ｘ（ｋ）・ｇ１∈Ｇ１であるｋ番目の匿名署名生成装置の公開鍵ｙ（ｋ）を、すべてのｋ∈Ｌについて格納する第１記憶部と、
すべてのｋ∈Ｌについてのσ（ｋ），ｃ（ｋ），ｚ（ｋ）を含む匿名署名σとメッセージｍとを格納する第２記憶部と、
上記公開鍵ｙ（ｋ）と上記匿名署名σのｚ（ｋ），ｃ（ｋ）とを入力とし、すべてのｋ∈Ｌに対し、それぞれ、上記楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｋ）・ｇ１及びｃ（ｋ）・ｙ（ｋ）∈Ｇ１と、楕円加算ａ（ｋ）＝ｚ（ｋ）・ｇ１＋ｃ（ｋ）・ｙ（ｋ）∈Ｇ１とを行い、当該演算結果ａ（ｋ）を出力する第１楕円演算部と、
上記メッセージｍを含む値に対し、当該値を上記巡回群Ｇ１の元へ写す関数Ｈを作用させた演算結果ｈ∈Ｇ１と、上記匿名署名σのσ（ｋ），ｃ（ｋ），ｚ（ｋ）とを入力とし、すべてのｋ∈Ｌに対し、それぞれ、上記楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｋ）・ｈ及びｃ（ｋ）・σ（ｋ）∈Ｇ１と、楕円加算ｂ（ｋ）＝ｚ（ｋ）・ｈ＋ｃ（ｋ）・σ（ｋ）∈Ｇ１とを行い、当該演算結果ｂ（ｋ）を出力する第２楕円演算部と、
すべてのｋ∈Ｌについてのσ（ｋ），ａ（ｋ），ｂ（ｋ）の各要素と上記メッセージｍとを含む入力値に対し、当該入力値を整数へ写すハッシュ関数Ｈ’を作用させ、その演算結果ｃを出力するＨ’関数演算部と、
上記匿名署名σのｃ（ｋ）と上記演算結果ｃとを入力とし、
ｃ＝Σk∈Ｌｃ（ｋ）ｍｏｄ ｐ
を満たすか否かを判断する比較部と、
ｃ＝Σk∈Ｌｃ（ｋ）ｍｏｄ ｐを満たすことを条件に上記匿名署名σが合格である旨を出力する検証結果出力部と、
を有することを特徴とする署名検証装置。
【請求項６】
請求項５に記載の署名検証装置であって、
上記匿名署名σは、
任意値ｒとすべてのｋ∈Ｌについてのσ（ｋ），ｃ（ｋ），ｚ（ｋ）とからなり、
上記関数Ｈは、
入力値を上記巡回群Ｇ１の元へ写すハッシュ関数であり、
上記演算結果ｈは、
上記メッセージｍと上記任意値ｒとからなる値に対し、上記ハッシュ関数Ｈを作用させた演算結果であり、
上記Ｈ’関数演算部は、
上記任意値ｒとすべてのｋ∈Ｌについてのσ（ｋ），ａ（ｋ），ｂ（ｋ）の各要素と上記メッセージｍとからなる入力値に対し、当該入力値を整数へ写すハッシュ関数Ｈ’を作用させ、その演算結果ｃを出力する、
ことを特徴とする署名検証装置。
【請求項７】
匿名署名システムを管理する管理装置であって、
有限体Ｆｑ上に定義された楕円曲線Ｅ／Ｆｑ上の点からなる位数ｐの巡回群Ｇ１の生成元をｇ１とし、ｋ番目（ｋ∈Ｌ，ｋ＝｛０，...，ｕ−１｝）の匿名署名生成装置の秘密鍵をｘ（ｋ）とした場合における、当該楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算値ｙ（ｋ）＝ｘ（ｋ）・ｇ１∈Ｇ１である匿名署名生成装置の公開鍵ｙ（ｋ）を、すべてのｋ∈Ｌについて格納する第１記憶部と、
上記楕円曲線Ｅ／Ｆｑ上の点からなる位数ｐの巡回群Ｇ２の生成元をｇ２とした場合における、当該楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算値ｔ（ｋ）＝ｘ（ｋ）・ｇ２である匿名署名生成装置の追跡鍵ｔ（ｋ）を、すべてのｋ∈Ｌについて格納する第２記憶部と、
すべてのｋ∈Ｌについてのσ（ｋ），ｃ（ｋ），ｚ（ｋ）を含む匿名署名σとメッセージｍとを格納する第３記憶部と、
上記メッセージｍを含む値に対し、当該値を上記巡回群Ｇ１の元へ写す関数Ｈを作用させた演算結果ｈ∈Ｇ１と、上記追跡鍵ｔ（ｋ）∈Ｇ２とを入力とし、すべてのｋ∈Ｌについて、当該演算結果ｈと追跡鍵ｔ（ｋ）との組をペアリング関数ｅ：Ｇ１×Ｇ２→Ｇ３に代入し、各演算結果ｅ（ｈ，ｔ（ｋ））を出力する第１ペアリング演算部と、
上記匿名署名σのσ（ｋ）を入力とし、すべてのｋ∈Ｌについて、当該σ（ｋ）と上記生成元ｇ２との組を上記ペアリング関数ｅに代入し、各演算結果ｅ（σ（ｋ），ｇ２）を出力する第２ペアリング演算部と、
上記演算結果ｅ（ｈ，ｔ（ｋ））と上記演算結果ｅ（σ（ｋ），ｇ２）とを入力とし、ｋ∈Ｌごとに、上記演算結果ｅ（ｈ，ｔ（ｋ））と上記演算結果ｅ（σ（ｋ），ｇ２）とが一致するか否かを判定し、これらが一致すると判定されたｋを、真の匿名署名生成装置を示す情報として出力する判定部と、
を有することを特徴とする管理装置。
【請求項８】
請求項７に記載の管理装置であって、
上記匿名署名σは、
任意値ｒとすべてのｋ∈Ｌについてのσ（ｋ），ｃ（ｋ），ｚ（ｋ）とからなり、
上記関数Ｈは、
入力値を上記巡回群Ｇ１の元へ写すハッシュ関数であり、
上記演算結果ｈは、
上記メッセージｍと上記任意値ｒとからなる値に対し、上記ハッシュ関数Ｈを作用させた演算結果である、
ことを特徴とする管理装置。
【請求項９】
署名クループを構成するｕ個（ｕ≧２）の匿名署名生成装置の１つであるｉ番目（ｉ∈Ｌ，Ｌ＝｛０，…，ｕ−１｝）の匿名署名生成装置が匿名署名を生成し、署名検証装置がその匿名署名を検証し、必要に応じて管理装置がその匿名署名の匿名性を無効にする匿名署名方法であって、
ｉ番目（ｉ∈Ｌ）の匿名署名生成装置において、
（ａ１）整数である自らの秘密鍵ｘ（ｉ）を第１記憶部に格納するステップと、
（ａ２）有限体Ｆｑ上に定義された楕円曲線Ｅ／Ｆｑ上の点からなる位数ｐの巡回群Ｇ１の生成元をｇ１とし、ｊ番目（ｊ∈Ｌ，ｊ≠ｉ）の匿名署名生成装置の秘密鍵をｘ（ｊ）とした場合における、当該楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算値ｙ（ｊ）＝ｘ（ｊ）・ｇ１∈Ｇ１であるｊ番目の匿名署名生成装置の公開鍵ｙ（ｊ）を、すべてのｊについて第２記憶部に格納するステップと、
（ａ３）署名対象であるメッセージｍを第３記憶部に格納するステップと、
（ａ４）上記メッセージｍを含む値に対し、当該値を上記巡回群Ｇ１の元へ写す関数Ｈを作用させた演算結果ｈ∈Ｇ１と、上記秘密鍵ｘ（ｉ）とを入力とし、第１楕円スカラー倍算部が、上記楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算σ（ｉ）＝ｘ（ｉ）・ｈ∈Ｇ１を行い、その演算結果σ（ｉ）を出力するステップと、
（ａ５）第１任意値生成部が、各ｊ∈Ｌ（ｊ≠ｉ）に対し、任意値σ（ｊ）∈Ｇ１を生成して出力するステップと、
（ａ６）第２任意値生成部が、整数の任意値ｒ（ｉ）を生成して出力するステップと、
（ａ７）上記任意値ｒ（ｉ）を入力とし、第２楕円スカラー倍算部が、上記楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ａ（ｉ）＝ｒ（ｉ）・ｇ１∈Ｇ１を行い、その演算結果ａ（ｉ）を出力するステップと、
（ａ８）上記任意値ｒ（ｉ）と上記演算結果ｈとを入力とし、第３楕円スカラー倍算部が、上記楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｂ（ｉ）＝ｒ（ｉ）・ｈ∈Ｇ１を行い、その演算結果ｂ（ｉ）を出力するステップと、
（ａ９）第３任意値生成部が、各ｊ∈Ｌ（ｊ≠ｉ）に対し、整数の任意値ｚ（ｊ），ｃ（ｊ）を生成して出力するステップと、
（ａ１０）上記任意値ｚ（ｊ），ｃ（ｊ）と上記公開鍵ｙ（ｊ）とを入力とし、第１楕円演算部が、各ｊ∈Ｌ（ｊ≠ｉ）に対し、それぞれ、上記楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｊ）・ｇ１及びｃ（ｊ）・ｙ（ｊ）∈Ｇ１と、楕円加算ａ（ｊ）＝ｚ（ｊ）・ｇ１＋ｃ（ｊ）・ｙ（ｊ）∈Ｇ１とを行い、当該演算結果ａ（ｊ）を出力するステップと、
（ａ１１）上記演算結果ｈ及び上記任意値ｚ（ｊ），ｃ（ｊ），σ（ｊ）を入力とし、第２楕円演算部が、各ｊ∈Ｌ（ｊ≠ｉ）に対し、それぞれ、上記楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｊ）・ｈ及びｃ（ｊ）・σ（ｊ）∈Ｇ１と、楕円加算ｂ（ｊ）＝ｚ（ｊ）・ｈ＋ｃ（ｊ）・σ（ｊ）∈Ｇ１とを行い、当該演算結果ｂ（ｊ）を出力するステップと、
（ａ１２）第１Ｈ’関数演算部が、すべてのｋ∈Ｌについてのσ（ｋ），ａ（ｋ），ｂ（ｋ）の各要素と上記メッセージｍとを含む入力値に対し、当該入力値を整数へ写すハッシュ関数Ｈ’を作用させ、その演算結果ｃを出力するステップと、
（ａ１３）上記任意値ｃ（ｊ）と演算結果ｃとを入力とし、第１整数演算部が、ｃ（ｉ）＝ｃ−Σｊ≠ｉｃ（ｊ） ｍｏｄ ｐの演算を行い、その演算結果ｃ（ｉ）を出力するステップと、
（ａ１４）上記任意値ｒ（ｉ）と上記演算結果ｃ（ｉ）と秘密鍵ｘ（ｉ）とｐを入力とし、第２整数演算部が、ｚ（ｉ）＝ｒ（ｉ）−ｃ（ｉ）・ｘ（ｉ） ｍｏｄ  pの演算を行い、その演算結果ｚ（ｉ）を出力するステップと、
（ａ１５）匿名署名出力部が、すべてのｋ∈Ｌについてのσ（ｋ），ｃ（ｋ），ｚ（ｋ）を含む情報を上記メッセージｍの匿名署名σとし、当該匿名署名σを上記メッセージｍとともに出力するステップと、を実行し、
署名検証装置において、
（ｂ１）上記楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算値ｙ（ｋ）＝ｘ（ｋ）・ｇ１∈Ｇ１であるｋ番目の匿名署名生成装置の公開鍵ｙ（ｋ）を、すべてのｋ∈Ｌについて、第４記憶部に格納するステップと、
（ｂ２）入力された上記匿名署名σと上記メッセージｍとを第５記憶部に格納するステップと、
（ｂ３）上記公開鍵ｙ（ｋ）と上記匿名署名σのｚ（ｋ），ｃ（ｋ）とを入力とし、第３楕円演算部が、すべてのｋ∈Ｌに対し、それぞれ、上記楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｋ）・ｇ１及びｃ（ｋ）・ｙ（ｋ）∈Ｇ１と、楕円加算ａ（ｋ）＝ｚ（ｋ）・ｇ１＋ｃ（ｋ）・ｙ（ｋ）∈Ｇ１とを行い、当該演算結果ａ（ｋ）を出力するステップと、
（ｂ４）上記メッセージｍを含む値に対して上記関数Ｈを作用させた演算結果ｈ∈Ｇ１と、上記匿名署名σのσ（ｋ），ｃ（ｋ），ｚ（ｋ）とを入力とし、第４楕円演算部が、すべてのｋ∈Ｌに対し、それぞれ、上記楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｋ）・ｈ及びｃ（ｋ）・σ（ｋ）∈Ｇ１と、楕円加算ｂ（ｋ）＝ｚ（ｋ）・ｈ＋ｃ（ｋ）・σ（ｋ）∈Ｇ１とを行い、当該演算結果ｂ（ｋ）を出力するステップと、
（ｂ５）第２Ｈ’関数演算部が、すべてのｋ∈Ｌについてのσ（ｋ），ａ（ｋ），ｂ（ｋ）の各要素と上記メッセージｍとを含む入力値に対し、上記ハッシュ関数Ｈ’を作用させ、その演算結果ｃを出力するステップと、
（ｂ６）上記匿名署名σのｃ（ｋ）と上記演算結果ｃとを入力とし、比較部が、ｃ＝Σk∈Ｌｃ（ｋ）ｍｏｄ ｐを満たすか否かを判断するステップと、
（ｂ７）検証結果出力部が、ｃ＝Σ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
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のグループ署名によって署名を行う場合、予めグループを登録しておかなければならない。しかし、ｎ人からなる集合の部分集合は２ｎ個存在する。そのため、ｎが大きい場合、それらの部分集合すべてに対して予めグループを登録しておくのは現実的ではない。
一方、従来のリング署名の場合、グループ管理者が存在しないので署名者の匿名性が完全に保たれてしまう。そのため、例えば、悪意を持ったメンバーが勝手にグループを作って匿名署名を発行してしまう等の不正行為が行われても、その悪意のメンバーを追跡することができず、そのような不正行為を防止することができない。
【０００６】
このように、従来は、予めグループを登録しておくことなく、署名者が任意にグループを指定可能でありながら、グループ管理者が悪意のメンバーを追跡でき、なおかつ安全性要件を満たす匿名署名は存在しなかった。
本発明はこのような点に鑑みてなされたものであり、予めグループを登録しておくことなく、署名者が任意にグループを指定可能でありながら、グループ管理者が悪意のメンバーを追跡でき、なおかつ安全性要件を満たす匿名署名技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明では上記課題を解決するために、以下のような、署名クループを構成するｕ個（ｕ≧２）の匿名署名生成装置の１つであるｉ番目（ｉ∈Ｌ，Ｌ＝｛０，…，ｕ−１｝）の匿名署名生成装置が匿名署名を生成し、署名検証装置がその匿名署名を検証し、必要に応じて管理装置がその匿名署名の匿名性を無効にする匿名署名方法が提供される。
【０００８】
この方法では、まず、鍵生成装置が、整数の任意値ｘ（ｗ）をｗ番目（ｗ∈Ｎ，Ｎ＝｛０，…，ｎ−１｝）の匿名署名生成装置の秘密鍵ｘ（ｗ）として生成し、有限体Ｆｑ上に定義された楕円曲線Ｅ／Ｆｑ上の点からなる位数ｐの巡回群Ｇ１の生成元をｇ１とした場合における、当該楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｙ（ｗ）＝ｘ（ｗ）・ｇ１∈Ｇ１を行い、各演算結果ｙ（ｗ）をｗ番目の匿名署名生成装置の公開鍵ｙ（ｗ）し、上記楕円曲線Ｅ／Ｆｑ上の点からなる位数ｐの巡回群Ｇ２の生成元をｇ２とした場合における、当該楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｔ（ｗ）＝ｘ（ｗ）・ｇ２を行い、各演算結果ｔ（ｗ）をｗ番目の匿名署名生成装置の追跡鍵ｔ（ｗ）とする。なお、Ｎは、署名グループを構成し得る匿名署名生成装置に対応する番号ｗの集合を示す。
【０００９】
このように生成された秘密鍵ｘ（ｗ）は、それぞれ、ｗ番目（ｗ∈Ｎ）の匿名署名生成装置のみに格納される。また、匿名署名を生成するｉ番目（ｉ∈Ｌ）の匿名署名生成装置には、少なくとも、署名グループを構成する匿名署名生成装置のうち、ｉ番目（ｉ∈Ｌ）の匿名署名生成装置を除く匿名署名生成装置に対応する公開鍵ｙ（ｊ）（ｊ∈Ｌ，ｊ≠ｉ）が格納される。また、署名検証装置及び管理装置には、少なくとも、指定された署名グループを構成する各匿名署名生成装置に対応するすべての公開鍵ｙ（ｋ）（ｋ∈Ｌ）が格納される。さらに、管理装置には、少なくとも、各匿名署名生成装置に対応するすべての追跡鍵ｔ（ｋ）が格納される。なお、本発明の場合、署名グループは署名者が公開鍵ｙ（ｊ）を選択することによって任意に指定できる。よって、本発明では、署名グループの事前登録は不要である。
【００１０】
ｉ番目（ｉ∈Ｌ）の匿名署名生成装置が匿名署名を生成する場合、その第１楕円スカラー倍算部が、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算σ（ｉ）＝ｘ（ｉ）・ｈ∈Ｇ１を行い、その演算結果σ（ｉ）を出力する。なお、ｈは、署名対象のメッセージｍを含む値に対し、当該値を巡回群Ｇ１の元へ写す関数Ｈを作用させた演算結果ｈ∈Ｇ１である。また、第１任意値生成部が、各ｊ∈Ｌ（ｊ≠ｉ）に対し、任意値σ（ｊ）∈Ｇ１を生成し、第２任意値生成部が、整数の任意値ｒ（ｉ）を生成し、第２楕円スカラー倍算部が、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ａ（ｉ）＝ｒ（ｉ）・ｇ１∈Ｇ１を行い、第３楕円スカラー倍算部が、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｂ（ｉ）＝ｒ（ｉ）・ｈ∈Ｇ１を行う。また、第３任意値生成部が、各ｊ∈Ｌ（ｊ≠ｉ）に対し、整数の任意値ｚ（ｊ），ｃ（ｊ）を生成し、第１楕円演算部が、各ｊ∈Ｌ（ｊ≠ｉ）に対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｊ）・ｇ１及びｃ（ｊ）・ｙ（ｊ）∈Ｇ１と、楕円加算ａ（ｊ）＝ｚ（ｊ）・ｇ１＋ｃ（ｊ）・ｙ（ｊ）∈Ｇ１とを行い、第２楕円演算部が、各ｊ∈Ｌ（ｊ≠ｉ）に対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｊ）・ｈ及びｃ（ｊ）・σ（ｊ）∈Ｇ１と、楕円加算ｂ（ｊ）＝ｚ（ｊ）・ｈ＋ｃ（ｊ）・σ（ｊ）∈Ｇ１とを行う。次に、第１Ｈ’関数演算部が、すべてのｋ∈Ｌについてのσ（ｋ），ａ（ｋ），ｂ（ｋ）の各要素とメッセージｍとを含む入力値に対し、当該入力値を整数へ写すハッシュ関数Ｈ’を作用させ、その演算結果ｃを求める。そして、第１整数演算部が、ｃ（ｉ）＝ｃ−Σｊ≠ｉｃ（ｊ） ｍｏｄ ｐの演算を行い、第２整数演算部が、ｚ（ｉ）＝ｒ（ｉ）−ｃ（ｉ）・ｘ（ｉ） ｍｏｄ  pの演算を行い、匿名署名出力部が、すべてのｋ∈Ｌについてのσ（ｋ），ｃ（ｋ），ｚ（ｋ）を含む情報をメッセージｍの匿名署名σとし、当該匿名署名σをメッセージｍとともに出力する。
【００１１】
このように生成された匿名署名σを署名検証装置において検証する場合、署名検証装置は、まず、その第３楕円演算部が、すべてのｋ∈Ｌに対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｋ）・ｇ１及びｃ（ｋ）・ｙ（ｋ）∈Ｇ１と、楕円加算ａ（ｋ）＝ｚ（ｋ）・ｇ１＋ｃ（ｋ）・ｙ（ｋ）∈Ｇ１とを行い、第４楕円演算部が、すべてのｋ∈Ｌに対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｋ）・ｈ及びｃ（ｋ）・σ（ｋ）∈Ｇ１と、楕円加算ｂ（ｋ）＝ｚ（ｋ）・ｈ＋ｃ（ｋ）・σ（ｋ）∈Ｇ１とを行う。なお、ｈは、メッセージｍを含む値に対して上記関数Ｈを作用させた演算結果ｈ∈Ｇ１である。また、σ（ｋ），ｃ（ｋ），ｚ（ｋ）は、匿名署名σから抽出した情報である。また、ｇ１は例えば本システムでの共有情報である。次に、第２Ｈ’関数演算部が、すべてのｋ∈Ｌについてのσ（ｋ），ａ（ｋ），ｂ（ｋ）の各要素とメッセージｍとを含む入力値に対し、ハッシュ関数Ｈ’を作用させ、その演算結果ｃを求める。そして、比較部が、ｃ＝Σk∈Ｌｃ（ｋ）ｍｏｄ ｐを満たすか否かを判断する。検証結果出力部は、ｃ＝Σk∈Ｌｃ（ｋ）ｍｏｄ ｐを満たすことを条件に、匿名署名σが合格である旨を出力する。
【００１２】
ここで、真に署名を行ったのはｉ番目（ｉ∈Ｌ）の匿名署名生成装置である。ｉ番目（ｉ∈Ｌ）の匿名署名生成装置は、自らに対応するｉについては、楕円スカラー倍算ａ（ｉ）＝ｒ（ｉ）・ｇ１及びｂ（ｉ）＝ｒ（ｉ）・ｈによってａ（ｉ），ｂ（ｉ）を求め、それ以外のｊについては、楕円スカラー倍算・加算ａ（ｊ）＝ｚ（ｊ）・ｇ１＋ｃ（ｊ）・ｙ（ｊ）及びｂ（ｊ）＝ｚ（ｊ）・ｈ＋ｃ（ｊ）・σ（ｊ）によってａ（ｊ），ｂ（ｊ）を求める。そして、ｉ番目（ｉ∈Ｌ）の匿名署名生成装置は、自らの秘密鍵ｘ（ｉ）を用い、ｚ（ｉ）＝ｒ（ｉ）−ｃ（ｉ）・ｘ（ｉ） ｍｏｄ  pとしている。このｚ（ｉ）により、ａ（ｉ），ｂ（ｉ）も、ａ（ｉ）＝ｚ（ｉ）・ｇ１＋ｃ（ｉ）・ｙ（ｉ）及びｂ（ｉ）＝ｚ（ｉ）・ｈ＋ｃ（ｉ）・σ（ｉ）と変換でき、ｉ以外のｊに対応するａ（ｊ），ｂ（ｊ）と同様の構成とできる。これにより、真に署名を行ったのがｉ番目の匿名署名生成装置であることを知らない署名検証装置でも、匿名署名σ及びメッセージｍから、署名グループを構成する匿名署名生成装置に対応するすべてのｋ∈Ｌに対し、ａ（ｋ），ｂ（ｋ）を算出することができｃを算出することが可能となり、ｃ＝Σk∈Ｌｃ（ｋ）ｍｏｄ ｐの検証を行うことが可能となる。
【００１３】
また、ｉ番目（ｉ∈Ｌ）の匿名署名生成装置は、自らの秘密鍵ｘ（ｉ）を用い、ｚ（ｉ）＝ｒ（ｉ）−ｃ（ｉ）・ｘ（ｉ） ｍｏｄ  pを生成している。ここで、ｃ（ｉ）はｃ（ｉ）＝ｃ−Σｊ≠ｉｃ（ｊ） ｍｏｄ ｐを満たすが、秘密鍵ｘ（ｉ）を知らない第三者は、このような関係を充足するｚ（ｉ）を算出することができない。すなわち、秘密鍵ｘ（ｉ）を知らない第三者は、ｚ（ｉ）＝ｒ（ｉ）−ｃ（ｉ）・ｘ（ｉ） ｍｏｄ  pを正しく算出できず、また、ｃはハッシュ値であり、第三者はその逆元を知ることができないため、ｚ（ｉ）＝ｒ（ｉ）−ｃ（ｉ）・ｘ（ｉ） ｍｏｄ  pとｃ（ｉ）＝ｃ−Σｊ≠ｉｃ（ｊ） ｍｏｄ ｐとの関係からｚ（ｉ）を求めることもできないからである。これにより、署名検証装置は、ｃ＝Σk∈Ｌｃ（ｋ）ｍｏｄ ｐが成立するか否かを判定することにより、署名グループを構成する何れかの匿名署名生成装置が真に署名生成を行ったか否かを判定することが可能となる。ただし、署名検証装置は、どの匿名署名生成装置が署名を生成したかを知ることはできない。
【００１４】
また、真に匿名署名σを生成したｉ番目（ｉ∈Ｌ）の匿名署名生成装置については、楕円曲線Ｅ／Ｆｑ上でα・ｇ１＝ｙ（ｉ）、ｈ＝β・ｇ１、σ（ｉ）＝γ・ｇ１（α，β，γは整数）とした場合に、γ＝α・βが成立する。以下にその理由を示す。まず、ｙ（ｉ），ｈ，σ（ｉ）∈Ｇ１であるため、α・ｇ１＝ｙ（ｉ）、ｈ＝β・ｇ１、σ（ｉ）＝γ・ｇ１を満たす整数α，β，γは必ず存在する。ここで、ｙ（ｉ）＝ｘ（ｉ）・ｇ１であるためα＝ｘ（ｉ）である。また、σ（ｉ）＝ｘ（ｉ）・ｈであるため、ｈ＝β・ｇ１を用い、σ（ｉ）＝γ・ｇ１は、ｘ（ｉ）・β・ｇ１＝γ・ｇ１と変形でき、さらにｘ（ｉ）・β＝γと変形できる。そして、α＝ｘ（ｉ）だからα・β＝γと変形できる。これに対し、真に署名を生成していない匿名署名生成装置に対するσ（ｊ）は任意数であり、γ＝α・βは高い確率で成立しない。
【００１５】
よって、第三者が取得し得る巡回群Ｇ１の元（ｇ１，ｙ（ｋ），ｈ，σ（ｋ））（ｋ∈Ｌ）の組から、楕円曲線Ｅ／Ｆｑ上でα・ｇ１＝ｙ（ｉ）、ｈ＝β・ｇ１、σ（ｉ）＝γ・ｇ１（α，β，γは整数）とした場合に、γ＝α・βが成立するｉ∈Ｌを検出することは、第三者が真に署名を生成した匿名署名生成装置を知ることを意味する。このようなｉ∈Ｌを検出する問題は、ＤＤＨ問題を解くことに相当する（ＤＤＨ問題については後述する）。現在、一般的なＤＤＨ問題を多項式時間で解く方法は知られていない。よって、ＤＤＨ問題を解くことが困難であるとの仮定のもとでは、第三者は、真に匿名署名σを生成した匿名署名生成装置を知ることはできない。これにより署名者の匿名性が担保される。
【００１６】
一方、本発明の場合、追跡鍵ｔ（ｋ）を知る管理装置によって、匿名署名σの匿名性を無効にすることができる。管理装置において匿名署名σの匿名性を無効にする場合、まず、その第１ペアリング演算部が、すべてのｋ∈Ｌについて、演算結果ｈと追跡鍵ｔ（ｋ）との組をペアリング関数ｅ：Ｇ１×Ｇ２→Ｇ３に代入し、各演算結果ｅ（ｈ，ｔ（ｋ））を求め、第２ペアリング演算部が、σ（ｋ）と生成元ｇ２との組をペアリング関数ｅに代入し、各演算結果ｅ（σ（ｋ），ｇ２）を求め、判定部が、ｋ∈Ｌごとに、演算結果ｅ（ｈ，ｔ（ｋ））と演算結果ｅ（σ（ｋ），ｇ２）とが一致するか否かを判定し、これらが一致すると判定されたｋを、真の匿名署名生成装置を示す情報として出力する。なお、ｈは、メッセージｍを含む値に対して上記関数Ｈを作用させた演算結果ｈ∈Ｇ１である。また、σ（ｋ）は匿名署名σから抽出した情報である。
【００１７】
ここで、演算結果ｅ（ｈ，ｔ（ｋ））と演算結果ｅ（σ（ｋ），ｇ２）とが一致するか否かを判定することは、楕円曲線Ｅ／Ｆｑ上でα・ｇ１＝ｙ（ｉ）、ｈ＝β・ｇ１、σ（ｉ）＝γ・ｇ１（α，β，γは整数）とした場合に、γ＝α・βが成立するか否かを判定できることを意味する。すなわち、追跡鍵ｔ（ｋ）を知る管理装置は、ＤＤＨ問題を解くことができ、真に署名を生成した匿名署名生成装置を追跡することができることを意味する。以下、この理由を説明する。
【００１８】
まず、ｈ，σ（ｋ）∈Ｇ１であるためｈ＝β・ｇ１、σ（ｋ）＝γ・ｇ１とおける。また、α・ｇ１＝ｙ（ｉ）とおいた場合α＝ｘ（ｋ）となるため、ｔ（ｋ）＝ｘ（ｋ）・ｇ２＝α・ｇ２とおける。また、ペアリング関数ｅ：Ｇ１×Ｇ２→Ｇ３には、点Ｐ１，Ｐ２∈Ｇ１，Ｑ１，Ｑ２∈Ｇ２に対し、ｅ（Ｐ１＋Ｐ２，Ｑ１）＝ｅ（Ｐ１，Ｑ１）・ｅ（Ｐ２，Ｑ１）及びｅ（Ｐ１，Ｑ１＋Ｑ２）＝ｅ（Ｐ１，Ｑ１）・ｅ（Ｐ１，Ｑ２）との関係が成り立つ。そのため、第１ペアリング演算部が算出した演算結果ｅ（ｈ，ｔ（ｋ））は、ｅ（β・ｇ１，α・ｇ２）＝α・β・ｅ（ｇ１，ｇ２）と変形でき、第２ペアリング演算部が算出する演算結果ｅ（σ（ｋ），ｇ２）は、ｅ（γ・ｇ１，ｇ２）＝γ・ｅ（ｇ１，ｇ２）と変形できる。よって、判定部が、ｋ∈Ｌごとに、演算結果ｅ（ｈ，ｔ（ｋ））と演算結果ｅ（σ（ｋ），ｇ２）とが一致するか否かを判定することは、α・β＝γが成立するか否かを判定することと同じである。これは追跡鍵ｔ（ｋ）を用いればＤＤＨ問題を解くことができ、α・β＝γが成立した際のｋを、真に署名生成を行った匿名署名生成装置に対応するｉとして特定できることを意味する。
【００１９】
また、本発明において好ましくは、巡回群Ｇ１と巡回群Ｇ２とで重複する元が存在しない。ペアリング関数ｅ：Ｇ１×Ｇ２→Ｇ３の他の性質として、点Ｐ１∈Ｇ１，Ｑ１∈Ｇ２に対してＰ１＝Ｑ１であった場合、Ｐ１，Ｑ１の値に拘らずｅ（Ｐ１，Ｑ１）＝１となる性質がある。そのため、巡回群Ｇ１とＧ２とで重複する元が存在する場合、ｈ＝ｔ（ｋ）となったり、σ（ｋ）＝ｇ２となったりすることも起こり得、その場合、ｅ（ｈ，ｔ（ｋ））とｅ（σ（ｋ），ｇ２）とが一致するか否かによってＤＤＨ問題を解くことができなくなる。よって、巡回群Ｇ１とＧ２とで重複する元が存在しないことが望ましい。
【００２０】
また、本発明において好ましくは、匿名署名生成装置は、整数の任意値ｒを生成する第４任意値生成部をさらに有する。そして、関数Ｈは、入力値を巡回群Ｇ１の元へ写すハッシュ関数であり、演算結果ｈは、メッセージｍと任意値ｒとからなる値に対し、ハッシュ関数Ｈを作用させた演算結果である。さらに、各Ｈ’関数演算部は、任意値ｒとすべてのｋ∈Ｌについてのσ（ｋ），ａ（ｋ），ｂ（ｋ）の各要素とメッセージｍとからなる入力値に対し、当該入力値を整数へ写すハッシュ関数Ｈ’を作用させ、その演算結果をｃとする。そして、匿名署名σは、任意値ｒとすべてのｋ∈Ｌについてのσ（ｋ），ｃ（ｋ），ｚ（ｋ）とからなる情報である。
【００２１】
ここで、真に署名を生成した匿名署名生成装置に対するσ（ｉ）は楕円スカラー倍算値ｘ（ｉ）・ｈである。そのため、ｈがメッセージｍに対して一義的に決まるものであった場合、同一のメッセージｍに対するσ（ｉ）は常に同じ値となる。これに対し、真に署名を生成していない匿名署名生成装置に対するσ（ｊ）は任意値である。よって、同じメッセージｍに対する匿名署名σが２つ以上生成された場合、それぞれの匿名署名σが具備するσ（ｉ）は変化しないが、σ（ｊ）は変化するといった事態が生じる。これは、同じメッセージｍに対して２以上の匿名署名σが生成され、第三者に取得された場合、この第三者は、匿名署名σが具備するσ（ｋ）が変化したか否かによって真の匿名署名生成装置を検出できることを意味する。よって、メッセージｍが同一であっても、匿名署名σが生成されるたびにｈが変化することが望ましい。そのため、例えば、メッセージｍと任意値ｒとからなる値に対し、ハッシュ関数Ｈを作用させた演算結果をｈとすることが望ましい。
【発明の効果】
【００２２】
以上のように、本発明の匿名署名では、予めグループを登録しておくことなく、署名者が任意にグループを指定可能でありながら、グループ管理者が悪意のメンバーを追跡でき、なおかつ安全性要件を満たすことができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明を実施するための最良の形態を図面を参照して説明する。
〔原理〕
本発明では、署名クループを構成し得るｎ個（ｎ≧２）の匿名署名生成装置ｗ∈Ｎ（Ｎ＝｛０，…，ｎ−１｝）が存在し、そのうちｕ（２≦ｕ≦ｎ）個の匿名署名生成装置ｋ∈Ｌ（Ｌ＝｛０，…，ｕ−１｝）で署名クループを構成し、当該署名グループに属するｉ番目（ｉ∈Ｌ，Ｌ＝｛０，…，ｕ−１｝）の匿名署名生成装置が匿名署名を生成し、署名検証装置がその匿名署名を検証し、必要に応じてグループ管理者の管理装置がその匿名署名の匿名性を無効にする。なお、匿名署名生成装置ｗとは、ｗ番目の匿名署名生成装置を意味する。まず、本発明の原理について説明する。
【００２４】
＜Revocableリング署名方式＞
本発明は、Revocableリング署名方式の一種である。この方式には２種類の非公開の鍵ｘ，ｔと１種類の公開鍵ｙとが存在する。非公開な鍵ｘは署名者が匿名署名であるリング署名を生成するときに用いる秘密鍵ｘであり、他の非公開な鍵ｔはグループ管理者が真に署名を生成したものを特定するときに用いる追跡鍵ｔである。
【００２５】
まず、鍵生成装置が（公開鍵，秘密鍵，追跡鍵）＝（ｙ（ｗ），ｘ（ｗ），ｔ（ｗ））（ｗ∈Ｎ）を生成する。この鍵生成は、各匿名署名生成装置ｗがそれぞれ具備する鍵生成装置を用い、各匿名署名生成装置ｗが自ら行ってもよいし、匿名署名生成装置とは別の鍵生成装置が行ってもよい。生成された秘密鍵ｘ（ｗ）は、それぞれ対応する名匿名署名生成装置ｗに格納され、生成されたすべての公開鍵ｙ（ｗ）及び追跡鍵ｔ（ｗ）は、グループ管理者の管理装置に格納される。管理装置は、格納した各公開鍵ｙ（ｗ）のリストを公開する。
【００２６】
署名生成を行う匿名署名生成装置ｉは、署名グループを構成する匿名署名生成装置を選択し、選択した各匿名署名生成装置に対応する公開鍵ｙ（ｊ）（ｊ∈Ｌ，ｋ≠ｉ）を、管理装置で公開された公開鍵ｙ（ｗ）のリストから取得して格納する。匿名署名生成装置ｉは、自らの秘密鍵ｘ（ｉ）と取得した各公開鍵ｙ（ｊ）と署名対象のメッセージｍとを用い、メッセージｍの匿名署名σを生成し、メッセージｍと匿名署名σとを出力する。この際、必要に応じて署名グループを構成する匿名署名生成装置の集合を示すＬ⊆Ｎも出力してもよい。
【００２７】
署名検証装置が署名検証を行い場合、メッセージｍと匿名署名σ（必要に応じてＬ⊆Ｎ）とが署名検証装置に入力され、署名検証装置は、管理装置から取得した各公開鍵ｙ（ｋ）（ｋ∈Ｌ）を用い、匿名署名σを検証する。
また、管理装置が署名者を追跡する場合、メッセージｍと匿名署名σ（必要に応じてＬ⊆Ｎ）とが管理装置に入力され、管理装置は、これらと各追跡鍵ｔ（ｋ）及び各公開鍵ｙ（ｋ）（ｋ∈Ｌ）とを用い、匿名署名σを生成した匿名署名生成装置に対応するｉの集合Ｓ⊂Ｌを検出し、出力する。
すなわち、Revocableリング署名方式は、以下の４つのアルゴリズムの組Σ＝（Ｇｅｎ，Ｓｉｇ，Ｖｅｒ，Ｒｅｖ）のことである。
【００２８】
［Ｇｅｎ］
鍵生成アルゴリズムＧｅｎは、確率的多項式時間アルゴリズムであり、自然数のセキュリティパラメータκ（及びランダムテープ）を入力とし、それぞれビット長κの（公開鍵，秘密鍵，追跡鍵）＝（ｙ（ｗ），ｘ（ｗ），ｔ（ｗ））を出力する。
Ｇｅｎ（１κ）→（ｙ（ｗ），ｘ（ｗ），ｔ（ｗ））
【００２９】
［Ｓｉｇ］
署名生成アルゴリズムＳｉｇは、確率的多項式時間アルゴリズムであり、秘密鍵ｘ（ｉ）（ｉ∈Ｌ）と各公開鍵ｙ（ｊ）（ｊ∈Ｌ，ｊ≠ｉ）の集合と署名対象のメッセージｍ∈｛０，１｝＊とを入力とし、匿名署名σを出力する。なお、（ｙ（ｊ））ｊ∈Ｌ，ｊ≠ｉは、ｊ∈Ｌ，ｊ≠ｉを満たすｙ（ｊ）を要素とするベクトルである。
Ｓｉｇ（ｘ（ｉ），（ｙ（ｊ））ｊ∈Ｌ，ｊ≠ｉ，ｍ）→σ
【００３０】
［Ｖｅｒ］
署名検証アルゴリズムＶｅｒは、確率的多項式時間アルゴリズムであり、公開鍵ｙ（ｋ）（ｋ∈Ｌ）の集合とメッセージｍ∈｛０，１｝＊と匿名署名σとを入力とし、１ｂｉｔの０又は１を出力する。
Ｖｅｒ（ｙ（ｋ）ｋ∈Ｌ，ｍ，σ）→０又は１
【００３１】
［Ｒｅｖ］
追跡アルゴリズムＲｅｖは、確率的多項式時間アルゴリズムであり、追跡鍵ｔ（ｋ）（ｋ∈Ｌ）の集合と公開鍵ｙ（ｋ）（ｋ∈Ｌ）の集合とメッセージｍ∈｛０，１｝＊と匿名署名σとを入力とし、匿名署名σを生成した匿名署名生成装置に対応するｉの集合Ｓ⊂Ｌを出力する。
Ｒｅｖ（ｔ（ｋ）ｋ∈Ｌ，ｙ（ｋ）ｋ∈Ｌ，ｍ，σ）→Ｓ
【００３２】
＜Revocableリング署名方式の安全性の定義＞
上記のようなアルゴリズムの４つ組みならばどのような組でも形式的にはＲｅｖｏｃａｂｌｅリング署名である。しかし、安全なRevocableリング署名であるためには、さらに次の４つの安全性要件（完全性、匿名性、偽造不可能性、Exculpability）が必要である。
【００３３】
［完全性］
Revocableリング署名の完全性は次のように定義される。
・∀Ｌ⊂Ｎ，∀ｗ∈Ｎ，∀ｍ∈｛０，１｝＊に対して圧倒的確率で
Ｖｅｒ（（ｙ（ｋ））ｋ∈Ｌ，ｍ，Ｓｉｇ（ｘ（ｉ），（ｙ（ｊ））ｊ∈Ｌ，ｊ≠ｉ，ｍ））＝１を満たす。
・∀Ｌ⊂Ｎ，∀ｗ∈Ｎ，∀ｍ∈｛０，１｝＊に対して圧倒的確率で
Ｒｅｖ（ｔ（ｋ）ｋ∈Ｌ，ｙ（ｋ）ｋ∈Ｌ，ｍ，Ｓｉｇ（ｘ（ｉ），（ｙ（ｊ））ｊ∈Ｌ，ｊ≠ｉ，ｍ）＝｛ｉ｝を満たす。
【００３４】
［匿名性］
Revocableリング署名の匿名性は次のように定義される。
まず、以下の形式的な確率的多項式時間アルゴリズムＤに関するゲームを考察する。ゲームの始めにＧｅｎ（１κ）→（ｙ（ｗ），ｘ（ｗ），ｔ（ｗ））（ｗ∈Ｎ）が生成され、ランダムなビットｂ∈｛０，１｝が選ばれる。確率的多項式時間アルゴリズムＤは、入力としてｙ（０），ｙ（１）及び（ｙ（ｗ’），ｘ（ｗ’），ｔ（ｗ’））（ｗ’＝２，...，ｎ−１）を受け取り、以下のステップを実行する。
【００３５】
確率的多項式時間アルゴリズムＤは、ｉ，Ｌ，ｍを署名オラクルＳＯへ送信し、匿名署名σ←Ｓｉｇ（ｘ（ｉ），（ｙ（ｊ））ｊ∈Ｌ，ｊ≠ｉ，ｍ）を手に入れることができる。確率的多項式時間アルゴリズムＤは、この手続きを任意のタイミングで多項式回数実行できる。その後、確率的多項式時間アルゴリズムＤは、ある時点で都合のよい集合Ｌ＊（｛０，１｝⊂Ｌ＊）及びｍ＊をチャレンジオラクルＣＯに送り、匿名署名σ←Ｓｉｇ（ｘ（ｉ），（ｙ（ｊ））ｊ∈Ｌ＊，ｊ≠ｉ，ｍ＊）を受け取る。確率的多項式時間アルゴリズムＤは、この手続きを１回だけ実行できる。以上の手続きの後、確率的多項式時間アルゴリズムＤは、１ビットの情報ｂ’を出力する。なお、このゲームがランダムオラクルモデルのもとで定義されている場合、確率的多項式時間アルゴリズムＤは、任意のタイミングで多項式回、当該ランダムオラクルモデルにアクセスできる。
【００３６】
以上の条件のもと、確率的多項式時間アルゴリズムＤのRevocableリング署名アルゴリズムΣに対する優位性ＡΣａｎｏｎ（Ｄ）を以下のように定義する。なお、Ｐｒ［＊］は事象＊の確率を示し、ＤＳＯ，ＣＯ（＊）は、＊と署名オラクルＳＯ及びチャレンジオラクルＣＯから得た情報を元に出力する値を意味する。
【数１】
2008098933.tif 000003
ここで、もし、あらゆる確率的多項式時間アルゴリズムＤに対して優位性ＡΣａｎｏｎ（Ｄ）が無視しうるほど小さいなら、Revocableリング署名アルゴリズムΣは匿名性を持つという。
【００３７】
［偽造不可能性］
Revocableリング署名の偽造不可能性は次のように定義される。
まず、以下の形式的な確率的多項式時間アルゴリズムＦに関するゲームを考察する。ゲームの始めにＧｅｎ（１κ）→（ｙ（ｗ），ｘ（ｗ），ｔ（ｗ））（ｗ∈Ｎ）が生成され、確率的多項式時間アルゴリズムＦは入力として（ｙ（ｗ），ｔ（ｗ））ｗ＝０，...，ｎ−１を受け取り、以下のステップを実行する。
【００３８】
確率的多項式時間アルゴリズムＦは、ｉ，Ｌ，ｍを署名オラクルＳＯへ送信し、匿名署名σ←Ｓｉｇ（ｘ（ｉ），（ｙ（ｊ））ｊ∈Ｌ，ｊ≠ｉ，ｍ）を手に入れることができる。確率的多項式時間アルゴリズムＦは、この手続きを任意のタイミングで多項式回数実行できる。その後、確率的多項式時間アルゴリズムＦは、（Ｌ＊，ｍ＊，σ＊）を出力する。もし、Ｖｅｒ（ｙ（ｋ）ｋ∈Ｌ＊，ｍ＊，σ＊）→１でかつｍ＊が署名オラクルＳＯへ送信されていなかったのであれば、確率的多項式時間アルゴリズムＦが勝利した（匿名署名を偽造できた）とする。なお、このゲームがランダムオラクルモデルのもとで定義されている場合、確率的多項式時間アルゴリズムＦは、任意のタイミングで多項式回、当該ランダムオラクルモデルにアクセスできる。
【００３９】
以上の条件のもと、確率的多項式時間アルゴリズムＦのRevocableリング署名アルゴリズムΣに対する優位性ＡΣｕｎｆｏｒｇ（Ｆ）を以下のように定義する。
【数２】
2008098933.tif 000004
ここで、もし、あらゆる確率的多項式時間アルゴリズムＦに対して優位性ＡΣｕｎｆｏｒｇ（Ｆ）が無視しうるほど小さいなら、Revocableリング署名アルゴリズムΣは偽造不可能性を持つという。
【００４０】
［Exculpability］
Revocableリング署名のExculpabilityは次のように定義される。
まず、以下の形式的な確率的多項式時間アルゴリズムＡに関するゲームを考察する。ゲームの始めにＧｅｎ（１κ）→（ｙ（ｗ），ｘ（ｗ），ｔ（ｗ））（ｗ∈Ｎ）が生成され、確率的多項式時間アルゴリズムＡは、入力としてｙ（０），ｔ（０）及び（ｙ（ｗ’’），ｘ（ｗ’’），ｔ（ｗ’’））（ｗ’’＝１，...，ｎ−１）を受け取り、以下のステップを実行する。
【００４１】
確率的多項式時間アルゴリズムＡは、ｉ，Ｌ，ｍを署名オラクルＳＯへ送信し、匿名署名σ←Ｓｉｇ（ｘ（ｉ），（ｙ（ｊ））ｊ∈Ｌ，ｊ≠ｉ，ｍ）を手に入れることができる。確率的多項式時間アルゴリズムＡは、この手続きを任意のタイミングで多項式回数実行できる。その後、確率的多項式時間アルゴリズムＡは、（Ｌ＊，ｍ＊，σ＊）を出力する。もし、Ｒｅｖ（ｔ（ｋ）ｋ∈Ｌ＊，ｙ（ｋ）ｋ∈Ｌ＊，ｍ＊，σ＊）→｛０｝でかつ、確率的多項式時間アルゴリズムＡがｉ＝０，Ｌ＊，ｍ＊を署名オラクルＳＯへ送信していなかったのであれば、確率的多項式時間アルゴリズムＡが勝利したとする。なお、このゲームがランダムオラクルモデルのもとで定義されている場合、確率的多項式時間アルゴリズムＡは、任意のタイミングで多項式回、当該ランダムオラクルモデルにアクセスできる。
【００４２】
以上の条件のもと、確率的多項式時間アルゴリズムＡのRevocableリング署名アルゴリズムΣに対する優位性ＡΣｅｘｃｕｌｐ（Ａ）を以下のように定義する。
【数３】
2008098933.tif 000005
ここで、もし、あらゆる確率的多項式時間アルゴリズムＡに対して優位性ＡΣｅｘｃｕｌｐ（Ａ）が無視しうるほど小さいなら、Revocableリング署名アルゴリズムΣはExculpabilityを持つという。
【００４３】
＜CDH仮定付きTrapdoor DDH Group＞
本発明では、上述のように定義した安全性を有するRevocableリング署名方式を、ＣＤＨ仮定付きTrapdoor DDH Groupを用いて実現する。
［Trapdoor DDH Group］
Trapdoor DDH Groupとは、以下の性質を満たす巡回群Ｇのことである。
・巡回群Ｇの元に対してトラップドアと呼ぶ値が存在する。
・トラップドアを具備しない者は、巡回群Ｇの元に関するＤＤＨ問題を多項式時間で解くことができない。
・トラップドアを具備する者は、巡回群Ｇの元に関するＤＤＨ問題を多項式時間で解くことができる。しかし、トラップドアを具備する者であっても、巡回群Ｇの元に関するＣＤＨ問題や離散対数問題を多項式時間で解くことはできない。
【００４４】
なお、ＤＤＨ問題とは、巡回群Ｇの４つの元（ｇ，ｙ，ｈ，σ）に対し（ただしｇは巡回群Ｇの生成元）、ｄ∈｛０，１｝を求める問題である。ここで、Ｇが乗法群ならばｙ＝ｇα，ｈ＝ｇβ，σ＝ｇγに対して（Ｇが加法群ならばｙ＝α・ｇ，ｈ＝β・ｇ，σ＝γ・ｇに対して）γ＝α・βを満たすのであればｄ＝１が正解となり、γ＝α・βを満たさないのであればｄ＝０が正解となる。なお、巡回群Ｇの４つの元（ｇ，ｙ，ｈ，σ）をｒａｎｄｏｍ  ｔｕｐｌｅの集合と呼び、そのうちγ＝α・βを満たす巡回群Ｇの４つの元（ｇ，ｙ，ｈ，σ）をDDH tupleの集合と呼ぶ。
【００４５】
また、ＣＤＨ問題とは、巡回群Ｇの３つの元（ｇ，ｙ，ｈ）に対し、巡回群Ｇの元σを求める問題である。ここで、Ｇが乗法群ならばｙ＝ｇα，ｈ＝ｇβに対するσ＝ｇα・βが正解となり、Ｇが加法群ならばｙ＝α・ｇ，ｈ＝β・ｇに対するσ＝α・β・ｇが正解となる。
また、離散対数問題とは、巡回群Ｇの２つの元（ｇ，ｙ）に対し、ｘを求める問題である。ここで、Ｇが乗法群ならばｙ＝ｇｘを満たすｘが正解となり、Ｇが加法群ならばｙ＝ｘ・ｇを満たすｘが正解となる。
【００４６】
［ＣＤＨ仮定付きTrapdoor DDH Group］
巡回群Ｇが以下の条件を満たす場合に限り、その巡回群ＧをＣＤＨ仮定付きTrapdoor DDH Groupと呼ぶ。
・２つの多項式時間アルゴリズム（GenTD，SolveDDH）が存在する。ここで、GenTDはトラップドア生成アルゴリズムであり、ｇ’∈Ｇ’及びｘ∈Ｚｐを入力としてトラップドアｔを出力する確率的多項式時間アルゴリズム（GenTD（ｇ’，ｘ）＝ｔ）である。また、SolveDDHは、ＤＤＨ解決アルゴリズムであり、ｔ及び（ｇ，ｙ，ｈ，σ）∈Ｇを入力とし、（ｇ，ｙ，ｈ，σ）に対するＤＤＨ問題を解き、０又は１を出力するアルゴリズム（SolveDDH（ｔ，ｇ，ｙ，ｈ，σ）＝０又は１）である。
【００４７】
・トラップドアｔを用いる場合、SolveDDHは（ｇ，ｙ，ｈ，σ）∈Ｇ４に対するＤＤＨ問題を多項式時間で解くことができる。すなわち、∀ｇ∈Ｇ，ｘ∈Ｚｐ，ｔ＝GenTD（ｇ，ｘ）で、SolveDDH（ｔ，ｇ，ｙ，ｈ，σ）＝１ならば、Ｇが乗法群ならばｙ＝ｇα，ｈ＝ｇβ，σ＝ｇγに対して（Ｇが加法群ならばｙ＝α・ｇ，ｈ＝β・ｇ，σ＝γ・ｇに対して）γ＝α・βを高い確率で満たす。このような（ｇ，ｙ，ｈ，σ）は、高い確率でDDH tupleの集合である。
【００４８】
・一方、トラップドアｔを用いない場合、（ｇ，ｙ，ｈ，σ）∈Ｇ４に対するＤＤＨ問題を多項式時間で解くことは困難である。すなわち、このＤＤＨ問題に対するあらゆる多項式時間攻撃アルゴリズムＢの優位性
AdvDDH(B)=|Pr[b∈U{0,1},X∈Db:B(X)=b]-1/2|
は無視しうるほど小さい。なお、Ｄｂ＝（ｇ（ｂ），ｙ（ｂ），ｈ（ｂ），σ（ｂ））であり、ｂ∈Ｕ｛０，１｝は、ｂが｛０，１｝から任意に選択された数であることを示す。
【００４９】
・また、トラップドアｔを用いてもなお（ｇ，ｙ，ｈ）∈Ｇ３に対するＣＤＨ問題を多項式時間で解くことは困難である。すなわち、このＣＤＨ問題に対するあらゆる多項式時間攻撃アルゴリズムＣの優位性
AdvCDH(C)=Pr[g,x∈UZp,t=GenTD(g,x):Ｃ(t,g,y,h)=σ]
は無視しうるほど小さい。
【００５０】
なお、ＣＤＨ問題を多項式時間で解くことは困難である場合、（ｇ，ｙ）∈Ｇ２及び（ｇ，ｈ）∈Ｇ２に対する離散対数問題を多項式時間で解くことも困難である。このようにトラップドアｔを用いてもなお離散対数問題を多項式時間で解くことが困難であるとの条件を考慮したものをＤＬ仮定付きTrapdoor DDH Groupと呼ぶ。ＣＤＨ仮定付きTrapdoor DDH Groupならば、必ずＤＬ仮定付きTrapdoor DDH Groupである。
【００５１】
＜本発明におけるTrapdoor DDH Group＞
本発明では、楕円曲線を用いてTrapdoor DDH Groupを構成する。楕円曲線を用いるとbilinear groupと呼ばれる以下の同型写像ｅ，ψをもつ巡回群の組Ｇ１，Ｇ２，Ｇ３を作れることがよく知られている（参考文献１：「T.Saito, F.Hoshino, S.Uchiyama, "Candidate One-Way Functions on Non-Supersingular Elliptic Curves," Technical Report of IEICE. ISEC 2003-65 (2003-09)」）。
【００５２】
・eは非退化双線形写像ｅ：Ｇ１×Ｇ２→Ｇ３
・ψは同型写像ψ：Ｇ２→Ｇ１
ｅをペアリング（pairing）関数と呼ぶ（詳細は後述）。本発明では、このような巡回群Ｇ１，Ｇ２を用いてTrapdoor DDH Groupを構成し、前述のように定義した安全性を有するRevocableリング署名方式を構成する。以下、巡回群Ｇ１，Ｇ２の構成方法を例示する。
【００５３】
［楕円曲線］
まず、位数ｑ（一般的にｑは素数）の有限体Ｆｑ上で定義された楕円曲線について説明する。
一般に、有限体Ｆｑ上で定義された楕円曲線Ｅ／Ｆｑとは、ａ１，ａ２，ａ３，ａ４，ａ６∈Ｅ／Ｆｑとして、等式
E/Fq: y2+a1・x・y+a3・y=x3+a2・x2+a4・x+a6    …(1)
を満たす点（ｘ,ｙ）の集合に無限遠点と呼ばれる特別な点Ｏを付加したものである。有限体Ｆｑ上に定義された楕円曲線Ｅ／Ｆｑ上の任意の２点に対して楕円加算と呼ばれる二項演算＋及び楕円曲線Ｅ／Ｆｑ上の任意の１点に対して楕円逆元と呼ばれる単項演算−がそれぞれ定義できる。また、この楕円加算に関して群をなすこと及び楕円加算を用いて楕円スカラー倍算と呼ばれる演算が定義できることはよく知られている。
【００５４】
また、楕円曲線Ｅ／Ｆｑ上の点のうち、ｘ，ｙ∈Ｆｑとなる元の集合に無限遠点Ｏを付加したものをＥ（Ｆｑ）と記述する。また、ｘ，ｙ∈Ｆｑｍとなる元の集合に無限遠点Ｏを付加したものをＥ（Ｆｑｍ）と記述する。楕円加算に関してＥ（Ｆｑｍ）はＥ／Ｆｑの部分群であり、Ｅ（Ｆｑ）はＥ（Ｆｑｍ）の部分群である。
ここでｐを素数とし、楕円曲線Ｅ／Ｆｑ上の点Ｒのうち、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算値ｐ・Ｒがｐ・Ｒ＝Ｏを満たす点Ｒの集合を楕円曲線Ｅ／Ｆｑのｐ等分点と呼び、Ｅ［ｐ］と記述する。Ｅ［ｐ］はＥ／Ｆｑの部分群である。
なお、本発明に用いる楕円曲線Ｅ／Ｆｑは、非trace-2の非超特異楕円曲線であることが望ましい。trace-2の楕円曲線及び超特異楕円曲線では、巡回群上のＤＤＨ問題を多項式時間で解くアルゴリズムが知られており、署名の安全性要件を満たさなくなるからである。
【００５５】
［楕円曲線のフロベニウス写像］
次に、楕円曲線のフロベニウス写像について説明する。
楕円曲線Ｅ／Ｆｑ上の任意の点Ｒ＝（ｘ,ｙ）及び無限遠点Ｏに対し、ｑ乗のフロベニウス写像φは、
【数４】
2008098933.tif 000006
と定義される。
参考文献２：「イアン・Ｆ・ブラケ，ガディエル・セロッシ，ナイジェル・Ｐ・スマート＝著、鈴木治郎＝訳，「楕円曲線暗号」，出版＝ピアソン・エデュケーション，ISBN4-89471-431-0，p112」にあるように、フロベニウス写像φは楕円曲線Ｅ／Ｆｑ上の点Ｒ＝（ｘ,ｙ）∈Ｅ（Ｆｑｍ）に対して、
(φ2‐t・φ+q)・R=Ｏ    …(3)
を満たす（ただし、ｔは、ｑ，ａ１，ａ２，ａ３，ａ４，ａ６によって一意に決定される整数であり、トレースと呼ばれる）。ここで、フロベニウス写像φに関する多項式φ2‐t・φ+qを特性多項式と呼ぶ。楕円曲線をＥ［ｐ］に限定すると、楕円スカラー倍はＺ／ｐＺで考えればよい。Ｚ／ｐＺ係数の特性多項式は分解体上で、
φ2‐t・φ+q=(φ‐λ１)(φ‐λ2)        …(4)
と分解でき、λ１、λ２をフロベニウス写像φの固有値と呼ぶ。以下においては、λ１、λ２∈Ｚ／ｐＺでかつλ１≠λ２である場合を考える。線形空間であるＥ［ｐ］の線形変換関数ψλ１，ψλ２（ただし、下付き添え字のλ１及びλ２は、それぞれλ１及びλ２を表す。）を
ψλ1=(λ1‐λ2)-1(φ‐λ2)       …(5)
ψλ2=(λ2‐λ1)-1(φ‐λ1)       …(6)
と定義すると、任意のＥ［ｐ］上の点Ｒに対して、
P=ψλ1R=(λ1‐λ2)-1(φR‐λ2R)     …(7)
Q=ψλ2R=(λ2‐λ1)-1(φR‐λ1R)     …(8)
なるＥ［ｐ］上の点Ｐ，Ｑが存在する。
【００５６】
ここで、Ｅ［ｐ］の線形変換関数ψλ１による像ψλ１（Ｅ［ｐ］）を、「フロベニウス写像φの固有値λ１に関する固有空間」と呼ぶ。この固有空間ψλ１（Ｅ［ｐ］）は、点Ｐを生成元とした位数ｐの巡回群＜Ｐ＞となる。また、線形空間Ｅ［ｐ］の線形変換関数ψλ２による像ψλ２（Ｅ［ｐ］）を、「フロベニウス写像φの固有値λ２に関する固有空間」と呼ぶ。この固有空間ψλ２（Ｅ［ｐ］）は、点Ｑを生成元とした位数ｐの巡回群＜Ｑ＞となる。例えば、Ｅ［ｐ］かつＥ（Ｆｑ）であるＥ（Ｆｑ）［ｐ］は、フロベニウス写像φの固有値λ１＝１に関する固有空間である。また、固有値λ１＝１に対するもう一方の固有値はλ２＝ｑ  ｍｏｄ  ｐとなり、これに対する固有空間はＥ［ｐ］かつＥ（Ｆｑｍ）であるＥ（Ｆｑｍ）［ｐ］に存在する。また、Ｅ［ｐ］は、これらの巡回群＜Ｐ＞，＜Ｑ＞の直積で表現できる。そして、Ｅ［ｐ］上の任意の点Ｒはε，μ∈Ｚ／ｐＺとすると必ずＲ＝ε・Ｐ＋μ・Ｑと書け、Ｒを生成元とする巡回群＜Ｒ＞が構成できる。
【００５７】
［ペアリング関数］
次に、ペアリング（pairing）関数について説明する。
μｐを、楕円曲線の定義体の代数閉体上の乗法単位元１のｐ乗根の作る乗法群とする。参考文献３：「Alfred. J. Menezes，ELLIPTIC CURVE PUBLIC KEY CRYPTOSYSTEMS， KLUWER ACADEMIC PUBLISHERS， ISBN0-7923-9368-6，pp. 61-81」に示すように、ペアリング関数ｅとは、
ｅ：E[p]×E[p]=μｐ    …(9)
なる関数であり、次の性質を持つ。
［１］Ｅ［ｐ］上の任意の点Ｒ１に対して、ｅ（Ｒ１，Ｒ１）＝１が成り立つ。
［２］Ｅ［ｐ］上の任意の２点Ｒ１、Ｒ２に対して、ｅ（Ｒ１，Ｒ２）＝ｅ（Ｒ２，Ｒ１）−１が成り立つ。
［３］Ｅ［ｐ］上の任意の３点Ｒ１，Ｒ２，Ｒ３に対して、ｅ（Ｒ１＋Ｒ２，Ｒ３）＝ｅ（Ｒ１，Ｒ３）ｅ（Ｒ２，Ｒ３）であり、ｅ（Ｒ１，Ｒ２＋Ｒ３）＝ｅ（Ｒ１，Ｒ２）ｅ（Ｒ１，Ｒ３）が成り立つ。
［４］Ｅ［ｐ］上の任意の点Ｒ１に対して、ｅ（Ｒ１，Ｏ）＝１が成り立つ。
［５］Ｅ［ｐ］上のある点Ｒ１がＥ［ｐ］上のすべての点Ｒ２に対して、ｅ（Ｒ１，Ｒ２）＝１を満たすなら、Ｒ１＝Ｏが成り立つ。
【００５８】
なお、ペアリング関数ｅの具体例としては、参考文献２に示されるＷｅｉｌペアリングやＴａｔｅペアリングなどを挙げることができる。また、ペアリング関数が効率的に計算可能な非超特異楕円曲線（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/」
【００５９】
［巡回群の選択］
本発明では、楕円曲線Ｅ／Ｆｑ上の点からなるいずれかの巡回群Ｇ１をＣＤＨ仮定付きTrapdoor DDH Groupとする。また、本発明では、楕円曲線Ｅ／Ｆｑ上の点からなる巡回群Ｇ２も用いる。例えば、前述の［楕円曲線］の欄で示した巡回群＜Ｐ＞，＜Ｑ＞，＜Ｒ＞から、重複しないように２つの巡回群を選びそれぞれ巡回群Ｇ１，Ｇ２とする。
【００６０】
［本発明のGenTD，SolveDDH］
本発明のGenTD：
（１）巡回群Ｇ２の生成元ｇ２とｘ∈Ｚｐとの入力。
（２）楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｔ＝GenTD（ｇ２，  ｘ）＝ｘ・ｇ２∈Ｇ２。
（３）演算結果ｔの出力。
本発明のSolveDDH：
（１）トラップドアt∈Ｇ２と（ｇ１，ｙ，ｈ，σ）∈Ｇ１４の入力。ただし、ｙ＝ｘ・ｇ２、σ＝ｘ・ｈ。
（２）ｅ（ｈ，ｔ）＝ｅ（σ，ｇ２）であるか否かを検証。
（３）ｅ（ｈ，ｔ）＝ｅ（σ，ｇ２）であれば１を出力し、ｅ（ｈ，ｔ）＝（σ，ｇ２）でなければ０を出力。
【００６１】
本発明のGenTD，SolveDDHが機能する理由：
演算結果ｅ（ｈ，ｔ）と演算結果ｅ（σ，ｇ２）とが一致するか否かを判定することは、楕円曲線Ｅ／Ｆｑ上でα・ｇ１＝ｙ、ｈ＝β・ｇ１、σ＝γ・ｇ１（α，β，γは整数）とした場合に、γ＝α・βが成立するか否かを判定できることを意味し、これはSolveDDHを解くことができることを意味する。以下、この理由を説明する。
【００６２】
まず、ｈ，σ∈Ｇ１であるためｈ＝β・ｇ１、σ＝γ・ｇ１とおける。また、α・ｇ１＝ｙとおいた場合α＝ｘとなるため、ｔ＝ｘ・ｇ２＝α・ｇ２とおける。また、ペアリング関数ｅは前述した性質［３］を満たすため、点Ｐ１，Ｐ２∈Ｇ１，Ｑ１，Ｑ２∈Ｇ２に対し、ｅ（Ｐ１＋Ｐ２，Ｑ１）＝ｅ（Ｐ１，Ｑ１）・ｅ（Ｐ２，Ｑ１）及びｅ（Ｐ１，Ｑ１＋Ｑ２）＝ｅ（Ｐ１，Ｑ１）・ｅ（Ｐ１，Ｑ２）との関係が成り立つ。そのため、ｅ（ｈ，ｔ）＝ｅ（β・ｇ１，α・ｇ２）＝α・β・ｅ（ｇ１，ｇ２）と変形でき、ｅ（σ，ｇ２）＝ｅ（γ・ｇ１，ｇ２）＝γ・ｅ（ｇ１，ｇ２）と変形できる。よって、ｅ（ｈ，ｔ）＝ｅ（σ，ｇ２）であるか否かを検証することは、α・β＝γであるか否かを検証することと同じである。これはｔを用いればＤＤＨ問題を解くことができることを意味する。
【００６３】
なお、ペアリング関数ｅは前述した性質［１］をもつため、巡回群Ｇ１と巡回群Ｇ２とは重複する元を持たないことが望ましい。巡回群Ｇ１と巡回群Ｇ２とが重複する元を持つ場合、ｈ＝ｔとなったりσ＝ｇ２となったりし、ペアリング関数の値が常に１となり、ｅ（ｈ，ｔ）＝ｅ（σ，ｇ２）であるか否かによってα・β＝γであるか否かを検証できなくなるからである。なお、λ１≠λ２であれば、フロベニウス写像φの固有値λ１に関する固有空間と、フロベニウス写像φの固有値λ２に関する固有空間とは、相互に属する元を持たない。よって、前述の［楕円曲線］の欄で示した巡回群＜Ｐ＞，＜Ｑ＞，＜Ｒ＞から重複しないように２つの巡回群を選び、それらをそれぞれ巡回群Ｇ１，Ｇ２とする場合、λ１≠λ２であれば、巡回群Ｇ１と巡回群Ｇ２とは重複する元を持たない。
【００６４】
また、ｔを用いなければ巡回群Ｇ１に関するＤＤＨ問題を多項式時間で解くことが困難であり、ｔを用いてもなお巡回群Ｇ１に対するＣＤＨ問題を多項式時間で解くことは困難である。よって、巡回群Ｇ１は、ＣＤＨ仮定付きTrapdoor DDH Groupである。
【００６５】
＜本発明のＣＤＨ仮定付きTrapdoor DDH Groupを用いたRevocableリング署名方式の概要＞
まず、匿名署名生成装置ごとに公開鍵ｙ（ｗ），秘密鍵ｘ（ｗ），追跡鍵ｔ（ｗ）（ｗ∈Ｎ，Ｎ＝｛０，…，ｎ−１｝）が生成される。ここで、秘密鍵ｘ（ｗ）は任意の整数であり、公開鍵ｙ（ｗ）は、楕円スカラー倍算ｙ（ｗ）＝ｘ（ｗ）・ｇ１によって生成され、追跡鍵ｔ（ｗ）は、ｔ（ｗ）＝GenTD（ｇ２，ｘ（ｗ））によって生成される。そして、すべての公開鍵ｙ（ｗ）は一般に公開され、各秘密鍵ｘ（ｗ）は対応するｗ番目の匿名署名生成装置にのみ格納され、すべての追跡鍵ｔ（ｗ）は管理装置のみに格納される。
【００６６】
匿名署名の生成を行う場合、まず、真に署名を生成するｉ番目（ｉ∈Ｎ）の匿名署名生成装置が、署名クループを構成し得るｎ個の匿名署名生成装置ｗ∈Ｎから署名クループＬ＝｛０，…，ｕ−１｝を任意に選択する。そして、ｉ番目の匿名署名生成装置は、秘密鍵ｘ（ｉ）と公開鍵ｙ（ｊ）（ｊ∈Ｌ，ｊ≠ｉ）とを用い、高い確率で、巡回群Ｇ１の４つの元（ｇ１，ｙ（ｉ），ｈ，σ（ｉ））∈Ｇ１４の組のみがＤＤＨ  ｔｕｐｌｅの集合となるように（当該巡回群Ｇ１の４つに対するDDH問題の解が１となるように）、すべてのｋ∈Ｌについての（ｇ１，ｙ（ｋ），ｈ，σ（ｋ））を生成し、（ｇ１，ｙ（ｋ），ｈ，σ（ｋ））を含む匿名署名σを生成する。
【００６７】
署名検証者は、（ｇ１，ｙ（ｋ），ｈ，σ（ｋ））を含む匿名署名σを検証し、署名クループのいずれかの匿名署名生成装置によって匿名署名σが生成されたことを検証できる（完全性１）。しかし、ＤＤＨ問題の求解困難性により、署名検証者は、DDH tupleの集合となる（ｇ１，ｙ（ｉ），ｈ，σ（ｉ））の組を見つけることができず、ｉ番目の匿名署名生成装置が真に匿名署名σを生成したことを知ることができない（匿名性）。
【００６８】
一方、必要に応じて管理装置がその匿名署名σの匿名性を無効にする場合、管理装置は、すべてのｋ∈Ｌの追跡鍵ｔ（ｋ）を用い、SolveDDH（ｔ（ｋ），ｇ１，ｙ（ｋ），ｈ，σ（ｋ））を実行し、ｅ（ｈ，ｔ（ｋ））＝ｅ（σ（ｋ），ｇ２）＝１となるｋ＝ｉを検出し、真の匿名署名生成装置を検出する（完全性２）。なお、ＣＤＨ仮定付きTrapdoor DDH Groupならば、必ずＤＬ仮定付きTrapdoor DDH Groupであり、追跡鍵ｔ（ｋ）を用いてもなお巡回群Ｇ１に対する離散対数問題を多項式時間で解くことは困難である。よって、管理装置は、匿名署名生成装置の秘密鍵ｘ（ｋ）までは知ることができない。そのため、追跡鍵ｔ（ｋ）を持つものであったとしても匿名署名を偽造することができず（偽造不可能性）、他の匿名署名生成装置が署名者であると偽った匿名署名を生成することもできない（Exculpability）。
【００６９】
〔第１実施形態〕
次に、本発明の第１実施形態について説明する。
【００７０】
＜全体構成＞
図１は、第１実施形態の匿名署名システム１の全体構成を示した概念図である。
図１に示すように、本形態の匿名署名システム１は、署名クループを構成し得るｎ個（ｎ≧２）の匿名署名生成装置１０−０〜（ｎ−１）、署名検証を行なう署名検証装置２０及び匿名署名の匿名性を無効化する管理装置３０を有しており、匿名署名生成装置１０−０〜（ｎ−１）、署名検証装置２０及び管理装置３０は、相互にネットワーク４０を通じて接続可能に構成されている。
【００７１】
なお、匿名署名生成装置１０−ｗ（ｗ∈Ｎ，Ｎ＝｛０,...,ｎ−１｝）を、それぞれｗ番目の匿名署名生成装置１０−ｗと呼ぶこととし、匿名署名生成装置１０−ｗ（ｗ∈Ｎ）の集合を集合Ｎ＝（０,...,ｎ−１）と呼ぶものとする。また、本形態では、集合Ｎ＝（０,...,ｎ−１）に属する匿名署名生成装置１０−ｗの１つであるｉ番目の匿名署名生成装置１０−ｉが、ｕ個の匿名署名生成装置１０−ｋ（ｋ∈Ｌ，Ｌ＝｛０,...,ｕ−１｝⊆Ｎ）からなる集合Ｌ（署名グループ）を構成して匿名署名を生成し、署名検証装置２０がその匿名署名を検証し、必要に応じて管理装置３０がその匿名署名の匿名性を無効にする例を説明する。
【００７２】
＜匿名署名生成装置の構成＞
次に、匿名署名生成装置の構成について説明する。なお、以下では匿名署名生成装置１０−ｉを例にとって説明する。その他の匿名署名生成装置の構成も匿名署名生成装置１０−ｉと同様である。
【００７３】
［ハードウェア構成］
図２は、第１実施形態における匿名署名生成装置１０−ｉのハードウェア構成を例示したブロック図である。
図２に例示するように、この例の匿名署名生成装置１０−ｉは、ＣＰＵ（Central Processing Unit）１１、入力部１２、出力部１３、補助記憶装置１４、ＲＯＭ（Read Only Memory）１５、ＲＡＭ（Random Access Memory）１６、バス１７及び通信部１８を有している。
【００７４】
この例のＣＰＵ１１は、制御部１１ａ、演算部１１ｂ及びレジスタ１１ｃを有し、レジスタ１１ｃに読み込まれた各種プログラムに従って様々な演算処理を実行する。また、この例の入力部１２は、データが入力される入力ポート、キーボード、マウス等であり、出力部１３は、データを出力する出力ポート、外部記録媒体へのデータ記憶装置、印刷装置、ディスプレイなどである。補助記憶装置１４は、例えば、ハードディスク、ＭＯ（Magneto-Optical disc）、半導体メモリ等であり、各種プログラムを格納したプログラム領域１４ａ及び各種データが格納されるデータ領域１４ｂを有している。また、ＲＡＭ１６は、例えば、ＳＲＡＭ (Static Random Access Memory)、ＤＲＡＭ (Dynamic Random Access Memory)等であり、上記のプログラムが書き込まれるプログラム領域１６ａ及び各種データが書き込まれるデータ領域１６ｂを有している。また、通信部１８は、ネットワークカードなどである。また、この例のバス１７は、ＣＰＵ１１、入力部１２、出力部１３、補助記憶装置１４、ＲＯＭ１５、ＲＡＭ１６及び通信部１８を、データのやり取りが可能なように接続する。
【００７５】
［ハードウェアとプログラムとの協働］
ＣＰＵ１１（図２）は、読み込まれたＯＳ（Operating System）プログラムに従い、補助記憶装置１４のプログラム領域１４ａに格納されているプログラムをＲＡＭ１６のプログラム領域１６ａに書き込む。同様にＣＰＵ１１は、補助記憶装置１４のデータ領域１４ｂに格納されている各種データを、ＲＡＭ１６のデータ領域１６ｂに書き込む。そして、このプログラムやデータが書き込まれたＲＡＭ１６上のアドレスがＣＰＵ１１のレジスタ１１ｃに格納される。ＣＰＵ１１の制御部１１ｂは、レジスタ１１ｃに格納されたこれらのアドレスを順次読み出し、読み出したアドレスが示すＲＡＭ１６上の領域からプログラムやデータを読み出し、そのプログラムが示す演算を演算部１１ｂに順次実行させ、その演算結果をレジスタ１１ｃに格納していく。なお、各プログラムは、単一のプログラム列として記載されていてもよく、また、少なくとも一部のプログラムが別個のモジュールとしてライブラリに格納されていてもよい。
【００７６】
図３は、ＣＰＵ１１にプログラムが読み込まれることにより構成される第１実施形態における匿名署名生成装置１０−ｉの機能構成を例示したブロック図である。なお、図３における矢印はデータの流れを示すが、一時メモリ１０ｒ−ｉや制御部１０ｓ−ｉに入出力されるデータの流れは省略してある。
【００７７】
図３に例示するように、第１実施形態における匿名署名生成装置１０−ｉは、鍵生成部１０ａ−ｉ（「鍵生成装置」に対応）と、入力部１０ｂ−ｉと、任意値生成部１０ｃ−１と、Ｈ関数演算部１０ｄ−ｉと、楕円スカラー倍算部１０ｅ−ｉ，１０ｇ−ｉと、任意値生成部１０ｈ−ｉと、楕円演算部１０ｉ−ｉ，１０ｊ−ｉと、Ｈ’関数演算部１０ｋ−ｉと、整数演算部１０ｍ−ｉ，１０ｎ−ｉと、署名構成部１０ｐ−ｉと、通信部１０ｑ−ｉ（「匿名署名出力部」に対応）と、制御部１０ｒ−ｉと、一時メモリ１０ｓ−ｉと、記憶部１０ｔ−ｉとを有する。また、鍵生成部１０ａ−ｉは、秘密鍵生成部１０ａａ−ｉと公開鍵生成部１０ａｂ−ｉと追跡鍵生成部１０ａｃ−ｉとを有する。また、楕円演算部１０ｉ−ｉは、楕円スカラー倍算部１０ｉａ−ｉ，１０ｉｂ−ｉと楕円加算部１０ｉｃ−ｉとを有する。また、楕円演算部１０ｊ−ｉは、楕円スカラー倍算部１０ｊａ−ｉ，１０ｊｂ−ｉと楕円加算部１０ｊｃ−ｉとを有する。
【００７８】
なお、記憶部１０ｔ−ｉおよび一時メモリ１０ｓ−ｉは、例えば、図２に記載したレジスタ１１ｃ、補助記憶装置１４、ＲＡＭ１６、或いはこれらを結合した記憶領域に相当する。また、鍵生成部１０ａ−ｉ、任意値生成部１０ｃ−１、Ｈ関数演算部１０ｄ−ｉ、楕円スカラー倍算部１０ｅ−ｉ，１０ｇ−ｉ、任意値生成部１０ｈ−ｉ、楕円演算部１０ｉ−ｉ，１０ｊ−ｉ、Ｈ’関数演算部１０ｋ−ｉ、整数演算部１０ｍ−ｉ，１０ｎ−ｉ、署名構成部１０ｐ−ｉ及び制御部１０ｒ−ｉは、それぞれ処理を実現するためのプログラムがＣＰＵ１１に読み込まれることにより構成されるものである。また、入力部１０ｂ−ｉは、所定のプログラムが読み込まれたＣＰＵ１１の制御のもと駆動する入力部１２であり、通信部１０ｑ−ｉは、所定のプログラムが読み込まれたＣＰＵ１１の制御のもと駆動する通信部１８である。また、匿名署名生成装置１０−ｉは、制御部１０ｒ−ｉの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ１０ｓ−ｉに読み書きされる。
【００７９】
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ（記載していない）を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、匿名署名生成装置１０−ｉの機能をコンピュータに実行させるためのプログラムに相当する。
【００８０】
＜署名検証装置の構成＞
次に、署名検証装置の構成について説明する。
【００８１】
［ハードウェア構成］
図２に例示したのと同様なコンピュータによって構成される。
【００８２】
［ハードウェアとプログラムとの協働］
匿名署名生成装置の場合と同様、署名検証装置２０は、コンピュータにプログラムが読み込まれることにより構成される。図４は、第１実施形態における署名検証装置２０の機能構成を例示したブロック図である。なお、図４における矢印はデータの流れを示すが、記憶部２０ｋや一時メモリ２０ｊに入出力されるデータの流れは省略してある。
【００８３】
図４に例示するように、第１実施形態における署名検証装置２０は、通信部２０ａと、検査部２０ｂと、Ｈ関数演算部２０ｃと、楕円演算部２０ｄ，２０ｅと、Ｈ’関数演算部２０ｆと、比較部２０ｇと、検証結果出力部２０ｈと、制御部２０ｉと、一時メモリ２０ｊと、記憶部２０ｋとを有する。また、楕円演算部２０ｄは、楕円スカラー倍算部２０ｄａ，２０ｄｂと楕円加算部２０ｄｃとを有し、楕円演算部２０ｅは、楕円スカラー倍算部２０ｅａ，２０ｅｂと楕円加算部２０ｅｃとを有する。
【００８４】
なお、記憶部２０ｋおよび一時メモリ２０ｊは、例えば、レジスタ、補助記憶装置、ＲＡＭ、或いはこれらを結合した記憶領域に相当する。また、検査部２０ｂ、Ｈ関数演算部２０ｃ、楕円演算部２０ｄ，２０ｅ、Ｈ’関数演算部２０ｆ、比較部２０ｇ及び制御部２０ｉは、それぞれ処理を実現するためのプログラムがＣＰＵに読み込まれることにより構成されるものである。また、通信部２０ａは、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動する通信部であり、検証結果出力部２０ｈは、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動する出力部である。また、署名検証装置２０は、制御部２０ｉの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ２０ｊに読み書きされる。
【００８５】
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ（記載していない）を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名検証装置２０の機能をコンピュータに実行させるためのプログラムに相当する。
【００８６】
＜管理装置の構成＞
次に、管理装置３０の構成について説明する。
【００８７】
［ハードウェア構成］
図２に例示したのと同様なコンピュータによって構成される。
【００８８】
［ハードウェアとプログラムとの協働］
匿名署名生成装置の場合と同様、管理装置３０は、コンピュータにプログラムが読み込まれることにより構成される。図５は、第１実施形態における管理装置３０の機能構成を例示したブロック図である。なお、図５における矢印はデータの流れを示すが、一時メモリ３０ｎや制御部３０ｍに入出力されるデータの流れは省略してある。
【００８９】
図５に例示するように、第１実施形態における管理装置３０は、通信部３０ａと、検査部３０ｂと、Ｈ関数演算部３０ｃと、楕円演算部３０ｄ，３０ｅと、Ｈ’関数演算部３０ｆと、比較部３０ｇと、ペアリング演算部３０ｈ，３０ｉと、判定部３０ｊと、出力部３０ｋと、制御部３０ｍと、一時メモリ３０ｎと、記憶部３０ｐとを有する。また、楕円演算部３０ｄは、楕円スカラー倍算部３０ｄａ，３０ｄｂと楕円加算部３０ｄｃとを有し、楕円演算部３０ｅは、楕円スカラー倍算部３０ｅａ，３０ｅｂと楕円加算部３０ｅｃとを有する。
【００９０】
なお、記憶部３０ｐおよび一時メモリ３０ｎは、例えば、レジスタ、補助記憶装置、ＲＡＭ、或いはこれらを結合した記憶領域に相当する。また、検査部３０ｂ、Ｈ関数演算部３０ｃ、楕円演算部３０ｄ，３０ｅ、Ｈ’関数演算部３０ｆ、比較部３０ｇ、ペアリング演算部３０ｈ，３０ｉ、判定部３０ｊ、制御部３０ｍは、それぞれ処理を実現するためのプログラムがＣＰＵに読み込まれることにより構成されるものである。また、通信部３０ａは、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動する通信部であり、出力部３０ｋは、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動する出力部である。また、署名検証装置３０は、制御部３０ｍの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ３０ｎに読み書きされる。
【００９１】
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ（記載していない）を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名検証装置２０の機能をコンピュータに実行させるためのプログラムに相当する。
【００９２】
＜処理＞
次に、第１実施形態の匿名署名システム１の処理について説明する。
【００９３】
［前処理］
まず、楕円曲線Ｅ／Ｆｑが選択される。前述のように、楕円曲線Ｅ／Ｆｑは、非trace-2の非超特異楕円曲線であることが望ましい。また、楕円曲線Ｅ／Ｆｑ上の点からなる位数がｐである２つの巡回群Ｇ１，Ｇ２（Ｇ１≠Ｇ２）が選択される。例えば、前述の［楕円曲線］の欄で示した巡回群＜Ｐ＞，＜Ｑ＞，＜Ｒ＞から、重複しないように２つの巡回群を選び、それぞれを巡回群Ｇ１，Ｇ２とする。そして、巡回群Ｇ１，Ｇ２の各生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２が選択される。なお、安全性の面から、ｐは素数や因数分解が困難な合成数であることが望ましいが、ｐがその他の整数であってもよい。また、巡回群Ｇ１，Ｇ２の各群のビット長がセキュリティパラメータとなる。そして、各匿名署名生成装置１０−ｗ（∀ｗ∈Ｎ）の記憶部１０ｔ−ｗには、生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２とｐとが格納される。また、署名検証装置２０の記憶部２０ｋには、生成元ｇ１∈Ｇ１とｐとが格納される。さらに、管理装置３０の記憶部３０ｐには、生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２とｐとが格納される。
【００９４】
また、２つの別個のハッシュ関数Ｈ：｛０，１｝＊→Ｇ１及びＨ’：｛０，１｝＊→Ｚｑが設定される。ここで、ハッシュ関数Ｈ：｛０，１｝＊→Ｇ１は、任意のビット値を巡回群Ｇ１の元に写すハッシュ関数を意味する。また、Ｈ’：｛０，１｝＊→Ｚｑは、任意のビット値を剰余類Ｚｑの元に写すハッシュ関数を意味する。このようなハッシュ関数Ｈ，Ｈ’は、ＳＨＡ−１やＭＤ５等を応用して容易に構成できる。このようなハッシュ関数Ｈ，Ｈ’は、匿名署名生成装置１０−ｗ（∀ｗ∈Ｎ）、署名検証装置２０及び管理装置３０をそれぞれ構成するための各プログラムに書き込まれる。これにより、匿名署名生成装置１０−ｗ（∀ｗ∈Ｎ）、署名検証装置２０及び管理装置３０では、共通のハッシュ関数Ｈ，Ｈ’によるハッシュ演算が可能となる。
【００９５】
［鍵生成処理］
次に、本形態の鍵生成処理について説明する。
図６は、第１実施形態の鍵生成処理を説明するためのフローチャートである。以下、図６に沿って、第１実施形態の鍵生成処理について説明する。なお、以下では、ｉ番目（ｉ∈Ｌ）の匿名署名生成装置の鍵生成処理のみを説明するが、同様な処理はすべての匿名署名生成装置１０−ｗ（∀ｗ∈Ｎ）で実行される。
【００９６】
まず、匿名署名生成装置１０−ｉ（図３）の秘密鍵生成部１０ａａ−ｉが、記憶部１０ｔ−ｉからｐを読み込む。秘密鍵生成部１０ａａ−ｉは、任意値ｘ（ｉ）∈ＵＺｐを匿名署名生成装置１０−ｉの秘密鍵ｘ（ｉ）として生成し、生成した秘密鍵ｘ（ｉ）を記憶部１０ｔ−ｉに出力し、記憶部１０ｔ−ｉに格納する（ステップＳ１１）。なお、任意値の具体例としては、擬似乱数を例示できる。また、擬似乱数の生成は、例えば、ＳＨＡ-１等の一方向性ハッシュ関数を用いて構成される、計算量理論に基づく擬似乱数生成アルゴリズムなどを用いて行う。また、擬似乱数ではなく、例えば、乱数表や利用者が設定した秘密情報などを用い、匿名署名生成装置間で重複しないように秘密鍵ｘ（ｉ）を設定してもよい。
【００９７】
次に、公開鍵生成部１０ａｂ−ｉが、記憶部１０ｔ−ｉから秘密鍵ｘ（ｉ）∈Ｚｐと生成元ｇ１∈Ｇ１とを読み込む。公開鍵生成部１０ａｂ−ｉは、このように入力された秘密鍵ｘ（ｉ）∈Ｚｐと生成元ｇ１∈Ｇ１とを用い、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｙ（ｉ）＝ｘ（ｉ）・ｇ１∈Ｇ１を行い、演算結果ｙ（ｉ）を匿名署名生成装置１０−ｉの公開鍵ｙ（ｉ）として記憶部１０ｔ−ｉに出力し、記憶部１０ｔ−ｉに格納する（ステップＳ１２）。
【００９８】
次に、追跡鍵生成部１０ａｃ−ｉが、記憶部１０ｔ−ｉから秘密鍵ｘ（ｉ）∈Ｚｐと生成元ｇ２∈Ｇ２とを読み込む。追跡鍵生成部１０ａｃ−ｉは、このように入力された秘密鍵ｘ（ｉ）∈Ｚｐと生成元ｇ２∈Ｇ２とを用い、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｔ（ｉ）＝ｘ（ｉ）・ｇ２∈Ｇ２を行い、演算結果ｔ（ｉ）を匿名署名生成装置１０−ｉの追跡鍵ｔ（ｉ）として記憶部１０ｔ−ｉに出力し、記憶部１０ｔ−ｉに格納する（ステップＳ１３）。
その後、制御部１０ｒ−ｉの制御のもと、通信部１０ｑ−ｉが、公開鍵ｙ（ｉ）と追跡鍵ｔ（ｉ）とをネットワーク４０を通じ、管理装置３０に送信する（ステップＳ１４）。なお、少なくとも追跡鍵ｔ（ｉ）は、追跡鍵ｔ（ｉ）が第三者に漏洩しないよう、暗号化等の技術を用いて管理装置３０に配送される。
【００９９】
最初に述べたように、ステップＳ１１〜Ｓ１４と同様な処理はすべての匿名署名生成装置１０−ｗ（∀ｗ∈Ｎ）で実行される。管理装置３０は、各匿名署名生成装置１０−ｗ（∀ｗ∈Ｎ）から送信された公開鍵ｙ（ｗ）と追跡鍵ｔ（ｗ）とを通信部３０ａで受信し、記憶部３０ｐに格納する。そして、管理装置３０は、公開鍵ｙ（ｗ）を公開鍵リストとして公開する。具体的には、例えば、各匿名署名生成装置１０−ｗ（∀ｗ∈Ｎ）及び署名検証装置２０が、管理装置３０から各公開鍵ｙ（ｗ）をダウンロードすることが可能なように管理装置３０へのアクセス権限を設定する。一方、追跡鍵ｔ（ｗ）は非公開とする。すなわち、例えば、何れの装置にも管理装置３０から追跡鍵ｔ（ｗ）をダウンロードする権限が与えられない。
【０１００】
［署名生成処理］
次に、本形態の署名生成処理について説明する。
図７，８は、第１実施形態における署名生成処理を説明するためのフローチャートである。以下、図７，８に従って、第１実施形態の署名生成処理について説明する。なお、以下では、ｉ番目の匿名署名生成装置１０−ｉが、ｕ個の匿名署名生成装置１０−ｋ（ｋ∈Ｌ，Ｌ＝｛０,...,ｕ−１｝⊆Ｎ）からなる集合Ｌ（署名グループ）を構成して匿名署名を生成する例を説明する。
【０１０１】
まず、匿名署名生成装置１０−ｉ（図３）の入力部１０ｂ−ｉに署名グループを構成する集合Ｌ（Ｌ＝｛０,...,ｕ−１｝⊆Ｎ）が入力され、記憶部１０ｔ−ｉに格納される（ステップＳ２１）。次に、制御部１０ｒ−ｉの制御のもと、通信部１０ｑ−ｉが集合Lを特定する情報を、ネットワーク４０を通じて管理装置３０に送信する。管理装置３０（図５）は、通信部３０aでこの情報を受信する。管理装置３０の制御部３０ｍは、すべてのｋ∈Ｌに対応する公開鍵ｙ（ｋ）∈Ｇ１（∀ｋ∈Ｌ）を記憶部３０ｐから読み出し、それらを通信部３０ａから匿名署名生成装置１０−ｉに返送する。匿名署名生成装置１０−ｉの通信部１０ｑ−ｉは、管理装置３０から送信された公開鍵ｙ（ｋ）∈Ｇ１（∀ｋ∈Ｌ）を受信し、公開鍵ｙ（ｋ）∈Ｇ１（∀ｋ∈Ｌ）は、記憶部１０ｔ−ｉに格納される（ステップＳ２２）。なお、匿名署名生成装置１０−ｉは、必ずしもすべてのｋ∈Ｌに対応する公開鍵ｙ（ｋ）∈Ｇ１（∀ｋ∈Ｌ）を取得する必要はなく、自らの公開鍵ｙ（ｉ）以外の公開鍵ｙ（ｊ）∈Ｇ１（ｊ∈Ｌ，ｊ≠ｉ）のみを管理装置３０から取得することとしてもよい。
【０１０２】
次に、匿名署名生成装置１０−ｉ（図３）の入力部１０ｂ−ｉに署名対象のメッセージｍが入力され、記憶部１０ｔ−ｉに格納される（ステップＳ２３）。また、任意値生成部１０ｃ−ｉが、記憶部１０ｔ−ｉからｐを読み込んで任意値ｒ∈ＵＺｐを生成し、生成した任意値ｒ∈ＵＺｐを記憶部１０ｔ−ｉに格納する（ステップＳ２４）。なお、任意値の具体例としては、擬似乱数を例示できる。また、Ｈ関数演算部１０ｄ−ｉが、記憶部１０ｔ−ｉから任意値ｒ∈Ｚｐとメッセージｍとを読み込み、このように入力された任意値ｒ∈Ｚｐとメッセージｍとのビット結合値（ｒ，ｍ）に対して前述のハッシュ関数Ｈを作用させたｈ＝Ｈ（ｒ，ｍ）∈Ｇ１を算出し、算出された演算結果ｈ∈Ｇ１を記憶部１０ｔ−ｉに格納する（ステップＳ２５）。次に楕円スカラー倍算部１０ｅ−ｉが、記憶部１０ｔ−ｉから演算結果ｈ∈Ｇ１と秘密鍵ｘ（ｉ）とを読み込む。楕円スカラー倍算部１０ｅ−ｉは、このように入力された情報を用いて楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算σ（ｉ）＝ｘ（ｉ）・ｈ∈Ｇ１を行い、その演算結果σ（ｉ）を記憶部１０ｔ−ｉに出力し、記憶部１０ｔ−ｉに格納する（ステップＳ２６）。
【０１０３】
次に、任意値生成部１０ｈ−ｉが、記憶部１０ｔ−ｉから集合Ｌと生成元ｇ１∈Ｇ１を読み込む。そして、任意値生成部１０ｈ−ｉは、各ｊ∈Ｌ（ｊ≠ｉ）に対し、任意値σ（ｊ）∈Ｇ１を生成し、生成した各任意値σ（ｊ）∈Ｇ１を記憶部１０ｔ−ｉに出力して当該記憶部１０ｔ−ｉに格納する（ステップＳ２７）。なお、任意値の具体例としては、擬似乱数の組を例示できる。
【０１０４】
次に、任意値生成部１０ｃ−ｉが、記憶部１０ｔ−ｉからｐを読み込んで任意値ｒ（ｉ）∈ＵＺｐを生成し、生成した任意値ｒ（ｉ）∈Ｚｐを記憶部１０ｔ−ｉに格納する（ステップＳ２８）。なお、任意値の具体例としては、擬似乱数を例示できる。次に、楕円スカラー倍算部１０ｆ−ｉが、記憶部１０ｔ−ｉから任意値ｒ（ｉ）∈Ｚｐと生成元ｇ１∈Ｇ１とを読み込む。楕円スカラー倍算部１０ｆ−ｉは、入力されたこれらの情報を用い、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ａ（ｉ）＝ｒ（ｉ）・ｇ１∈Ｇ１を行い、その演算結果ａ（ｉ）を記憶部１０ｔ−ｉに出力して記憶部１０ｔ−ｉに格納する（ステップＳ２９）。また、楕円スカラー倍算部１０ｇ−ｉが、記憶部１０ｔ−ｉから任意値ｒ（ｉ）∈Ｚｐと演算結果ｈ∈Ｇ１とを読み込む。楕円スカラー倍算部１０ｇ−ｉは、入力されたこれらの情報を用い、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｂ（ｉ）＝ｒ（ｉ）・ｈ∈Ｇ１を行い、その演算結果ｂ（ｉ）を記憶部１０ｔ−ｉに出力して記憶部１０ｔ−ｉに格納する（ステップＳ３０）。
【０１０５】
次に、任意値生成部１０ｃ−ｉが、記憶部１０ｔ−ｉからｐを読み込んで、各ｊ∈Ｌ（ｊ≠ｉ）に対し、任意値ｚ（ｊ），ｃ（ｊ）∈ＵＺｐを生成し、生成した任意値ｚ（ｊ），ｃ（ｊ）∈Ｚｐを記憶部１０ｔ−ｉに格納する（ステップＳ３１）。
【０１０６】
次に、楕円演算部１０ｉ−ｉの楕円スカラー倍算部１０ｉａ−ｉが、記憶部１０ｔ−ｉから任意値ｚ（ｊ）（∀ｊ∈Ｌ（ｊ≠ｉ）：集合Ｌに属するｉ以外のすべての元ｊ）と生成元ｇ１∈Ｇ１とを読み込む。楕円スカラー倍算部１０ｉａ−ｉは、入力されたこれらの情報を用い、各ｊ∈Ｌ（ｊ≠ｉ）に対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｊ）・ｇ１∈Ｇ１を行い、その演算結果ｚ（ｊ）・ｇ１∈Ｇ１を記憶部１０ｔ−ｉに格納する（ステップＳ３２）。また、楕円演算部１０ｉ−ｉの楕円スカラー倍算部１０ｉｂ−ｉが、記憶部１０ｔ−ｉから任意値ｃ（ｊ）と公開鍵ｙ（ｊ）∈Ｇ１（∀ｊ∈Ｌ（ｊ≠ｉ））とを読み込む。楕円スカラー倍算部１０ｉｂ−ｉは、入力されたこれらの情報を用い、各ｊ∈Ｌ（ｊ≠ｉ）に対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｃ（ｊ）・ｙ（ｊ）∈Ｇ１を行い、その演算結果ｃ（ｊ）・ｙ（ｊ）∈Ｇ１を記憶部１０ｔ−ｉに格納する（ステップＳ３３）。次に、楕円演算部１０ｉ−ｉの楕円加算部１０ｉｃ−ｉが、記憶部１０ｔ−ｉから演算結果ｚ（ｊ）・ｇ１∈Ｇ１と演算結果ｃ（ｊ）・ｙ（ｊ）∈Ｇ１とを読み込む。楕円加算部１０ｉｃ−ｉは、入力されたこれらの情報を用い、楕円曲線Ｅ／Ｆｑ上での楕円加算ａ（ｊ）＝ｚ（ｊ）・ｇ１＋ｃ（ｊ）・ｙ（ｊ）∈Ｇ１を行い、当該演算結果ａ（ｊ）を記憶部１０ｔ−ｉに出力し、記憶部１０ｔ−ｉに格納する（ステップＳ３４）。
【０１０７】
次に、楕円演算部１０ｊ−ｉの楕円スカラー倍算部１０ｊａ−ｉが、記憶部１０ｔ−ｉから任意値ｚ（ｊ）∈Ｚｐ（∀ｊ∈Ｌ（ｊ≠ｉ））と演算結果ｈ∈Ｇ１とを読み込む。楕円スカラー倍算部１０ｊａ−ｉは、入力されたこれらの情報を用い、各ｊ∈Ｌ（ｊ≠ｉ）に対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｊ）・ｈ∈Ｇ１を行い、その演算結果ｚ（ｊ）・ｈ∈Ｇ１を記憶部１０ｔ−ｉに格納する（ステップＳ３５）。また、楕円演算部１０ｊ−ｉの楕円スカラー倍算部１０ｊｂ−ｉが、記憶部１０ｔ−ｉから任意値ｃ（ｊ）∈Ｚｐと任意値σ（ｊ）∈Ｇ１（∀ｊ∈Ｌ（ｊ≠ｉ））とを読み込む。楕円スカラー倍算部１０ｊｂ−ｉは、入力されたこれらの情報を用い、各ｊ∈Ｌ（ｊ≠ｉ）に対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｃ（ｊ）・σ（ｊ）∈Ｇ１を行い、その演算結果ｃ（ｊ）・σ（ｊ）∈Ｇ１を記憶部１０ｔ−ｉに格納する（ステップＳ３６）。次に、楕円演算部１０ｊ−ｉの楕円加算部１０ｊｃ−ｉが、記憶部１０ｔ−ｉから演算結果ｚ（ｊ）・ｈ∈Ｇ１と演算結果ｃ（ｊ）・σ（ｊ）∈Ｇ１とを読み込む。楕円加算部１０ｊｃ−ｉは、入力されたこれらの情報を用い、楕円曲線Ｅ／Ｆｑ上での楕円加算ｂ（ｊ）＝ｚ（ｊ）・ｈ＋ｃ（ｊ）・σ（ｊ）∈Ｇ１を行い、当該演算結果ｂ（ｊ）を記憶部１０ｔ−ｉに出力し、記憶部１０ｔ−ｉに格納する（ステップＳ３７）。
【０１０８】
次に、Ｈ’関数演算部１０ｋ−ｉが、記憶部１０ｔ−ｉから、任意値ｒ∈Ｚｐとメッセージｍとすべてのｋ∈Ｌについてのσ（ｋ），ａ（ｋ），ｂ（ｋ）∈Ｇ１とを読み込む。Ｈ’関数演算部１０ｋ−ｉは、任意値ｒ∈Ｚｐとメッセージｍとすべてのｋ∈Ｌについてのσ（ｋ），ａ（ｋ），ｂ（ｋ）∈Ｇ１の各要素とを含む入力値に対し、ハッシュ関数Ｈ’を作用させ、その演算結果
ｃ＝Ｈ’（ｒ，ｍ，（σ（ｋ））ｋ∈Ｌ，（ａ（ｋ））ｋ∈Ｌ，（ｂ（ｋ））ｋ∈Ｌ）∈Ｚｐ
を記憶部１０ｔ−ｉに出力し、記憶部１０ｔ−ｉに格納する（ステップＳ３８）。なお、（σ（ｋ））ｋ∈Ｌは、σ（ｋ）＝（σ１（ｋ），σ２（ｋ））∈Ｅ／Ｆｑとした場合における、（σ１（１），σ２（１），σ１（２），σ２（２），...，σ１（Ｌ），σ２（Ｌ））を意味する。（ａ（ｋ））ｋ∈Ｌ，（ｂ（ｋ））ｋ∈Ｌについても同様である。
【０１０９】
次に、整数演算部１０ｍ−ｉが、記憶部１０ｔ−ｉから、ｐと演算結果ｃ∈Ｚｐと任意値ｃ（ｊ）∈Ｚｐ（∀ｊ∈Ｌ（ｊ≠ｉ））とを読み込む。整数演算部１０ｍ−ｉは、入力されたこれらの情報を用い、
ｃ（ｉ）＝ｃ−Σｊ≠ｉｃ（ｊ）  ｍｏｄ  ｐ
の演算を行い、その演算結果ｃ（ｉ）∈Ｚｐを記憶部１０ｔ−ｉに出力し、記憶部１０ｔ−ｉに格納する（ステップＳ３９）。なお、Σｊ≠ｉｃ（ｊ）は、∀ｊ∈Ｌ（ｊ≠ｉ）に対応するｃ（ｊ）の総和を意味する。
【０１１０】
次に、整数演算部１０ｎ−ｉが、記憶部１０ｔ−ｉから任意値ｒ（ｉ）∈Ｚｐと演算結果ｃ（ｉ）∈Ｚｐと秘密鍵ｘ（ｉ）∈Ｚｐとｐとを読み込む。整数演算部１０ｎ−ｉは、入力されたこれらの情報を用い、
ｚ（ｉ）＝ｒ（ｉ）−ｃ（ｉ）・ｘ（ｉ）  ｍｏｄ  ｐ
の演算を行い、その演算結果ｚ（ｉ）を記憶部１０ｔ−ｉに出力し、記憶部１０ｔ−ｉに格納する（ステップＳ４０）。
【０１１１】
次に、署名構成部１０ｐ−ｉが、記憶部１０ｔ−ｉから、任意値ｒ∈Ｚｐとすべてのｋ∈Ｌについてのσ（ｋ），ｃ（ｋ），ｚ（ｋ）とを読み込み、それらのビット結合である
匿名署名σ＝（ｒ，（σ（ｋ））ｋ∈Ｌ，（ｃ（ｋ））ｋ∈Ｌ，（ｚ（ｋ））ｋ∈Ｌ）
を構成し、記憶部１０ｔ−ｉに格納する（ステップＳ４１）。そして、記憶部１０ｔ−ｉから通信部１０ｑ−ｉに、集合Ｌと匿名署名σとメッセージｍとが送られ、通信部１０ｑ−ｉは、匿名署名σを集合Ｌとメッセージｍとともに送信する（ステップＳ４２）。
【０１１２】
［署名検証処理］
次に、本形態の署名検証処理について説明する。
図９は、第１実施形態における署名検証処理を説明するためのフローチャートである。以下、図９に従って、第１実施形態の署名検証処理について説明する。
【０１１３】
まず、署名検証装置２０（図４）の通信部２０ａが、匿名署名σ＝（ｒ，（σ（ｋ））ｋ∈Ｌ，（ｃ（ｋ））ｋ∈Ｌ，（ｚ（ｋ））ｋ∈Ｌ）と集合Ｌとメッセージｍとを受信する（ステップＳ５１）。このように通信部２０ａに入力された匿名署名σと集合Ｌとメッセージｍは、記憶部２０ｋに格納される。
【０１１４】
次に、制御部２０ｉの制御のもと、記憶部２０ｋに格納された集合Ｌを特定する情報が通信部２０ａに送られ、通信部２０ａは、この情報をネットワーク４０を通じて管理装置３０に送信する。管理装置３０（図５）は、通信部３０aでこの情報を受信する。管理装置３０の制御部３０ｍは、すべてのｋ∈Ｌに対応する公開鍵ｙ（ｋ）∈Ｇ１（∀ｋ∈Ｌ）を記憶部３０ｐから読み出し、それらを通信部３０ａから署名検証装置２０に返送する。署名検証装置２０の通信部２０ａは、管理装置３０から送信された公開鍵ｙ（ｋ）∈Ｇ１（∀ｋ∈Ｌ）を受信し、公開鍵ｙ（ｋ）∈Ｇ１（∀ｋ∈Ｌ）は、記憶部２０ｋに格納される（ステップＳ５２）。
【０１１５】
次に、検査部２０ｂが、記憶部２０ｋからｐとｇ１とすべてのｋ（∀ｋ∈Ｌ）についてのｙ（ｋ），σ（ｋ），ｃ（ｋ），ｚ（ｋ）とを読み込み、すべてのｋ（∀ｋ∈Ｌ）について
ｙ（ｋ）∈Ｇ１  …(10)
σ（ｋ）∈Ｇ１  …(11)
ｃ（ｋ）∈Ｚｐ  …(12)
ｚ（ｋ）∈Ｚｐ  …(13)
を満たすか否かを判定し、その判定結果を制御部２０ｉに送る（ステップＳ５３）。ここで、何れかのｋ（∃ｋ∈Ｌ）について式（１０）〜（１３）の何れかが満たされなかった場合、制御部２０ｉは、検証結果出力部２０ｈに０（拒絶：匿名署名σが不合格である旨）を出力させ（ステップＳ６４）、処理を終了させる。
【０１１６】
一方、すべてのｋ（∀ｋ∈Ｌ）について式（１０）〜（１３）のすべてが満たされた場合、制御部２０ｉは、Ｈ関数演算部２０ｃに演算指示を与える。これを受けたＨ関数演算部２０ｃは、記憶部２０ｋからｒとｍとを読み込む。Ｈ関数演算部２０ｃは、入力されたこれらの情報を用い、ハッシュ演算ｈ＝Ｈ（ｒ．ｍ）∈Ｇ１を実行し、その演算結果ｈを記憶部２０ｋに格納する（ステップＳ５４）。
【０１１７】
次に、楕円演算部２０ｄの楕円スカラー倍算部２０ｄａが、記憶部２０ｋからｚ（ｋ）（∀ｋ∈Ｌ）と生成元ｇ１∈Ｇ１とを読み込む。楕円スカラー倍算部２０ｄａは、入力されたこれらの情報を用い、各ｋ∈Ｌに対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｋ）・ｇ１∈Ｇ１を行い、その演算結果ｚ（ｋ）・ｇ１∈Ｇ１を記憶部２０ｋに格納する（ステップＳ５５）。また、楕円演算部２０ｄの楕円スカラー倍算部２０ｄｂが、記憶部２０ｋからｃ（ｋ）と公開鍵ｙ（ｋ）∈Ｇ１（∀ｋ∈Ｌ）とを読み込む。楕円スカラー倍算部２０ｄｂは、入力されたこれらの情報を用い、各ｋ∈Ｌに対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｃ（ｋ）・ｙ（ｋ）∈Ｇ１を行い、その演算結果ｃ（ｋ）・ｙ（ｋ）∈Ｇ１を記憶部２０ｋに格納する（ステップＳ５６）。次に、楕円演算部２０ｄの楕円加算部２０ｄｃが、記憶部２０ｋから演算結果ｚ（ｋ）・ｇ１∈Ｇ１と演算結果ｃ（ｋ）・ｙ（ｋ）∈Ｇ１とを読み込む。楕円加算部２０ｄｃは、入力されたこれらの情報を用い、楕円曲線Ｅ／Ｆｑ上での楕円加算ａ（ｋ）＝ｚ（ｋ）・ｇ１＋ｃ（ｋ）・ｙ（ｋ）∈Ｇ１を行い、当該演算結果ａ（ｋ）を記憶部２０ｋに出力し、記憶部２０ｋに格納する（ステップＳ５７）。
【０１１８】
次に、楕円演算部２０ｅの楕円スカラー倍算部２０ｅａが、記憶部２０ｋからｚ（ｋ）∈Ｚｐ（∀ｋ∈Ｌ）と演算結果ｈ∈Ｇ１とを読み込む。楕円スカラー倍算部２０ｅａは、入力されたこれらの情報を用い、各ｋ∈Ｌに対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｋ）・ｈ∈Ｇ１を行い、その演算結果ｚ（ｋ）・ｈ∈Ｇ１を記憶部２０ｋに格納する（ステップＳ５８）。また、楕円演算部２０ｅの楕円スカラー倍算部２０ｅｂが、記憶部２０ｋからｃ（ｋ）∈Ｚｐとσ（ｋ）∈Ｇ１（∀ｋ∈Ｌ）とを読み込む。楕円スカラー倍算部２０ｅｂは、入力されたこれらの情報を用い、各ｋ∈Ｌに対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｃ（ｋ）・σ（ｋ）∈Ｇ１を行い、その演算結果ｃ（ｋ）・σ（ｋ）∈Ｇ１を記憶部２０ｋに格納する（ステップＳ５９）。次に、楕円演算部２０ｅの楕円加算部２０ｅｃが、記憶部２０ｋから演算結果ｚ（ｋ）・ｈ∈Ｇ１と演算結果ｃ（ｋ）・σ（ｋ）∈Ｇ１とを読み込む。楕円加算部２０ｅｃは、入力されたこれらの情報を用い、楕円曲線Ｅ／Ｆｑ上での楕円加算ｂ（ｋ）＝ｚ（ｋ）・ｈ＋ｃ（ｋ）・σ（ｋ）∈Ｇ１を行い、当該演算結果ｂ（ｋ）を記憶部２０ｋに出力し、記憶部２０ｋに格納する（ステップＳ６０）。
【０１１９】
次に、Ｈ’関数演算部２０ｆが、記憶部２０ｋから、ｒ∈Ｚｐとメッセージｍとすべてのｋ∈Ｌについてのσ（ｋ），ａ（ｋ），ｂ（ｋ）∈Ｇ１とを読み込む。Ｈ’関数演算部２０ｆは、ｒ∈Ｚｐとメッセージｍとすべてのｋ∈Ｌについてのσ（ｋ），ａ（ｋ），ｂ（ｋ）∈Ｇ１の各要素とを含む入力値に対し、ハッシュ関数Ｈ’を作用させ、その演算結果
ｃ＝Ｈ’（ｒ，ｍ，（σ（ｋ））ｋ∈Ｌ，（ａ（ｋ））ｋ∈Ｌ，（ｂ（ｋ））ｋ∈Ｌ）∈Ｚｐ
を記憶部２０ｋに出力し、記憶部２０ｋに格納する（ステップＳ６１）。
【０１２０】
次に、比較部２０ｇが、記憶部２０ｋからｐと匿名署名σのｃ（ｋ）（∀ｋ∈Ｌ）と演算結果ｃとを読み込む。比較部２０ｇは読み込んだこれらの情報を用い、
ｃ＝Σｋ∈Ｌｃ（ｋ）ｍｏｄ  ｐ  …(14)
を満たすか否かを判定し、その判定結果を制御部２０ｉに出力する（ステップＳ６２）。なお、Σｋ∈Ｌｃ（ｊ）は、∀ｋ∈Ｌに対応するｃ（ｋ）の総和を意味する。
【０１２１】
ここで、式（１４）を満たした場合、制御部２０ｉは、検証結果出力部２０ｈに１（受理：匿名署名σが合格である旨）を出力させ（ステップＳ６３）、処理を終了させる。一方、式（１４）を満たさなかった場合、制御部２０ｉは、検証結果出力部２０ｈに０（拒絶：匿名署名σが不合格である旨）を出力させ（ステップＳ６４）、処理を終了させる。
【０１２２】
［匿名性無効化処理］
次に、管理装置３０が匿名署名σの匿名性を無効にする処理について説明する。
図１０，図１１は、第１実施形態における匿名性無効化処理を説明するためのフローチャートである。以下、図１０，図１１に従って、第１実施形態の匿名性無効化処理について説明する。
まず、管理装置３０（図５）の通信部３０ａが、匿名署名σ＝（ｒ，（σ（ｋ））ｋ∈Ｌ，（ｃ（ｋ））ｋ∈Ｌ，（ｚ（ｋ））ｋ∈Ｌ）と集合Ｌとメッセージｍとを受信する（ステップＳ７１）。このように通信部３０ａに入力された匿名署名σと集合Ｌとメッセージｍは、記憶部３０ｐに格納される。
【０１２３】
次に、検査部３０ｂが、記憶部３０ｐからｐとｇ１とすべてのｋ（∀ｋ∈Ｌ）についてのｙ（ｋ），σ（ｋ），ｃ（ｋ），ｚ（ｋ）とを読み込み、すべてのｋ（∀ｋ∈Ｌ）について、前述の式（１０）〜（１３）を満たすか否かを判定し、その判定結果を制御部３０ｍに送る（ステップＳ７３）。ここで、何れかのｋ（∃ｋ∈Ｌ）について式（１０）〜（１３）の何れかが満たされなかった場合、制御部３０ｍは、出力部３０ｋに｛｝（空集合：匿名署名σが適切ではない旨を示す）を出力させ（ステップＳ１００）、処理を終了させる。
【０１２４】
一方、すべてのｋ（∀ｋ∈Ｌ）について式（１０）〜（１３）のすべてが満たされた場合、制御部３０ｍは、Ｈ関数演算部３０ｃに演算指示を与える。これを受けたＨ関数演算部３０ｃは、記憶部３０ｐからｒとｍとを読み込む。Ｈ関数演算部３０ｃは、入力されたこれらの情報を用い、ハッシュ演算ｈ＝Ｈ（ｒ．ｍ）∈Ｇ１を実行し、その演算結果ｈを記憶部３０ｐに格納する（ステップＳ７４）。
【０１２５】
次に、楕円演算部３０ｄの楕円スカラー倍算部３０ｄａが、記憶部３０ｐからｚ（ｋ）（∀ｋ∈Ｌ）と生成元ｇ１∈Ｇ１とを読み込む。楕円スカラー倍算部３０ｄａは、入力されたこれらの情報を用い、各ｋ∈Ｌに対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｋ）・ｇ１∈Ｇ１を行い、その演算結果ｚ（ｋ）・ｇ１∈Ｇ１を記憶部３０ｐに格納する（ステップＳ７５）。また、楕円演算部３０ｄの楕円スカラー倍算部３０ｄｂが、記憶部３０ｐからｃ（ｋ）と公開鍵ｙ（ｋ）∈Ｇ１（∀ｋ∈Ｌ）とを読み込む。楕円スカラー倍算部３０ｄｂは、入力されたこれらの情報を用い、各ｋ∈Ｌに対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｃ（ｋ）・ｙ（ｋ）∈Ｇ１を行い、その演算結果ｃ（ｋ）・ｙ（ｋ）∈Ｇ１を記憶部３０ｐに格納する（ステップＳ７６）。次に、楕円演算部３０ｄの楕円加算部３０ｄｃが、記憶部３０ｐから演算結果ｚ（ｋ）・ｇ１∈Ｇ１と演算結果ｃ（ｋ）・ｙ（ｋ）∈Ｇ１とを読み込む。楕円加算部３０ｄｃは、入力されたこれらの情報を用い、楕円曲線Ｅ／Ｆｑ上での楕円加算ａ（ｋ）＝ｚ（ｋ）・ｇ１＋ｃ（ｋ）・ｙ（ｋ）∈Ｇ１を行い、当該演算結果ａ（ｋ）を記憶部３０ｐに出力し、記憶部３０ｐに格納する（ステップＳ７７）。
【０１２６】
次に、楕円演算部３０ｅの楕円スカラー倍算部３０ｅａが、記憶部３０ｐからｚ（ｋ）∈Ｚｐ（∀ｋ∈Ｌ）と演算結果ｈ∈Ｇ１とを読み込む。楕円スカラー倍算部３０ｅａは、入力されたこれらの情報を用い、各ｋ∈Ｌに対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｚ（ｋ）・ｈ∈Ｇ１を行い、その演算結果ｚ（ｋ）・ｈ∈Ｇ１を記憶部３０ｐに格納する（ステップＳ７８）。また、楕円演算部３０ｅの楕円スカラー倍算部３０ｅｂが、記憶部３０ｐからｃ（ｋ）∈Ｚｐとσ（ｋ）∈Ｇ１（∀ｋ∈Ｌ）とを読み込む。楕円スカラー倍算部３０ｅｂは、入力されたこれらの情報を用い、各ｋ∈Ｌに対し、それぞれ、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｃ（ｋ）・σ（ｋ）∈Ｇ１を行い、その演算結果ｃ（ｋ）・σ（ｋ）∈Ｇ１を記憶部３０ｐに格納する（ステップＳ７９）。次に、楕円演算部３０ｅの楕円加算部３０ｅｃが、記憶部３０ｐから演算結果ｚ（ｋ）・ｈ∈Ｇ１と演算結果ｃ（ｋ）・σ（ｋ）∈Ｇ１とを読み込む。楕円加算部３０ｅｃは、入力されたこれらの情報を用い、楕円曲線Ｅ／Ｆｑ上での楕円加算ｂ（ｋ）＝ｚ（ｋ）・ｈ＋ｃ（ｋ）・σ（ｋ）∈Ｇ１を行い、当該演算結果ｂ（ｋ）を記憶部３０ｐに出力し、記憶部３０ｐに格納する（ステップＳ８０）。
【０１２７】
次に、Ｈ’関数演算部３０ｆが、記憶部３０ｐから、ｒ∈Ｚｐとメッセージｍとすべてのｋ∈Ｌについてのσ（ｋ），ａ（ｋ），ｂ（ｋ）∈Ｇ１とを読み込む。Ｈ’関数演算部１０ｋ−ｉは、ｒ∈Ｚｐとメッセージｍとすべてのｋ∈Ｌについてのσ（ｋ），ａ（ｋ），ｂ（ｋ）∈Ｇ１の各要素とを含む入力値に対し、ハッシュ関数Ｈ’を作用させ、その演算結果
ｃ＝Ｈ’（ｒ，ｍ，（σ（ｋ））ｋ∈Ｌ，（ａ（ｋ））ｋ∈Ｌ，（ｂ（ｋ））ｋ∈Ｌ）∈Ｚｐ
を記憶部３０ｐに出力し、記憶部３０ｐに格納する（ステップＳ８１）。
【０１２８】
次に、比較部３０ｇが、記憶部３０ｐからｐと匿名署名σのｃ（ｋ）（∀ｋ∈Ｌ）と演算結果ｃとを読み込む。比較部３０ｇは読み込んだこれらの情報を用い、前述の式（１４）を満たすか否かを判定し、その判定結果を制御部３０ｍに出力する（ステップＳ８２）。ここで、前述の式（１４）を満たされなかった場合、制御部３０ｍは、出力部３０ｋに｛｝（空集合：匿名署名σが適切ではない旨を示す）を出力させ（ステップＳ１００）、処理を終了させる。
一方、前述の式（１４）を満たした場合、制御部３０ｍは、ｋに１を代入し、集合Ｓを｛｝（空集合）とし、当該ｋとＳとを一時メモリ３０ｎに格納する（ステップｓ８３）。
【０１２９】
次に、ペアリング演算部３０ｈが、演算結果ｈ∈Ｇ１と追跡鍵ｔ（ｋ）∈Ｇ２とを記憶部３０ｐから読み込む。ペアリング演算部３０ｈは、入力された演算結果ｈと追跡鍵ｔ（ｋ）との組をペアリング関数ｅ：Ｇ１×Ｇ２→Ｇ３に代入し、その演算結果ｅ（ｈ，ｔ（ｋ））を記憶部３０ｐに出力し、記憶部３０ｐに格納する（ステップＳ８４）。また、ペアリング演算部３０ｉが、σ（ｋ）∈Ｇ１と生成元ｇ２∈Ｇ２とを記憶部３０ｐから読み込む。ペアリング演算部３０ｉは、入力されたσ（ｋ）と生成元ｇ２との組をペアリング関数ｅに代入し、その演算結果ｅ（σ（ｋ），ｇ２）を記憶部３０ｐに出力し、記憶部３０ｐに格納する（ステップＳ８５）。
【０１３０】
次に、判定部３０ｊが、記憶部３０ｐから演算結果ｅ（ｈ，ｔ（ｋ））及びｅ（σ（ｋ），ｇ２）を読み込む。判定部３０ｊは、入力されたｅ（ｈ，ｔ（ｋ））とｅ（σ（ｋ），ｇ２）とが一致するか否かを判定する（ステップＳ８６）。ここで、ｅ（ｈ，ｔ（ｋ））とｅ（σ（ｋ），ｇ２）とが一致すると判定された場合、制御部３０ｍは、一時メモリ３０ｎに格納されているｋを集合Ｓに追加したものを新たな集合Ｓ（Ｓ＝Ｓ∪ｋ）とし、当該集合Ｓを一時メモリ３０ｎに格納し（ステップＳ８７）、処理をステップＳ８８へ移す。一方、ｅ（ｈ，ｔ（ｋ））とｅ（σ（ｋ），ｇ２）とが一致しないと判定された場合、制御部３０ｍは、集合Ｓを更新することなく、処理をステップＳ８８に移す。
【０１３１】
ステップＳ８８では、制御部３０ｍが一時メモリ３０ｎに格納されたｋと記憶部３０ｐに格納されたＬとを参照し、ｋ＝Ｌであるか否か否かを判定する（ステップＳ８８）。ここで、ｋ＝Ｌでなければ、制御部３０ｍは、ｋ＋１を新たなｋとして一時メモリ３０ｎに格納し（ステップＳ８９）、処理をステップＳ８４に戻す。一方、ｋ＝Ｌであれば、制御部３０ｍは、一時メモリ３０ｎに格納されている最新の集合Ｓを出力部３０ｋに出力させ（ステップＳ９０）、処理を終了させる。この集合Ｓの何れかの元に対応する匿名署名生成装置が真に署名を生成した匿名署名生成装置である。通常、出力される集合Ｓには真に署名を生成した１つの匿名署名生成装置に対応する元のみが含まれる。
【０１３２】
〔第２実施形態〕
次に、本発明の第２実施形態について説明する。第２実施形態は第１実施形態の変形例であり、匿名署名生成装置が鍵生成を行うのではなく、鍵生成装置がすべての匿名署名生成装置の鍵生成を行う構成である。以下では、第１実施形態との相違点を中心に説明し、第１実施形態と共通する事項については第１実施形態と同じ符号を付して説明を省略する。
【０１３３】
＜全体構成＞
図１２は、第２実施形態の匿名署名システム１００の全体構成を示した概念図である。
図１２に示すように、本形態の匿名署名システム１００は、署名クループを構成し得るｎ個（ｎ≧２）の匿名署名生成装置１１０−０〜（ｎ−１）、署名検証を行なう署名検証装置２０、匿名署名の匿名性を無効化する管理装置３０及び鍵生成装置１４０を有しており、匿名署名生成装置１１０−０〜（ｎ−１）、署名検証装置２０、管理装置３０及び鍵生成装置１４０は、相互にネットワーク４０を通じて接続可能に構成されている。
【０１３４】
＜匿名署名生成装置の構成＞
次に、匿名署名生成装置の構成について説明する。なお、以下では匿名署名生成装置１１０−ｉを例にとって説明する。その他の匿名署名生成装置の構成も匿名署名生成装置１１０−ｉと同様である。
【０１３５】
［ハードウェア構成］
第１の実施形態と同じである。
［ハードウェアとプログラムとの協働］
第２実施形態の匿名署名生成装置もコンピュータに所定のプログラムが読み込まれることにより構成される。図１３は、このように構成される第２実施形態における匿名署名生成装置１１０−ｉの機能構成を例示したブロック図である。なお、図１３における矢印はデータの流れを示すが、一時メモリ１１０ｒ−ｉや制御部１１０ｓ−ｉに入出力されるデータの流れは省略してある。また、図１３において第１実施形態の匿名署名生成装置１０−ｉ（図３）と共通する部分については、図３と同じ符号を付した。
図１３に例示するように、第２実施形態の匿名署名生成装置１１０−ｉの匿名署名生成装置１０−ｉ（図３）との相違点は、匿名署名生成装置１１０−ｉが鍵生成部１０ａ−ｉを有しない点のみである。
【０１３６】
＜鍵生成装置＞
次に、鍵生成装置の構成について説明する。
【０１３７】
［ハードウェア構成］
第１の実施形態の匿名署名生成装置と同様である。
【０１３８】
［ハードウェアとプログラムとの協働］
第２実施形態の鍵生成装置はコンピュータに所定のプログラムが読み込まれることにより構成される。図１４は、このように構成される第２実施形態における鍵生成装置１４０の機能構成を例示したブロック図である。なお、図１４における矢印はデータの流れを示すが、一時メモリ１４０ｆや制御部１４０ｅに入出力されるデータの流れは省略してある。
図１４に示すように、本形態の鍵生成装置１４０は、通信部１４０ａと、秘密鍵生成部１４０ｂと、公開鍵生成部１４０ｃと、追跡鍵生成部１４０ｄと、制御部１４０ｅと、一時メモリ１４０ｆと、記憶部１４０ｇとを有する。また、鍵生成装置１４０は、制御部１４０ｅの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ１４０ｆに読み書きされる。
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ（記載していない）を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、鍵生成装置１４０の機能をコンピュータに実行させるためのプログラムに相当する。
【０１３９】
＜処理＞
次に、第２実施形態の匿名署名システム１００の処理について説明する。第２実施形態の処理と第１実施形態の処理との相違点は前処理と鍵生成処理のみである。以下では、相違点である前処理と鍵生成処理のみを説明する。
【０１４０】
［前処理］
第１実施形態の前処理との相違点は、第１実施形態の前処理に加え、鍵生成装置１４０の記憶部１４０ｇにも、生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２とｐとが格納される点である。その他は、第１実施形態と同じである。
【０１４１】
［鍵生成処理］
図１５は、第２実施形態の鍵生成処理を説明するためのフローチャートである。以下、図１５に沿って、第２実施形態の鍵生成処理について説明する。
まず、鍵生成装置１４０（図１４）の秘密鍵生成部１４０ｂが、記憶部１４０ｇからｐを読み込む。秘密鍵生成部１４０ｂは、任意値ｘ（ｗ）∈ＵＺｐをｗ番目（ｗ∈Ｎ（Ｎ＝｛０，…，ｎ−１｝））の匿名署名生成装置１１０−ｗの秘密鍵ｘ（ｗ）として生成し、生成した各秘密鍵ｘ（ｗ）を記憶部１４０ｇに出力し、記憶部１４０ｇに格納する（ステップＳ１０１）。なお、任意値の具体例としては、擬似乱数を例示できる。また、擬似乱数ではなく、例えば、乱数表や利用者が設定した秘密情報などを用い、匿名署名生成装置間で重複しないように秘密鍵ｘ（ｗ）を設定してもよい。
【０１４２】
次に、公開鍵生成部１４０ｃが、記憶部１４０ｇから∀ｗ∈Ｎに対応する秘密鍵ｘ（ｗ）∈Ｚｐと生成元ｇ１∈Ｇ１とを読み込む。公開鍵生成部１４０ｃは、このように入力された秘密鍵ｘ（ｗ）∈Ｚｐと生成元ｇ１∈Ｇ１とを用い、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｙ（ｗ）＝ｘ（ｗ）・ｇ１∈Ｇ１を行い、各演算結果ｙ（ｗ）を各匿名署名生成装置１１０−ｗの公開鍵ｙ（ｗ）として記憶部１４０ｇに出力し、記憶部１４０ｇに格納する（ステップＳ１０２）。
【０１４３】
次に、追跡鍵生成部１４０ｄが、記憶部１４０ｇから∀ｗ∈Ｎに対応する秘密鍵ｘ（ｗ）∈Ｚｐと生成元ｇ２∈Ｇ２とを読み込む。追跡鍵生成部１４０ｄは、このように入力された秘密鍵ｘ（ｗ）∈Ｚｐと生成元ｇ２∈Ｇ２とを用い、楕円曲線Ｅ／Ｆｑ上での楕円スカラー倍算ｔ（ｗ）＝ｘ（ｗ）・ｇ２∈Ｇ２を行い、各演算結果ｔ（ｗ）を匿名署名生成装置１１０−ｗの追跡鍵ｔ（ｗ）として記憶部１４０ｇに出力し、記憶部１４０ｇに格納する（ステップＳ１０３）。
【０１４４】
その後、制御部１４０ｅの制御のもと、通信部１４０ａが、各秘密鍵ｘ（ｗ）をそれぞれ対応する匿名署名生成装置１１０−ｗへ送信し、すべてのｗ∈Ｎについての公開鍵ｙ（ｗ）と追跡鍵ｔ（ｗ）とを管理装置３０に送信する（ステップＳ１４）。なお、少なくとも秘密鍵ｘ（ｗ）と追跡鍵ｔ（ｉ）とは、それらの情報が第三者に漏洩しないよう、暗号化等の技術を用いて配送される。
【０１４５】
管理装置３０は、送信された公開鍵ｙ（ｗ）と追跡鍵ｔ（ｗ）とを通信部３０ａで受信し、記憶部３０ｐに格納する。そして、管理装置３０は、公開鍵ｙ（ｗ）を公開鍵リストとして公開する。また、各匿名署名生成装置１１０−ｗは、送信された秘密鍵ｘ（ｗ）を通信部１０ｑ−ｉで受信し、記憶部１０ｔ−ｉに格納する。
鍵生成以降の処理は第１実施形態と同じである。
【０１４６】
〔変形例〕
なお、本発明は上述の各実施の形態に限定されるものではない。例えば、上述の各実施の形態では、生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２を事前に装置間で共有する構成であった。しかし、生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２を事前に装置間で共有せず、ｙ（ｗ）とｇ１∈Ｇ１との組を公開鍵とし、ｔ（ｗ）とｇ２∈Ｇ２との組を追跡鍵としてもよい。この場合、生成元ｇ１∈Ｇ１，ｇ２∈Ｇ２を事前に装置間で共有する必要がなくなり、さらに、匿名署名生成装置毎に、生成元ｇ１∈Ｇ１とｇ２∈Ｇ２とを独立に選択することも可能となる。また、ｇ１，ｇ２，ｐの情報を各装置の記憶部に格納するのではなく、各装置にインストールされるプログラムがこれらの情報を保持していてもよい。
【０１４７】
また、各実施形態では、ｈ＝Ｈ（ｒ，ｍ）∈Ｇ１としたが、装置間で統一されているのであれば、ｒ，ｍのビット結合配置はどのようなものでもよい。また、装置間で共用される他の情報とｒ，ｍとのビット結合値のハッシュ値をｈとしてもよい。さらに、ｈ＝Ｈ（ｍ）∈Ｇ１としてもよいが、前述のように、この場合には安全性に多少問題が生じる。
その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【０１４８】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（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）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【０１５１】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェアで実現してもよい。
【産業上の利用可能性】
【０１５２】
本発明は、グループ署名を用いるあらゆる利用分野に適用可能である。
【図面の簡単な説明】
【０１５３】
【図１】図１は、第１実施形態の匿名署名システムの全体構成を示した概念図である。
【図２】図２は、第１実施形態における匿名署名生成装置のハードウェア構成を例示したブロック図である。
【図３】図３は、第１実施形態における匿名署名生成装置の機能構成を例示したブロック図である。
【図４】図４は、第１実施形態における署名検証装置の機能構成を例示したブロック図である。
【図５】図５は、第１実施形態における管理装置の機能構成を例示したブロック図である。
【図６】図６は、第１実施形態の鍵生成処理を説明するためのフローチャートである。
【図７】図７は、第１実施形態における署名生成処理を説明するためのフローチャートである。
【図８】図８は、第１実施形態における署名生成処理を説明するためのフローチャートである。
【図９】図９は、第１実施形態における署名検証処理を説明するためのフローチャートである。
【図１０】図１０は、第１実施形態における匿名性無効化処理を説明するためのフローチャートである。
【図１１】図１１は、第１実施形態における匿名性無効化処理を説明するためのフローチャートである。
【図１２】図１２は、第２実施形態の匿名署名システムの全体構成を示した概念図である。
【図１３】図１３は、第２実施形態における匿名署名生成装置の機能構成を例示したブロック図である。
【図１４】図１４は、第２実施形態における鍵生成装置の機能構成を例示したブロック図である。
【図１５】図１５は、第２実施形態の鍵生成処理を説明するためのフローチャートである。
【符号の説明】
【０１５４】
１，１００  匿名署名システム
１０，１１０  匿名署名生成装置
２０  署名検証装置
３０  管理装置
１４０  鍵生成装置
【図１】
2008098933.tif 000007
【図２】
2008098933.tif 000008
【図３】
2008098933.tif 000009
【図４】
2008098933.tif 000010
【図５】
2008098933.tif 000011
【図６】
2008098933.tif 000012
【図７】
2008098933.tif 000013
【図８】
2008098933.tif 000014
【図９】
2008098933.tif 000015
【図１０】
2008098933.tif 000016
【図１１】
2008098933.tif 000017
【図１２】
2008098933.tif 000018
【図１３】
2008098933.tif 000019
【図１４】
2008098933.tif 000020
【図１５】
2008098933.tif 000021