(57)【特許請求の範囲】
【請求項１】
鍵生成装置と署名装置と検証装置とを備え、ｔ＝０，．．．，ｄ＋１（ｄは１以上の整数）の各整数ｔについての基底Ｂｔと基底Ｂ＊ｔとを用いて署名処理を実行する署名処理システムであり、
前記鍵生成装置は、
ｔ＝１，．．．，ｄの少なくとも１つ以上の整数ｔについて、識別情報ｔと、属性情報ｘ→ｔ：＝（ｘｔ，ｉ）（ｉ＝１，．．．，ｎｔ，ｎｔは１以上の整数）とを含む属性集合Γを入力する第１情報入力部と、
基底Ｂ＊０の基底ベクトルｂ＊０，１の係数として所定の値δを設定した鍵要素ｋ＊０を生成する鍵要素０生成部と、
前記第１情報入力部が入力した属性集合Γに含まれる各識別情報ｔについて、基底Ｂ＊ｔの基底ベクトルｂ＊ｔ，ｉ（ｉ＝１，．．．，ｎｔ）の係数として属性情報ｘ→ｔに前記所定の値δを乗じたδｘｔ，ｉ（ｉ＝１，．．．，ｎｔ）を設定した鍵要素ｋ＊ｔを生成する鍵要素ｔ生成部と、
基底Ｂ＊ｄ＋１の基底ベクトルｂ＊ｄ＋１，１の係数として前記所定の値δを設定した鍵要素ｋ＊ｄ＋１，１と、基底Ｂ＊ｄ＋１の基底ベクトルｂ＊ｄ＋１，２の係数として前記所定の値δを設定した鍵要素ｋ＊ｄ＋１，２とを生成する鍵要素ｄ＋１生成部と、
前記鍵要素０生成部が生成した鍵要素ｋ＊０と、前記鍵要素ｔ生成部が生成した前記属性集合Γに含まれる各識別情報ｔについての鍵要素ｋ＊ｔと、前記鍵要素ｄ＋１生成部が生成した鍵要素ｋ＊ｄ＋１，１及び鍵要素ｋ＊ｄ＋１，２と、前記属性集合Γとを含む署名鍵ｓｋΓを前記署名装置へ送信する署名鍵送信部と
を備え、
前記署名装置は、
ｉ＝１，．．．，Ｌ（Ｌは１以上の整数）の各整数ｉについての変数ρ（ｉ）であって、識別情報ｔ（ｔ＝１，．．．，ｄのいずれかの整数）と、属性情報ｖ→ｉ：＝（ｖｉ，ｉ’）（ｉ’＝１，．．．，ｎｔ）との肯定形の組（ｔ，ｖ→ｉ）又は否定形の組¬（ｔ，ｖ→ｉ）のいずれかである変数ρ（ｉ）と、Ｌ行ｒ列（ｒは１以上の整数）の所定の行列Ｍと、メッセージｍとを入力する第２情報入力部と、
前記署名鍵送信部が送信した署名鍵ｓｋΓを取得する署名鍵取得部と、
前記第２情報入力部が入力した変数ρ（ｉ）と、前記署名鍵取得部が取得した署名鍵ｓｋΓに含まれる属性集合Γとに基づき、ｉ＝１，．．．，Ｌの各整数ｉのうち、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）であり、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性集合Γに含まれるｘ→ｔとの内積が０となるｉと、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）であり、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性集合Γに含まれるｘ→ｔとの内積が０とならないｉとの集合Ｉを特定するとともに、特定した集合Ｉに含まれるｉについて、前記第２情報入力部が入力した行列Ｍのｉ行目の要素であるＭｉに基づき、αｉＭｉを合計した場合に所定のベクトルｈ→となる補完係数αｉを計算する補完係数計算部と、
前記署名鍵ｓｋΓに含まれる鍵要素ｋ＊０を含む署名要素ｓ＊０を生成する署名要素０生成部と、
ｉ＝１，．．．，Ｌの各整数ｉについて、前記補完係数計算部が特定した集合Ｉに含まれる整数ｉであり、かつ、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉとし、前記集合Ｉに含まれるｉであり、かつ、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉ／（ｖ→ｉ・ｘ→ｔ）とし、前記集合Ｉに含まれない整数ｉの場合には値γｉ：＝０として、前記署名鍵ｓｋΓに含まれる鍵要素ｋ＊ｔに前記値γｉを乗じたγｉｋ＊ｔを含む署名要素ｓ＊ｉを生成する署名要素ｉ生成部と、
前記署名鍵ｓｋΓに含まれる鍵要素ｋ＊ｄ＋１，１と、前記メッセージｍを用いて生成される値ｍ’を前記鍵要素ｋ＊ｄ＋１，２に乗じたｍ’・ｋ＊ｄ＋１，２との和を含む署名要素ｓ＊Ｌ＋１を生成する署名要素Ｌ＋１生成部と、
前記署名要素０生成部が生成した署名要素ｓ＊０と、前記署名要素ｉ生成部が生成したｉ＝１，．．．，Ｌの各整数ｉについての署名要素ｓ＊ｉと、前記署名要素Ｌ＋１生成部が生成した署名要素ｓ＊Ｌ＋１と、前記メッセージｍと、前記変数ρ（ｉ）と、前記行列Ｍとを含む署名データσを前記検証装置へ送信する署名データ送信部と
を備え、
前記検証装置は、
前記署名データ送信部が送信した署名データσを取得するデータ取得部と、
ｒ個の要素を有するベクトルｆ→と前記ベクトルｈ→とを用いて生成される値ｓ０：＝ｈ→・ｆ→Ｔと、所定の値ｓＬ＋１とから計算される−ｓ０−ｓＬ＋１を、基底Ｂ０の基底ベクトルｂ０，１の係数として設定して検証要素ｃ０を生成する検証要素０生成部と、
前記ベクトルｆ→と前記データ取得部が取得した署名データσに含まれる行列Ｍとに基づき生成される列ベクトルｓ→Ｔ：＝（ｓ１，．．．，ｓＬ）Ｔ：＝Ｍ・ｆ→Ｔと、ｉ＝１，．．．，Ｌの各整数ｉについての所定の値θｉとを用いて、ｉ＝１，．．．，Ｌの各整数ｉについて、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底Ｂｔの基底ベクトルｂｔ，１の係数としてｓｉ＋θｉｖｉ，１を設定し、基底ベクトルｂｔ，ｉ’（ｉ’＝２，．．．，ｎｔ）の係数としてθｉｖｉ，ｉ’（ｉ’＝２，．．．，ｎｔ）を設定して検証要素ｃｉを生成し、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底ベクトルｂｔ，ｉ’（ｉ’＝１，．．．，ｎｔ）の係数としてｓｉｖｉ，ｉ’（ｉ’＝１，．．．，ｎｔ）を設定して検証要素ｃｉを生成する検証要素ｉ生成部と、
基底Ｂｄ＋１の基底ベクトルｂｄ＋１，１の係数として、前記所定の値ｓＬ＋１と前記値ｍ’と所定の値θＬ＋１とから計算されるｓＬ＋１−θＬ＋１ｍ’を設定し、基底ベクトルｂｄ＋１，２の係数として前記所定の値θＬ＋１を設定して検証要素ｃＬ＋１を生成する検証要素Ｌ＋１生成部と、
前記検証要素０生成部が生成した検証要素ｃ０と、前記検証要素ｉ生成部が生成した検証要素ｃｉと、前記検証要素Ｌ＋１生成部が生成した検証要素ｃＬ＋１と、前記署名データσに含まれる署名要素ｓ＊０，ｓ＊ｉ，ｓ＊Ｌ＋１とについて、ペアリング演算Πｉ＝０Ｌ＋１ｅ（ｃｉ，ｓ＊ｉ）を行い、前記署名データσの正当性を検証するペアリング演算部と
を備えることを特徴とする署名処理システム。
【請求項２】
前記署名処理システムは、
少なくとも基底ベクトルｂｔ，ｉ（ｉ＝１，．．．，１＋ｕ０，．．．，１＋ｕ０＋ｗ０，．．．，１＋ｕ０＋ｗ０＋ｚ０）を有する基底Ｂ０と、
少なくとも基底ベクトルｂｔ，ｉ（ｉ＝１，．．．，ｎｔ，．．．，ｎｔ＋ｕｔ，．．．，ｎｔ＋ｕｔ＋ｗｔ，．．．，ｎｔ＋ｕｔ＋ｗｔ＋ｚｔ）（ｕｔ，ｗｔ，ｚｔは１以上の整数）を有する基底Ｂｔ（ｔ＝１，．．．，ｄ）と、
少なくとも基底ベクトルｂｔ，ｉ（ｉ＝１，２，．．．，２＋ｕｄ＋１，．．．，２＋ｕｄ＋１＋ｗｄ＋１，．．．，２＋ｕｄ＋１＋ｗｄ＋１＋ｚｄ＋１）を有する基底Ｂｄ＋１と、
少なくとも基底ベクトルｂ＊ｔ，ｉ（ｉ＝１，．．．，１＋ｕ０，．．．，１＋ｕ０＋ｗ０，．．．，１＋ｕ０＋ｗ０＋ｚ０）を有する基底Ｂ＊０と、
少なくとも基底ベクトルｂ＊ｔ，ｉ（ｉ＝１，．．．，ｎｔ，．．．，ｎｔ＋ｕｔ，．．．，ｎｔ＋ｕｔ＋ｗｔ，．．．，ｎｔ＋ｕｔ＋ｗｔ＋ｚｔ）（ｕｔ，ｗｔ，ｚｔは１以上の整数）を有する基底Ｂ＊ｔ（ｔ＝１，．．．，ｄ）と、
少なくとも基底ベクトルｂ＊ｔ，ｉ（ｉ＝１，２，．．．，２＋ｕｄ＋１，．．．，２＋ｕｄ＋１＋ｗｄ＋１，．．．，２＋ｕｄ＋１＋ｗｄ＋１＋ｚｄ＋１）を有する基底Ｂ＊ｄ＋１と
を用いて署名処理を実行し、
前記鍵生成装置では、
前記鍵要素０生成部は、乱数δと乱数φ０，ｉ（ｉ＝１，．．．，ｗ０）とに基づき、数１に示す鍵要素ｋ＊０を生成し、
前記鍵要素ｔ生成部は、前記乱数δと乱数φｔ，ｉ（ｉ＝１，．．．，ｗｔ）とに基づき、前記属性集合Γに含まれる各識別情報ｔについて、数２に示す鍵要素ｋ＊ｔを生成し、
前記鍵要素ｄ＋１生成部は、前記乱数δと乱数φｄ＋１，１，ｉ（ｉ＝１，．．．，ｗｄ＋１）と乱数φｄ＋１，２，ｉ（ｉ＝１，．．．，ｗｄ＋１）とに基づき、数３に示す鍵要素ｋ＊ｄ＋１，１と鍵要素ｋ＊ｄ＋１，２とを生成し、
前記署名装置では、
前記署名要素０生成部は、乱数ξに基づき、数４に示す署名要素ｓ＊０を生成し、
前記署名要素ｉ生成部は、ｉ＝１，．．．，Ｌの各整数ｉについて、前記乱数ξに基づき、数５に示す署名要素ｓ＊ｉを生成し、
前記署名要素Ｌ＋１生成部は、前記乱数ξと前記値ｍ’とに基づき、数６に示す署名要素ｓ＊Ｌ＋１を生成し、
前記検証装置では、
前記検証要素０生成部は、前記値ｓ０と乱数ｓＬ＋１と乱数η０，ｉ（ｉ＝１，．．．，ｚ０）とに基づき、数７に示す検証要素ｃ０を生成し、
前記検証要素ｉ生成部は、前記列ベクトルｓ→Ｔと乱数θｉと乱数ηｉ，ｉ’（ｉ＝１，．．．，Ｌ；ｉ’＝１，．．．，ｚｔ）とに基づき、ｉ＝１，．．．，Ｌの各整数ｉについて、数８に示す検証要素ｃｉを生成し、
前記検証要素Ｌ＋１生成部は、前記乱数ｓＬ＋１と乱数θＬ＋１と乱数ηＬ＋１，ｉ’（ｉ’＝１，．．．，ｚｄ＋１）と前記値ｍ’とに基づき、数９に示す検証要素ｃＬ＋１を生成する
ことを特徴とする請求項１に記載の署名処理システム。
【数１】
0005606344.tif 000112
【数２】
0005606344.tif 000113
【数３】
0005606344.tif 000114
【数４】
0005606344.tif 000115
【数５】
0005606344.tif 000116
【数６】
0005606344.tif 000117
【数７】
0005606344.tif 000118
【数８】
0005606344.tif 000119
【数９】
0005606344.tif 000120
【請求項３】
前記署名装置では、
前記署名要素Ｌ＋１生成部は、前記メッセージｍと、前記行列Ｍと、ｉ＝１，．．．，Ｌの各整数ｉについての前記変数ρ（ｉ）とを入力としたハッシュ値を前記値ｍ’として用いて、署名要素ｓ＊Ｌ＋１を生成し、
前記検証装置では、
前記検証要素Ｌ＋１生成部は、前記ハッシュ値を前記値ｍ’として用いて、検証要素ｃＬ＋１を生成する
ことを特徴とする請求項１又は２に記載の署名処理システム。
【請求項４】
ｔ＝０，．．．，ｄ＋１（ｄは１以上の整数）の各整数ｔについての基底Ｂｔと基底Ｂ＊ｔとを用いて署名処理を実行する署名処理システムにおいて、署名鍵ｓｋΓを生成する鍵生成装置であり、
ｔ＝１，．．．，ｄの少なくとも１つ以上の整数ｔについて、識別情報ｔと、属性情報ｘ→ｔ：＝（ｘｔ，ｉ）（ｉ＝１，．．．，ｎｔ，ｎｔは１以上の整数）とを含む属性集合Γを入力する第１情報入力部と、
基底Ｂ＊０の基底ベクトルｂ＊０，１の係数として所定の値δを設定した鍵要素ｋ＊０を生成する鍵要素０生成部と、
前記第１情報入力部が入力した属性集合Γに含まれる各識別情報ｔについて、基底Ｂ＊ｔの基底ベクトルｂ＊ｔ，ｉ（ｉ＝１，．．．，ｎｔ）の係数として属性情報ｘ→ｔに前記所定の値δを乗じたδｘｔ，ｉ（ｉ＝１，．．．，ｎｔ）を設定した鍵要素ｋ＊ｔを生成する鍵要素ｔ生成部と、
基底Ｂ＊ｄ＋１の基底ベクトルｂ＊ｄ＋１，１の係数として前記所定の値δを設定した鍵要素ｋ＊ｄ＋１，１と、基底Ｂ＊ｄ＋１の基底ベクトルｂ＊ｄ＋１，２の係数として前記所定の値δを設定した鍵要素ｋ＊ｄ＋１，２とを生成する鍵要素ｄ＋１生成部と、
前記鍵要素０生成部が生成した鍵要素ｋ＊０と、前記鍵要素ｔ生成部が生成した前記属性集合Γに含まれる各識別情報ｔについての鍵要素ｋ＊ｔと、前記鍵要素ｄ＋１生成部が生成した鍵要素ｋ＊ｄ＋１，１及び鍵要素ｋ＊ｄ＋１，２と、前記属性集合Γとを含む署名鍵ｓｋΓを署名装置へ送信する署名鍵送信部と
を備えることを特徴とする鍵生成装置。
【請求項５】
ｔ＝０，．．．，ｄ＋１（ｄは１以上の整数）の各整数ｔについての基底Ｂｔと基底Ｂ＊ｔとを用いて署名処理を実行する署名処理システムにおいて、署名データσを生成する署名装置であり、
ｔ＝１，．．．，ｄの少なくとも１つ以上の整数ｔについて、識別情報ｔと、属性情報ｘ→ｔ：＝（ｘｔ，ｉ）（ｉ＝１，．．．，ｎｔ，ｎｔは１以上の整数）とを含む属性集合Γと、
基底Ｂ＊０の基底ベクトルｂ＊０，１の係数として所定の値δが設定された鍵要素ｋ＊０と、
前記属性集合Γに含まれる各識別情報ｔについて、基底Ｂ＊ｔの基底ベクトルｂ＊ｔ，ｉ（ｉ＝１，．．．，ｎｔ）の係数として属性情報ｘ→ｔに前記所定の値δを乗じたδｘｔ，ｉ（ｉ＝１，．．．，ｎｔ）が設定された鍵要素ｋ＊ｔと、
基底Ｂ＊ｄ＋１の基底ベクトルｂ＊ｄ＋１，１の係数として前記所定の値δが設定された鍵要素ｋ＊ｄ＋１，１と、
基底Ｂ＊ｄ＋１の基底ベクトルｂ＊ｄ＋１，２の係数として前記所定の値δが設定された鍵要素ｋ＊ｄ＋１，２と
を署名鍵ｓｋΓとして取得する署名鍵取得部と、
ｉ＝１，．．．，Ｌ（Ｌは１以上の整数）の各整数ｉについての変数ρ（ｉ）であって、識別情報ｔ（ｔ＝１，．．．，ｄのいずれかの整数）と、属性情報ｖ→ｉ：＝（ｖｉ，ｉ’）（ｉ’＝１，．．．，ｎｔ）との肯定形の組（ｔ，ｖ→ｉ）又は否定形の組¬（ｔ，ｖ→ｉ）のいずれかである変数ρ（ｉ）と、Ｌ行ｒ列（ｒは１以上の整数）の所定の行列Ｍと、メッセージｍとを入力する第２情報入力部と、
前記第２情報入力部が入力した変数ρ（ｉ）と、前記署名鍵取得部が取得した署名鍵ｓｋΓに含まれる属性集合Γとに基づき、ｉ＝１，．．．，Ｌの各整数ｉのうち、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）であり、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性集合Γに含まれるｘ→ｔとの内積が０となるｉと、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）であり、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性集合Γに含まれるｘ→ｔとの内積が０とならないｉとの集合Ｉを特定するとともに、特定した集合Ｉに含まれるｉについて、前記第２情報入力部が入力した行列Ｍのｉ行目の要素であるＭｉに基づき、αｉＭｉを合計した場合に所定のベクトルｈ→となる補完係数αｉを計算する補完係数計算部と、
前記署名鍵ｓｋΓに含まれる鍵要素ｋ＊０を含む署名要素ｓ＊０を生成する署名要素０生成部と、
ｉ＝１，．．．，Ｌの各整数ｉについて、前記補完係数計算部が特定した集合Ｉに含まれる整数ｉであり、かつ、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉとし、前記集合Ｉに含まれるｉであり、かつ、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉ／（ｖ→ｉ・ｘ→ｔ）とし、前記集合Ｉに含まれない整数ｉの場合には値γｉ：＝０として、前記署名鍵ｓｋΓに含まれる鍵要素ｋ＊ｔに前記値γｉを乗じたγｉｋ＊ｔを含む署名要素ｓ＊ｉを生成する署名要素ｉ生成部と、
前記署名鍵ｓｋΓに含まれる鍵要素ｋ＊ｄ＋１，１と、前記メッセージｍを用いて生成される値ｍ’を前記鍵要素ｋ＊ｄ＋１，２に乗じたｍ’・ｋ＊ｄ＋１，２との和を含む署名要素ｓ＊Ｌ＋１を生成する署名要素Ｌ＋１生成部と、
前記署名要素０生成部が生成した署名要素ｓ＊０と、前記署名要素ｉ生成部が生成したｉ＝１，．．．，Ｌの各整数ｉについての署名要素ｓ＊ｉと、前記署名要素Ｌ＋１生成部が生成した署名要素ｓ＊Ｌ＋１と、前記メッセージｍと、前記変数ρ（ｉ）と、前記行列Ｍとを含む署名データσを検証装置へ送信する署名データ送信部とを備えることを特徴とする署名装置。
【請求項６】
ｔ＝０，．．．，ｄ＋１（ｄは１以上の整数）の各整数ｔについての基底Ｂｔと基底Ｂ＊ｔとを用いて署名処理を実行する署名処理システムにおいて、署名データσを検証する検証装置であり、
署名要素ｓ＊０と、ｉ＝１，．．．，Ｌの各整数ｉについての署名要素ｓ＊ｉと、署名要素ｓ＊Ｌ＋１と、メッセージｍと、ｉ＝１，．．．，Ｌ（Ｌは１以上の整数）の各整数ｉについての変数ρ（ｉ）であって、識別情報ｔ（ｔ＝１，．．．，ｄのいずれかの整数）と、属性情報ｖ→ｉ：＝（ｖｉ，ｉ’）（ｉ’＝１，．．．，ｎｔ）との肯定形の組（ｔ，ｖ→ｉ）又は否定形の組¬（ｔ，ｖ→ｉ）のいずれかである変数ρ（ｉ）と、Ｌ行ｒ列（ｒは１以上の整数）の所定の行列Ｍとを含む署名データσを取得するデータ取得部と、
ｒ個の要素を有するベクトルｆ→とｒ個の要素を有するベクトルｈ→とを用いて生成される値ｓ０：＝ｈ→・ｆ→Ｔと、所定の値ｓＬ＋１とから計算される−ｓ０−ｓＬ＋１を、基底Ｂ０の基底ベクトルｂ０，１の係数として設定して検証要素ｃ０を生成する検証要素０生成部と、
前記ベクトルｆ→と前記データ取得部が取得した署名データσに含まれる行列Ｍとに基づき生成される列ベクトルｓ→Ｔ：＝（ｓ１，．．．，ｓＬ）Ｔ：＝Ｍ・ｆ→Ｔと、ｉ＝１，．．．，Ｌの各整数ｉについての所定の値θｉとを用いて、ｉ＝１，．．．，Ｌの各整数ｉについて、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底Ｂｔの基底ベクトルｂｔ，１の係数としてｓｉ＋θｉｖｉ，１を設定し、基底ベクトルｂｔ，ｉ’（ｉ’＝２，．．．，ｎｔ）の係数としてθｉｖｉ，ｉ’（ｉ’＝２，．．．，ｎｔ）を設定して検証要素ｃｉを生成し、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底ベクトルｂｔ，ｉ’（ｉ’＝１，．．．，ｎｔ）の係数としてｓｉｖｉ，ｉ’（ｉ’＝１，．．．，ｎｔ）を設定して検証要素ｃｉを生成する検証要素ｉ生成部と、
基底Ｂｄ＋１の基底ベクトルｂｄ＋１，１の係数として、前記所定の値ｓＬ＋１と前記メーセージｍから計算される値ｍ’と所定の値θＬ＋１とから計算されるｓＬ＋１−θＬ＋１ｍ’を設定し、基底ベクトルｂｄ＋１，２の係数として前記所定の値θＬ＋１を設定して検証要素ｃＬ＋１を生成する検証要素Ｌ＋１生成部と、
前記検証要素０生成部が生成した検証要素ｃ０と、前記検証要素ｉ生成部が生成した検証要素ｃｉと、前記検証要素Ｌ＋１生成部が生成した検証要素ｃＬ＋１と、前記署名データσに含まれる署名要素ｓ＊０，ｓ＊ｉ，ｓ＊Ｌ＋１とについて、ペアリング演算Πｉ＝０Ｌ＋１ｅ（ｃｉ，ｓ＊ｉ）を行い、前記署名データσの正当性を検証するペアリング演算部と
を備えることを特徴とする検証装置。
【請求項７】
ｄ個（ｄは１以上の整数）の鍵生成装置と、署名装置と、検証装置とを備え、ｔ＝１，．．．，ｄの少なくとも１つ以上の整数ｔについての基底Ｂｔと基底Ｂ＊ｔとを用いて署名処理を実行する署名処理システムであり、
前記ｄ個の鍵生成装置の各鍵生成装置は、
ｔ＝１，．．．，ｄのうち鍵生成装置毎に予め定められた整数ｔについての属性情報ｘ→ｔ：＝（ｘｔ，ｉ）（ｉ＝１，．．．，ｎｔ，ｎｔは１以上の整数）を入力する第１情報入力部と、
前記整数ｔと、ｊ＝１，２の各整数ｊについて、前記第１情報入力部が入力した属性情報ｘ→ｔと、所定の値δｊと、基底Ｂ＊ｔの基底ベクトルｂ＊ｔ，ｉ（ｉ＝１，．．．，２ｎｔ）とに基づき、数１０に示すベクトルを含む鍵要素ｋ＊ｔ，ｊを生成する鍵要素生成部と、
前記鍵要素生成部が生成した鍵要素ｋ＊ｔ，ｊと、前記属性情報ｘ→ｔとを含む署名鍵ｕｓｋを前記署名装置へ送信する署名鍵送信部とを備え、
前記署名装置は、
ｉ＝１，．．．，Ｌ（Ｌは１以上の整数）の各整数ｉについての変数ρ（ｉ）であって、識別情報ｔ（ｔ＝１，．．．，ｄのいずれかの整数）と、属性情報ｖ→ｉ：＝（ｖｉ，ｉ’）（ｉ’＝１，．．．，ｎｔ）との肯定形の組（ｔ，ｖ→ｉ）又は否定形の組¬（ｔ，ｖ→ｉ）のいずれかである変数ρ（ｉ）と、Ｌ行ｒ列（ｒは１以上の整数）の所定の行列Ｍと、メッセージｍとを入力する第２情報入力部と、
前記ｄ個の鍵生成装置のうち、少なくとも１つ以上の鍵生成装置の署名鍵送信部が送信した署名鍵ｕｓｋを取得する署名鍵取得部と、
前記第２情報入力部が入力した変数ρ（ｉ）と、前記署名鍵取得部が取得した署名鍵ｕｓｋに含まれる属性情報ｘ→ｔとに基づき、ｉ＝１，．．．，Ｌの各整数ｉのうち、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）であり、かつ、その組の識別情報ｔが示すｘ→ｔを含む署名鍵ｕｓｋを前記署名鍵取得部が取得しており、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性情報ｘ→ｔとの内積が０となるｉと、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）であり、かつ、その組の識別情報ｔが示すｘ→ｔを含む署名鍵ｕｓｋを前記署名鍵取得部が取得しており、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性情報ｘ→ｔとの内積が０とならないｉとの集合Ｉを特定するとともに、特定した集合Ｉに含まれるｉについて、前記第２情報入力部が入力した行列Ｍのｉ行目の要素であるＭｉに基づき、αｉＭｉを合計した場合に所定のベクトルｈ→となる補完係数αｉを計算する補完係数計算部と、
前記署名鍵ｕｓｋに含まれる鍵要素ｋ＊ｔ，１及び鍵要素ｋ＊ｔ，２と、所定の値ξ１，Ε，μと、前記メッセージｍから計算される値ｍ’とに基づき、ｉ＝１，．．．，Ｌの各整数ｉについて、前記補完係数計算部が特定した集合Ｉに含まれる整数ｉであり、かつ、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉとし、前記集合Ｉに含まれるｉであり、かつ、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉ／（ｖｉ・ｘｔ）とし、前記集合Ｉに含まれない整数ｉの場合には値γｉ：＝０として、基底Ｂ＊ｔの基底ベクトルｂ＊ｔ，ｉ（ｉ＝２ｎｔ＋１，２ｎｔ＋２）を用いて、数１１に示すベクトルを含む署名要素ｓ＊ｉを生成する署名要素生成部と、
前記署名要素生成部が生成したｉ＝１，．．．，Ｌの各整数ｉについての署名要素ｓ＊ｉと、前記メッセージｍと、前記変数ρ（ｉ）と、前記行列Ｍとを含む署名データσを前記検証装置へ送信する署名データ送信部と
を備え、
前記検証装置は、
前記署名データ送信部が送信した署名データσを取得するデータ取得部と、
ｒ個の要素を有するベクトルｆ→と、前記データ取得部が取得した署名データσに含まれる行列Ｍとに基づき列ベクトルｓ→Ｔ：＝（ｓ１，．．．，ｓＬ）Ｔ：＝Ｍ・ｆ→Ｔを生成するとともに、ｓ０：＝ｈ→・ｆ→Ｔとして、ｓ０＝ｈ→・（ｆ→’）Ｔであるｒ個の要素を有するベクトルｆ→’と、前記行列Ｍとに基づき列ベクトル（ｓ→’）Ｔ：＝（ｓ１’，．．．，ｓＬ’）Ｔ：＝Ｍ・（ｆ→’）Ｔを生成するベクトル生成部と、
前記ベクトル生成部が生成した列ベクトルｓ→Ｔ及び列ベクトル（ｓ→’）Ｔと、ｉ＝１，．．．，Ｌの各整数ｉについての所定の値θｉ，θｉ’，θｉ’’，σｉとに基づき、ｉ＝１，．．．，Ｌの各整数ｉについて、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底Ｂｔの基底ベクトルｂｔ，ｉ’（ｉ’＝１，．．．，２ｎｔ＋２）を用いて、数１２に示すベクトルを含む検証要素ｃｉを生成し、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底ベクトルｂｔ，ｉ（ｉ＝１，．．．，２ｎｔ＋２）を用いて、数１３に示すベクトルを含む検証要素ｃｉを生成する検証要素生成部と、
前記検証要素生成部が生成した検証要素ｃｉと、前記署名データσに含まれる署名要素ｓ＊ｉとについて、ペアリング演算Πｉ＝１Ｌｅ（ｃｉ，ｓ＊ｉ）を行い、前記署名データσの正当性を検証するペアリング演算部と
を備えることを特徴とする署名処理システム。
【数１０】
0005606344.tif 000121
【数１１】
0005606344.tif 000122
【数１２】
0005606344.tif 000123
【数１３】
0005606344.tif 000124
【請求項８】
前記署名処理システムは、
ｔ＝１，．．．，ｄの少なくとも１つ以上の整数ｔについて、少なくとも基底ベクトルｂｔ，ｉ（ｉ＝１，．．．，２ｎｔ＋２，．．．，２ｎｔ＋２＋ｕｔ，．．．，２ｎｔ＋２＋ｕｔ＋ｗｔ，．．．，２ｎｔ＋２＋ｕｔ＋ｗｔ＋ｚｔ）（ｕｔ，ｗｔ，ｚｔは１以上の整数）を有する基底Ｂｔと、少なくとも基底ベクトルｂ＊ｔ，ｉ（ｉ＝１，．．．，２ｎｔ＋２，．．．，２ｎｔ＋２＋ｕｔ，．．．，２ｎｔ＋２＋ｕｔ＋ｗｔ，．．．，２ｎｔ＋２＋ｕｔ＋ｗｔ＋ｚｔ）を有する基底Ｂ＊ｔとを用いて署名処理を実行し、
前記鍵生成装置では、
前記属性情報ｘ→ｔと前記所定の値δｊ，Δと乱数φｔ，ｊ，ｉ（ｊ＝１，２；ｉ＝１，．．．，ｗｔ）とに基づき、前記整数ｔと、ｊ＝１，２の各整数ｊについて、数１４に示す鍵要素ｋ＊ｔ，ｊを生成し、
前記署名装置では、
前記署名要素生成部は、前記鍵要素ｋ＊ｔ，１及び前記鍵要素ｋ＊ｔ，２と乱数ξ１，ξ２と所定の値Ε，π，π’，μと前記値ｍ’とに基づき、ｉ＝１，．．．，Ｌの各整数ｉについて、数１５に示すｒ＊ｉ，γｉ，ｙ→ｉ：＝（ｙｉ，ｉ）（ｉ＝１，．．．，ｎｔ），ｙ’→ｉ：＝（ｙ’ｉ，ｉ）（ｉ＝１，．．．，ｎｔ）を用いて、数１６に示す署名要素ｓ＊ｉを生成し、
前記検証装置では、
前記検証要素生成部は、前記列ベクトルｓ→Ｔ及び前記列ベクトル（ｓ→’）Ｔと乱数θｉ，θｉ’，θｉ’’と前記所定の値σｉと乱数ηｉ，ｉ’（ｉ＝１，．．．，Ｌ；ｉ’＝１，．．．，ｚｔ）とに基づき、ｉ＝１，．．．，Ｌの各整数ｉについて、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には、数１７に示す検証要素ｃｉを生成し、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には、数１８に示す検証要素ｃｉを生成する
ことを特徴とする請求項７に記載の署名処理システム。
【数１４】
0005606344.tif 000125
【数１５】
0005606344.tif 000126
【数１６】
0005606344.tif 000127
【数１７】
0005606344.tif 000128
【数１８】
0005606344.tif 000129
【請求項９】
前記署名装置では、
前記署名要素生成部は、前記メッセージｍと、前記行列Ｍと、ｉ＝１，．．．，Ｌの各整数ｉについての前記変数ρ（ｉ）とを入力としたハッシュ値を前記値ｍ’として用いて、署名要素ｓ＊ｉを生成し、
前記検証装置では、
前記検証要素生成部は、前記ハッシュ値を前記値ｍ’として用いて、検証要素ｃｉを生成する
ことを特徴とする請求項７又は８に記載の署名処理システム。
【請求項１０】
ｔ＝１，．．．，ｄの少なくとも１つ以上の整数ｔについての基底Ｂｔと基底Ｂ＊ｔとを用いて署名処理を実行する署名処理システムにおいて、署名鍵ｕｓｋを生成する鍵生成装置であり、
ｔ＝１，．．．，ｄのうち所定の整数ｔについて、属性情報ｘ→ｔ：＝（ｘｔ，ｉ）（ｉ＝１，．．．，ｎｔ）を入力する第１情報入力部と、
前記整数ｔと、ｊ＝１，２の各整数ｊについて、前記第１情報入力部が入力した属性情報ｘ→ｔと、所定の値δｊと、基底Ｂ＊ｔの基底ベクトルｂ＊ｔ，ｉ（ｉ＝１，．．．，２ｎｔ）とに基づき、数１９に示すベクトルを含む鍵要素ｋ＊ｔ，ｊを生成する鍵要素生成部と、
前記鍵要素生成部が生成した鍵要素ｋ＊ｔ，ｊと、前記属性情報ｘ→ｔとを含む署名鍵ｕｓｋを署名装置へ送信する署名鍵送信部と
を備えることを特徴とする鍵生成装置。
【数１９】
0005606344.tif 000130
【請求項１１】
ｔ＝１，．．．，ｄの少なくとも１つ以上の整数ｔについての基底Ｂｔと基底Ｂ＊ｔとを用いて署名処理を実行する署名処理システムにおいて、署名データσを生成する署名装置であり、
ｔ＝１，．．．，ｄのうち少なくとも一部の整数ｔと、ｊ＝１，２の各整数ｊとについて、属性情報ｘ→ｔ：＝（ｘｔ，ｉ）（ｉ＝１，．．．，ｎｔ）と、所定の値δｊと、基底Ｂ＊ｔの基底ベクトルｂ＊ｔ，ｉ（ｉ＝１，．．．，２ｎｔ）とに基づき、数２０に示すベクトルを含むように生成された鍵要素ｋ＊ｔ，ｊと、前記属性情報ｘ→ｔとを含む署名鍵ｕｓｋを取得する署名鍵取得部と、
ｉ＝１，．．．，Ｌ（Ｌは１以上の整数）の各整数ｉについての変数ρ（ｉ）であって、識別情報ｔ（ｔ＝１，．．．，ｄのいずれかの整数）と、属性情報ｖ→ｉ：＝（ｖｉ，ｉ’）（ｉ’＝１，．．．，ｎｔ）との肯定形の組（ｔ，ｖ→ｉ）又は否定形の組¬（ｔ，ｖ→ｉ）のいずれかである変数ρ（ｉ）と、Ｌ行ｒ列（ｒは１以上の整数）の所定の行列Ｍと、メッセージｍとを入力する第２情報入力部と、
前記第２情報入力部が入力した変数ρ（ｉ）と、前記署名鍵取得部が取得した署名鍵ｕｓｋに含まれる属性情報ｘ→ｔとに基づき、ｉ＝１，．．．，Ｌの各整数ｉのうち、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）であり、かつ、その組の識別情報ｔが示すｘ→ｔを含む署名鍵ｕｓｋを前記署名鍵取得部が取得しており、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性情報ｘ→ｔとの内積が０となるｉと、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）であり、かつ、その組の識別情報ｔが示すｘ→ｔを含む署名鍵ｕｓｋを前記署名鍵取得部が取得しており、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性情報ｘ→ｔとの内積が０とならないが等しくないｉとの集合Ｉを特定するとともに、特定した集合Ｉに含まれるｉについて、前記第２情報入力部が入力した行列Ｍのｉ行目の要素であるＭｉに基づき、αｉＭｉを合計した場合に所定のベクトルｈ→となる補完係数αｉを計算する補完係数計算部と、
前記署名鍵ｕｓｋに含まれる鍵要素ｋ＊ｔ，１及び鍵要素ｋ＊ｔ，２と、所定の値ξ１，Ε，μと、前記メッセージｍから計算される値ｍ’とに基づき、ｉ＝１，．．．，Ｌの各整数ｉについて、前記補完係数計算部が特定した集合Ｉに含まれる整数ｉであり、かつ、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉとし、前記集合Ｉに含まれるｉであり、かつ、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉ／（ｖ→ｉ・ｘ→ｔ）とし、前記集合Ｉに含まれない整数ｉの場合には値γｉ：＝０として、基底Ｂ＊ｔの基底ベクトルｂ＊ｔ，ｉ（ｉ＝２ｎｔ＋１，２ｎｔ＋２）を用いて、数２１に示すベクトルを含む署名要素ｓ＊ｉを生成する署名要素生成部と、
前記署名要素生成部が生成したｉ＝１，．．．，Ｌの各整数ｉについての署名要素ｓ＊ｉと、前記メッセージｍと、前記変数ρ（ｉ）と、前記行列Ｍとを含む署名データσを検証装置へ送信する署名データ送信部と
を備えることを特徴とする署名装置。
【数２０】
0005606344.tif 000131
【数２１】
0005606344.tif 000132
【請求項１２】
ｔ＝１，．．．，ｄの少なくとも１つ以上の整数ｔについての基底Ｂｔと基底Ｂ＊ｔとを用いて署名処理を実行する署名処理システムにおいて、署名データσを検証する検証装置であり、
ｉ＝１，．．．，Ｌの各整数ｉについての署名要素ｓ＊ｉと、メッセージｍと、ｉ＝１，．．．，Ｌ（Ｌは１以上の整数）の各整数ｉについての変数ρ（ｉ）であって、識別情報ｔ（ｔ＝１，．．．，ｄのいずれかの整数）と、属性情報ｖ→ｉ：＝（ｖｉ，ｉ’）（ｉ’＝１，．．．，ｎｔ）との肯定形の組（ｔ，ｖ→ｉ）又は否定形の組¬（ｔ，ｖ→ｉ）のいずれかである変数ρ（ｉ）と、Ｌ行ｒ列（ｒは１以上の整数）の所定の行列Ｍとを含む署名データσを取得するデータ取得部と、
ｒ個の要素を有するベクトルｆ→と、前記データ取得部が取得した署名データσに含まれる行列Ｍとに基づき列ベクトルｓ→Ｔ：＝（ｓ１，．．．，ｓＬ）Ｔ：＝Ｍ・ｆ→Ｔを生成するとともに、ｓ０：＝ｈ→・ｆ→Ｔとして、ｓ０＝ｈ→・（ｆ→’）Ｔであるｒ個の要素を有するベクトルｆ→’と、前記行列Ｍとに基づき列ベクトル（ｓ→’）Ｔ：＝（ｓ１’，．．．，ｓＬ’）Ｔ：＝Ｍ・（ｆ→’）Ｔを生成するベクトル生成部と、
前記ベクトル生成部が生成した列ベクトルｓ→Ｔ及び列ベクトル（ｓ→’）Ｔと、ｉ＝１，．．．，Ｌの各整数ｉについての所定の値θｉ，θｉ’，θｉ’’，σｉとに基づき、ｉ＝１，．．．，Ｌの各整数ｉについて、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底Ｂｔの基底ベクトルｂｔ，ｉ’（ｉ’＝１，．．．，２ｎｔ＋２）を用いて、数２２に示すベクトルを含む検証要素ｃｉを生成し、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底ベクトルｂｔ，ｉ（ｉ＝１，．．．，２ｎｔ＋２）を用いて、数２３に示すベクトルを含む検証要素ｃｉを生成する検証要素生成部と、
前記検証要素生成部が生成した検証要素ｃｉと、前記署名データσに含まれる署名要素ｓ＊ｉとについて、ペアリング演算Πｉ＝１Ｌｅ（ｃｉ，ｓ＊ｉ）を行い、前記署名データσの正当性を検証するペアリング演算部と
を備えることを特徴とする検証装置。
【数２２】
0005606344.tif 000133
【数２３】
0005606344.tif 000134
【請求項１３】
ｔ＝０，．．．，ｄ＋１（ｄは１以上の整数）の各整数ｔについての基底Ｂｔと基底Ｂ＊ｔとを用いて署名処理を実行する署名処理方法であり、
鍵生成装置が、ｔ＝１，．．．，ｄの少なくとも１つ以上の整数ｔについて、識別情報ｔと、属性情報ｘ→ｔ：＝（ｘｔ，ｉ）（ｉ＝１，．．．，ｎｔ，ｎｔは１以上の整数）とを含む属性集合Γを入力する第１情報入力工程と、
前記鍵生成装置が、基底Ｂ＊０の基底ベクトルｂ＊０，１の係数として所定の値δを設定した鍵要素ｋ＊０を生成する鍵要素０生成工程と、
前記鍵生成装置が、前記第１情報入力工程で入力された属性集合Γに含まれる各識別情報ｔについて、基底Ｂ＊ｔの基底ベクトルｂ＊ｔ，ｉ（ｉ＝１，．．．，ｎｔ）の係数として属性情報ｘ→ｔに前記所定の値δを乗じたδｘｔ，ｉ（ｉ＝１，．．．，ｎｔ）を設定した鍵要素ｋ＊ｔを生成する鍵要素ｔ生成工程と、
前記鍵生成装置が、基底Ｂ＊ｄ＋１の基底ベクトルｂ＊ｄ＋１，１の係数として前記所定の値δを設定した鍵要素ｋ＊ｄ＋１，１と、基底Ｂ＊ｄ＋１の基底ベクトルｂ＊ｄ＋１，２の係数として前記所定の値δを設定した鍵要素ｋ＊ｄ＋１，２とを生成する鍵要素ｄ＋１生成工程と、
前記鍵生成装置が、前記鍵要素０生成工程で生成された鍵要素ｋ＊０と、前記鍵要素ｔ生成工程で生成された前記属性集合Γに含まれる各識別情報ｔについての鍵要素ｋ＊ｔと、前記鍵要素ｄ＋１生成工程で生成された鍵要素ｋ＊ｄ＋１，１及び鍵要素ｋ＊ｄ＋１，２と、前記属性集合Γとを含む署名鍵ｓｋΓを署名装置へ送信する署名鍵送信工程と、
前記署名装置が、ｉ＝１，．．．，Ｌ（Ｌは１以上の整数）の各整数ｉについての変数ρ（ｉ）であって、識別情報ｔ（ｔ＝１，．．．，ｄのいずれかの整数）と、属性情報ｖ→ｉ：＝（ｖｉ，ｉ’）（ｉ’＝１，．．．，ｎｔ）との肯定形の組（ｔ，ｖ→ｉ）又は否定形の組¬（ｔ，ｖ→ｉ）のいずれかである変数ρ（ｉ）と、Ｌ行ｒ列（ｒは１以上の整数）の所定の行列Ｍと、メッセージｍとを入力する第２情報入力工程と、
前記署名装置が、前記署名鍵送信工程で送信された署名鍵ｓｋΓを取得する署名鍵取得工程と、
前記署名装置が、前記第２情報入力工程で入力された変数ρ（ｉ）と、前記署名鍵取得工程で取得された署名鍵ｓｋΓに含まれる属性集合Γとに基づき、ｉ＝１，．．．，Ｌの各整数ｉのうち、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）であり、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性集合Γに含まれるｘ→ｔとの内積が０となるｉと、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）であり、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性集合Γに含まれるｘ→ｔとの内積が０とならないｉとの集合Ｉを特定するとともに、特定された集合Ｉに含まれるｉについて、前記第２情報入力工程で入力された行列Ｍのｉ行目の要素であるＭｉに基づき、αｉＭｉを合計した場合に所定のベクトルｈ→となる補完係数αｉを計算する補完係数計算工程と、
前記署名装置が、前記署名鍵ｓｋΓに含まれる鍵要素ｋ＊０を含む署名要素ｓ＊０を生成する署名要素０生成工程と、
前記署名装置が、ｉ＝１，．．．，Ｌの各整数ｉについて、前記補完係数計算工程で特定された集合Ｉに含まれる整数ｉであり、かつ、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉとし、前記集合Ｉに含まれるｉであり、かつ、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉ／（ｖ→ｉ・ｘ→ｔ）とし、前記集合Ｉに含まれない整数ｉの場合には値γｉ：＝０として、前記署名鍵ｓｋΓに含まれる鍵要素ｋ＊ｔに前記値γｉを乗じたγｉｋ＊ｔを含む署名要素ｓ＊ｉを生成する署名要素ｉ生成工程と、
前記署名装置が、前記署名鍵ｓｋΓに含まれる鍵要素ｋ＊ｄ＋１，１と、前記メッセージｍを用いて生成される値ｍ’を前記鍵要素ｋ＊ｄ＋１，２に乗じたｍ’・ｋ＊ｄ＋１，２との和を含む署名要素ｓ＊Ｌ＋１を生成する署名要素Ｌ＋１生成工程と、
前記署名装置が、前記署名要素０生成工程で生成された署名要素ｓ＊０と、前記署名要素ｉ生成工程で生成されたｉ＝１，．．．，Ｌの各整数ｉについての署名要素ｓ＊ｉと、前記署名要素Ｌ＋１生成工程で生成された署名要素ｓ＊Ｌ＋１と、前記メッセージｍと、前記変数ρ（ｉ）と、前記行列Ｍとを含む署名データσを検証装置へ送信する署名データ送信工程と、
前記検証装置が、前記署名データ送信工程で送信された署名データσを取得するデータ
取得工程と、
前記検証装置が、ｒ個の要素を有するベクトルｆ→と前記ベクトルｈ→とを用いて生成される値ｓ０：＝ｈ→・ｆ→Ｔと、所定の値ｓＬ＋１とから計算される−ｓ０−ｓＬ＋１を、基底Ｂ０の基底ベクトルｂ０，１の係数として設定して検証要素ｃ０を生成する検証要素０生成工程と、
前記検証装置が、前記ベクトルｆ→と前記データ取得工程で取得された署名データσに含まれる行列Ｍとに基づき生成される列ベクトルｓ→Ｔ：＝（ｓ１，．．．，ｓＬ）Ｔ：＝Ｍ・ｆ→Ｔと、ｉ＝１，．．．，Ｌの各整数ｉについての所定の値θｉとを用いて、ｉ＝１，．．．，Ｌの各整数ｉについて、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底Ｂｔの基底ベクトルｂｔ，１の係数としてｓｉ＋θｉｖｉ，１を設定し、基底ベクトルｂｔ，ｉ’（ｉ’＝２，．．．，ｎｔ）の係数としてθｉｖｉ，ｉ’（ｉ’＝２，．．．，ｎｔ）を設定して検証要素ｃｉを生成し、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底ベクトルｂｔ，ｉ’（ｉ’＝１，．．．，ｎｔ）の係数としてｓｉｖｉ，ｉ’（ｉ’＝１，．．．，ｎｔ）を設定して検証要素ｃｉを生成する検証要素ｉ生成工程と、
前記検証装置が、基底Ｂｄ＋１の基底ベクトルｂｄ＋１，１の係数として、前記所定の値ｓＬ＋１と前記値ｍ’と所定の値θＬ＋１とから計算されるｓＬ＋１−θＬ＋１ｍ’を設定し、基底ベクトルｂｄ＋１，２の係数として前記所定の値θＬ＋１を設定して検証要素ｃＬ＋１を生成する検証要素Ｌ＋１生成工程と、
前記検証装置が、前記検証要素０生成工程で生成された検証要素ｃ０と、前記検証要素ｉ生成工程で生成された検証要素ｃｉと、前記検証要素Ｌ＋１生成工程で生成された検証要素ｃＬ＋１と、前記署名データσに含まれる署名要素ｓ＊０，ｓ＊ｉ，ｓ＊Ｌ＋１とについて、ペアリング演算Πｉ＝０Ｌ＋１ｅ（ｃｉ，ｓ＊ｉ）を行い、前記署名データσの正当性を検証するペアリング演算工程と
を備えることを特徴とする署名処理方法。
【請求項１４】
鍵生成装置で動作される鍵生成プログラムと署名装置で動作させる署名プログラムと検証装置で動作させる検証プログラムとを備え、ｔ＝０，．．．，ｄ＋１（ｄは１以上の整数）の各整数ｔについての基底Ｂｔと基底Ｂ＊ｔとを用いて署名処理を実行する署名処理プログラムであり、
前記鍵生成プログラムは、
ｔ＝１，．．．，ｄの少なくとも１つ以上の整数ｔについて、識別情報ｔと、属性情報ｘ→ｔ：＝（ｘｔ，ｉ）（ｉ＝１，．．．，ｎｔ，ｎｔは１以上の整数）とを含む属性集合Γを入力する第１情報入力処理と、
基底Ｂ＊０の基底ベクトルｂ＊０，１の係数として所定の値δを設定した鍵要素ｋ＊０を生成する鍵要素０生成処理と、
前記第１情報入力処理で入力された属性集合Γに含まれる各識別情報ｔについて、基底Ｂ＊ｔの基底ベクトルｂ＊ｔ，ｉ（ｉ＝１，．．．，ｎｔ）の係数として属性情報ｘ→ｔに前記所定の値δを乗じたδｘｔ，ｉ（ｉ＝１，．．．，ｎｔ）を設定した鍵要素ｋ＊ｔを生成する鍵要素ｔ生成処理と、
基底Ｂ＊ｄ＋１の基底ベクトルｂ＊ｄ＋１，１の係数として前記所定の値δを設定した鍵要素ｋ＊ｄ＋１，１と、基底Ｂ＊ｄ＋１の基底ベクトルｂ＊ｄ＋１，２の係数として前記所定の値δを設定した鍵要素ｋ＊ｄ＋１，２とを生成する鍵要素ｄ＋１生成処理と、
前記鍵要素０生成処理で生成された鍵要素ｋ＊０と、前記鍵要素ｔ生成処理で生成された前記属性集合Γに含まれる各識別情報ｔについての鍵要素ｋ＊ｔと、前記鍵要素ｄ＋１生成処理で生成された鍵要素ｋ＊ｄ＋１，１及び鍵要素ｋ＊ｄ＋１，２と、前記属性集合Γとを含む署名鍵ｓｋΓを前記署名装置へ送信する署名鍵送信処理と
をコンピュータに実行させ、
前記署名プログラムは、
ｉ＝１，．．．，Ｌ（Ｌは１以上の整数）の各整数ｉについての変数ρ（ｉ）であって、識別情報ｔ（ｔ＝１，．．．，ｄのいずれかの整数）と、属性情報ｖ→ｉ：＝（ｖｉ，
ｉ’）（ｉ’＝１，．．．，ｎｔ）との肯定形の組（ｔ，ｖ→ｉ）又は否定形の組¬（ｔ，ｖ→ｉ）のいずれかである変数ρ（ｉ）と、Ｌ行ｒ列（ｒは１以上の整数）の所定の行列Ｍと、メッセージｍとを入力する第２情報入力処理と、
前記署名鍵送信処理で送信された署名鍵ｓｋΓを取得する署名鍵取得処理と、
前記第２情報入力処理で入力された変数ρ（ｉ）と、前記署名鍵取得処理で取得された署名鍵ｓｋΓに含まれる属性集合Γとに基づき、ｉ＝１，．．．，Ｌの各整数ｉのうち、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）であり、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性集合Γに含まれるｘ→ｔとの内積が０となるｉと、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）であり、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性集合Γに含まれるｘ→ｔとの内積が０とならないｉとの集合Ｉを特定するとともに、特定された集合Ｉに含まれるｉについて、前記第２情報入力処理で入力された行列Ｍのｉ行目の要素であるＭｉに基づき、αｉＭｉを合計した場合に所定のベクトルｈ→となる補完係数αｉを計算する補完係数計算処理と、
前記署名鍵ｓｋΓに含まれる鍵要素ｋ＊０を含む署名要素ｓ＊０を生成する署名要素０生成処理と、
ｉ＝１，．．．，Ｌの各整数ｉについて、前記補完係数計算処理で特定された集合Ｉに含まれる整数ｉであり、かつ、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉとし、前記集合Ｉに含まれるｉであり、かつ、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉ／（ｖ→ｉ・ｘ→ｔ）とし、前記集合Ｉに含まれない整数ｉの場合には値γｉ：＝０として、前記署名鍵ｓｋΓに含まれる鍵要素ｋ＊ｔに前記値γｉを乗じたγｉｋ＊ｔを含む署名要素ｓ＊ｉを生成する署名要素ｉ生成処理と、
前記署名鍵ｓｋΓに含まれる鍵要素ｋ＊ｄ＋１，１と、前記メッセージｍを用いて生成される値ｍ’を前記鍵要素ｋ＊ｄ＋１，２に乗じたｍ’・ｋ＊ｄ＋１，２との和を含む署名要素ｓ＊Ｌ＋１を生成する署名要素Ｌ＋１生成処理と、
前記署名要素０生成処理で生成された署名要素ｓ＊０と、前記署名要素ｉ生成処理で生成されたｉ＝１，．．．，Ｌの各整数ｉについての署名要素ｓ＊ｉと、前記署名要素Ｌ＋１生成処理で生成された署名要素ｓ＊Ｌ＋１と、前記メッセージｍと、前記変数ρ（ｉ）と、前記行列Ｍとを含む署名データσを前記検証装置へ送信する署名データ送信処理と
をコンピュータに実行させ、
前記検証プログラムは、
前記署名データ送信処理で送信された署名データσを取得するデータ取得処理と、
ｒ個の要素を有するベクトルｆ→と前記ベクトルｈ→とを用いて生成される値ｓ０：＝ｈ→・ｆ→Ｔと、所定の値ｓＬ＋１とから計算される−ｓ０−ｓＬ＋１を、基底Ｂ０の基底ベクトルｂ０，１の係数として設定して検証要素ｃ０を生成する検証要素０生成処理と、
前記ベクトルｆ→と前記データ取得処理で取得された署名データσに含まれる行列Ｍとに基づき生成される列ベクトルｓ→Ｔ：＝（ｓ１，．．．，ｓＬ）Ｔ：＝Ｍ・ｆ→Ｔと、ｉ＝１，．．．，Ｌの各整数ｉについての所定の値θｉとを用いて、ｉ＝１，．．．，Ｌの各整数ｉについて、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底Ｂｔの基底ベクトルｂｔ，１の係数としてｓｉ＋θｉｖｉ，１を設定し、基底ベクトルｂｔ，ｉ’（ｉ’＝２，．．．，ｎｔ）の係数としてθｉｖｉ，ｉ’（ｉ’＝２，．．．，ｎｔ）を設定して検証要素ｃｉを生成し、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底ベクトルｂｔ，ｉ’（ｉ’＝１，．．．，ｎｔ）の係数としてｓｉｖｉ，ｉ’（ｉ’＝１，．．．，ｎｔ）を設定して検証要素ｃｉを生成する検証要素ｉ生成処理と、
基底Ｂｄ＋１の基底ベクトルｂｄ＋１，１の係数として、前記所定の値ｓＬ＋１と前記値ｍ’と所定の値θＬ＋１とから計算されるｓＬ＋１−θＬ＋１ｍ’を設定し、基底ベクトルｂｄ＋１，２の係数として前記所定の値θＬ＋１を設定して検証要素ｃＬ＋１を生成する検証要素Ｌ＋１生成処理と、
前記検証要素０生成処理で生成された検証要素ｃ０と、前記検証要素ｉ生成処理で生成された検証要素ｃｉと、前記検証要素Ｌ＋１生成処理で生成された検証要素ｃＬ＋１と、前記署名データσに含まれる署名要素ｓ＊０，ｓ＊ｉ，ｓ＊Ｌ＋１とについて、ペアリング演算Πｉ＝０Ｌ＋１ｅ（ｃｉ，ｓ＊ｉ）を行い、前記署名データσの正当性を検証するペアリング演算処理と
をコンピュータに実行させることを特徴とする署名処理プログラム。
【請求項１５】
ｔ＝１，．．．，ｄ（ｄは１以上の整数）の少なくとも１つ以上の整数ｔについての基底Ｂｔと基底Ｂ＊ｔとを用いて署名処理を実行する署名処理方法であり、
ｄ個の鍵生成装置の少なくとも１個以上の鍵生成装置が、ｔ＝１，．．．，ｄのうち鍵生成装置毎に予め定められた整数ｔについての属性情報ｘ→ｔ：＝（ｘｔ，ｉ）（ｉ＝１，．．．，ｎｔ）を入力する第１情報入力工程と、
前記少なくとも１個以上の鍵生成装置が、前記整数ｔと、ｊ＝１，２の各整数ｊについて、前記第１情報入力工程で入力された属性情報ｘ→ｔと、所定の値δｊと、基底Ｂ＊ｔの基底ベクトルｂ＊ｔ，ｉ（ｉ＝１，．．．，２ｎｔ）とに基づき、数２４に示すベクトルを含む鍵要素ｋ＊ｔ，ｊを生成する鍵要素生成工程と、
前記少なくとも１個以上の鍵生成装置が、前記鍵要素生成工程で生成された鍵要素ｋ＊ｔ，ｊと、前記属性情報ｘ→ｔとを含む署名鍵ｕｓｋを署名装置へ送信する署名鍵送信工程と、
前記署名装置が、ｉ＝１，．．．，Ｌ（Ｌは１以上の整数）の各整数ｉについての変数ρ（ｉ）であって、識別情報ｔ（ｔ＝１，．．．，ｄのいずれかの整数）と、属性情報ｖ→ｉ：＝（ｖｉ，ｉ’）（ｉ’＝１，．．．，ｎｔ）との肯定形の組（ｔ，ｖ→ｉ）又は否定形の組¬（ｔ，ｖ→ｉ）のいずれかである変数ρ（ｉ）と、Ｌ行ｒ列（ｒは１以上の整数）の所定の行列Ｍと、メッセージｍとを入力する第２情報入力工程と、
前記署名装置が、前記ｄ個の鍵生成装置のうち、少なくとも１つ以上の鍵生成装置の署名鍵送信工程で送信された署名鍵ｕｓｋを取得する署名鍵取得工程と、
前記署名装置が、前記第２情報入力工程で入力された変数ρ（ｉ）と、前記署名鍵取得工程で取得された署名鍵ｕｓｋに含まれる属性情報ｘ→ｔとに基づき、ｉ＝１，．．．，Ｌの各整数ｉのうち、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）であり、かつ、その組の識別情報ｔが示すｘ→ｔを含む署名鍵ｕｓｋを前記署名鍵取得工程で取得しており、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性情報ｘ→ｔとの内積が０となるｉと、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）であり、かつ、その組の識別情報ｔが示すｘ→ｔを含む署名鍵ｕｓｋを前記署名鍵取得工程で取得しており、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性情報ｘ→ｔとの内積が０とならないｉとの集合Ｉを特定するとともに、特定された集合Ｉに含まれるｉについて、前記第２情報入力工程で入力された行列Ｍのｉ行目の要素であるＭｉに基づき、αｉＭｉを合計した場合に所定のベクトルｈ→となる補完係数αｉを計算する補完係数計算工程と、
前記署名装置が、前記署名鍵ｕｓｋに含まれる鍵要素ｋ＊ｔ，１及び鍵要素ｋ＊ｔ，２と、所定の値ξ１，Ε，μと、前記メッセージｍから計算される値ｍ’とに基づき、ｉ＝１，．．．，Ｌの各整数ｉについて、前記補完係数計算工程で特定された集合Ｉに含まれる整数ｉであり、かつ、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉとし、前記集合Ｉに含まれるｉであり、かつ、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉ／（ｖ→ｉ・ｘ→ｔ）とし、前記集合Ｉに含まれない整数ｉの場合には値γｉ：＝０として、基底Ｂ＊ｔの基底ベクトルｂ＊ｔ，ｉ（ｉ＝２ｎｔ＋１，２ｎｔ＋２）を用いて、数２５に示すベクトルを含む署名要素ｓ＊ｉを生成する署名要素生成工程と、
前記署名装置が、前記署名要素生成工程で生成されたｉ＝１，．．．，Ｌの各整数ｉについての署名要素ｓ＊ｉと、前記メッセージｍと、前記変数ρ（ｉ）と、前記行列Ｍとを含む署名データσを検証装置へ送信する署名データ送信工程と、
前記検証装置が、前記署名データ送信工程で送信された署名データσを取得するデータ取得工程と、
前記検証装置が、ｒ個の要素を有するベクトルｆ→と、前記データ取得工程で取得された署名データσに含まれる行列Ｍとに基づき列ベクトルｓ→Ｔ：＝（ｓ１，．．．，ｓＬ）Ｔ：＝Ｍ・ｆ→Ｔを生成するとともに、ｓ０：＝ｈ→・ｆ→Ｔとして、ｓ０＝ｈ→・（ｆ→’）Ｔであるｒ個の要素を有するベクトルｆ→’と、前記行列Ｍとに基づき列ベクトル（ｓ→’）Ｔ：＝（ｓ１’，．．．，ｓＬ’）Ｔ：＝Ｍ・（ｆ→’）Ｔを生成するベクトル生成工程と、
前記検証装置が、前記ベクトル生成工程で生成された列ベクトルｓ→Ｔ及び列ベクトル（ｓ→’）Ｔと、ｉ＝１，．．．，Ｌの各整数ｉについての所定の値θｉ，θｉ’，θｉ’’，σｉとに基づき、ｉ＝１，．．．，Ｌの各整数ｉについて、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底Ｂｔの基底ベクトルｂｔ，ｉ’（ｉ’＝１，．．．，２ｎｔ＋２）を用いて、数２６に示すベクトルを含む検証要素ｃｉを生成し、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底ベクトルｂｔ，１から基底ベクトルｂｔ，ｉ（ｉ’＝１，．．．，２ｎｔ＋２）を用いて、数２７に示すベクトルを含む検証要素ｃｉを生成する検証要素生成工程と、
前記検証装置が、前記検証要素生成工程で生成された検証要素ｃｉと、前記署名データσに含まれる署名要素ｓ＊ｉとについて、ペアリング演算Πｉ＝１Ｌｅ（ｃｉ，ｓ＊ｉ）を行い、前記署名データσの正当性を検証するペアリング演算工程と
を備えることを特徴とする署名処理方法。
【数２４】
0005606344.tif 000135
【数２５】
0005606344.tif 000136
【数２６】
0005606344.tif 000137
【数２７】
0005606344.tif 000138
【請求項１６】
ｄ個（ｄは１以上の整数）の鍵生成装置で動作させる鍵生成プログラムと、署名装置で動作させる署名プログラムと、検証装置で動作させる検証プログラムとを備え、ｔ＝１，．．．，ｄの少なくとも１つ以上の整数ｔについての基底Ｂｔと基底Ｂ＊ｔとを用いて署名処理を実行する署名処理プログラムであり、
前記鍵生成プログラムは、
ｔ＝１，．．．，ｄのうち鍵生成装置毎に予め定められた整数ｔについての属性情報ｘ→ｔ：＝（ｘｔ，ｉ）（ｉ＝１，．．．，ｎｔ）を入力する第１情報入力処理と、
前記整数ｔと、ｊ＝１，２の各整数ｊについて、前記第１情報入力処理で入力された属性情報ｘ→ｔと、所定の値δｊと、基底Ｂ＊ｔの基底ベクトルｂ＊ｔ，ｉ（ｉ＝１，．．．，２ｎｔ）とに基づき、数２８に示すベクトルを含む鍵要素ｋ＊ｔ，ｊを生成する鍵要素生成処理と、
前記鍵要素生成処理で生成された鍵要素ｋ＊ｔ，ｊと、前記属性情報ｘ→ｔとを含む署名鍵ｕｓｋを前記署名装置へ送信する署名鍵送信処理と
をコンピュータに実行させ、
前記署名プログラムは、
ｉ＝１，．．．，Ｌ（Ｌは１以上の整数）の各整数ｉについての変数ρ（ｉ）であって、識別情報ｔ（ｔ＝１，．．．，ｄのいずれかの整数）と、属性情報ｖ→ｉ：＝（ｖｉ，ｉ’）（ｉ’＝１，．．．，ｎｔ）との肯定形の組（ｔ，ｖ→ｉ）又は否定形の組¬（ｔ，ｖ→ｉ）のいずれかである変数ρ（ｉ）と、Ｌ行ｒ列（ｒは１以上の整数）の所定の行列Ｍと、メッセージｍとを入力する第２情報入力処理と、
前記ｄ個の鍵生成装置のうち、少なくとも１つ以上の鍵生成装置の署名鍵送信処理で送信された署名鍵ｕｓｋを取得する署名鍵取得処理と、
前記第２情報入力処理で入力された変数ρ（ｉ）と、前記署名鍵取得処理で取得された署名鍵ｕｓｋに含まれる属性情報ｘ→ｔとに基づき、ｉ＝１，．．．，Ｌの各整数ｉのうち、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）であり、かつ、その組の識別情報ｔが示すｘ→ｔを含む署名鍵ｕｓｋを前記署名鍵取得処理で取得しており、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性情報ｘ→ｔとの内積が０となるｉと、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）であり、かつ、その組の識別情報ｔが示すｘ→ｔを含む署名鍵ｕｓｋを前記署名鍵取得処理で取得しており、かつ、その組のｖ→ｉと、その組の識別情報ｔが示す属性情報ｘ→ｔとの内積が０とならないｉとの集合Ｉを特定するとともに、特定された集合Ｉに含まれるｉについて、前記第２情報入力処理で入力された行列Ｍのｉ行目の要素であるＭｉに基づき、αｉＭｉを合計した場合に所定のベクトルｈ→となる補完係数αｉを計算する補完係数計算処理と、
前記署名鍵ｕｓｋに含まれる鍵要素ｋ＊ｔ，１及び鍵要素ｋ＊ｔ，２と、所定の値ξ１，Ε，μと、前記メッセージｍから計算される値ｍ’とに基づき、ｉ＝１，．．．，Ｌの各整数ｉについて、前記補完係数計算処理で特定された集合Ｉに含まれる整数ｉであり、かつ、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉとし、前記集合Ｉに含まれるｉであり、かつ、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には値γｉ：＝αｉ／（ｖ→ｉ・ｘ→ｔ）とし、前記集合Ｉに含まれない整数ｉの場合には値γｉ：＝０として、基底Ｂ＊ｔの基底ベクトルｂ＊ｔ，ｉ（ｉ＝２ｎｔ＋１，２ｎｔ＋２）を用いて、数２９に示すベクトルを含む署名要素ｓ＊ｉを生成する署名要素生成処理と、
前記署名要素生成処理で生成されたｉ＝１，．．．，Ｌの各整数ｉについての署名要素ｓ＊ｉと、前記メッセージｍと、前記変数ρ（ｉ）と、前記行列Ｍとを含む署名データσを前記検証装置へ送信する署名データ送信処理と
をコンピュータに実行させ、
前記検証プログラムは、
前記署名データ送信処理で送信された署名データσを取得するデータ取得処理と、
ｒ個の要素を有するベクトルｆ→と、前記データ取得処理で取得された署名データσに含まれる行列Ｍとに基づき列ベクトルｓ→Ｔ：＝（ｓ１，．．．，ｓＬ）Ｔ：＝Ｍ・ｆ→Ｔを生成するとともに、ｓ０：＝ｈ→・ｆ→Ｔとして、ｓ０＝ｈ→・（ｆ→’）Ｔであるｒ個の要素を有するベクトルｆ→’と、前記行列Ｍとに基づき列ベクトル（ｓ→’）Ｔ：＝（ｓ１’，．．．，ｓＬ’）Ｔ：＝Ｍ・（ｆ→’）Ｔを生成するベクトル生成処理と、
前記ベクトル生成処理で生成された列ベクトルｓ→Ｔ及び列ベクトル（ｓ→’）Ｔと、ｉ＝１，．．．，Ｌの各整数ｉについての所定の値θｉ，θｉ’，θｉ’’，σｉとに基づき、ｉ＝１，．．．，Ｌの各整数ｉについて、変数ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底Ｂｔの基底ベクトルｂｔ，ｉ’（ｉ’＝１，．．．，２ｎｔ＋２）を用いて、数３０に示すベクトルを含む検証要素ｃｉを生成し、変数ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には、その組の識別情報ｔが示す基底ベクトルｂｔ，ｉ（ｉ＝１，．．．，２ｎｔ＋２）を用いて、数３１に示すベクトルを含む検証要素ｃｉを生成する検証要素生成処理と、
前記検証要素生成処理で生成された検証要素ｃｉと、前記署名データσに含まれる署名要素ｓ＊ｉとについて、ペアリング演算Πｉ＝１Ｌｅ（ｃｉ，ｓ＊ｉ）を行い、前記署名データσの正当性を検証するペアリング演算処理と
をコンピュータに実行させることを特徴とする署名処理プログラム。
【数２８】
0005606344.tif 000139
【数２９】
0005606344.tif 000140
【数３０】
0005606344.tif 000141
【数３１】
0005606344.tif 000142
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、属性ベース署名（Ａｔｔｒｉｂｕｔｅ−Ｂａｓｅｄ  Ｓｉｇｎａｔｕｒｅｓ，ＡＢＳ）方式に関するものである。
【背景技術】
【０００２】
非特許文献２６，２９，３０，３４−３７，４５，５１には、属性ベース署名方式に関する記載がある。特に、非特許文献３６，３７には、モノトーン述語をサポートした属性ベース署名方式についての記載がある。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｂｅｉｍｅｌ，  Ａ．，  Ｓｅｃｕｒｅ  ｓｃｈｅｍｅｓ  ｆｏｒ  ｓｅｃｒｅｔ  ｓｈａｒｉｎｇ  ａｎｄ  ｋｅｙ  ｄｉｓｔｒｉｂｕｔｉｏｎ．  ＰｈＤ  Ｔｈｅｓｉｓ，  Ｉｓｒａｅｌ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｔｅｃｈ−ｎｏｌｏｇｙ，  Ｔｅｃｈｎｉｏｎ，  Ｈａｉｆａ，  Ｉｓｒａｅｌ，  １９９６．
【非特許文献２】Ｂｅｌｅｎｋｉｙ，  Ｍ．，  Ｃａｍｅｎｉｓｃｈ，  Ｊ．，  Ｃｈａｓｅ，  Ｍ．，  Ｋｏｈｌｗｅｉｓｓ，  Ｍ．，  Ｌｙｓｙａｎｓｋａｙａ，  Ａ．  ａｎｄ  Ｓｈａｃｈａｍ，  Ｈ．：  Ｒａｎｄｏｍｉｚａｂｌｅ  ｐｒｏｏｆｓ  ａｎｄ  ｄｅｌｅｇａｔａｂｌｅ  ａｎｏｎｙｍｏｕｓ  ｃｒｅｄｅｎｔｉａｌｓ．  ＣＲＹＰＴＯ  ２００９．  ＬＮＣＳ，  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００９）
【非特許文献３】Ｂｅｌｅｎｋｉｙ，  Ｍ．，  Ｃｈａｓｅ，  Ｍ．，  Ｋｏｈｌｗｅｉｓｓ，  Ｍ．  ａｎｄ  Ｌｙｓｙａｎｓｋａｙａ，  Ａ．：  Ｐ−ｓｉｇｎａｔｕｒｅｓ  ａｎｄ  ｎｏｎｉｎｔｅｒａｃｔｉｖｅ  ａｎｏｎｙｍｏｕｓ  ｃｒｅｄｅｎｔｉａｌｓ．  ＴＣＣ  ２００８，  ＬＮＣＳ，  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００８）
【非特許文献４】Ｂｅｔｈｅｎｃｏｕｒｔ，  Ｊ．，  Ｓａｈａｉ，  Ａ．，  Ｗａｔｅｒｓ，  Ｂ．：  Ｃｉｐｈｅｒｔｅｘｔ−ｐｏｌｉｃｙ  ａｔｔｒｉｂｕｔｅ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ．  Ｉｎ：  ２００７  ＩＥＥＥ  Ｓｙｍ−ｐｏｓｉｕｍ  ｏｎ  Ｓｅｃｕｒｉｔｙ  ａｎｄ  Ｐｒｉｖａｃｙ，  ｐｐ．  ３２１．３３４．  ＩＥＥＥ  Ｐｒｅｓｓ  （２００７）
【非特許文献５】Ｂｏｎｅｈ，  Ｄ．，  Ｂｏｙｅｎ，  Ｘ．：  Ｅｆｆｉｃｉｅｎｔ  ｓｅｌｅｃｔｉｖｅ−ＩＤ  ｓｅｃｕｒｅ  ｉｄｅｎｔｉｔｙ  ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈｏｕｔ  ｒａｎｄｏｍ  ｏｒａｃｌｅｓ．  Ｉｎ：Ｃａｃｈｉｎ，  Ｃ．，  Ｃａｍｅｎｉｓｃｈ，  Ｊ．  （ｅｄｓ．）  ＥＵＲＯＣＲＹＰＴ  ２００４．  ＬＮＣＳ，  ｖｏｌ．  ３０２７，  ｐｐ．  ２２３．２３８．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００４）
【非特許文献６】Ｂｏｎｅｈ，  Ｄ．，  Ｂｏｙｅｎ，  Ｘ．：  Ｓｅｃｕｒｅ  ｉｄｅｎｔｉｔｙ  ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈｏｕｔ  ｒａｎｄｏｍ  ｏｒａｃｌｅｓ．  Ｉｎ：  Ｆｒａｎｋｌｉｎ，  Ｍ．Ｋ．  （ｅｄ．）  ＣＲＹＰＴＯ  ２００４．  ＬＮＣＳ，  ｖｏｌ．  ３１５２，  ｐｐ．  ４４３．４５９．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００４）
【非特許文献７】Ｂｏｎｅｈ，  Ｄ．，  Ｂｏｙｅｎ，  Ｘ．，  Ｇｏｈ，  Ｅ．：  Ｈｉｅｒａｒｃｈｉｃａｌ  ｉｄｅｎｔｉｔｙ  ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈ  ｃｏｎｓｔａｎｔ  ｓｉｚｅ  ｃｉｐｈｅｒｔｅｘｔ．  Ｉｎ：Ｃｒａｍｅｒ，  Ｒ．  （ｅｄ．）  ＥＵＲＯＣＲＹＰＴ  ２００５．  ＬＮＣＳ，  ｖｏｌ．  ３４９４，  ｐｐ．  ４４０．４５６．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００５）
【非特許文献８】Ｂｏｎｅｈ，  Ｄ．，  Ｆｒａｎｋｌｉｎ，  Ｍ．：  Ｉｄｅｎｔｉｔｙ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｆｒｏｍ  ｔｈｅ  Ｗｅｉｌ  ｐａｉｒｉｎｇ．  Ｉｎ：  Ｋｉｌｉａｎ，  Ｊ．  （ｅｄ．）  ＣＲＹＰＴＯ  ２００１．  ＬＮＣＳ，  ｖｏｌ．  ２１３９，  ｐｐ．  ２１３．２２９．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００１）
【非特許文献９】Ｂｏｎｅｈ，  Ｄ．，  Ｈａｍｂｕｒｇ，  Ｍ．：  Ｇｅｎｅｒａｌｉｚｅｄ  ｉｄｅｎｔｉｔｙ  ｂａｓｅｄ  ａｎｄ  ｂｒｏａｄｃａｓｔ  ｅｎｃｒｙｐｔｉｏｎ  ｓｃｈｅｍｅ．  Ｉｎ：  Ｐｉｅｐｒｚｙｋ，  Ｊ．（ｅｄ．）  ＡＳＩＡＣＲＹＰＴ  ２００８．  ＬＮＣＳ，  ｖｏｌ．  ５３５０，  ｐｐ．  ４５５．４７０．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００８）
【非特許文献１０】Ｂｏｎｅｈ，  Ｄ．，  Ｋａｔｚ，  Ｊ．，  Ｉｍｐｒｏｖｅｄ  ｅｆｆｉｃｉｅｎｃｙ  ｆｏｒ  ＣＣＡ−ｓｅｃｕｒｅ  ｃｒｙｐｔｏｓｙｓｔｅｍｓ  ｂｕｉｌｔ  ｕｓｉｎｇ  ｉｄｅｎｔｉｔｙ  ｂａｓｅｄ  ｅｎｃｒｙｐ−ｔｉｏｎ．  ＲＳＡ−ＣＴ  ２００５，  ＬＮＣＳ，  Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ  （２００５）
【非特許文献１１】Ｂｏｎｅｈ，  Ｄ．，  Ｗａｔｅｒｓ，  Ｂ．：  Ｃｏｎｊｕｎｃｔｉｖｅ，  ｓｕｂｓｅｔ，  ａｎｄ  ｒａｎｇｅ  ｑｕｅｒｉｅｓ  ｏｎ  ｅｎｃｒｙｐｔｅｄ  ｄａｔａ．  Ｉｎ：  Ｖａｄｈａｎ，  Ｓ．Ｐ．  （ｅｄ．）  ＴＣＣ  ２００７．  ＬＮＣＳ，  ｖｏｌ．  ４３９２，  ｐｐ．  ５３５．５５４．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００７）
【非特許文献１２】Ｘ．  Ｂｏｙｅｎ：  Ｍｅｓｈ  ｓｉｇｎａｔｕｒｅｓ．  ＥＵＲＯＣＲＹＰＴ，  ＬＮＣＳ，  ｖｏｌ．  ４５１５，  ｐｐ．  ２１０．２２７．  Ｓｐｒｉｎｇｅｒ  （２００７）．
【非特許文献１３】Ｂｏｙｅｎ，  Ｘ．，  Ｗａｔｅｒｓ，  Ｂ．：  Ａｎｏｎｙｍｏｕｓ  ｈｉｅｒａｒｃｈｉｃａｌ  ｉｄｅｎｔｉｔｙ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  （ｗｉｔｈｏｕｔ  ｒａｎｄｏｍ  ｏｒａｃｌｅｓ）．  Ｉｎ：Ｄｗｏｒｋ，  Ｃ．  （ｅｄ．）  ＣＲＹＰＴＯ  ２００６．  ＬＮＣＳ，  ｖｏｌ．  ４１１７，  ｐｐ．  ２９０．３０７．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００６）
【非特許文献１４】Ｃａｍｅｎｉｓｃｈ，  Ｊ．  ａｎｄ  Ｇｒｏｓｓ，  Ｔ．：  Ｅｆｆｉｃｉｅｎｔ  ａｔｔｒｉｂｕｔｅｓ  ｆｏｒ  ａｎｏｎｙｍｏｕｓ  ｃｒｅｄｅｎｔｉａｌｓ．  ＣＣＳ  ２００８．
【非特許文献１５】Ｃａｍｅｎｉｓｃｈ，  Ｊ．  ａｎｄ  Ｌｙｓｙａｎｓｋａｙａ，  Ａ．：  Ａｎ  ｅｆｆｉｃｉｅｎｔ  ｓｙｓｔｅｍ  ｆｏｒ  ｎｏｎ−ｔｒａｎｓｆｅｒａｂｌｅ  ａｎｏｎｙｍｏｕｓ  ｃｒｅｄｅｎｔｉａｌｓ  ｗｉｔｈ  ｏｐｔｉｎａｌ  ａｎｏｎｙｍｉｔｙ  ｒｅｖｏｃａｔｉｏｎ．  Ｅｕｒｏｃｒｙｐｔ  ２００１．
【非特許文献１６】Ｃａｍｅｎｉｓｃｈ，  Ｊ．  ａｎｄ  Ｌｙｓｙａｎｓｋａｙａ，  Ａ．：  Ｓｉｇｎａｔｕｒｅ  ｓｃｈｅｍｅｓ  ａｎｄ  ａｎｏｎｙｍｏｕｓ  ｃｒｅｄｅｎｔｉａｌｓ  ｆｒｏｍ  ｂｉｌｉｎｅａｒ  ｍａｐｓ．  Ｃｒｙｐｔｏ  ２００４．
【非特許文献１７】Ｃａｎｅｔｔｉ，  Ｒ．，  Ｈａｌｅｖｉ  Ｓ．，  Ｋａｔｚ  Ｊ．，  Ｃｈｏｓｅｎ−ｃｉｐｈｅｒｔｅｘｔ  ｓｅｃｕｒｉｔｙ  ｆｒｏｍ  ｉｄｅｎｔｉｔｙ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ．  ＥＵＲＯＣＲＹＰＴ  ２００４，  ＬＮＣＳ，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ  （２００４）
【非特許文献１８】Ｃｈａｕｍ，  Ｄ．：  Ｓｅｃｕｒｉｔｙ  ｗｉｔｈｏｕｔ  ｉｄｅｎｔｉｆｉｃａｔｉｏｎ：  Ｔｒａｎｓａｃｔｉｏｎ  ｓｙｓｔｅｍｓ  ｔｏ  ｍａｋｅ  ｂｉｇ  ｂｒｏｔｈｅｒ  ｏｂｓｏｌｅｔｅ．  ＣＡＣＭ  （１９８５）．
【非特許文献１９】Ｄ．  Ｃｈａｕｍ  ａｎｄ  Ｅ．  ｖａｎ  Ｈｅｙｓｔ：  Ｇｒｏｕｐ  ｓｉｇｎａｔｕｒｅｓ．  Ｉｎ  ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＥＵＲＯＣＲＹＰＴ’９１，  ＬＮＣＳ，  ｖｏｌ．  ５４７，  ｐｐ．２５７．２６５  （１９９１）．
【非特許文献２０】Ｃｏｃｋｓ，  Ｃ．：  Ａｎ  ｉｄｅｎｔｉｔｙ  ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｓｃｈｅｍｅ  ｂａｓｅｄ  ｏｎ  ｑｕａｄｒａｔｉｃ  ｒｅｓｉｄｕｅｓ．  Ｉｎ：  Ｈｏｎａｒｙ，  Ｂ．  （ｅｄ．）  ＩＭＡ  Ｉｎｔ．  Ｃｏｎｆ．  ＬＮＣＳ，  ｖｏｌ．  ２２６０，  ｐｐ．  ３６０．３６３．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００１）
【非特許文献２１】Ｇｅｎｔｒｙ，  Ｃ．：  Ｐｒａｃｔｉｃａｌ  ｉｄｅｎｔｉｔｙ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈｏｕｔ  ｒａｎｄｏｍ  ｏｒａｃｌｅｓ．  Ｉｎ：  Ｖａｕｄｅｎａｙ，  Ｓ．  （ｅｄ．）  ＥＵＲＯ−ＣＲＹＰＴ  ２００６．  ＬＮＣＳ，  ｖｏｌ．  ４００４，  ｐｐ．  ４４５．４６４．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００６）
【非特許文献２２】Ｇｅｎｔｒｙ，  Ｃ．，  Ｈａｌｅｖｉ，  Ｓ．：  Ｈｉｅｒａｒｃｈｉｃａｌ  ｉｄｅｎｔｉｔｙ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈ  ｐｏｌｙｎｏｍｉａｌｌｙ  ｍａｎｙ  ｌｅｖｅｌｓ．  Ｉｎ：  Ｒｅｉｎｇｏｌｄ，Ｏ．  （ｅｄ．）  ＴＣＣ  ２００９．  ＬＮＣＳ，  ｖｏｌ．  ５４４４，  ｐｐ．  ４３７．４５６．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００９）
【非特許文献２３】Ｇｅｎｔｒｙ，  Ｃ．，  Ｓｉｌｖｅｒｂｅｒｇ，  Ａ．：  Ｈｉｅｒａｒｃｈｉｃａｌ  ＩＤ−ｂａｓｅｄ  ｃｒｙｐｔｏｇｒａｐｈｙ．  Ｉｎ：  Ｚｈｅｎｇ，  Ｙ．  （ｅｄ．）  ＡＳＩＡＣＲＹＰＴ  ２００２．ＬＮＣＳ，  ｖｏｌ．  ２５０１，  ｐｐ．  ５４８．５６６．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００２）
【非特許文献２４】Ｇｏｙａｌ，  Ｖ．，  Ｐａｎｄｅｙ，  Ｏ．，  Ｓａｈａｉ，  Ａ．，  Ｗａｔｅｒｓ，  Ｂ．：  Ａｔｔｒｉｂｕｔｅ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｆｏｒ  ｆｉｎｅ−ｇｒａｉｎｅｄ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ  ｏｆ  ｅｎｃｒｙｐｔｅｄ  ｄａｔａ．  Ｉｎ：  ＡＣＭ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓｅｃｕｒｉｔｙ  ２００６，  ｐｐ．  ８９．９８，  ＡＣＭ  （２００６）
【非特許文献２５】Ｇｒｏｔｈ，  Ｊ．，  Ｓａｈａｉ，  Ａ．：  Ｅｆｆｉｃｉｅｎｔ  ｎｏｎ−ｉｎｔｅｒａｃｔｉｖｅ  ｐｒｏｏｆ  ｓｙｓｔｅｍｓ  ｆｏｒ  ｂｉｌｉｎｅａｒ  ｇｒｏｕｐｓ．  Ｉｎ：  Ｓｍａｒｔ，  Ｎ．Ｐ．  （ｅｄ．）  ＥＵＲＯＣＲＹＰＴ  ２００８．  ＬＮＣＳ，  ｖｏｌ．  ４９６５，  ｐｐ．  ４１５．４３２．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００８）
【非特許文献２６】Ｓ．  Ｇｕｏ  ａｎｄ  Ｙ．  Ｚｅｎｇ：  Ａｔｔｒｉｂｕｔｅ−ｂａｓｅｄ  Ｓｉｇｎａｔｕｒｅ  Ｓｃｈｅｍｅ，  Ｉｎ  ＩＳＡ’０８，  ｐｐ．  ５０９．５１１  （２００８）．
【非特許文献２７】Ｈｏｒｗｉｔｚ，  Ｊ．，  Ｌｙｎｎ，  Ｂ．：  Ｔｏｗａｒｄｓ  ｈｉｅｒａｒｃｈｉｃａｌ  ｉｄｅｎｔｉｔｙ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ．  Ｉｎ：  Ｋｎｕｄｓｅｎ，  Ｌ．Ｒ．  （ｅｄ．）  ＥＵＲＯ−ＣＲＹＰＴ  ２００２．  ＬＮＣＳ，  ｖｏｌ．  ２３３２，  ｐｐ．  ４６６．４８１．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００２）
【非特許文献２８】Ｋａｔｚ，  Ｊ．，  Ｓａｈａｉ，  Ａ．，  Ｗａｔｅｒｓ，  Ｂ．：  Ｐｒｅｄｉｃａｔｅ  ｅｎｃｒｙｐｔｉｏｎ  ｓｕｐｐｏｒｔｉｎｇ  ｄｉｓｊｕｎｃｔｉｏｎｓ，  ｐｏｌｙｎｏｍｉａｌ  ｅｑｕａｔｉｏｎｓ，  ａｎｄ  ｉｎｎｅｒ  ｐｒｏｄｕｃｔｓ．  Ｉｎ：  Ｓｍａｒｔ，  Ｎ．Ｐ．  （ｅｄ．）  ＥＵＲＯＣＲＹＰＴ  ２００８．  ＬＮＣＳ，  ｖｏｌ．  ４９６５，  ｐｐ．  １４６．１６２．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌ−ｂｅｒｇ  （２００８）
【非特許文献２９】Ｄ．  Ｋｈａｄｅｒ：  Ａｔｔｒｉｂｕｔｅ  Ｂａｓｅｄ  Ｇｒｏｕｐ  Ｓｉｇｎａｔｕｒｅｓ，  Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ，  Ｒｅｐｏｒｔ  ２００７／１５９  （２００７）．  ｈｔｔｐ：／／ｅｐｒｉｎｔ．ｉａｃｒ．ｏｒｇ／２００７／１５９．
【非特許文献３０】Ｄ．  Ｋｈａｄｅｒ：  Ａｔｔｒｉｂｕｔｅ  Ｂａｓｅｄ  Ｇｒｏｕｐ  Ｓｉｇｎａｔｕｒｅ  ｗｉｔｈ  Ｒｅｖｏｃａｔｉｏｎ．  Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ，  Ｒｅｐｏｒｔ  ２００７／２４１，  （２００７）．  ｈｔｔｐ：／／ｅｐｒｉｎｔ．ｉａｃｒ．ｏｒｇ／２００７／２４１．
【非特許文献３１】Ｌｅｗｋｏ，  Ａ．，  Ｏｋａｍｏｔｏ，  Ｔ．，  Ｓａｈａｉ，  Ａ．，  Ｔａｋａｓｈｉｍａ，  Ｋ．  ａｎｄ  Ｗａｔｅｒｓ，  Ｂ．：  Ｆｕｌｌｙ  Ｓｅｃｕｒｅ  Ｆｕｎｃｔｉｏｎａｌ  Ｅｎｃｒｙｐｔｉｏｎ：Ａｔｔｒｉｂｕｔｅ−Ｂａｓｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  ａｎｄ  （Ｈｉｅｒａｒｃｈｉｃａｌ）  Ｉｎｎｅｒ  Ｐｒｏｄｕｃｔ  Ｅｎｃｒｙｐｔｉｏｎ，  ＥＵＲＯＣＲＹＰＴ  ２０１０．  ＬＮＣＳ，Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２０１０）
【非特許文献３２】Ｌｅｗｋｏ，  Ａ．Ｂ．，  Ｗａｔｅｒｓ，  Ｂ．：  Ｆｕｌｌｙ  ｓｅｃｕｒｅ  ＨＩＢＥ  ｗｉｔｈ  ｓｈｏｒｔ  ｃｉｐｈｅｒｔｅｘｔｓ．  ｅＰｒｉｎｔ，  ＩＡＣＲ，  ｈｔｔｐ：／／ｅｐｒｉｎｔ．ｉａｃｒ．ｏｒｇ／２００９／４８２
【非特許文献３３】Ｌｅｗｋｏ，  Ａ．Ｂ．，  Ｗａｔｅｒｓ，  Ｂ．：  Ｄｅｃｅｎｔｒａｌｉｚｉｎｇ  Ａｔｔｒｉｂｕｔｅ−Ｂａｓｅｄ  Ｅｎｃｒｙｐｔｉｏｎ，  ｅＰｒｉｎｔ，  ＩＡＣＲ，  ｈｔｔｐ：／／ｅｐｒｉｎｔ．ｉａｃｒ．ｏｒｇ／２０１０／３５１．
【非特許文献３４】Ｊｉｎ  Ｌｉ，  Ｍａｎ  Ｈｏ  Ａｕ，  Ｗｉｌｌｙ  Ｓｕｓｉｌｏ，  Ｄｏｎｇｑｉｎｇ  Ｘｉｅ，  Ｋｕｉ  Ｒｅｎ：  Ａｔｔｒｉｂｕｔｅ−ｂａｓｅｄ  Ｓｉｇｎａｔｕｒｅ  ａｎｄ  ｉｔｓ  Ａｐｐｌｉｃａｔｉｏｎ，ＡＳＩＡＣＣＳ’  ２０１０，  ＡＣＭ  （２０１０）
【非特許文献３５】Ｊ．  Ｌｉ  ａｎｄ  Ｋ．  Ｋｉｍ：  Ａｔｔｒｉｂｕｔｅ−ｂａｓｅｄ  ｒｉｎｇ  ｓｉｇｎａｔｕｒｅｓ．  ２００８．  Ａｖａｉｌａｂｌｅ  ａｔ  ｈｔｔｐ：／／ｅｐｒｉｎｔ．ｉａｃｒ．ｏｒｇ／２００８／３９４．  Ｔｏ  ａｐｐｅａｒ  ｉｎ  Ｊｏｕｒｎａｌ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｃｉｅｎｃｅｓ．
【非特許文献３６】Ｍａｊｉ，  Ｈ．，  Ｐｒａｂｈａｋａｒａｎ，  Ｍ．，  Ｒｏｓｕｌｅｋ，  Ｍ．：  Ａｔｔｒｉｂｕｔｅ−Ｂａｓｅｄ  Ｓｉｇｎａｔｕｒｅｓ：  Ａｃｈｉｅｖｉｎｇ  Ａｔｔｒｉｂｕｔｅ−Ｐｒｉｖａｃｙ  ａｎｄ  Ｃｏｌｌｕｓｉｏｎ−Ｒｅｓｉｓｔａｎｃｅ．  ｅＰｒｉｎｔ，  ＩＡＣＲ，  ｈｔｔｐ：／／ｅｐｒｉｎｔ．ｉａｃｒ．ｏｒｇ／２００８／３２８
【非特許文献３７】Ｍａｊｉ，  Ｈ．，  Ｐｒａｂｈａｋａｒａｎ，  Ｍ．，  Ｒｏｓｕｌｅｋ，  Ｍ．：  Ａｔｔｒｉｂｕｔｅ−Ｂａｓｅｄ  Ｓｉｇｎａｔｕｒｅｓ．  ｈｔｔｐ：／／ｗｗｗ．ｃｓ．ｕｉｕｃ．ｅｄｕ／  ｍｍｐ／ｒｅｓｅａｒｃｈ．ｈｔｍｌ
【非特許文献３８】Ｏｋａｍｏｔｏ，  Ｔ．，  Ｔａｋａｓｈｉｍａ，  Ｋ．：  Ｈｏｍｏｍｏｒｐｈｉｃ  ｅｎｃｒｙｐｔｉｏｎ  ａｎｄ  ｓｉｇｎａｔｕｒｅｓ  ｆｒｏｍ  ｖｅｃｔｏｒ  ｄｅｃｏｍｐｏｓｉｔｉｏｎ．  Ｉｎ：Ｇａｌｂｒａｉｔｈ，  Ｓ．Ｄ．，  Ｐａｔｅｒｓｏｎ，  Ｋ．Ｇ．  （ｅｄｓ．）  Ｐａｉｒｉｎｇ  ２００８．  ＬＮＣＳ，  ｖｏｌ．  ５２０９，  ｐｐ．  ５７．７４．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００８）
【非特許文献３９】Ｏｋａｍｏｔｏ，  Ｔ．，  Ｔａｋａｓｈｉｍａ，  Ｋ．：  Ｈｉｅｒａｒｃｈｉｃａｌ  ｐｒｅｄｉｃａｔｅ  ｅｎｃｒｙｐｔｉｏｎ  ｆｏｒ  Ｉｎｎｅｒ−Ｐｒｏｄｕｃｔｓ，  Ｉｎ：  ＡＳＩＡＣＲＹＰＴ  ２００９，  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００９）
【非特許文献４０】Ｏｋａｍｏｔｏ，  Ｔ．，  Ｔａｋａｓｈｉｍａ，  Ｋ．：  Ｆｕｌｌｙ  Ｓｅｃｕｒｅ  Ｆｕｎｃｔｉｏｎａｌ  Ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈ  Ｇｅｎｅｒａｌ  Ｒｅｌａｔｉｏｎｓ  ｆｒｏｍ  ｔｈｅ  Ｄｅｃｉ−ｓｉｏｎａｌ  Ｌｉｎｅａｒ  Ａｓｓｕｍｐｔｉｏｎ，  Ｉｎ：  ＣＲＹＰＴＯ  ２０１０，  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２０１０）
【非特許文献４１】Ｏｓｔｒｏｖｓｋｙ，  Ｒ．，  Ｓａｈａｉ，  Ａ．，  Ｗａｔｅｒｓ，  Ｂ．：  Ａｔｔｒｉｂｕｔｅ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈ  ｎｏｎ−ｍｏｎｏｔｏｎｉｃ  ａｃｃｅｓｓ  ｓｔｒｕｃｔｕｒｅｓ．  Ｉｎ：  ＡＣＭ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓｅｃｕｒｉｔｙ  ２００７，  ｐｐ．  １９５．２０３，  ＡＣＭ  （２００７）
【非特許文献４２】Ｐｉｒｒｅｔｔｉ，  Ｍ．，  Ｔｒａｙｎｏｒ，  Ｐ．，  ＭｃＤａｎｉｅｌ，  Ｐ．，  Ｗａｔｅｒｓ，  Ｂ．：  Ｓｅｃｕｒｅ  ａｔｔｒｉｂｕｔｅ−ｂａｓｅｄ  ｓｙｓｔｅｍｓ．  Ｉｎ：  ＡＣＭ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓｅｃｕｒｉｔｙ  ２００６，  ｐｐ．  ９９．１１２，  ＡＣＭ，  （２００６）
【非特許文献４３】Ｐｉｒｒｅｔｔｉ，  Ｍ．，  Ｔｒａｙｎｏｒ，  Ｐ．，  ＭｃＤａｎｉｅｌ，  Ｐ．，  Ｗａｔｅｒｓ，  Ｂ．：  Ｓｅｃｕｒｅ  ａｔｔｒｉｂｕｔｅ−ｂａｓｅｄ  ｓｙｓｔｅｍｓ．  Ｉｎ：  ＡＣＭ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓｅｃｕｒｉｔｙ  ２００６，  ｐｐ．  ９９．１１２，  ＡＣＭ，  （２００６）
【非特許文献４４】Ｓａｈａｉ，  Ａ．，  Ｗａｔｅｒｓ，  Ｂ．：  Ｆｕｚｚｙ  ｉｄｅｎｔｉｔｙ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ．  Ｉｎ：  Ｃｒａｍｅｒ，  Ｒ．  （ｅｄ．）  ＥＵＲＯＣＲＹＰＴ  ２００５．  ＬＮＣＳ，  ｖｏｌ．  ３４９４，  ｐｐ．  ４５７．４７３．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００５）
【非特許文献４５】Ｓ．  Ｆ．  Ｓｈａｈａｎｄａｓｈｔｉ  ａｎｄ  Ｒ．  Ｓａｆａｖｉ−Ｎａｉｎｉ：  Ｔｈｒｅｓｈｏｌｄ  ａｔｔｒｉｂｕｔｅ−ｂａｓｅｄ  ｓｉｇｎａｔｕｒｅｓ  ａｎｄ  ｔｈｅｉｒ  ａｐｐｌｉｃａｔｉｏｎ  ｔｏ  ａｎｏｎｙｍｏｕｓ  ｃｒｅｄｅｎｔｉａｌ  ｓｙｓｔｅｍｓ．  Ｉｎ  ＡＦＲＩＣＡＣＲＹＰＴ’０９，  ｐｐ．  １９８．２１６  （２００９）．
【非特許文献４６】Ａ．  Ｓｈａｍｉｒ：  Ｉｄｅｎｔｉｔｙ−ｂａｓｅｄ  ｃｒｙｐｔｏｓｙｓｔｅｍｓ  ａｎｄ  ｓｉｇｎａｔｕｒｅ  ｓｃｈｅｍｅｓ．  Ｉｎ  ＣＲＹＰＴＯ’８４，  ｐｐ．  ４７．５３  （１９８４）．
【非特許文献４７】Ｓｈｉ，  Ｅ．，  Ｗａｔｅｒｓ，  Ｂ．：  Ｄｅｌｅｇａｔｉｎｇ  ｃａｐａｂｉｌｉｔｙ  ｉｎ  ｐｒｅｄｉｃａｔｅ  ｅｎｃｒｙｐｔｉｏｎ  ｓｙｓｔｅｍｓ．  Ｉｎ：  Ａｃｅｔｏ，  Ｌ．，  Ｄａｍｇ°ａｒｄ，  Ｉ．，Ｇｏｌｄｂｅｒｇ，  Ｌ．Ａ．，  Ｈａｌｌｄｏｒｓｓｏｎ，  Ｍ．Ｍ．，  Ｉｎｇｏｌｆｓｄｏｔｔｉｒ，  Ａ．，  Ｗａｌｕｋｉｅｗｉｃｚ，  Ｉ．  （ｅｄｓ．）  ＩＣＡＬＰ  （２）  ２００８．  ＬＮＣＳ，  ｖｏｌ．５１２６，  ｐｐ．  ５６０．５７８．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００８）
【非特許文献４８】Ｓｈｉ，  Ｅ．，  Ｗａｔｅｒｓ，  Ｂ．：  Ｄｅｌｅｇａｔｉｎｇ  ｃａｐａｂｉｌｉｔｙ  ｉｎ  ｐｒｅｄｉｃａｔｅ  ｅｎｃｒｙｐｔｉｏｎ  ｓｙｓｔｅｍｓ．  Ｉｎ：  Ａｃｅｔｏ，  Ｌ．，  Ｄａｍｇ°ａｒｄ，  Ｉ．，Ｇｏｌｄｂｅｒｇ，  Ｌ．Ａ．，  Ｈａｌｌｄｏｒｓｓｏｎ，  Ｍ．Ｍ．，  Ｉｎｇｏｌｆｓｄｏｔｔｉｒ，  Ａ．，  Ｗａｌｕｋｉｅｗｉｃｚ，  Ｉ．  （ｅｄｓ．）  ＩＣＡＬＰ  （２）  ２００８．  ＬＮＣＳ，  ｖｏｌ．５１２６，  ｐｐ．  ５６０．５７８．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００８）
【非特許文献４９】Ｗａｔｅｒｓ，  Ｂ．：  Ｃｉｐｈｅｒｔｅｘｔ−ｐｏｌｉｃｙ  ａｔｔｒｉｂｕｔｅ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ：  ａｎ  ｅｘｐｒｅｓｓｉｖｅ，  ｅｆｆｉｃｉｅｎｔ，  ａｎｄ  ｐｒｏｖａｂｌｙ  ｓｅｃｕｒｅ  ｒｅａｌｉｚａｔｉｏｎ．  ｅＰｒｉｎｔ，  ＩＡＣＲ，  ｈｔｔｐ：／／ｅｐｒｉｎｔ．ｉａｃｒ．ｏｒｇ／２００８／２９０
【非特許文献５０】Ｗａｔｅｒｓ，  Ｂ．：  Ｄｕａｌ  ｓｙｓｔｅｍ  ｅｎｃｒｙｐｔｉｏｎ：  Ｒｅａｌｉｚｉｎｇ  ｆｕｌｌｙ  ｓｅｃｕｒｅ  ＩＢＥ  ａｎｄ  ＨＩＢＥ  ｕｎｄｅｒ  ｓｉｍｐｌｅ  ａｓｓｕｍｐｔｉｏｎｓ．  Ｉｎ：Ｈａｌｅｖｉ，  Ｓ．  （ｅｄ．）  ＣＲＹＰＴＯ  ２００９．  ＬＮＣＳ，  ｖｏｌ．  ５６７７，  ｐｐ．  ６１９．６３６．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００９）
【非特許文献５１】Ｗａｔｅｒｓ，  Ｂ．：  Ｄｕａｌ  ｓｙｓｔｅｍ  ｅｎｃｒｙｐｔｉｏｎ：  Ｒｅａｌｉｚｉｎｇ  ｆｕｌｌｙ  ｓｅｃｕｒｅ  ＩＢＥ  ａｎｄ  ＨＩＢＥ  ｕｎｄｅｒ  ｓｉｍｐｌｅ  ａｓｓｕｍｐｔｉｏｎｓ．  Ｉｎ：Ｈａｌｅｖｉ，  Ｓ．  （ｅｄ．）  ＣＲＹＰＴＯ  ２００９．  ＬＮＣＳ，  ｖｏｌ．  ５６７７，  ｐｐ．  ６１９．６３６．  Ｓｐｒｉｎｇｅｒ  Ｈｅｉｄｅｌｂｅｒｇ  （２００９）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の属性ベース署名方式では、ノンモノトーン述語をサポートしていなかった。
この発明は、ノンモノトーン述語をサポートした属性ベース署名方式を提供することを目的とする。
【課題を解決するための手段】
【０００５】
この発明に係る署名処理システムは、
鍵生成装置と署名装置と検証装置とを備え、ｔ＝０，．．．，ｄ＋１（ｄは１以上の整数）の各整数ｔについての基底Ｂｔと基底Ｂ＊ｔとを用いて署名処理を実行する署名処理システムであり、
前記鍵生成装置は、
ｔ＝１，．．．，ｄの少なくとも１つ以上の整数ｔについて、識別情報ｔと、属性情報ｘｔとを含む属性集合Γを入力する第１情報入力部と、
基底Ｂ＊０の基底ベクトルｂ＊０，１の係数として所定の値δを設定した鍵要素ｋ＊０を生成する鍵要素０生成部と、
前記第１情報入力部が入力した属性集合Γに含まれる各識別情報ｔについて、基底Ｂ＊ｔの基底ベクトルｂ＊ｔ，１の係数として前記所定の値δを設定し、基底ベクトルｂ＊ｔ，２の係数として属性情報ｘｔに前記所定の値δを乗じたδｘｔを設定した鍵要素ｋ＊ｔを生成する鍵要素ｔ生成部と、
基底Ｂ＊ｄ＋１の基底ベクトルｂ＊ｄ＋１，１の係数として前記所定の値δを設定した鍵要素ｋ＊ｄ＋１，１と、基底Ｂ＊ｄ＋１の基底ベクトルｂ＊ｄ＋１，２の係数として前記所定の値δを設定した鍵要素ｋ＊ｄ＋１，２とを生成する鍵要素ｄ＋１生成部と、
前記鍵要素０生成部が生成した鍵要素ｋ＊０と、前記鍵要素ｔ生成部が生成した前記属性集合Γに含まれる各識別情報ｔについての鍵要素ｋ＊ｔと、前記鍵要素ｄ＋１生成部が生成した鍵要素ｋ＊ｄ＋１，１及び鍵要素ｋ＊ｄ＋１，２と、前記属性集合Γとを含む署名鍵ｓｋΓを前記署名装置へ送信する署名鍵送信部と
を備え、
前記署名装置は、
ｉ＝１，．．．，Ｌ（Ｌは１以上の整数）の各整数ｉについての変数ρ（ｉ）であって、識別情報ｔ（ｔ＝１，．．．，ｄのいずれかの整数）と、属性情報ｖｉとの肯定形の組（ｔ，ｖｉ）又は否定形の組¬（ｔ，ｖｉ）のいずれかである変数ρ（ｉ）と、Ｌ行ｒ列（ｒは１以上の整数）の所定の行列Ｍと、メッセージｍとを入力する第２情報入力部と、
前記署名鍵送信部が送信した署名鍵ｓｋΓを取得する署名鍵取得部と、
前記第２情報入力部が入力した変数ρ（ｉ）と、前記署名鍵取得部が取得した署名鍵ｓｋΓに含まれる属性集合Γとに基づき、ｉ＝１，．．．，Ｌの各整数ｉのうち、変数ρ（ｉ）が肯定形の組（ｔ，ｖｉ）であり、かつ、その組のｖｉと、その組の識別情報ｔが示す属性集合Γに含まれるｘｔとが等しいｉと、変数ρ（ｉ）が否定形の組¬（ｔ，ｖｉ）であり、かつ、その組のｖｉと、その組の識別情報ｔが示す属性集合Γに含まれるｘｔとが等しくないｉとの集合Ｉを特定するとともに、特定した集合Ｉに含まれるｉについて、前記第２情報入力部が入力した行列Ｍのｉ行目の要素であるＭｉに基づき、αｉＭｉを合計した場合に所定のベクトルｈ→となる補完係数αｉを計算する補完係数計算部と、
前記署名鍵ｓｋΓに含まれる鍵要素ｋ＊０を含む署名要素ｓ＊０を生成する署名要素０生成部と、
ｉ＝１，．．．，Ｌの各整数ｉについて、前記補完係数計算部が特定した集合Ｉに含まれる整数ｉであり、かつ、変数ρ（ｉ）が肯定形の組（ｔ，ｖｉ）である場合には値γｉ：＝αｉとし、前記集合Ｉに含まれるｉであり、かつ、変数ρ（ｉ）が否定形の組¬（ｔ，ｖｉ）である場合には値γｉ：＝αｉ／（ｖｉ−ｘｔ）とし、前記集合Ｉに含まれない整数ｉの場合には値γｉ：＝０として、前記署名鍵ｓｋΓに含まれる鍵要素ｋ＊ｔに前記値γｉを乗じたγｉｋ＊ｔを含む署名要素ｓ＊ｉを生成する署名要素ｉ生成部と、
前記署名鍵ｓｋΓに含まれる鍵要素ｋ＊ｄ＋１，１と、前記メッセージｍを用いて生成される値ｍ’を前記鍵要素ｋ＊ｄ＋１，２に乗じたｍ’・ｋ＊ｄ＋１，２との和を含む署名要素ｓ＊Ｌ＋１を生成する署名要素Ｌ＋１生成部と、
前記署名要素０生成部が生成した署名要素ｓ＊０と、前記署名要素ｉ生成部が生成したｉ＝１，．．．，Ｌの各整数ｉについての署名要素ｓ＊ｉと、前記署名要素Ｌ＋１生成部が生成した署名要素ｓ＊Ｌ＋１と、前記メッセージｍと、前記変数ρ（ｉ）と、前記行列Ｍとを含む署名データσを前記検証装置へ送信する署名データ送信部と
を備え、
前記検証装置は、
前記署名データ送信部が送信した署名データσを取得するデータ取得部と、
ｒ個の要素を有するベクトルｆ→と前記ベクトルｈ→と用いて生成される値ｓ０：＝ｈ→・ｆ→Ｔと、所定の値ｓＬ＋１とから計算される−ｓ０−ｓＬ＋１を、基底Ｂ０の基底ベクトルｂ０，１の係数として設定して検証要素ｃ０を生成する検証要素０生成部と、
前記ベクトルｆ→と前記データ取得部が取得した署名データσに含まれる行列Ｍとに基づき生成される列ベクトルｓ→Ｔ：＝（ｓ１，．．．，ｓＬ）Ｔ：＝Ｍ・ｆ→Ｔと、ｉ＝１，．．．，Ｌの各整数ｉについての所定の値θｉとを用いて、ｉ＝１，．．．，Ｌの各整数ｉについて、変数ρ（ｉ）が肯定形の組（ｔ，ｖｉ）である場合には、その組の識別情報ｔが示す基底Ｂｔの基底ベクトルｂｔ，１の係数としてｓｉ＋θｉｖｉを設定し、基底ベクトルｂｔ，２の係数として−θｉを設定して検証要素ｃｉを生成し、変数ρ（ｉ）が否定形の組¬（ｔ，ｖｉ）である場合には、その組の識別情報ｔが示す基底ベクトルｂｔ，１の係数としてｓｉｖｉを設定し、基底ベクトルｂｔ，２の係数として−ｓｉを設定して検証要素ｃｉを生成する検証要素ｉ生成部と、
基底Ｂｄ＋１の基底ベクトルｂｄ＋１，１の係数として、前記所定の値ｓＬ＋１と前記値ｍ’と所定の値θＬ＋１とから計算されるｓＬ＋１−θＬ＋１ｍ’を設定し、基底ベクトルｂｄ＋１，２の係数として前記所定の値θＬ＋１を設定して検証要素ｃＬ＋１を生成する検証要素Ｌ＋１生成部と、
前記検証要素０生成部が生成した検証要素ｃ０と、前記検証要素ｉ生成部が生成した検証要素ｃｉと、前記検証要素Ｌ＋１生成部が生成した検証要素ｃＬ＋１と、前記署名データσに含まれる署名要素ｓ＊０，ｓ＊ｉ，ｓ＊Ｌ＋１とについて、ペアリング演算Πｉ＝０Ｌ＋１ｅ（ｃｉ，ｓ＊ｉ）を行い、前記署名データσの正当性を検証するペアリング演算部と
を備えることを特徴とする。
【発明の効果】
【０００６】
この発明に係る属性ベース署名方式では、ノンモノトーン述語をサポートしている。そのため、利用範囲の広い属性ベース署名方式を実現している。
【図面の簡単な説明】
【０００７】
【図１】行列Ｍ＾の説明図。
【図２】行列Ｍδの説明図。
【図３】ｓ０の説明図。
【図４】ｓ→Ｔの説明図。
【図５】属性ベース署名方式を実行する署名処理システム１０の構成図。
【図６】鍵生成装置１００の機能を示す機能ブロック図。
【図７】署名装置２００の機能を示す機能ブロック図。
【図８】検証装置３００の機能を示す機能ブロック図。
【図９】Ｓｅｔｕｐアルゴリズムの処理を示すフローチャート。
【図１０】ＫｅｙＧｅｎアルゴリズムの処理を示すフローチャート。
【図１１】Ｓｉｇアルゴリズムの処理を示すフローチャート。
【図１２】Ｖｅｒアルゴリズムの処理を示すフローチャート。
【図１３】多管理者の説明図。
【図１４】分散多管理者属性ベース署名方式を実行する署名処理システム１０の構成図。
【図１５】各鍵生成装置１００の機能を示す機能ブロック図。
【図１６】署名装置２００の機能を示す機能ブロック図。
【図１７】検証装置３００の機能を示す機能ブロック図。
【図１８】ＧＳｅｔｕｐアルゴリズムの処理を示すフローチャート。
【図１９】ＡＳｅｔｕｐアルゴリズムの処理を示すフローチャート。
【図２０】ＡｔｔｒＧｅｎアルゴリズムの処理を示すフローチャート。
【図２１】Ｓｉｇアルゴリズムの処理を示すフローチャート。
【図２２】Ｖｅｒアルゴリズムの処理を示すフローチャート。
【図２３】鍵生成装置１００、署名装置２００、検証装置３００のハードウェア構成の一例を示す図。
【発明を実施するための形態】
【０００８】
以下、図に基づき、発明の実施の形態を説明する。
以下の説明において、処理装置は後述するＣＰＵ９１１等である。記憶装置は後述するＲＯＭ９１３、ＲＡＭ９１４、磁気ディスク９２０等である。通信装置は後述する通信ボード９１５等である。入力装置は後述するキーボード９０２、通信ボード９１５等である。つまり、処理装置、記憶装置、通信装置、入力装置はハードウェアである。
【０００９】
以下の説明における記法について説明する。
Ａがランダムな変数または分布であるとき、数１０１は、Ａの分布に従いＡからｙをランダムに選択することを表す。つまり、数１０１において、ｙは乱数である。
【数１０１】
0005606344.tif 000002
Ａが集合であるとき、数１０２は、Ａからｙを一様に選択することを表す。つまり、数１０２において、ｙは一様乱数である。
【数１０２】
0005606344.tif 000003
数１０３は、ｙがｚにより定義された集合であること、又はｙがｚを代入された集合であることを表す。
【数１０３】
0005606344.tif 000004
ａが定数であるとき、数１０４は、機械（アルゴリズム）Ａが入力ｘに対しａを出力することを表す。
【数１０４】
0005606344.tif 000005
数１０５、つまりＦｑは、位数ｑの有限体を示す。
【数１０５】
0005606344.tif 000006
ベクトル表記は、有限体Ｆｑにおけるベクトル表示を表す。つまり、数１０６である。
【数１０６】
0005606344.tif 000007
数１０７は、数１０８に示す２つのベクトルｘ→とｖ→との数１０９に示す内積を表す。
【数１０７】
0005606344.tif 000008
【数１０８】
0005606344.tif 000009
【数１０９】
0005606344.tif 000010
ＸＴは、行列Ｘの転置行列を表す。
ｂｉ（ｉ＝１，．．．，ｎ）が空間Ｖのベクトルの要素であるとき、つまり、数１１０であるとき、数１１１は、数１１２によって生成される部分空間を表す。
【数１１０】
0005606344.tif 000011
【数１１１】
0005606344.tif 000012
【数１１２】
0005606344.tif 000013
数１１３に示す基底Ｂと基底Ｂ＊とに対して、数１１４である。
【数１１３】
0005606344.tif 000014
【数１１４】
0005606344.tif 000015
【００１０】
また、以下の説明において、ｐａｒａｍＶｔにおけるＶｔはＶｔのことである。
同様に、Ｆｑｎｔにおけるｎｔはｎｔのことである。
同様に、ｓｋｇｉｄ，（ｔ，ｘｔ）におけるｘｔはｘｔのことである。
同様に、“δｉ，ｊ”が上付きで示されている場合、このδｉ，ｊは、δｉ，ｊを意味する。
また、ベクトルを意味する“→”が下付き文字又は上付き文字に付されている場合、この“→”は下付き文字又は上付き文字に上付きで付されていることを意味する。
【００１１】
また、以下の説明において、署名処理とは、鍵生成処理、署名処理、検証処理を含むものである。
【００１２】
実施の形態１．
この実施の形態では、「属性ベース署名方式」について説明する。
第１に、属性ベース署名について簡単に説明する。
第２に、属性ベース署名方式を実現するための空間である「双対ペアリングベクトル空間（Ｄｕａｌ  Ｐａｉｒｉｎｇ  Ｖｅｃｔｏｒ  Ｓｐａｃｅｓ，ＤＰＶＳ）」という豊かな数学的構造を有する空間を説明する。
第３に、属性ベース署名方式を実現するための概念を説明する。ここでは、「スパンプログラム（Ｓｐａｎ  Ｐｒｏｇｒａｍ）」、「属性ベクトルの内積とアクセスストラクチャ」、「秘密分散方式（秘密共有方式）」について説明する。また、「衝突困難ハッシュ関数（Ｃｏｌｌｉｓｉｏｎ  Ｒｅｓｉｓｔａｎｔ  Ｈａｓｈ  Ｆｕｎｃｔｉｏｎｓ）」についても説明する。
第４に、この実施の形態に係る「属性ベース署名方式」を説明する。まず、「属性ベース署名方式」の基本構成について説明する。次に、「属性ベース署名方式」を実現する「署名処理システム１０」の基本構成について説明する。そして、この実施の形態に係る「属性ベース署名方式」及び「署名処理システム１０」について詳細に説明する。
【００１３】
＜第１．属性ベース署名＞
デジタル署名の概念は、ＤｉｆｆｉｅとＨｅｌｌｍａｎとによって１９７６年に論文で紹介された。そこでは、デジタル署名の概念は、秘密にされる署名鍵ｓｋと公開される検証鍵ｐｋとのペアが署名者に対して生成され、署名鍵ｓｋを用いて生成されたメッセージｍの署名σが、対応する検証鍵ｐｋによって検証されることとされた。つまり、署名鍵ｓｋを使って署名されたメッセージ（ｍ，σ）の署名者が、検証鍵ｐｋによって確認されることとされた。
これは、デジタル署名の要件の１つではある。しかし、署名鍵ｓｋと検証鍵ｐｋとの関係が密接なため、署名者と署名によって証明される内容との間の関係に柔軟性やプライバシーがない。
【００１４】
署名鍵と検証鍵との関係がより柔軟になり又は洗練されることで、用途が広く、プライバシーが向上したデジタル署名の改良型が研究されている。
署名のこのクラスでは、署名鍵と検証鍵とはそれぞれ、属性ｘと述語ｖとによってパラメータ化されている。そして、署名されたメッセージ（ｍ，σ）は、パラメータｘを伴う署名鍵ｓｋｘによって生成され、公開された鍵ｐｋとパラメータｖとによって、述語ｖが属性ｘを受理する場合（ｖ（ｘ）が成立する場合）にのみ、正しいことが検証される。
署名のこのクラスにおける署名者のプライバシーとは、署名鍵ｓｋｘによって生成された述語ｖに対する署名が、ｖ（ｘ）が成立することを除き属性ｘに関する情報を漏らさないことである。
【００１５】
述語ｖがパラメータｖとの等号関係である場合（つまり、ｘ＝ｖの場合にのみｖ（ｘ）が成立する場合）、この述語に対する署名のクラスはＩＤベース署名（Ｉｄｅｎｔｉｔｙ−Ｂａｓｅｄ  Ｓｉｇｎａｔｕｒｅｓ，ＩＢＳ）である（非特許文献４６参照）。
なお、ＩＤベース署名では、ｘ＝ｖのように、署名者の秘密鍵であるｓｋｘの属性ｘを述語ｖが一意に識別する。そのため、ＩＤベース署名にはプライバシーの余地はない。
【００１６】
グループ署名（Ｇｒｏｕｐ  Ｓｉｇｎａｔｕｒｅｓ）は、署名のこのクラスに含まれる署名である（非特許文献１９参照）。グループ署名は、述語のパラメータｖがグループ識別子であり、属性ｘがグループｖのメンバーの識別子である（又はｐｋｖがグループｖを識別する公開鍵であり、ｓｋｘがグループｖのメンバーｘの秘密鍵である）場合にのみ、ｖ（ｘ）が成立するという述語ｖを伴う署名である。
プライバシーの要件に基づき、秘密鍵ｓｋｘを使って生成された署名はｘがグループｖのメンバーであることを除き、識別子ｘに関する情報を漏らさない。
【００１７】
属性ベース署名は、署名のこのクラス含まれる署名であり、より洗練された述語を伴う署名である（非特許文献２６，２９，３０，３４−３６，４５，５１参照）。属性ベース署名は、署名鍵ｓｋｘに対するｘが属性（ｘ１，．．．，ｘｉ）の組であり、検証のためのｖが閾値又はアクセスストラクチャの述語である。
存在する属性ベース署名方式における述語の最も広いクラスはモノトーンアクセスストラクチャである（非特許文献３６，３７参照）。モノトーンアクセスストラクチャでは、述語ｖは、属性（ｖ１，．．．，ｖｊ）の組を伴うモノトーンスパンプログラム（Ｍ，ρ）（ＭＳＰ（Ｍ，ρ））によって特定され、ＭＳＰ（Ｍ，ρ）が（Ｔ（ｘｉ＿１＝ｖ１），．．．，Ｔ（ｘｉ＿ｊ＝ｖｊ））の真の値のベクトルを受理する場合のみ、ｖ（ｘ）が成立する。ここで、φが真である場合、Ｔ（φ）：＝１であり、φが偽である場合、Ｔ（φ）：＝１である。例えば、ｘ＝ｖである場合、Ｔ（ｘ＝ｖ）：＝１であり、ｘ≠ｖである場合、Ｔ（ｘ＝ｖ）：＝０である。
このようなモノトーン述語は、ＡＮＤ、ＯＲ、閾値のゲートを表現することができる。
【００１８】
属性ベース署名に対するモノトーン述語ｖの例を説明する。
モノトーン述語ｖの例としては、（Ｉｎｓｔｉｔｕｔｅ＝Ｕｎｉｖ．Ａ）ＡＮＤ（ＴＨ２（（Ｄｅｐａｒｔｍｅｎｔ＝Ｂｉｏｌｏｇｙ），（Ｇｅｎｄｅｒ＝Ｆｅｍａｌｅ），（Ａｇｅ＝５０‘ｓ））ＯＲ（Ｐｏｓｉｔｉｏｎ＝Ｐｒｏｆｅｓｓｏｒ））である。ここで、ＴＨ２は閾値の値が２の閾値ゲート（つまり、２つ以上成立することを要求するゲート）を意味する。
アリスの属性ｘＡが、（Ｉｎｓｔｉｔｕｔｅ＝Ｕｎｉｖ．Ａ），（Ｄｅｐａｒｔｍｅｎｔ＝Ｂｉｏｌｏｇｙ），（Ｐｏｓｉｔｉｏｎ＝Ｐｏｓｔｄｏｃ），（Ａｇｅ＝３０），（Ｇｅｎｄｅｒ＝Ｆｅｍａｌｅ）であり、ボブの属性ｘＢが、（Ｉｎｓｔｉｔｕｔｅ＝Ｕｎｉｖ．Ａ），（Ｄｅｐａｒｔｍｅｎｔ＝Ｍａｔｈｅｍａｔｉｃｓ），（Ｐｏｓｉｔｉｏｎ＝Ｐｒｏｆｅｓｓｏｒ），（Ａｇｅ＝４５），（Ｇｅｎｄｅｒ＝Ｍａｌｅ）であるとする。属性ｘＡと属性ｘＢとは全く異なるが、ｖ（ｘＡ）とｖ（ｘＢ）とがいずれも成立することは明らかである。また、述語ｖを満たす他の多くの属性があることは明らかである。
そのため、アリスとボブとは、この述語における署名を生成することができる。また、属性ベース署名のプライバシー要件に基づき、署名者の属性が述語ｖを満たすことを除き、述語ｖに対する署名は署名者、つまりアリスとボブ（又はその他）の属性に関して情報を漏らさない。
【００１９】
属性ベース署名には、属性ベースメッセージング（Ａｔｔｒｉｂｕｔｅｄ−Ｂａｓｅｄ  Ｍａｓｓａｇｉｎｇ，ＡＢＭ）、属性ベース認証（Ａｔｔｒｉｂｕｔｅｄ−Ｂａｓｅｄ  ａｕｔｈｅｎｔｉｃａｔｉｏｎ）、ｔｒｕｓｔ−ｎｅｇｏｔｉａｔｉｏｎ、ｌｅａｋｉｎｇ  ｓｅｃｒｅｔｓ等の多くのアプリケーションが存在する（非特許文献３６，３７参照）。
【００２０】
しかし、ノンモノトーン述語に対する属性ベース署名方式は、弱い安全性のものであっても存在しなかった。ノンモノトーン述語は、ＡＮＤ、ＯＲ、閾値のゲートと同様に、ＮＯＴのゲートを表現することができる。
つまり、モノトーン述語では、（Ｉｎｓｔｉｔｕｔｅ＝Ｕｎｉｖ．Ａ）のように、肯定形の条件は設定できるが、（Ｉｎｓｔｉｔｕｔｅ≠Ｕｎｉｖ．Ａ）（つまり、Ｎｏｔ（Ｉｎｓｔｉｔｕｔｅ＝Ｕｎｉｖ．Ａ））のように否定形の条件は設定できない。これに対して、ノンモノトーン述語では、否定形の条件を設定できる。
大学がＵｎｉｖ．Ａ以外にも多数存在する場合、肯定形の条件のみを用いて、Ｕｎｉｖ．Ａ以外という否定形の条件を設定するのは困難である（記述が複雑になる）。このことからも、ノンモノトーン述語の有用性が分かる。
【００２１】
＜第２．双対ペアリングベクトル空間＞
まず、対称双線形ペアリング群（Ｓｙｍｍｅｔｒｉｃ  Ｂｉｌｉｎｅａｒ  Ｐａｉｒｉｎｇ  Ｇｒｏｕｐｓ）について説明する。
対称双線形ペアリング群（ｑ，Ｇ，ＧＴ，ｇ，ｅ）は、素数ｑと、位数ｑの巡回加法群Ｇと、位数ｑの巡回乗法群ＧＴと、ｇ≠０∈Ｇと、多項式時間で計算可能な非退化双線形ペアリング（Ｎｏｎｄｅｇｅｎｅｒａｔｅ  Ｂｉｌｉｎｅａｒ  Ｐａｉｒｉｎｇ）ｅ：Ｇ×Ｇ→ＧＴとの組である。非退化双線形ペアリングは、ｅ（ｓｇ，ｔｇ）＝ｅ（ｇ，ｇ）ｓｔであり、ｅ（ｇ，ｇ）≠１である。
以下の説明において、数１１５を、１λを入力として、セキュリティパラメータをλとする双線形ペアリング群のパラメータｐａｒａｍＧ：＝（ｑ，Ｇ，ＧＴ，ｇ，ｅ）の値を出力するアルゴリズムとする。
【数１１５】
0005606344.tif 000016
【００２２】
次に、双対ペアリングベクトル空間について説明する。
双対ペアリングベクトル空間（ｑ，Ｖ，ＧＴ，Ａ，ｅ）は、対称双線形ペアリング群（ｐａｒａｍＧ：＝（ｑ，Ｇ，ＧＴ，ｇ，ｅ））の直積によって構成することができる。双対ペアリングベクトル空間（ｑ，Ｖ，ＧＴ，Ａ，ｅ）は、素数ｑ、数１１６に示すＦｑ上のＮ次元ベクトル空間Ｖ、位数ｑの巡回群ＧＴ、空間Ｖの標準基底Ａ：＝（ａ１，．．．，ａＮ）の組であり、以下の演算（１）（２）を有する。ここで、ａｉは、数１１７に示す通りである。
【数１１６】
0005606344.tif 000017
【数１１７】
0005606344.tif 000018
【００２３】
演算（１）：非退化双線形ペアリング
空間Ｖにおけるペアリングは、数１１８によって定義される。
【数１１８】
0005606344.tif 000019
これは、非退化双線形である。つまり、ｅ（ｓｘ，ｔｙ）＝ｅ（ｘ，ｙ）ｓｔであり、全てのｙ∈Ｖに対して、ｅ（ｘ，ｙ）＝１の場合、ｘ＝０である。また、全てのｉとｊとに対して、ｅ（ａｉ，ａｊ）＝ｅ（ｇ，ｇ）δｉ，ｊである。ここで、ｉ＝ｊであれば、δｉ，ｊ＝１であり、ｉ≠ｊであれば、δｉ，ｊ＝０である。また、ｅ（ｇ，ｇ）≠１∈ＧＴである。
【００２４】
演算（２）：ディストーション写像
数１１９に示す空間Ｖにおける線形変換φｉ，ｊは、数１２０を行うことができる。
【数１１９】
0005606344.tif 000020
【数１２０】
0005606344.tif 000021
ここで、線形変換φｉ，ｊをディストーション写像と呼ぶ。
【００２５】
以下の説明において、数１２１を、１λ（λ∈自然数）、Ｎ∈自然数、双線形ペアリング群のパラメータｐａｒａｍＧ：＝（ｑ，Ｇ，ＧＴ，ｇ，ｅ）の値を入力として、セキュリティパラメータがλであり、Ｎ次元の空間Ｖとする双対ペアリングベクトル空間のパラメータｐａｒａｍＶ：＝（ｑ，Ｖ，ＧＴ，Ａ，ｅ）の値を出力するアルゴリズムとする。
【数１２１】
0005606344.tif 000022
【００２６】
なお、ここでは、上述した対称双線形ペアリング群により、双対ペアリングベクトル空間を構成した場合について説明する。なお、非対称双線形ペアリング群により双対ペアリングベクトル空間を構成することも可能である。以下の説明を、非対称双線形ペアリング群により双対ペアリングベクトル空間を構成した場合に応用することは容易である。
【００２７】
＜第３．属性ベース署名方式を実現するための概念＞
＜第３−１．スパンプログラム＞
図１は、行列Ｍ＾の説明図である。
｛ｐ１，．．．，ｐｎ｝を変数の集合とする。Ｍ＾：＝（Ｍ，ρ）は、ラベル付けされた行列である。ここで、行列Ｍは、Ｆｑ上の（Ｌ行×ｒ列）の行列である。また、ρは、行列Ｍの各列に付されたラベルであり、｛ｐ１，．．．，ｐｎ，¬ｐ１，．．．，¬ｐｎ｝のいずれか１つのリテラルへ対応付けられる。なお、Ｍの全ての行に付されたラベルρi（ｉ＝１，．．．，Ｌ）がいずれか１つのリテラルへ対応付けられる。つまり、ρ：｛１，．．．，Ｌ｝→｛ｐ１，．．．，ｐｎ，¬ｐ１，．．．，¬ｐｎ｝である。
【００２８】
全ての入力列δ∈｛０，１｝ｎに対して、行列Ｍの部分行列Ｍδは定義される。行列Ｍδは、入力列δによってラベルρに値“１”が対応付けられた行列Ｍの行から構成される部分行列である。つまり、行列Ｍδは、δｉ＝１であるようなｐｉに対応付けられた行列Ｍの行と、δｉ＝０であるような¬ｐｉに対応付けられた行列Ｍの行とからなる部分行列である。
図２は、行列Ｍδの説明図である。なお、図２では、ｎ＝７，Ｌ＝６，ｒ＝５としている。つまり、変数の集合は、｛ｐ１，．．．，ｐ７｝であり、行列Ｍは（６行×５列）の行列である。また、図２において、ラベルρは、ρ１が¬ｐ２に、ρ２がｐ１に、ρ３がｐ４に、ρ４が¬ｐ５に、ρ５が¬ｐ３に、ρ６がｐ５にそれぞれ対応付けられているとする。
ここで、入力列δ∈｛０，１｝７が、δ１＝１，δ２＝０，δ３＝１，δ４＝０，δ５＝０，δ６＝１，δ７＝１であるとする。この場合、破線で囲んだリテラル（ｐ１，ｐ３，ｐ６，ｐ７，¬ｐ２，¬ｐ４，¬ｐ５）に対応付けられている行列Ｍの行からなる部分行列が行列Ｍδである。つまり、行列Ｍの１行目（Ｍ１），２行目（Ｍ２），４行目（Ｍ４）からなる部分行列が行列Ｍδである。
【００２９】
言い替えると、写像γ：｛１，．．．，Ｌ｝→｛０，１｝が、［ρ（ｊ）＝ｐｉ］∧［δｉ＝１］又は［ρ（ｊ）＝¬ｐｉ］∧［δｉ＝０］である場合、γ（ｊ）＝１であり、他の場合、γ（ｊ）＝０であるとする。この場合に、Ｍδ：＝（Ｍｊ）γ（ｊ）＝１である。ここで、Ｍｊは、行列Ｍのｊ番目の行である。
つまり、図２では、写像γ（ｊ）＝１（ｊ＝１，２，４）であり、写像γ（ｊ）＝０（ｊ＝３，５，６）である。したがって、（Ｍｊ）γ（ｊ）＝１は、Ｍ１，Ｍ２，Ｍ４であり、行列Ｍδである。
すなわち、写像γ（ｊ）の値が“０”であるか“１”であるかによって、行列Ｍのｊ番目の行が行列Ｍδに含まれるか否かが決定される。
【００３０】
１→∈ｓｐａｎ＜Ｍδ＞である場合に限り、スパンプログラムＭ＾は入力列δを受理し、他の場合には入力列δを拒絶する。つまり、入力列δによって行列Ｍ＾から得られる行列Ｍδの行を線形結合して１→が得られる場合に限り、スパンプログラムＭ＾は入力列δを受理する。なお、１→とは、各要素が値“１”である行ベクトルである。
例えば、図２の例であれば、行列Ｍの１，２，４行目からなる行列Ｍδの各行を線形結合して１→が得られる場合に限り、スパンプログラムＭ＾は入力列δを受理する。つまり、α１（Ｍ１）＋α２（Ｍ２）＋α４（Ｍ４）＝１→となるα１，α２，α４が存在する場合には、スパンプログラムＭ＾は入力列δを受理する。
【００３１】
ここで、ラベルρが正のリテラル｛ｐ１，．．．，ｐｎ｝にのみ対応付けられている場合、スパンプログラムはモノトーンと呼ばれる。一方、ラベルρがリテラル｛ｐ１，．．．，ｐｎ，¬ｐ１，．．．，¬ｐｎ｝に対応付けられている場合、スパンプログラムはノンモノトーンと呼ばれる。ここでは、スパンプログラムはノンモノトーンとする。そして、ノンモノトーンスパンプログラムを用いて、アクセスストラクチャ（ノンモノトーンアクセスストラクチャ）を構成する。
上述したように、スパンプログラムがモノトーンではなく、ノンモノトーンであることにより、スパンプログラムを利用して構成する属性ベース署名方式の利用範囲が広がる。
【００３２】
＜第３−２．属性ベクトルの内積とアクセスストラクチャ＞
ここでは、属性ベクトルの内積を用いて上述した写像γ（ｊ）を計算する。つまり、属性ベクトルの内積を用いて、行列Ｍのどの行を行列Ｍδに含めるかを決定する。
【００３３】
Ｕｔ（ｔ＝１，．．．，ｄでありＵｔ⊂｛０，１｝＊）は、部分全集合（ｓｕｂ−ｕｎｉｖｅｒｓｅ）であり、属性の集合である。そして、Ｕｔは、それぞれ部分全集合の識別情報（ｔ）と、ｎｔ次元ベクトル（ｖ→）とを含む。つまり、Ｕｔは、（ｔ，ｖ→）である。ここで、ｔ∈｛１，．．．，ｄ｝であり、ｖ→∈Ｆｑｎｔである。
【００３４】
Ｕｔ：＝（ｔ，ｖ→）をスパンプログラムＭ＾：＝（Ｍ，ρ）における変数ｐとする。つまり、ｐ：＝（ｔ，ｖ→）である。そして、変数（ｐ：＝（ｔ，ｖ→），（ｔ’，ｖ’→），．．．）としたスパンプログラムＭ＾：＝（Ｍ，ρ）をアクセスストラクチャＳとする。
つまり、アクセスストラクチャＳ：＝（Ｍ，ρ）であり、ρ：｛１，．．．，Ｌ｝→｛（ｔ，ｖ→），（ｔ’，ｖ’→），．．．，¬（ｔ，ｖ→），¬（ｔ’，ｖ’→），．．．｝である。
【００３５】
次に、Γを属性の集合とする。つまり、Γ：＝｛（ｔ，ｘ→ｔ）｜ｘ→ｔ∈Ｆｑｎｔ，１≦ｔ≦ｄ｝である。
アクセスストラクチャＳにΓが与えられた場合、スパンプログラムＭ＾：＝（Ｍ，ρ）に対する写像γ：｛１，．．．，Ｌ｝→｛０，１｝は、以下のように定義される。ｉ＝１，．．．，Ｌの各整数ｉについて、［ρ（ｉ）＝（ｔ，ｖ→ｉ）］∧［（ｔ，ｘ→ｔ）∈Γ］∧［ｖ→ｉ・ｘ→ｔ＝０］、又は、［ρ（ｉ）＝¬（ｔ，ｖ→ｉ）］∧［（ｔ，ｘ→ｔ）∈Γ］∧［ｖ→ｉ・ｘ→ｔ≠０］である場合、γ（ｊ）＝１であり、他の場合、γ（ｊ）＝０とする。
つまり、属性ベクトルｖ→とｘ→との内積に基づき、写像γが計算される。そして、上述したように、写像γにより、行列Ｍのどの行を行列Ｍδに含めるかが決定される。すなわち、属性ベクトルｖ→とｘ→との内積により、行列Ｍのどの行を行列Ｍδに含めるかが決定され、１→∈ｓｐａｎ＜（Ｍｉ）γ（ｉ）＝１＞である場合に限り、アクセスストラクチャＳ：＝（Ｍ，ρ）はΓを受理する。
【００３６】
ｔ∈｛１，．．．，ｄ｝の全ての整数ｔについて、ｎｔ＝２とし、ｘ→：＝（１，ｘ）、ｖ→：＝（ｖ，−１）とした場合、このアクセスストラクチャにおける内積述語の関係がより簡単な形式になる。
この場合、（ｔ，ｘ→ｔ）：＝（ｔ，（１，ｘ）），（ｔ，ｖ→ｉ）：＝（ｔ，（ｖｉ，−１））である。しかし、これらを簡単化して（ｔ，ｘｔ）、（ｔ，ｖｉ）と表す。すると、アクセスストラクチャＳは、ρ：＝｛１，．．．，Ｌ｝→｛（ｔ，ｖ），（ｔ’、ｖ’），．．．，¬（ｔ，ｖ），¬（ｔ’，ｖ’），．．．｝（ｖ，ｖ’，．．．∈Ｆｑ）であるＳ：＝（Ｍ，ρ）となる。また、属性の集合Γは、Γ：＝｛（ｔ，ｘｔ）｜ｘｔ∈Ｆｑ，１≦ｔ≦ｄ｝となる。
そして、アクセスストラクチャＳにΓが与えられた場合、スパンプログラムＭ＾：＝（Ｍ，ρ）に対する写像γ：｛１，．．．，Ｌ｝→｛０，１｝は、以下のように定義される。ｉ＝１，．．．，Ｌの各整数ｉについて、［ρ（ｉ）＝（ｔ，ｖｉ）］∧［（ｔ，ｘｔ）∈Γ］∧［ｖｉ＝ｘｔ］、又は、［ρ（ｉ）＝¬（ｔ，ｖｉ）］∧［（ｔ，ｘｔ）∈Γ］∧［ｖｉ≠ｘｔ］である場合、γ（ｊ）＝１であり、他の場合、γ（ｊ）＝０とする。
【００３７】
＜第３−３．秘密分散方式＞
アクセスストラクチャＳ：＝（Ｍ，ρ）に対する秘密分散方式について説明する。
なお、秘密分散方式とは、秘密情報を分散させ、意味のない分散情報にすることである。例えば、秘密情報ｓを１０個に分散させ、１０個の分散情報を生成する。ここで、１０個の分散情報それぞれは、秘密情報ｓの情報を有していない。したがって、ある１個の分散情報を手に入れても秘密情報ｓに関して何ら情報を得ることはできない。一方、１０個の分散情報を全て手に入れれば、秘密情報ｓを復元できる。
また、１０個の分散情報を全て手に入れなくても、一部だけ（例えば、８個）手に入れれば秘密情報ｓを復元できる秘密分散方式もある。このように、１０個の分散情報のうち８個で秘密情報ｓを復元できる場合を、８−ｏｕｔ−ｏｆ−１０と呼ぶ。つまり、ｎ個の分散情報のうちｔ個で秘密情報ｓを復元できる場合を、ｔ−ｏｕｔ−ｏｆ−ｎと呼ぶ。このｔを閾値と呼ぶ。
また、ｄ１，．．．，ｄ１０の１０個の分散情報を生成した場合に、ｄ１，．．．，ｄ８までの８個の分散情報であれば秘密情報ｓを復元できるが、ｄ３，．．．，ｄ１０までの８個の分散情報であれば秘密情報ｓを復元できないというような秘密分散方式もある。つまり、手に入れた分散情報の数だけでなく、分散情報の組合せに応じて秘密情報ｓを復元できるか否かを制御する秘密分散方式もある。
【００３８】
図３は、ｓ０の説明図である。図４は、ｓ→Ｔの説明図である。
行列Ｍを（Ｌ行×ｒ列）の行列とする。ｆ→Ｔを数１２２に示す列ベクトルとする。
【数１２２】
0005606344.tif 000023
数１２３に示すｓ０を共有される秘密情報とする。
【数１２３】
0005606344.tif 000024
また、数１２４に示すｓ→Ｔをｓ０のＬ個の分散情報のベクトルとする。
【数１２４】
0005606344.tif 000025
そして、分散情報ｓｉをρ（ｉ）に属するものとする。
【００３９】
アクセスストラクチャＳ：＝（Ｍ，ρ）がΓを受理する場合、つまりγ：｛１，．．．，Ｌ｝→｛０，１｝について１→∈ｓｐａｎ＜（Ｍｉ）γ（ｉ）＝１＞である場合、Ｉ⊆｛ｉ∈｛１，．．．，Ｌ｝｜γ（ｉ）＝１｝である定数｛αｉ∈Ｆｑ｜ｉ∈Ｉ｝が存在する。
これは、図２の例で、α１（Ｍ１）＋α２（Ｍ２）＋α４（Ｍ４）＝１→となるα１，α２，α４が存在する場合には、スパンプログラムＭ＾は入力列δを受理すると説明したことからも明らかである。つまり、α１（Ｍ１）＋α２（Ｍ２）＋α４（Ｍ４）＝１→となるα１，α２，α４が存在する場合には、スパンプログラムＭ＾が入力列δを受理するのであれば、α１（Ｍ１）＋α２（Ｍ２）＋α４（Ｍ４）＝１→となるα１，α２，α４が存在する。
そして、数１２５である。
【数１２５】
0005606344.tif 000026
なお、定数｛αｉ｝は、行列Ｍのサイズにおける多項式時間で計算可能である。
【００４０】
この実施の形態及び以下の実施の形態に係る属性ベース署名方式は、上述したように、スパンプログラムに内積述語と秘密分散方式とを適用してアクセスストラクチャを構成する。そのため、スパンプログラムにおける行列Ｍや、内積述語における属性情報ｘ及び属性情報ｖ（述語情報）を設計することにより、アクセス制御を自由に設計することができる。つまり、非常に高い自由度でアクセス制御の設計を行うことができる。なお、行列Ｍの設計は、秘密分散方式の閾値等の条件設計に相当する。
【００４１】
特に、この実施の形態及び以下の実施の形態に係る属性ベース署名方式におけるアクセスストラクチャは、ノンモノトーンスパンプログラムを用いたノンモノトーンアクセスストラクチャを構成する。つまり、この実施の形態及び以下の実施の形態に係る属性ベース署名方式は、ノンモノトーン述語を伴う署名方式である。そのため、アクセス制御の設計の自由度がより高くなる。
【００４２】
＜第３−４．衝突困難ハッシュ関数＞
衝突困難ハッシュ関数とは、出力が同じになる２つの入力を見つけることが困難なハッシュ関数である。
【００４３】
自然数λをセキュリティパラメータとする。アルゴリズムＧｂｐｇに関する衝突困難ハッシュ関数系Ｈと、多項式ｐｏｌｙ（λ）とについて以下の２つのことが言える。
１．鍵空間系は、λによって索引付けされる。各鍵空間は、ＫＨλによって示されるビット列における確率空間である。１λを入力とした場合の出力分布がＫＨλと等しい確率的多項式時間アルゴリズムが存在する。
２．ハッシュ関数系は、λと、ＫＨλからランダムに選択されたｈｋと、Ｄ：＝｛０，１｝ｐｏｌｙ（λ）とによって索引付けされる。ここで、各関数Ｈｈｋλ，Ｄは、Ｄの要素からＦｑＸへの写像である。なお、ｑは、アルゴリズムＧｂｐｇ（１λ）の出力ｐａｒａｍＧの最初の要素である。１λとｈｋとｄ∈Ｄとを入力として、Ｈｈｋλ，Ｄ（ｄ）を出力する決定的多項式時間アルゴリズムがある。
【００４４】
εを確率的多項式時間機械であるとする。全てのλに対して、数１２６を定義する。
【数１２６】
0005606344.tif 000027
どんな確率的多項式時間攻撃者εに対しても、ＡｄｖεＨ，ＣＲ（λ）が無視し得る程度であるなら、Ｈは衝突困難ハッシュ関数系である。
【００４５】
＜第４．属性ベース署名方式の構成＞
＜第４−１．属性ベース署名方式の基本構成＞
属性ベース署名方式は、Ｓｅｔｕｐ、ＫｅｙＧｅｎ、Ｓｉｇ、Ｖｅｒの４つのアルゴリズムを備える。
（Ｓｅｔｕｐ）
Ｓｅｔｕｐアルゴリズムは、セキュリティパラメータλと、属性のフォーマットｎ→：＝（（ｄ；ｎｔ，ｕｔ，ｗｔ，ｚｔ（ｔ＝１，．．．，ｄ））とを入力として、公開パラメータｐｋと、マスター鍵ｓｋとを出力する確率的アルゴリズムである。
（ＫｅｙＧｅｎ）
ＫｅｙＧｅｎアルゴリズムは、属性の集合であるΓ：＝｛（ｔ，ｘ→ｔ）｜ｘ→ｔ∈Ｆｑｎｔ＼{０→}，１≦ｔ≦ｄ｝と、公開パラメータｐｋと、マスター鍵ｓｋとを入力として、署名鍵ｓｋΓを出力する確率的アルゴリズムである。
（Ｓｉｇ）
Ｓｉｇアルゴリズムは、メッセージｍと、属性の集合Γを受理するようなアクセスストラクチャＳ：＝（Ｍ，ρ）と、署名鍵ｓｋΓと、公開パラメータｐｋとを入力として、署名ｓ→＊とメッセージｍとアクセスストラクチャＳとを含む署名データσを出力する確率的アルゴリズムである。
（Ｖｅｒ）
Ｖｅｒアルゴリズムは、署名データσと、公開パラメータｐｋとを入力として、ブール値１（受理）又は０（拒絶）を出力するアルゴリズムである。
【００４６】
属性ベース署名方式は、数１２７に示す全ての公開パラメータｐｋ及びマスター鍵ｓｋと、全てのメッセージｍと、全ての属性の集合Γと、数１２８に示す全ての署名鍵ｓｋΓと、属性の集合Γを受理する全てのアクセスストラクチャＳと、数１２９に示す全ての署名データσとに対して、確率１で１＝Ｖｅｒ（ｐｋ，ｍ，Ｓ，σ）が成立する。
【数１２７】
0005606344.tif 000028
【数１２８】
0005606344.tif 000029
【数１２９】
0005606344.tif 000030
【００４７】
＜第４−２．署名処理システム１０＞
上述した属性ベース署名方式のアルゴリズムを実行する署名処理システム１０について説明する。
図５は、属性ベース署名方式のアルゴリズムを実行する署名処理システム１０の構成図である。
署名処理システム１０は、鍵生成装置１００、署名装置２００、検証装置３００を備える。
鍵生成装置１００は、セキュリティパラメータλと、属性のフォーマットｎ→：＝（（ｄ；ｎｔ，ｕｔ，ｗｔ，ｚｔ（ｔ＝１，．．．，ｄ））とを入力としてＳｅｔｕｐアルゴリズムを実行して、公開パラメータｐｋとマスター鍵ｓｋとを生成する。そして、鍵生成装置１００は、生成した公開パラメータｐｋを公開する。また、鍵生成装置１００は、属性の集合であるΓ：＝｛（ｔ，ｘ→ｔ）｜ｘ→ｔ∈Ｆｑｎｔ＼{０→}，１≦ｔ≦ｄ｝と、公開パラメータｐｋと、マスター鍵ｓｋとを入力としてＫｅｙＧｅｎアルゴリズムを実行して、署名鍵ｓｋΓを生成して署名装置２００へ秘密裡に配布する。
署名装置２００は、メッセージｍと、属性の集合Γを受理するようなアクセスストラクチャＳ：＝（Ｍ，ρ）と、署名鍵ｓｋΓと、公開パラメータｐｋとを入力としてＳｉｇアルゴリズムを実行して、署名ｓ→＊とメッセージｍとアクセスストラクチャＳとを含む署名データσを生成する。署名装置２００は、生成した署名データσを検証装置３００へ送信する。
検証装置３００は、署名データσと、公開パラメータｐｋとを入力としてＶｅｒアルゴリズムを実行して、ブール値１（受理）又は０（拒絶）を出力する。
【００４８】
＜第４−３．属性ベース署名方式及び署名処理システム１０の詳細＞
図６から図１２に基づき、属性ベース署名方式、及び、属性ベース署名方式を実行する署名処理システム１０の機能と動作とについて説明する。
図６は、鍵生成装置１００の機能を示す機能ブロック図である。図７は、署名装置２００の機能を示す機能ブロック図である。図８は、検証装置３００の機能を示す機能ブロック図である。
図９と図１０とは、鍵生成装置１００の動作を示すフローチャートである。なお、図９はＳｅｔｕｐアルゴリズムの処理を示すフローチャートであり、図１０はＫｅｙＧｅｎアルゴリズムの処理を示すフローチャートである。図１１は、署名装置２００の動作を示すフローチャートであり、Ｓｉｇアルゴリズムの処理を示すフローチャートである。図１２は、検証装置３００の動作を示すフローチャートであり、Ｖｅｒアルゴリズムの処理を示すフローチャートである。
【００４９】
鍵生成装置１００の機能と動作とについて説明する。
図６に示すように、鍵生成装置１００は、マスター鍵生成部１１０、マスター鍵記憶部１２０、情報入力部１３０（第１情報入力部）、署名鍵生成部１４０、鍵配布部１５０（署名鍵送信部）を備える。
また、署名鍵生成部１４０は、乱数生成部１４１、鍵要素０生成部１４２、鍵要素ｔ生成部１４３、鍵要素ｄ＋１生成部１４４を備える。
【００５０】
なお、以下の説明において、Ｈ：＝（ＫＨλ，Ｈｈｋλ，Ｄ）は、上述した衝突困難ハッシュ関数系である。
【００５１】
まず、図９に基づき、鍵生成装置１００が実行するＳｅｔｕｐアルゴリズムの処理について説明する。
（Ｓ１０１：正規直交基底生成ステップ）
マスター鍵生成部１１０は、処理装置により、数１３０を計算して、ｐａｒａｍｎ→と、ｔ＝０，．．．，ｄ＋１の各整数ｔについて基底Ｂｔ及び基底Ｂ＊ｔとをランダムに生成する。
【数１３０】
0005606344.tif 000031
【００５２】
つまり、マスター鍵生成部１１０は以下の処理を実行する。
（１）マスター鍵生成部１１０は、入力装置により、セキュリティパラメータλ（１λ）と、属性のフォーマットｎ→：＝（（ｄ；ｎｔ，ｕｔ，ｗｔ，ｚｔ（ｔ＝０，．．．，ｄ＋１））とを入力する。ここで、ｄは１以上の整数である。ｔ＝０についてのｎｔは１であり、ｔ＝１，．．．，ｄまでの各整数ｔについてｎｔは１以上の整数であり、ｔ＝ｄ＋１についてのｎｔは２である。ｔ＝０，．．．，ｄ＋１までの各整数ｔについてｕｔ，ｗｔ，ｚｔは１以上の整数である。
（２）マスター鍵生成部１１０は、処理装置により、（１）で入力したセキュリティパラメータλ（１λ）を入力としてアルゴリズムＧｂｐｇを実行して、ランダムに双線形ペアリング群のパラメータｐａｒａｍＧ：＝（ｑ，Ｇ，ＧＴ，ｇ，ｅ）の値を生成する。
（３）マスター鍵生成部１１０は、処理装置により、乱数ψを生成する。また、マスター鍵生成部１１０は、ｔ＝０，．．．，ｄ＋１の各整数ｔについてＮｔにｎｔ＋ｕｔ＋ｗｔ＋ｚｔを設定する。
【００５３】
続いて、マスター鍵生成部１１０は、ｔ＝０，．．．，ｄ＋１の各整数ｔについて以下の（４）から（８）までの処理を実行する。
（４）マスター鍵生成部１１０は、処理装置により、（１）で入力したセキュリティパラメータλ（１λ）と、（３）で設定したＮｔと、（２）で生成したｐａｒａｍＧ：＝（ｑ，Ｇ，ＧＴ，ｇ，ｅ）の値とを入力としてアルゴリズムＧｄｐｖｓを実行して、双対ペアリングベクトル空間のパラメータｐａｒａｍＶｔ：＝（ｑ，Ｖｔ，ＧＴ，Ａｔ，ｅ）の値を生成する。
（５）マスター鍵生成部１１０は、処理装置により、（３）で設定したＮｔと、Ｆｑとを入力として、線形変換Ｘｔ：＝（χｔ，ｉ，ｊ）ｉ，ｊをランダムに生成する。なお、ＧＬは、Ｇｅｎｅｒａｌ  Ｌｉｎｅａｒの略である。つまり、ＧＬは、一般線形群であり、行列式が０でない正方行列の集合であり、乗法に関し群である。また、（χｔ，ｉ，ｊ）ｉ，ｊは、行列χｔ，ｉ，ｊの添え字ｉ，ｊに関する行列という意味であり、ここでは、ｉ，ｊ＝１，．．．，ｎｔである。
（６）マスター鍵生成部１１０は、処理装置により、乱数ψと線形変換Ｘｔとに基づき、（νｔ，ｉ，ｊ）ｉ，ｊ：＝ψ・（ＸｔＴ）−１を生成する。なお、（νｔ，ｉ，ｊ）ｉ，ｊも（χｔ，ｉ，ｊ）ｉ，ｊと同様に、行列νｔ，ｉ，ｊの添え字ｉ，ｊに関する行列という意味であり、ここでは、ｉ，ｊ＝１，．．．，ｎｔである。
（７）マスター鍵生成部１１０は、処理装置により、（５）で生成した線形変換Ｘｔに基づき、（４）で生成した標準基底Ａｔから基底Ｂｔを生成する。
（８）マスター鍵生成部１１０は、処理装置により、（６）で生成した（νｔ，ｉ，ｊ）ｉ，ｊに基づき、（４）で生成した標準基底Ａｔから基底Ｂ＊ｔを生成する。
（９）マスター鍵生成部１１０は、処理装置により、ｇＴにｅ（ｇ，ｇ）ψを設定する。また、マスター鍵生成部１１０は、ｐａｒａｍｎ→に（４）で生成した｛ｐａｒａｍＶｔ｝ｔ＝０，．．．，ｄ＋１と、ｇＴとを設定する。なお、ｔ＝０，．．．，ｄ＋１とｉ＝１，．．．，Ｎｔとの各整数ｔ，ｉについて、ｇＴ＝ｅ（ｂｔ，ｉ，ｂ＊ｔ，ｉ）である。
【００５４】
すなわち、（Ｓ１０１）で、マスター鍵生成部１１０は、数１３１に示すアルゴリズムＧｏｂを実行して、ｐａｒａｍｎ→と、ｔ＝０，．．．，ｄ＋１の各整数ｔについて基底Ｂｔ及び基底Ｂ＊ｔとを生成する。
【数１３１】
0005606344.tif 000032
【００５５】
（Ｓ１０２：ハッシュキー生成ステップ）
マスター鍵生成部１１０は、処理装置により、数１３２を計算して、ハッシュキーｈｋをランダムに生成する。
【数１３２】
0005606344.tif 000033
【００５６】
（Ｓ１０３：公開パラメータ生成ステップ）
マスター鍵生成部１１０は、処理装置により、基底Ｂ０の部分基底Ｂ＾０と、ｔ＝１，．．．，ｄの各整数ｔについて基底Ｂｔの部分基底Ｂ＾ｔと、基底Ｂｄ＋１の部分基底Ｂ＾ｄ＋１とを数１３３に示すように生成する。
【数１３３】
0005606344.tif 000034
また、マスター鍵生成部１１０は、処理装置により、ｔ＝１，．．．，ｄの各整数ｔについて基底Ｂ＊ｔの部分基底Ｂ＾＊ｔと、基底Ｂｄ＋１の部分基底Ｂ＾＊ｄ＋１とを数１３４に示すように生成する。
【数１３４】
0005606344.tif 000035
マスター鍵生成部１１０は、生成した部分基底Ｂ＾ｔ（ｔ＝０，．．．，ｄ＋１）と部分基底Ｂ＾＊ｔ（ｔ＝１，．．．，ｄ＋１）と、（Ｓ１０１）で入力されたセキュリティパラメータλ（１λ）と、（Ｓ１０１）で生成したｐａｒａｍｎ→と、（Ｓ１０２）で生成したハッシュキーｈｋと、基底ベクトルｂ＊０，１＋ｕ０＋１，．．．，ｂ＊０，１＋ｕ０＋ｗ０（ここでｕ０、ｗ０は、ｕ０，ｗ０のことである）とを合わせて、公開パラメータｐｋとする。
【００５７】
（Ｓ１０４：マスター鍵生成ステップ）
マスター鍵生成部１１０は、基底Ｂ＊０の基底ベクトルｂ＊０，１をマスター鍵ｓｋとする。
【００５８】
（Ｓ１０５：マスター鍵記憶ステップ）
マスター鍵記憶部１２０は、（Ｓ１０３）で生成した公開パラメータｐｋを記憶装置に記憶する。また、マスター鍵記憶部１２０は、（Ｓ１０４）で生成したマスター鍵ｓｋを記憶装置に記憶する。
【００５９】
つまり、（Ｓ１０１）から（Ｓ１０４）において、鍵生成装置１００は数１３５に示すＳｅｔｕｐアルゴリズムを実行して、公開パラメータｐｋとマスター鍵ｓｋとを生成する。そして、（Ｓ１０５）で、鍵生成装置１００は生成された公開パラメータｐｋとマスター鍵ｓｋとを記憶装置に記憶する。
なお、公開パラメータは、例えば、ネットワークを介して公開され、署名装置２００や検証装置３００が取得可能な状態にされる。
【数１３５】
0005606344.tif 000036
【００６０】
次に、図１０に基づき、鍵生成装置１００が実行するＫｅｙＧｅｎアルゴリズムの処理について説明する。
（Ｓ２０１：情報入力ステップ）
情報入力部１３０は、入力装置により、属性の集合Γ：＝｛（ｔ，ｘ→ｔ：＝（ｘｔ，ｉ）（ｉ＝１，．．．，ｎｔ））｜１≦ｔ≦ｄ｝を入力する。ｔは、１以上ｄ以下の全ての整数ではなく、１以上ｄ以下の少なくとも一部の整数であってもよい。
【００６１】
（Ｓ２０２：乱数生成ステップ）
乱数生成部１４１は、処理装置により、乱数δと、乱数φ０，φｔ，ι，φｄ＋１，１，ι，φｄ＋１，２，ι（ｔ＝１，．．．，ｄ；ι＝１，．．．，ｗｔ）とを数１３６に示すように生成する。
【数１３６】
0005606344.tif 000037
【００６２】
（Ｓ２０３：鍵要素０生成ステップ）
鍵要素０生成部１４２は、処理装置により、署名鍵ｓｋΓの要素である鍵要素ｋ＊０を数１３７に示すように生成する。
【数１３７】
0005606344.tif 000038
なお、上述したように、数１１３に示す基底Ｂと基底Ｂ＊とに対して、数１１４である。したがって、数１３７は、以下のように、基底Ｂ＊０の基底ベクトルの係数が設定されることを意味する。ここでは、表記を簡略化して、基底ベクトルｂ＊０，ｉのうち、ｉの部分のみで基底ベクトルを特定する。例えば、基底ベクトル１であれば、基底ベクトルｂ＊０，１を意味する。また、基底ベクトル１，．．．，３であれば、基底ベクトルｂ＊０，１，．．．，ｂ＊０，３を意味する。
基底Ｂ＊０の基底ベクトル１の係数として乱数δが設定される。基底ベクトル１＋１，．．．，１＋ｕ０の係数として０が設定される。基底ベクトル１＋ｕ０＋１，．．．，１＋ｕ０＋ｗ０の係数として乱数φ０，１，．．．，φ０，ｗｏ（ここで、ｗ０はｗ０のことである）が設定される。基底ベクトル１＋ｕ０＋ｗ０＋１，．．．，１＋ｕ０＋ｗ０＋ｚ０の係数として０が設定される。
【００６３】
（Ｓ２０４：鍵要素ｔ生成ステップ）
鍵要素ｔ生成部１４３は、処理装置により、属性の集合Γに含まれる（ｔ，ｘ→ｔ）の各整数ｔについて、署名鍵ｓｋΓの要素である鍵要素ｋ＊ｔを数１３８に示すように生成する。
【数１３８】
0005606344.tif 000039
つまり、数１３８は、数１３７と同様に、以下のように、基底Ｂ＊ｔの基底ベクトルの係数が設定されることを意味する。なお、ここでは、表記を簡略化して、基底ベクトルｂ＊ｔ，ｉのうち、ｉの部分のみで基底ベクトルを特定する。例えば、基底ベクトル１であれば、基底ベクトルｂ＊ｔ，１を意味する。また、基底ベクトル１，．．．，３であれば、基底ベクトルｂ＊ｔ，１，．．．，ｂ＊ｔ，３を意味する。
基底ベクトル１，．．．，ｎｔの係数としてδｘｔ，１，．．．，δｘｔ，ｎｔ（ここで、ｎｔはｎｔのことである）が設定される。基底ベクトルｎｔ＋１，．．．，ｎｔ＋ｕｔの係数として０が設定される。基底ベクトルｎｔ＋ｕｔ＋１，．．．，ｎｔ＋ｕｔ＋ｗｔの係数として乱数φｔ，１，．．．，φｔ，ｗｔ（ここで、ｗｔはｗｔのことである）が設定される。基底ベクトルｎｔ＋ｕｔ＋ｗｔ＋１，．．．，ｎｔ＋ｕｔ＋ｗｔ＋ｚｔの係数として０が設定される。
【００６４】
（Ｓ２０５：鍵要素ｄ＋１生成ステップ）
鍵要素ｄ＋１生成部１４４は、処理装置により、署名鍵ｓｋΓの要素である鍵要素ｋ＊ｄ＋１，１と鍵要素ｋ＊ｄ＋１，２とを数１３９に示すように生成する。
【数１３９】
0005606344.tif 000040
つまり、数１３９は、数１３７と同様に、以下のように、基底Ｂ＊ｄ＋１の基底ベクトルの係数が設定されることを意味する。なお、ここでは、表記を簡略化して、基底ベクトルｂ＊ｄ＋１，ｉのうち、ｉの部分のみで基底ベクトルを特定する。例えば、基底ベクトル１であれば、基底ベクトルｂ＊ｄ＋１，１を意味する。また、基底ベクトル１，．．．，３であれば、基底ベクトルｂ＊ｄ＋１，１，．．．，ｂ＊ｄ＋１，３を意味する。
まず、鍵要素ｋ＊ｄ＋１，１については、基底ベクトル１の係数として乱数δが設定される。基底ベクトル２の係数として０が設定される。基底ベクトル２＋１，．．．，２＋ｕｄ＋１の係数として０が設定される。基底ベクトル２＋ｕｄ＋１＋１，．．．，２＋ｕｄ＋１＋ｗｄ＋１の係数として乱数φｄ＋１，１，１，．．．，φｄ＋１，１，ｗｄ＋１（ここで、ｗｄ＋１はｗｄ＋１のことである）が設定される。基底ベクトル２＋ｕｄ＋１＋ｗｄ＋１＋１，．．．，２＋ｕｄ＋１＋ｗｄ＋１＋ｚｄ＋１の係数として０が設定される。
また、鍵要素ｋ＊ｄ＋１，２については、基底ベクトル１の係数として０が設定される。基底ベクトル２の係数として乱数δが設定される。基底ベクトル２＋１，．．．，２＋ｕｄ＋１の係数として０が設定される。基底ベクトル２＋ｕｄ＋１＋１，．．．，２＋ｕｄ＋１＋ｗｄ＋１の係数として乱数φｄ＋１，２，１，．．．，φｄ＋１，２，ｗｄ＋１（ここで、ｗｄ＋１はｗｄ＋１のことである）が設定される。基底ベクトル２＋ｕｄ＋１＋ｗｄ＋１＋１，．．．，２＋ｕｄ＋１＋ｗｄ＋１＋ｚｄ＋１の係数として０が設定される。
【００６５】
（Ｓ２０６：鍵配布ステップ）
鍵配布部１５０は、属性の集合Γと、鍵要素ｋ＊０と、鍵要素ｋ＊ｔ（ｔは属性の集合Γに含まれる（ｔ，ｘ→ｔ）におけるｔ）と、鍵要素ｋ＊ｄ＋１，１及び鍵要素ｋ＊ｄ＋１，２とを要素とする署名鍵ｓｋΓを、例えば通信装置によりネットワークを介して秘密裡に署名装置２００へ配布する。もちろん、署名鍵ｓｋΓは、他の方法により署名装置２００へ配布されてもよい。
【００６６】
つまり、（Ｓ２０１）から（Ｓ２０５）において、鍵生成装置１００は数１４０に示すＫｅｙＧｅｎアルゴリズムを実行して、署名鍵ｓｋΓを生成する。そして、（Ｓ２０６）で、鍵生成装置１００は生成された署名鍵ｓｋΓを署名装置２００へ配布する。
【数１４０】
0005606344.tif 000041
【００６７】
署名装置２００の機能と動作とについて説明する。
図７に示すように、署名装置２００は、署名鍵取得部２１０、情報入力部２２０（第２情報入力部）、スパンプログラム計算部２３０、補完係数計算部２４０、署名データ生成部２５０、署名データ送信部２６０（署名データ出力部）を備える。
また、情報入力部２２０は、述語情報入力部２２１、メッセージ入力部２２２を備える。また、署名データ生成部２５０は、乱数生成部２５１、署名要素０生成部２５２、署名要素ｉ生成部２５３、署名要素Ｌ＋１生成部２５４を備える。
【００６８】
図１１に基づき、署名装置２００が実行するＳｉｇアルゴリズムの処理について説明する。
（Ｓ３０１：署名鍵取得ステップ）
署名鍵取得部２１０は、例えば、通信装置によりネットワークを介して、鍵生成装置１００が生成した署名鍵ｓｋΓを取得する。また、署名鍵取得部２１０は、鍵生成装置１００が生成した公開パラメータｐｋを取得する。
【００６９】
（Ｓ３０２：情報入力ステップ）
述語情報入力部２２１は、入力装置により、アクセスストラクチャＳ：＝（Ｍ，ρ）を入力する。なお、行列Ｍは、Ｌ行×ｒ列の行列である。Ｌ，ｒは、１以上の整数である。
また、メッセージ入力部２２２は、入力装置により、署名を付すメッセージｍを入力する。
なお、アクセスストラクチャＳの行列Ｍの設定については、実現したいシステムの条件に応じて設定されるものである。
【００７０】
（Ｓ３０３：スパンプログラム計算ステップ）
スパンプログラム計算部２３０は、処理装置により、（Ｓ３０２）で入力したアクセスストラクチャＳが、（Ｓ３０１）で取得した署名鍵ｓｋΓに含まれる属性の集合Γを受理するか否かを判定する。
なお、アクセスストラクチャが属性の集合を受理するか否かの判定方法は、「第３．関数型暗号を実現するための概念」で説明した通りである。
スパンプログラム計算部２３０は、アクセスストラクチャＳが属性の集合Γを受理する場合（Ｓ３０３で受理）、処理を（Ｓ３０４）へ進める。一方、アクセスストラクチャＳが属性の集合Γを拒絶する場合（Ｓ３０３で拒絶）、処理を終了する。
【００７１】
（Ｓ３０４：補完係数計算ステップ）
補完係数計算部４３０は、処理装置により、数１４１となるＩと、Ｉに含まれる各整数ｉについて定数（補完係数）αｉとを計算する。
【数１４１】
0005606344.tif 000042
なお、Ｍｉとは、行列Ｍのｉ行目のことである。
【００７２】
（Ｓ３０５：乱数生成ステップ）
乱数生成部２５１は、処理装置により、乱数ξと、乱数βｉ（ｉ＝１，．．．，Ｌ）とを数１４２に示すように生成する。
【数１４２】
0005606344.tif 000043
【００７３】
（Ｓ３０６：署名要素０生成ステップ）
署名要素０生成部２５２は、処理装置により、署名データσの要素である署名要素ｓ＊０を数１４３に示すように生成する。
【数１４３】
0005606344.tif 000044
ここで、ｒ＊０は、数１４４（数１１０から数１１２及びこれらの数式の説明を参照）である。
【数１４４】
0005606344.tif 000045
【００７４】
（Ｓ３０７：署名要素ｉ生成ステップ）
署名要素ｉ生成部２５３は、処理装置により、ｉ＝１，．．．，Ｌの各整数ｉについて、署名データσの要素である署名要素ｓ＊ｉを数１４５に示すように生成する。
【数１４５】
0005606344.tif 000046
ここで、ｒ＊ｉは、数１４６（数１１０から数１１２及びこれらの数式の説明を参照）である。
【数１４６】
0005606344.tif 000047
また、γｉとｙ→ｉ：＝（ｙｉ，ｉ’（ｉ’＝１，．．．，ｎｔ）とは、数１４７である。
【数１４７】
0005606344.tif 000048
【００７５】
（Ｓ３０８：署名要素Ｌ＋１生成ステップ）
署名要素Ｌ＋１生成部２５４は、処理装置により、署名データσの要素である署名要素ｓ＊Ｌ＋１を数１４８に示すように生成する。
【数１４８】
0005606344.tif 000049
ここで、ｒ＊Ｌ＋１は、数１４９（数１１０から数１１２及びこれらの数式の説明を参照）である。
【数１４９】
0005606344.tif 000050
【００７６】
（Ｓ３０９：データ送信ステップ）
署名データ送信部２６０は、署名要素ｓ＊０と、署名要素ｓ＊ｉ（ｉ＝１，．．．，Ｌ）と、署名要素ｓ＊Ｌ＋１と、メッセージｍと、アクセスストラクチャＳ：＝（Ｍ，ρ）とを含む署名データσを、例えば通信装置によりネットワークを介して検証装置３００へ送信する。もちろん、署名データσは、他の方法により検証装置３００へ送信されてもよい。
【００７７】
つまり、（Ｓ３０１）から（Ｓ３０８）において、署名装置２００は数１５０に示すＳｉｇアルゴリズムを実行して、署名データσを生成する。そして、（Ｓ３０９）で、署名装置２００は生成された署名データσを検証装置３００へ配布する。
【数１５０】
0005606344.tif 000051
【００７８】
検証装置３００の機能と動作とについて説明する。
図８に示すように、検証装置３００は、公開パラメータ取得部３１０、データ受信部３２０、検証鍵生成部３３０、ペアリング演算部３４０を備える。
また、検証鍵生成部３３０は、乱数生成部３３１、ｆベクトル生成部３３２、ｓベクトル生成部３３３、検証要素０生成部３３４、検証要素ｉ生成部３３５、検証要素Ｌ＋１生成部３３６を備える。
【００７９】
図１２に基づき、検証装置３００が実行するＶｅｒアルゴリズムの処理について説明する。
（Ｓ４０１：公開パラメータ取得ステップ）
公開パラメータ取得部３１０は、例えば、通信装置によりネットワークを介して、鍵生成装置１００が生成した公開パラメータｐｋを取得する。
【００８０】
（Ｓ４０２：署名データ受信ステップ）
データ受信部３２０は、例えば、通信装置によりネットワークを介して、署名装置２００が送信した署名データσを受信する。
【００８１】
（Ｓ４０３：ｆベクトル生成ステップ）
ｆベクトル生成部３３２は、処理装置により、ｒ個の要素を有するベクトルｆ→を数１５１に示すようにランダムに生成する。
【数１５１】
0005606344.tif 000052
【００８２】
（Ｓ４０４：ｓベクトル生成ステップ）
ｓベクトル生成部３３３は、処理装置により、（Ｓ４０２）で受信した署名データσに含まれるアクセスストラクチャＳの（Ｌ行×ｒ列）の行列Ｍと、（Ｓ４０３）で生成したｒ個の要素を有するベクトルｆ→とに基づき、ベクトルｓ→Ｔを数１５２に示すように生成する。
【数１５２】
0005606344.tif 000053
また、ｓベクトル生成部３３３は、処理装置により、（Ｓ４０３）で生成したベクトルｆ→に基づき、値ｓ０を数１５３に示すように生成する。なお、１→は、全ての要素が値１のベクトルである。
【数１５３】
0005606344.tif 000054
【００８３】
（Ｓ４０５：乱数生成ステップ）
乱数生成部３３１は、処理装置により、ｉ＝１，．．．，ｚ0の各整数ｉについて乱数η０，ｉと、ｉ＝１，．．．，ｚｄ＋１の各整数ｉについて乱数ηＬ＋１，ｉと、乱数θＬ＋１と、乱数ｓＬ＋１とを数１５４に示すように生成する。
【数１５４】
0005606344.tif 000055
【００８４】
（Ｓ４０６：検証要素０生成ステップ）
検証要素０生成部３３４は、処理装置により、検証鍵の要素である検証要素ｃ０を数１５５に示すように生成する。
【数１５５】
0005606344.tif 000056
なお、上述したように、数１１３に示す基底Ｂと基底Ｂ＊とに対して、数１１４である。したがって、数１５５は、以下のように、基底Ｂ０の基底ベクトルの係数が設定されることを意味する。こでは、表記を簡略化して、基底ベクトルｂ０，ｉのうち、ｉの部分のみで基底ベクトルを特定する。例えば、基底ベクトル１であれば、基底ベクトルｂ０，１を意味する。また、基底ベクトル１，．．．，３であれば、基底ベクトルｂ０，１，．．．，ｂ０，３を意味する。
基底Ｂ０の基底ベクトル１の係数として−ｓ０−ｓＬ＋１が設定される。基底ベクトル１＋１，．．．，１＋ｕ０＋ｗ０の係数として０が設定される。基底ベクトル１＋ｕ０＋ｗ０＋１，．．．，１＋ｕ０＋ｗ０＋ｚ０の係数として乱数η０，１，．．．，η０，ｚ０（ここで、ｚ０はｚ０のことである）が設定される。
【００８５】
（Ｓ４０７：検証要素ｉ生成ステップ）
検証要素ｉ生成部３３５は、処理装置により、ｉ＝１，．．．，Ｌの各整数ｉについて、検証鍵の要素である検証要素ｃｉを数１５６に示すように生成する。
【数１５６】
0005606344.tif 000057
つまり、数１５６は、数１５５と同様に、以下のように、基底Ｂｔの基底ベクトルの係数が設定されることを意味する。なお、ここでは、表記を簡略化して、基底ベクトルｂｔ，ｉのうち、ｉの部分のみで基底ベクトルを特定する。例えば、基底ベクトル１であれば、基底ベクトルｂｔ，１を意味する。また、基底ベクトル１，．．．，３であれば、基底ベクトルｂｔ，１，．．．，ｂｔ，３を意味する。
ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には、基底ベクトル１の係数としてｓｉ＋θｉｖｉ，１が設定される。基底ベクトル２，．．．，ｎｔの係数としてθｉｖｉ，２，．．．，θｉｖｉ，ｎｔ（ここで、ｎｔはｎｔのことである）が設定される。基底ベクトルｎｔ＋１，．．．，ｎｔ＋ｕｔ＋ｗｔの係数として０が設定される。基底ベクトルｎｔ＋ｕｔ＋ｗｔ＋１，．．．，ｎｔ＋ｕｔ＋ｗｔ＋ｚｔの係数としてηｉ，１，．．．，ηｉ，ｚｔ（ここで、ｚｔはｚｔのことである）が設定される。
一方、ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には、基底ベクトル１，．．．，ｎｔの係数としてｓｉｖｉ，１，．．．，θｉｖｉ，ｎｔ（ここで、ｎｔはｎｔのことである）が設定される。基底ベクトル２の係数として−ｓｉが設定される。基底ベクトルｎｔ＋１，．．．，ｎｔ＋ｕｔ＋ｗｔの係数として０が設定される。基底ベクトルｎｔ＋ｕｔ＋ｗｔ＋１，．．．，ｎｔ＋ｕｔ＋ｗｔ＋ｚｔの係数としてηｉ，１，．．．，ηｉ，ｚｔ（ここで、ｚｔはｚｔのことである）が設定される。
なお、θｉ及びηｉ，ｉ’（ｉ’＝１，．．．，ｚｔ）は乱数生成部２３３によって生成される一様乱数である。
【００８６】
（Ｓ４０８：署名要素Ｌ＋１生成ステップ）
検証要素Ｌ＋１生成部３３６は、処理装置により、検証鍵の要素である検証要素ｃＬ＋１を数１５７に示すように生成する。
【数１５７】
0005606344.tif 000058
つまり、数１５７は、数１５５と同様に、以下のように、基底Ｂｄ＋１の基底ベクトルの係数が設定されることを意味する。なお、ここでは、表記を簡略化して、基底ベクトルｂｄ＋１，ｉのうち、ｉの部分のみで基底ベクトルを特定する。例えば、基底ベクトル１であれば、基底ベクトルｂｄ＋１，１を意味する。また、基底ベクトル１，．．．，３であれば、基底ベクトルｂｄ＋１，１，．．．，ｂｄ＋１，３を意味する。
基底ベクトル１の係数としてｓＬ＋１−θＬ＋１・Ｈｈｋλ，Ｄ（ｍ｜｜Ｓ）が設定される。基底ベクトル２の係数としてθＬ＋１が設定される。基底ベクトル２＋１，．．．，２＋ｕｄ＋１＋ｗｄ＋１の係数として０が設定される。基底ベクトル２＋ｕｄ＋１＋ｗｄ＋１＋１，．．．，２＋ｕｄ＋１＋ｗｄ＋１＋ｚｄ＋１の係数として乱数ηＬ＋１，１，．．．，ηＬ＋１，ｚｄ＋１（ここで、ｚｄ＋１はｚｄ＋１のことである）が設定される。
【００８７】
（Ｓ４０９：第１ペアリング演算ステップ）
ペアリング演算部３４０は、処理装置により、ペアリング演算ｅ（ｂ０，１，ｓ＊０）を計算する。
ペアリング演算ｅ（ｂ０，１，ｓ＊０）を計算した結果が値１であれば、ペアリング演算部３４０は、署名の検証に失敗したことを示す値０を出力して、処理を終了する。一方、ペアリング演算ｅ（ｂ０，１，ｓ＊０）を計算した結果が値１でなければ、ペアリング演算部３４０は、処理をＳ４１０へ進める。
【００８８】
（Ｓ４１０：第２ペアリング演算ステップ）
ペアリング演算部３４０は、処理装置により、数１５８に示すペアリング演算を計算する。
【数１５８】
0005606344.tif 000059
数１５８に示すペアリング演算を計算した結果が値１であれば、ペアリング演算部３４０は、署名の検証に成功したことを示す値１を出力する。一方、その他の値であれば、ペアリング演算部３４０は、署名の検証に失敗したことを示す値０を出力する。
なお、数１５９に示すように、数１５８を計算することにより、署名データσが正当なものであれば、値１が得られる。
【数１５９】
0005606344.tif 000060
【００８９】
つまり、（Ｓ４０１）から（Ｓ４１０）において、検証装置３００は、数１６０に示すＶｅｒアルゴリズムを実行して、署名データσを検証する。
【数１６０】
0005606344.tif 000061
【００９０】
以上のように、実施の形態１に係る署名処理システム１０は、スパンプログラムと内積述語と秘密分散とを用いて構成したアクセスストラクチャＳを用いて、属性ベース署名方式を実現する。特に、実施の形態１に係る署名処理システム１０は、ノンモノトーンスパンプログラムを用いるため、ノンモノトーン述語を伴う属性ベース署名方式を実現する。
【００９１】
実施の形態１に係る署名処理システム１０が実現する属性ベース署名方式は、安全性が高く、プライバシー要件を満たしている。なお、安全性が高いとは、署名を他人に偽造される可能性が低いということである。
【００９２】
なお、（Ｓ４０９）でペアリング演算ｅ（ｂ０，１，ｓ＊０）を行うのは、署名データσが、秘密である（マスター鍵ｓｋである）基底ベクトルｂ＊０，１を用いることなく生成された署名データでないことを確認するためである。
ペアリング演算ｅ（ｂ０，１，ｓ＊０）は、署名要素ｓ＊０に基底ベクトルｂ＊０，１が含まれているか、つまり基底ベクトルｂ＊０，１の係数として０以外の値が設定されているかを確認する演算である。ペアリング演算ｅ（ｂ０，１，ｓ＊０）＝１であれば、署名要素ｓ＊０では基底ベクトルｂ＊０，１の係数として０が設定されており、署名データσは、基底ベクトルｂ＊０，１を用いることなく生成された署名データであるということになる。したがって、この場合、署名データσは不正なものであると認められる。
【００９３】
なお、上記説明において、ｕｔ、ｗｔ、ｚｔ（ｔ＝０，．．．，ｄ＋１）の次元は、安全性を高めるために設けた次元である。したがって、安全性が低くなってしまうが、ｕｔ、ｗｔ、ｚｔ（ｔ＝０，．．．，ｄ＋１）をそれぞれ０として、ｕｔ、ｗｔ、ｚｔ（ｔ＝０，．．．，ｄ＋１）の次元を設けなくてもよい。
【００９４】
また、上記説明では、（Ｓ１０１）でＮｔにｎｔ＋ｕｔ＋ｗｔ＋ｚｔを設定した。しかし、ｎｔ＋ｕｔ＋ｗｔ＋ｚｔをｎｔ＋ｎｔ＋ｎｔ＋１として、Ｎｔに３ｎｔ＋１を設定してもよい。ここで、ｎ０は１であり、ｎｔ（ｔ＝１，．．．，ｄ＋１）は２である。
この場合、数１３５に示すＳｅｔｕｐアルゴリズムは、数１６１のように書き換えられる。なお、Ｇｏｂは数１６２のように書き換えられる。
【数１６１】
0005606344.tif 000062
【数１６２】
0005606344.tif 000063
また、数１４０に示すＫｅｙＧｅｎアルゴリズムは、数１６３のように書き換えられる。
【数１６３】
0005606344.tif 000064
また、数１５０に示すＳｉｇアルゴリズムは、数１６４のように書き換えられる。
【数１６４】
0005606344.tif 000065
また、数１５９に示すＶｅｒアルゴリズムは、数１６５のように書き換えられる。
【数１６５】
0005606344.tif 000066
【００９５】
また、Ｓｅｔｕｐアルゴリズムは、署名処理システム１０のセットアップ時に一度実行すればよく、署名鍵を生成する度に実行する必要はない。また、上記説明では、ＳｅｔｕｐアルゴリズムとＫｅｙＧｅｎアルゴリズムとを鍵生成装置１００が実行するとしたが、ＳｅｔｕｐアルゴリズムとＫｅｙＧｅｎアルゴリズムとをそれぞれ異なる装置が実行するとしてもよい。
【００９６】
実施の形態２．
この実施の形態では、「分散多管理者属性ベース署名方式」について説明する。
第１に、「分散多管理者（Ｄｅｃｅｎｔｒａｌｉｚｅｄ  Ｍｕｌｔｉ−Ａｕｔｈｏｒｉｔｙ）」という概念について説明する。
第２に、この実施の形態に係る「分散多管理者属性ベース署名方式」を説明する。まず、「分散多管理者属性ベース署名方式」の基本構成について説明する。次に、「分散多管理者属性ベース署名方式」を実現する「署名処理システム１０」の基本構成について説明する。そして、この実施の形態に係る「分散多管理者属性ベース署名方式」及び「署名処理システム１０」について詳細に説明する。
【００９７】
＜第１．分散多管理者という概念＞
まず、「多管理者」について説明する。多管理者とは、署名鍵を生成する管理者が複数存在するという意味である。
一般的な署名処理システムでは、システム全体のセキュリティはある１つの機関（管理者）に依存している。例えば、実施の形態１で説明した署名処理システム１０であれば、システム全体のセキュリティは、マスター鍵ｓｋを生成する鍵生成装置１００に依存している。鍵生成装置１００のセキュリティが破られたり、マスター鍵ｓｋが漏洩した場合、署名処理システム１０は全体が機能しなくなる。
しかし、多管理者とすることで、一部の管理者のセキュリティが破られたり、一部の管理者の秘密鍵（マスター鍵）が漏洩した場合であっても、署名処理システムの一部だけが機能しなくなるだけであり、他の部分については正常に機能する状態とすることができる。
【００９８】
図１３は、多管理者の説明図である。
図１３では、役所が、住所、電話番号、年齢等の属性について管理する。また、警察が、運転免許の種別等の属性について管理する。また、会社Ａが、会社Ａにおける役職、会社Ａにおける所属等の属性について管理する。そして、役所が管理する属性を示すための署名鍵１は役所が発行し、警察が管理する属性を示すための署名鍵２は警察が発行し、会社Ａが管理する属性を示すための署名鍵３は会社Ａが発行する。
署名をする署名者は、役所、警察、会社Ａ等の各管理者が発行した署名鍵１，２，３を合わせた署名鍵用い、署名データを生成する。つまり、署名者から見た場合、各管理者から発行された署名鍵を合わせたものが、自分に発行された１つの署名鍵となる。
例えば、会社Ａのマスター鍵が漏洩した場合、署名処理システムは、会社Ａの属性に関しては機能しなくなるが、他の管理者が管理する属性に関しては機能する。つまり、署名データの検証ができた場合、会社Ａが管理する属性については信頼できないが、他の属性については信頼することができる。
【００９９】
また、図１３の例からも分かるように、属性ベース署名では、複数の管理者が存在し、各管理者が属性におけるあるカテゴリー（部分空間）又は定義域を管理し、そのカテゴリーにおけるユーザの属性についての署名鍵（の一片）を発行することが自然である。
【０１００】
次に、「分散（Ｄｅｃｅｎｔｒａｌｉｚｅｄ）」について説明する。分散とは、どの機関も管理者となることができ、他の機関とやりとりすることなく、署名鍵（の一片）を発行することができ、各ユーザが他の機関とやりとりすることなく、管理者から署名鍵（の一片）を取得できることである。
例えば、中央管理者がいる場合、分散とは言えない。中央管理者とは、他の管理者よりも上位の管理者である。中央管理者のセキュリティが破られた場合、全ての管理者のセキュリティが破られてしまう。
【０１０１】
＜第２．分散多管理者属性ベース署名方式の構成＞
＜第２−１．分散多管理者属性ベース署名方式の基本構成＞
分散多管理者属性ベース署名方式は、ＧＳｅｔｕｐ、ＡＳｅｔｕｐ、ＡｔｔｒＧｅｎ、Ｓｉｇ、Ｖｅｒの４つのアルゴリズムを備える。
（ＧＳｅｔｕｐ）
ＧＳｅｔｕｐアルゴリズムは、セキュリティパラメータλが入力され、公開パラメータｇｐａｒａｍを出力する確率的アルゴリズムである。
（ＡＳｅｔｕｐ）
ＡＳｅｔｕｐアルゴリズムは、公開パラメータｇｐａｒａｍと、管理者の識別情報ｔとを入力として、管理者秘密鍵ａｓｋｔと、管理者公開パラメータａｐｋｔとを出力する確率的アルゴリズムである。
（ＡｔｔｒＧｅｎ）
ＡｔｔｒＧｅｎアルゴリズムは、公開パラメータｇｐａｒａｍと、管理者の識別情報ｔと、管理者秘密鍵ａｓｋｔと、ユーザの識別情報ｇｉｄと、属性ｘ→ｔ：＝（ｘｔ，ｉ）（ｉ＝１，．．．，ｎｔ）∈Ｆｑとを入力として、署名鍵ｕｓｋｇｉｄ，（ｔ，ｘｔ）を出力する確率的アルゴリズムである。
（Ｓｉｇ）
Ｓｉｇアルゴリズムは、公開パラメータｇｐａｒａｍと、署名鍵ｕｓｋｇｉｄ，（ｔ，ｘｔ）と、メッセージｍと、アクセスストラクチャＳ：＝（Ｍ，ρ）とを入力として、署名ｓ→＊とメッセージｍとアクセスストラクチャＳとを含む署名データσを出力する確率的アルゴリズムである。
（Ｖｅｒ）
Ｖｅｒアルゴリズムは、署名データσと、公開パラメータｇｐａｒａｍと、管理者公開パラメータａｐｋｔとを入力として、ブール値１（受理）又は０（拒絶）を出力するアルゴリズムである。
【０１０２】
＜第２−２．署名処理システム１０＞
上述した分散多管理者属性ベース署名方式のアルゴリズムを実行する署名処理システム１０について説明する。
図１４は、分散多管理者属性ベース署名方式のアルゴリズムを実行する署名処理システム１０の構成図である。
署名処理システム１０は、複数の鍵生成装置１００、署名装置２００、検証装置３００を備える。
いずれか（１つ）の鍵生成装置１００は、セキュリティパラメータλを入力としてＧＳｅｔｕｐアルゴリズムを実行して、公開パラメータｇｐａｒａｍを生成する。そして、その鍵生成装置１００は、生成した公開パラメータｇｐａｒａｍを公開する。
各鍵生成装置１００は、公開パラメータｇｐａｒａｍと、その鍵生成装置１００に割り当てられた識別情報ｔとを入力としてＡＳｅｔｕｐアルゴリズムを実行して、管理者秘密鍵ａｓｋｔと、管理者公開パラメータａｐｋｔとを生成する。そして、各鍵生成装置１００は、公開パラメータｇｐａｒａｍと、その鍵生成装置１００に割り当てられた識別情報ｔと、管理者秘密鍵ａｓｋｔと、ユーザの識別情報ｇｉｄと、属性ｘｔ：＝（ｘｔ，ｉ）（ｉ＝１，．．．，ｎｔ）∈Ｆｑとを入力としてＡｔｔｒＧｅｎアルゴリズムを実行して、署名鍵ｕｓｋｇｉｄ，（ｔ，ｘｔ）を生成して署名装置２００へ秘密裡に配布する。
署名装置２００は、公開パラメータｇｐａｒａｍと、署名鍵ｕｓｋｇｉｄ，（ｔ，ｘｔ）と、メッセージｍと、アクセスストラクチャＳ：＝（Ｍ，ρ）とを入力としてＳｉｇアルゴリズムを実行して、署名ｓ→＊とメッセージｍとアクセスストラクチャＳとを含む署名データσを生成する。署名装置２００は、生成した署名データσを検証装置３００へ送信する。
検証装置３００は、署名データσと、公開パラメータｇｐａｒａｍと、管理者公開パラメータａｐｋｔとを入力としてＶｅｒアルゴリズムを実行して、ブール値１（受理）又は０（拒絶）を出力する。
【０１０３】
＜第２−３．分散多管理者属性ベース署名方式及び署名処理システム１０の詳細＞
図１５から図２２に基づき、分散多管理者属性ベース署名方式、及び、分散多管理者属性ベース署名方式を実行する署名処理システム１０の機能と動作とについて説明する。
図１５は、各鍵生成装置１００の機能を示す機能ブロック図である。図１６は、署名装置２００の機能を示す機能ブロック図である。図１７は、検証装置３００の機能を示す機能ブロック図である。
図１８から図２０は、鍵生成装置１００の動作を示すフローチャートである。なお、図１８はＧＳｅｔｕｐアルゴリズムの処理を示すフローチャートであり、図１９はＡＳｅｔｕｐアルゴリズムの処理を示すフローチャートであり、図２０はＡｔｔｒＧｅｎアルゴリズムの処理を示すフローチャートである。図２１は、署名装置２００の動作を示すフローチャートであり、Ｓｉｇアルゴリズムの処理を示すフローチャートである。図２２は、検証装置３００の動作を示すフローチャートであり、Ｖｅｒアルゴリズムの処理を示すフローチャートである。
【０１０４】
鍵生成装置１００の機能と動作とについて説明する。
図１５に示すように、鍵生成装置１００は、マスター鍵生成部１１０、マスター鍵記憶部１２０、情報入力部１３０（第１情報入力部）、署名鍵生成部１４０、鍵配布部１５０（署名鍵送信部）を備える。
また、マスター鍵生成部１１０は、グローバルパラメータ生成部１１１、管理者秘密鍵生成部１１２を備える。署名鍵生成部１４０は、乱数生成部１４１、鍵要素生成部１４５を備える。
【０１０５】
まず、図１８に基づき、鍵生成装置１００が実行するＧＳｅｔｕｐアルゴリズムの処理について説明する。なお、上述したように、ＧＳｅｔｕｐアルゴリズムは、複数の鍵生成装置１００のうち１つの鍵生成装置１００が実行すればよい。
（Ｓ５０１：セキュリティパラメータ入力ステップ）
グローバルパラメータ生成部１１１は、入力装置により、セキュリティパラメータλ（１λ）を入力する。
【０１０６】
（Ｓ５０２：双線形ペアリング群生成ステップ）
グローバルパラメータ生成部１１１は、処理装置により、Ｓ５０１で入力したセキュリティパラメータλ（１λ）を入力としてアルゴリズムＧｂｐｇを実行して、ランダムに双線形ペアリング群のパラメータｐａｒａｍＧ：＝（ｑ，Ｇ，ＧＴ，ｇ，ｅ）の値を生成する。
【０１０７】
（Ｓ５０３：パラメータ生成ステップ）
ハッシュ関数Ｈ１とＨ２とを、数１６６に示すハッシュ関数とする。
【数１６６】
0005606344.tif 000067
グローバルパラメータ生成部１１１は、処理装置により、数１６７に示すグローバルパラメータｇｐａｒａｍの要素Ｇ０，Ｇ１，Ｇ２，Ｇ３，Ｇ４を生成する。
【数１６７】
0005606344.tif 000068
また、グローバルパラメータ生成部１１１は、ｇｔ：＝ｅ（Ｇ０，Ｇ１）、ｇ４：＝ｅ（Ｇ０，Ｇ４）とする。
【０１０８】
（Ｓ５０４：パラメータ記憶ステップ）
マスター鍵記憶部１２０は、（Ｓ５０２）で生成したｐａｒａｍＧと、（Ｓ５０３）でグローバルパラメータ生成部１１１が設定したハッシュ関数Ｈ１，Ｈ２と、生成した要素Ｇ０，Ｇ１，Ｇ２，Ｇ３，Ｇ４と、設定した値ｇｔ，ｇ４とを、グローバルパラメータｇｐａｒａｍとして記憶装置に記憶する。
【０１０９】
つまり、（Ｓ５０１）から（Ｓ５０３）において、鍵生成装置１００は数１６８に示すＧＳｅｔｕｐアルゴリズムを実行して、グローバルパラメータｇｐａｒａｍを生成する。そして、（Ｓ５０４）で、鍵生成装置１００は生成されたグローバルパラメータｇｐａｒａｍを記憶装置に記憶する。
なお、グローバルパラメータｇｐａｒａｍは、例えば、ネットワークを介して公開され、他の鍵生成装置１００や署名装置２００や検証装置３００が取得可能な状態にされる。
【数１６８】
0005606344.tif 000069
【０１１０】
次に、図１９に基づき、鍵生成装置１００が実行するＡＳｅｔｕｐアルゴリズムの処理について説明する。なお、上述したように、ＡＳｅｔｕｐアルゴリズムは、複数の鍵生成装置１００全てが実行してもよいし、複数の鍵生成装置１００のうち一部の鍵生成装置１００だけが実行してもよい。
（Ｓ６０１：情報入力ステップ）
情報入力部１３０は、入力装置により、自己（その鍵生成装置１００）に割り当てられた識別情報ｔを入力する。なお、各鍵生成装置１００には、それぞれ異なる識別情報ｔが割り当てられている。
また、情報入力部１３０は、例えば、通信装置によりネットワークを介して、グローバルパラメータｇｐａｒａｍを取得する。なお、自己がグローバルパラメータｇｐａｒａｍを生成した鍵生成装置１００である場合には、グローバルパラメータｇｐａｒａｍをマスター鍵記憶部１２０から読み出せばよい。
【０１１１】
（Ｓ６０２：空間生成ステップ）
管理者秘密鍵生成部１１２は、処理装置により、セキュリティパラメータλ（１λ）と、Ｎｔ＝２ｎｔ＋２＋ｕｔ＋ｗｔ＋ｚｔと、ｐａｒａｍＧ：＝（ｑ，Ｇ，ＧＴ，ｇ，ｅ）の値とを入力としてアルゴリズムＧｄｐｖｓを実行して、双対ペアリングベクトル空間のパラメータｐａｒａｍＶｔ：＝（ｑ，Ｖｔ，ＧＴ，Ａｔ，ｅ）の値を生成する。
なお、ｎｔ，ｕｔ，ｗｔ，ｚｔは、１以上の整数である。
【０１１２】
（Ｓ６０３：基底Ｕ生成ステップ）
管理者秘密鍵生成部１１２は、処理装置により、ｌ＝１，．．．，４の各整数ｌについて、基底Ｕｌを数１６９に示すように生成する。
【数１６９】
0005606344.tif 000070
【０１１３】
（Ｓ６０４：線形変換生成ステップ）
管理者秘密鍵生成部１１２は、処理装置により、ｎｔ＋ｕｔ＋ｗｔ＋ｚｔと、Ｆｑとを入力として、線形変換Ｘｔ：＝（χｔ，ｉ，ｊ）ｉ，ｊを数１７０に示すようにランダムに生成する。
【数１７０】
0005606344.tif 000071
【０１１４】
（Ｓ６０５：基底Ｂ生成ステップ）
管理者秘密鍵生成部１１２は、処理装置により、基底Ｂｔ及び基底Ｂ＊ｔを数１７１に示すように生成する。
【数１７１】
0005606344.tif 000072
また、管理者秘密鍵生成部１１２は、π，π’，μ∈Ｆｑを、Ｇ２＝πＧ１，Ｇ３＝π’Ｇ１，Ｇ３＝μＧ１となる値とする。すると、数１７２となる。
【数１７２】
0005606344.tif 000073
【０１１５】
（Ｓ６０６：基底Ｂ＾生成ステップ）
管理者秘密鍵生成部１１２は、処理装置により、基底Ｂｔの部分基底Ｂ＾ｔと、基底Ｂ＊の部分基底Ｂ＾＊ｔとを数１７３に示すように生成する。
【数１７３】
0005606344.tif 000074
【０１１６】
（Ｓ６０７：マスター鍵記憶ステップ）
マスター鍵記憶部１２０は、（Ｓ６０２）で生成したパラメータｐａｒａｍＶｔと、（Ｓ６０６）で生成した部分基底Ｂ＾ｔ及び部分基底Ｂ＾＊ｔとを管理者公開パラメータａｐｋｔとして記憶装置に記憶する。また、マスター鍵記憶部１２０は、（Ｓ６０４）で生成した線形変換Ｘｔを管理者秘密鍵ａｓｋｔとして記憶装置に記憶する。
【０１１７】
つまり、（Ｓ６０１）から（Ｓ６０６）において、鍵生成装置１００は数１７４に示すＡＳｅｔｕｐアルゴリズムを実行して、管理者公開パラメータａｐｋｔと管理者秘密鍵ａｓｋｔとを生成する。そして、（Ｓ６０７）で、鍵生成装置１００は生成された管理者公開パラメータａｐｋｔと管理者秘密鍵ａｓｋｔとを記憶装置に記憶する。
なお、管理者公開パラメータａｐｋｔは、例えば、ネットワークを介して公開され、署名装置２００や検証装置３００が取得可能な状態にされる。
【数１７４】
0005606344.tif 000075
【０１１８】
次に、図２０に基づき、鍵生成装置１００が実行するＡｔｔｒＧｅｎアルゴリズムの処理について説明する。なお、上述したように、ＡｔｔｒＧｅｎアルゴリズムは、複数の鍵生成装置１００のうち、ＡＳｅｔｕｐアルゴリズムを実行した鍵生成装置１００が実行する。
（Ｓ７０１：情報入力ステップ）
情報入力部１３０は、入力装置により、自己（その鍵生成装置１００）に割り当てられた識別情報ｔと、署名鍵を発行するユーザの識別情報ｇｉｄと、属性情報ｘ→ｔ：＝（ｘｔ，ｉ）（ｉ＝１，．．．，ｎｔ）とを入力する。
また、情報入力部１３０は、例えば、通信装置によりネットワークを介して、グローバルパラメータｇｐａｒａｍを取得する。なお、自己がグローバルパラメータｇｐａｒａｍを生成した鍵生成装置１００である場合には、グローバルパラメータｇｐａｒａｍをマスター鍵記憶部１２０から読み出せばよい。
また、情報入力部１３０は、マスター鍵記憶部１２０から管理者秘密鍵ａｓｋｔを読み出す。
【０１１９】
（Ｓ７０２：乱数生成ステップ）
乱数生成部１４１は、処理装置により、識別情報ｔとｊ＝１，２の各整数ｊとについて、乱数φ→ｔ，ｊを数１７５に示すように生成する。
【数１７５】
0005606344.tif 000076
【０１２０】
（Ｓ７０３：鍵要素生成ステップ）
数１７６であるとする。
【数１７６】
0005606344.tif 000077
鍵要素生成部１４５は、処理装置により、識別情報ｔとｊ＝１，２の各整数ｊとについて、署名鍵ｕｓｋｇｉｄ，（ｔ，ｘｔ）の要素である鍵要素ｋ＊ｔ，ｊを数１７７に示すように生成する。
【数１７７】
0005606344.tif 000078
なお、上述したように、数１１３に示す基底Ｂと基底Ｂ＊とに対して、数１１４である。したがって、数１７７は、以下のように、基底Ｂ＊ｔの基底ベクトルの係数が設定されることを意味する。ここでは、表記を簡略化して、基底ベクトルｂ＊ｔ，ｉのうち、ｉの部分のみで基底ベクトルを特定する。例えば、基底ベクトル１であれば、基底ベクトルｂ＊ｔ，１を意味する。また、基底ベクトル１，．．．，３であれば、基底ベクトルｂ＊ｔ，１，．．．，ｂ＊ｔ，３を意味する。
基底ベクトル１，．．．，ｎｔの係数として（δｊ＋１）ｘｔ，１，．．．，（δｊ＋１）ｘｔ，ｎｔ（ここで、ｎｔはｎｔのことである）が設定される。基底ｔクトルｎｔ＋１，．．．，２ｎｔの係数として−δｊｘｔ，１，．．．，−δｊｘｔ，ｎｔ（ここで、ｎｔはｎｔのことである）が設定される。基底ベクトル２ｎｔ＋１，．．．，２ｎｔ＋２＋ｕｔの係数として０が設定される。基底ベクトル２ｎｔ＋２＋ｕｔ＋１，．．．，２ｎｔ＋２＋ｕｔ＋ｗｔの係数として乱数φｔ，ｊ、１，．．．，φｔ，ｊ，ｗｔ（ここで、ｗｔはｗｔのことである）が設定される。基底ベクトル２ｎｔ＋２＋ｕｔ＋ｗｔ＋１，．．．，２ｎｔ＋２＋ｕｔ＋ｗｔ＋ｚｔの係数として０が設定される。
【０１２１】
（Ｓ７０４：鍵配布ステップ）
鍵配布部１５０は、ユーザの識別情報ｇｉｄと、識別情報ｔ及び属性情報ｘ→ｔと、鍵要素ｋ＊ｔ，ｊとを要素とする署名鍵ｕｓｋｇｉｄ，（ｔ，ｘｔ）を、例えば通信装置によりネットワークを介して秘密裡に署名装置２００へ配布する。もちろん、署名鍵ｕｓｋｇｉｄ，（ｔ，ｘｔ）は、他の方法により署名装置２００へ配布されてもよい。
【０１２２】
つまり、（Ｓ７０１）から（Ｓ７０３）において、鍵生成装置１００は数１７８に示すＡｔｔｒＧｅｎアルゴリズムを実行して、署名鍵ｕｓｋｇｉｄ，（ｔ，ｘｔ）を生成する。そして、（Ｓ７０４）で、鍵生成装置１００は生成された署名鍵ｕｓｋｇｉｄ，（ｔ，ｘｔ）を署名装置２００へ配布する。
【数１７８】
0005606344.tif 000079
【０１２３】
署名装置２００の機能と動作とについて説明する。
図１６に示すように、署名装置２００は、署名鍵取得部２１０、情報入力部２２０（第２情報入力部）、スパンプログラム計算部２３０、補完係数計算部２４０、署名データ生成部２５０、署名データ送信部２６０（署名データ出力部）を備える。
また、情報入力部２２０は、述語情報入力部２２１、メッセージ入力部２２２を備える。また、署名データ生成部２５０は、乱数生成部２５１、署名要素生成部２５５を備える。
【０１２４】
図２１に基づき、署名装置２００が実行するＳｉｇアルゴリズムの処理について説明する。
（Ｓ８０１：署名鍵取得ステップ）
署名鍵取得部２１０は、例えば、通信装置によりネットワークを介して、各鍵生成装置１００が生成した署名鍵ｕｓｋｇｉｄ，（ｔ，ｘｔ）を取得する。また、署名鍵取得部２１０は、鍵生成装置１００が生成したグローバルパラメータｇｐａｒａｍを取得する。
【０１２５】
（Ｓ８０２：情報入力ステップ）
述語情報入力部２２１は、入力装置により、アクセスストラクチャＳ：＝（Ｍ，ρ）を入力する。なお、行列Ｍは、Ｌ行×ｒ列の行列である。Ｌ，ｒは、１以上の整数である。
また、メッセージ入力部２２２は、入力装置により、署名を付すメッセージｍを入力する。
なお、アクセスストラクチャＳの行列Ｍの設定については、実現したいシステムの条件に応じて設定されるものである。
【０１２６】
（Ｓ８０３：スパンプログラム計算ステップ）
スパンプログラム計算部２３０は、処理装置により、（Ｓ８０２）で入力したアクセスストラクチャＳが、（Ｓ８０１）で取得した署名鍵ｕｓｋｇｉｄ，（ｔ，ｘｔ）に含まれる属性情報ｘ→ｔの集合Γを受理するか否かを判定する。
なお、アクセスストラクチャが属性の集合を受理するか否かの判定方法は、実施の形態１における「第３．関数型暗号を実現するための概念」で説明した通りである。
スパンプログラム計算部２３０は、アクセスストラクチャＳが属性の集合Γを受理する場合（Ｓ８０３で受理）、処理を（Ｓ８０４）へ進める。一方、アクセスストラクチャＳが属性情報ｘ→ｔの集合Γを拒絶する場合（Ｓ８０３で拒絶）、処理を終了する。
【０１２７】
（Ｓ８０４：補完係数計算ステップ）
補完係数計算部４３０は、処理装置により、数１７９となるＩと、Ｉに含まれる各整数ｉについて定数（補完係数）αｉとを計算する。
【数１７９】
0005606344.tif 000080
なお、Ｍｉとは、行列Ｍのｉ行目のことである。
【０１２８】
（Ｓ８０５：乱数生成ステップ）
乱数生成部２５１は、処理装置により、乱数ξ１，ξ２と、乱数βｉ，βｉ’（ｉ＝１，．．．，Ｌ）とを数１８０に示すように生成する。
【数１８０】
0005606344.tif 000081
【０１２９】
（Ｓ８０６：署名要素生成ステップ）
署名要素生成部２５５は、処理装置により、ｉ＝１，．．．，Ｌの各整数ｉについて、署名データσの要素である署名要素ｓ＊ｉを数１８１に示すように生成する。
【数１８１】
0005606344.tif 000082
ここで、ｒ＊ｉは、数１８２（数１１０から数１１２及びこれらの数式の説明を参照）である。
【数１８２】
0005606344.tif 000083
また、γｉとｙ→ｉ：＝（ｙｉ，ｉ’）（ｉ’＝１，．．．，ｎｔ）とｙ’→ｉ：＝（ｙ’ｉ，ｉ’）（ｉ’＝１，．．．，ｎｔ）とは、数１８３である。
【数１８３】
0005606344.tif 000084
【０１３０】
（Ｓ８０７：データ送信ステップ）
署名データ送信部２６０は、署名要素ｓ＊ｉ（ｉ＝１，．．．，Ｌ）と、メッセージｍと、アクセスストラクチャＳ：＝（Ｍ，ρ）と、ｇ０：＝ｇ４ξ２（ここで、ξ２はξ２である）とを含む署名データσを、例えば通信装置によりネットワークを介して検証装置３００へ送信する。もちろん、署名データσは、他の方法により検証装置３００へ送信されてもよい。
【０１３１】
つまり、（Ｓ８０１）から（Ｓ８０６）において、署名装置２００は数１８４に示すＳｉｇアルゴリズムを実行して、署名データσを生成する。そして、（Ｓ８０７）で、署名装置２００は生成された署名データσを検証装置３００へ配布する。
【数１８４】
0005606344.tif 000085
【０１３２】
検証装置３００の機能と動作とについて説明する。
図１７に示すように、検証装置３００は、公開パラメータ取得部３１０、データ受信部３２０（データ取得部）、検証鍵生成部３３０、ペアリング演算部３４０を備える。
また、検証鍵生成部３３０は、乱数生成部３３１、ｆベクトル生成部３３２、ｓベクトル生成部３３３、検証要素生成部３３７を備える。
【０１３３】
図２２に基づき、検証装置３００が実行するＶｅｒアルゴリズムの処理について説明する。
（Ｓ９０１：公開パラメータ取得ステップ）
公開パラメータ取得部３１０は、例えば、通信装置によりネットワークを介して、各鍵生成装置１００が生成したグローバルパラメータｇｐａｒａｍと、管理者公開パラメータａｐｋｔとを取得する。
【０１３４】
（Ｓ９０２：署名データ受信ステップ）
データ受信部３２０は、例えば、通信装置によりネットワークを介して、署名装置２００が送信した署名データσを受信する。
【０１３５】
（Ｓ９０３：ｆベクトル生成ステップ）
ｆベクトル生成部３３２は、処理装置により、ｒ個の要素を有するベクトルｆ→を数１８５に示すようにランダムに生成する。
【数１８５】
0005606344.tif 000086
【０１３６】
（Ｓ９０４：ｓベクトル生成ステップ）
ｓベクトル生成部３３３は、処理装置により、（Ｓ９０２）で受信した署名データσに含まれるアクセスストラクチャＳの（Ｌ行×ｒ列）の行列Ｍと、（Ｓ９０３）で生成したｒ個の要素を有するベクトルｆ→とに基づき、ベクトルｓ→Ｔを数１８６に示すように生成する。
【数１８６】
0005606344.tif 000087
また、ｓベクトル生成部３３３は、処理装置により、（Ｓ９０３）で生成したベクトルｆ→に基づき、値ｓ０を数１８７に示すように生成する。なお、１→は、全ての要素が値１のベクトルである。
【数１８７】
0005606344.tif 000088
【０１３７】
（Ｓ９０５：ｆ’ベクトル生成ステップ）
ｆベクトル生成部３３２は、処理装置により、ｒ個の要素を有するベクトルｆ→’を数１８８に示すようにランダムに生成する。
【数１８８】
0005606344.tif 000089
【０１３８】
（Ｓ９０６：ｓ’ベクトル生成ステップ）
ｓベクトル生成部３３３は、処理装置により、（Ｌ行×ｒ列）の行列Ｍと、ｒ個の要素を有するベクトルｆ→’とに基づき、ベクトル（ｓ→’）Ｔを数１８９に示すように生成する。
【数１８９】
0005606344.tif 000090
【０１３９】
（Ｓ９０７：乱数生成ステップ）
乱数生成部３３１は、処理装置により、乱数σ→と値σ０とを数１９０に示すように生成する。
【数１９０】
0005606344.tif 000091
【０１４０】
（Ｓ９０８：検証要素生成ステップ）
検証要素生成部３３７は、処理装置により、ｉ＝１，．．．，Ｌの各整数ｉについて、検証鍵の要素である検証要素ｃｉを数１９１に示すように生成する。
【数１９１】
0005606344.tif 000092
なお、上述したように、数１１３に示す基底Ｂと基底Ｂ＊とに対して、数１１４である。したがって、数１９１は、以下のように、基底Ｂｔの基底ベクトルの係数が設定されることを意味する。ここでは、表記を簡略化して、基底ベクトルｂｔ，ｉのうち、ｉの部分のみで基底ベクトルを特定する。例えば、基底ベクトル１であれば、基底ベクトルｂｔ，１を意味する。また、基底ベクトル１，．．．，３であれば、基底ベクトルｂｔ，１，．．．，ｂｔ，３を意味する。
ρ（ｉ）が肯定形の組（ｔ，ｖ→ｉ）である場合には、基底ベクトル１の係数としてｓｉ＋θｉｖｉ，１が設定される。基底ベクトル２，．．．，ｎｔの係数としてθｉｖｉ，２，．．．，θｉｖｉ，ｎｔ（ここで、ｎｔはｎｔのことである）が設定される。基底ベクトルｎｔ＋１の係数としてｓｉ’＋θｉ’ｖｉ，１が設定される。基底ベクトルｎｔ＋２，．．．，２ｎｔの係数としてθｉ’ｖｉ，２，．．．，θｉ’ｖｉ，ｎｔ（ここで、ｎｔはｎｔのことである）が設定される。基底ベクトル２ｎｔ＋１の係数としてσｉ−θｉ’’Ｈ２（ｍ，Ｓ）が設定される。なお、Ｈ２（ｍ，Ｓ）とは、ハッシュ関数Ｈ２の入力として、メッセージｍとアクセスストラクチャＳとが与えられることを意味する。例えば、Ｈ２（ｍ｜｜Ｓ）としてもよい。基底ベクトル２ｎｔ＋２の係数としてθｉ’’が設定される。基底ベクトル２ｎｔ＋２＋１，．．．，２ｎｔ＋２＋ｕｔ＋ｗｔの係数として０が設定される。基底ベクトル２ｎｔ＋２＋ｕｔ＋ｗｔ＋１，．．．，２ｎｔ＋２＋ｕｔ＋ｗｔ＋ｚｔの係数としてηｉ，１，．．．，ηｉ，ｚｔ（ここで、ｚｔはｚｔのことである）が設定される。
一方、ρ（ｉ）が否定形の組¬（ｔ，ｖ→ｉ）である場合には、基底ベクトル１，．．．，ｎｔの係数としてｓｉｖｉ，１，．．．，ｓｉｖｉ，ｎｔ（ここで、ｎｔはｎｔのことである）が設定される。基底ベクトルｎｔ＋１，．．．，２ｎｔの係数としてｓｉ’ｖｉ，１，．．．，ｓｉ’ｖｉ，ｎｔ（ここで、ｎｔはｎｔのことである）が設定される。基底ベクトル２ｎｔ＋１の係数としてσｉ−θｉ’’Ｈ２（ｍ，Ｓ）が設定される。基底ベクトル２ｎｔ＋２の係数としてθｉ’’が設定される。基底ベクトル２ｎｔ＋２＋１，．．．，２ｎｔ＋２＋ｕｔ＋ｗｔの係数として０が設定される。基底ベクトル２ｎｔ＋２＋ｕｔ＋ｗｔ＋１，．．．，２ｎｔ＋２＋ｕｔ＋ｗｔ＋ｚｔの係数としてηｉ，１，．．．，ηｉ，ｚｔ（ここで、ｚｔはｚｔのことである）が設定される。
【０１４１】
（Ｓ９０９：ペアリング演算ステップ）
ペアリング演算部３４０は、処理装置により、数１９２に示すペアリング演算を計算する。
【数１９２】
0005606344.tif 000093
数１９２に示すペアリング演算を計算した結果が値ｇＴｓ０ｇ０σ０（ここでｓ０はｓ０であり、σ０はσ０である）であれば、ペアリング演算部３４０は、署名の検証に成功したことを示す値１を出力する。一方、その他の値であれば、ペアリング演算部３４０は、署名の検証に失敗したことを示す値０を出力する。
なお、数１９３に示すように、数１９２を計算することにより、署名データσが正当なものであれば、値１が得られる。
【数１９３】
0005606344.tif 000094
【０１４２】
つまり、（Ｓ９０１）から（Ｓ９０９）において、検証装置３００は、数１９４に示すＶｅｒアルゴリズムを実行して、署名データσを検証する。
【数１９４】
0005606344.tif 000095
【０１４３】
以上のように、実施の形態２に係る署名処理システム１０は、複数の鍵生成装置１００が署名鍵を生成する多管理者属性ベース署名方式を実現する。特に、署名処理システム１０が実現する署名方式は、中央管理者がいない分散多管理者属性ベース署名方式である。
なお、実施の形態２に係る署名処理システム１０は、実施の形態１に係る署名処理システム１０と同様に、ノンモノトーン述語を伴う属性ベース署名方式を実現する。
【０１４４】
実施の形態２に係る署名処理システム１０が実現する属性ベース署名方式は、安全性が高く、プライバシー要件を満たしている。
【０１４５】
なお、上記説明において、ｕｔ、ｗｔ、ｚｔ（ｔ＝１，．．．，ｄ）の次元は、安全性を高めるために設けた次元である。したがって、安全性が低くなってしまうが、ｕｔ、ｗｔ、ｚｔ（ｔ＝１，．．．，ｄ）をそれぞれ０として、ｕｔ、ｗｔ、ｚｔ（ｔ＝１，．．．，ｄ）の次元を設けなくてもよい。
【０１４６】
また、上記説明では、基底Ｂｔ及び基底Ｂ＊ｔの次元数を２ｎｔ＋２＋ｕｔ＋ｗｔ＋ｚｔに設定した。しかし、２ｎｔ＋２＋ｕｔ＋ｗｔ＋ｚｔを２＋２＋２＋６＋４＋１として、基底Ｂｔ及び基底Ｂ＊ｔの次元数を１７としてもよい。
この場合、数１６８に示すＧＳｅｔｕｐアルゴリズムは、数１９５のように書き換えられる。
【数１９５】
0005606344.tif 000096
また、数１７４に示すＡＳｅｔｕｐアルゴリズムは、数１９６のように書き換えられる。
【数１９６】
0005606344.tif 000097
また、数１７８に示すＡｔｔｒＧｅｎアルゴリズムは、数１９７のように書き換えられる。
【数１９７】
0005606344.tif 000098
また、数１８４に示すＳｉｇアルゴリズムは、数１９８のように書き換えられる。
【数１９８】
0005606344.tif 000099
また、数１９４に示すＶｅｒアルゴリズムは、数１９９のように書き換えられる。
【数１９９】
0005606344.tif 000100
【０１４７】
また、ＧＳｅｔｕｐアルゴリズムは、署名処理システム１０のセットアップ時にいずれかの鍵生成装置１００が一度実行すればよく、署名鍵を生成する度に実行する必要はない。同様に、ＡＳｅｔｕｐアルゴリズムは、署名処理システム１０のセットアップ時に各鍵生成装置１００が一度実行すればよく、署名鍵を生成する度に実行する必要はない。
また、上記説明では、ＧＳｅｔｕｐアルゴリズムとＡＳｅｔｕｐアルゴリズムとＫｅｙＧｅｎアルゴリズムとを鍵生成装置１００が実行するとしたが、ＧＳｅｔｕｐアルゴリズムとＡＳｅｔｕｐアルゴリズムとＫｅｙＧｅｎアルゴリズムとをそれぞれ異なる装置が実行するとしてもよい。
【０１４８】
実施の形態３．
以上の実施の形態では、双対ベクトル空間において署名処理を実現する方法について説明した。この実施の形態では、双対加群において署名処理を実現する方法について説明する。
【０１４９】
つまり、以上の実施の形態では、素数位数ｑの巡回群において署名処理を実現した。しかし、合成数Ｍを用いて数２００のように環Ｒを表した場合、環Ｒを係数とする加群においても、上記実施の形態で説明した署名処理を適用することができる。
【数２００】
0005606344.tif 000101
【０１５０】
実施の形態１で説明した属性ベース署名方式を、環Ｒを係数とする加群において実現すると数２０１から数２０５のようになる。
【数２０１】
0005606344.tif 000102
【数２０２】
0005606344.tif 000103
【数２０３】
0005606344.tif 000104
【数２０４】
0005606344.tif 000105
【数２０５】
0005606344.tif 000106
【０１５１】
実施の形態２で説明した分散多管理者属性ベース署名方式を、環Ｒを係数とする加群において実現すると数２０６から数２１０のようになる。
【数２０６】
0005606344.tif 000107
【数２０７】
0005606344.tif 000108
【数２０８】
0005606344.tif 000109
【数２０９】
0005606344.tif 000110
【数２１０】
0005606344.tif 000111
【０１５２】
なお、安全性の証明の観点から、以上の実施の形態において、ｉ＝１，．．．，Ｌの各整数ｉについてのρ（ｉ）は、それぞれ異なる識別情報ｔについての肯定形の組（ｔ，ｖ→ｉ）又は否定形の組¬（ｔ，ｖ→ｉ）であると限定してもよい。
言い替えると、ρ（ｉ）＝（ｔ，ｖ→ｉ）又はρ（ｉ）＝¬（ｔ，ｖ→ｉ）である場合に、関数ρ〜を、ρ〜（ｉ）＝ｔである｛１，．．．，Ｌ｝→｛１，．．，ｄ｝の写像であるとする。この場合、ρ〜が単射であると限定してもよい。なお、ρ（ｉ）は、上述したアクセスストラクチャＳ：＝（Ｍ，ρ（ｉ））のρ（ｉ）である。
【０１５３】
また、上記説明では、スパンプログラムＭ＾は、入力列δによって行列Ｍ＾から得られる行列Ｍδの行を線形結合して１→が得られる場合に限り、入力列δを受理するとした。しかし、スパンプログラムＭ＾は、１→ではなく、他のベクトルｈ→が得られる場合に限り、入力列δを受理するとしてもよい。
この場合、ＫｅｙＧｅｎアルゴリズムにおいて、ｓ０：＝１→・ｆ→Ｔではなく、ｓ０：＝ｈ→・ｆ→Ｔとすればよい。
【０１５４】
次に、実施の形態における署名処理システム１０（鍵生成装置１００、署名装置２００、検証装置３００）のハードウェア構成について説明する。
図２３は、鍵生成装置１００、署名装置２００、検証装置３００のハードウェア構成の一例を示す図である。
図２３に示すように、鍵生成装置１００、署名装置２００、検証装置３００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、ＬＣＤ９０１（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）、キーボード９０２（Ｋ／Ｂ）、通信ボード９１５、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０（固定ディスク装置）の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。磁気ディスク装置９２０は、所定の固定ディスクインタフェースを介して接続される。
【０１５５】
ＲＯＭ９１３、磁気ディスク装置９２０は、不揮発性メモリの一例である。ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３とＲＡＭ９１４と磁気ディスク装置９２０とは、記憶装置（メモリ）の一例である。また、キーボード９０２、通信ボード９１５は、入力装置の一例である。また、通信ボード９１５は、通信装置の一例である。さらに、ＬＣＤ９０１は、表示装置の一例である。
【０１５６】
磁気ディスク装置９２０又はＲＯＭ９１３などには、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【０１５７】
プログラム群９２３には、上記の説明において「マスター鍵生成部１１０」、「マスター鍵記憶部１２０」、「情報入力部１３０」、「署名鍵生成部１４０」、「鍵配布部１５０」、「署名鍵取得部２１０」、「情報入力部２２０」、「スパンプログラム計算部２３０」、「補完係数計算部２４０」、「署名データ生成部２５０」、「署名データ送信部２６０」、「公開パラメータ取得部３１０」、「データ受信部３２０」、「検証鍵生成部３３０」、「ペアリング演算部３４０」等として説明した機能を実行するソフトウェアやプログラムやその他のプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、上記の説明において「公開パラメータ」、「マスター鍵」、「署名データσ」、「署名鍵」、「アクセスストラクチャＳ」、「属性情報」、「属性の集合Γ」、「メッセージｍ」等の情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶される。「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵ９１１の動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵ９１１の動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【０１５８】
また、上記の説明におけるフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、その他光ディスク等の記録媒体やＩＣチップに記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体や電波によりオンライン伝送される。
また、上記の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。また、「〜装置」として説明するものは、「〜回路」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。さらに、「〜処理」として説明するものは「〜ステップ」であっても構わない。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、ＲＯＭ９１３等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、上記で述べた「〜部」としてコンピュータ等を機能させるものである。あるいは、上記で述べた「〜部」の手順や方法をコンピュータ等に実行させるものである。
【符号の説明】
【０１５９】
１０  署名処理システム、１００  鍵生成装置、１１０  マスター鍵生成部、１１１  グローバルパラメータ生成部、１１２  管理者秘密鍵生成部、１２０  マスター鍵記憶部、１３０  情報入力部、１４０  署名鍵生成部、１４１  乱数生成部、１４２  鍵要素０生成部、１４３  鍵要素ｔ生成部、１４４  鍵要素ｄ＋１生成部、１４５  鍵要素生成部、１５０  鍵配布部、２００  署名装置、２１０  署名鍵取得部、２２０  情報入力部、２２１  述語情報入力部、２２２  メッセージ入力部、２３０  スパンプログラム計算部、２４０  補完係数計算部、２５０  署名データ生成部、２５１  乱数生成部、２５２  署名要素０生成部、２５３  署名要素ｉ生成部、２５４  署名要素Ｌ＋１生成部、２５５  署名要素生成部、２６０  署名データ送信部、３００  検証装置、３１０  公開パラメータ取得部、３２０  データ受信部、３３０  検証鍵生成部、３３１  乱数生成部、３３２  ｆベクトル生成部、３３３  ｓベクトル生成部、３３４  検証要素０生成部、３３５  検証要素ｉ生成部、３３６  検証要素Ｌ＋１生成部、３３７  検証要素生成部、３４０  ペアリング演算部。
【図１】
0005606344.tif 000143
【図２】
0005606344.tif 000144
【図３】
0005606344.tif 000145
【図４】
0005606344.tif 000146
【図５】
0005606344.tif 000147
【図６】
0005606344.tif 000148
【図７】
0005606344.tif 000149
【図８】
0005606344.tif 000150
【図９】
0005606344.tif 000151
【図１０】
0005606344.tif 000152
【図１１】
0005606344.tif 000153
【図１２】
0005606344.tif 000154
【図１３】
0005606344.tif 000155
【図１４】
0005606344.tif 000156
【図１５】
0005606344.tif 000157
【図１６】
0005606344.tif 000158
【図１７】
0005606344.tif 000159
【図１８】
0005606344.tif 000160
【図１９】
0005606344.tif 000161
【図２０】
0005606344.tif 000162
【図２１】
0005606344.tif 000163
【図２２】
0005606344.tif 000164
【図２３】
0005606344.tif 000165