(57)【特許請求の範囲】
【請求項１】
コミットメントを用いて署名文を生成し、前記コミットメントは、コミットする値を含む組のハッシュ値であり、公開鍵として離散対数問題に係る巡回群の元の対を含むデータを用い、かつ秘密鍵として前記対の位数の離散対数を用いる署名装置において、
第１のコミットメントに係るコミティッドベクトルを選択するコミティッドベクトル選択手段と、
第１のコミットメントを算出する第１のコミットメント計算手段と、
基底ベクトルを算出する基底ベクトル計算手段と、
第２のコミットメントを生成する第２のコミットメント計算手段と、
ベクトルチャレンジを算出するベクトルチャレンジ計算手段と、
前記コミティッドベクトルと前記ベクトルチャレンジとを用いてベクトルレスポンスを算出するベクトルレスポンス計算手段と、
前記コミティッドベクトル、前記第１のコミットメント、前記基底ベクトル、前記第２のコミットメント、前記ベクトルチャレンジ、及び前記ベクトルレスポンスを格納する記憶部とを有し、
前記基底ベクトルと前記ベクトルチャレンジとがハッシュ値であることを特徴とする署名装置。
【請求項２】
前記コミティッドベクトル選択手段は、複数の前記コミティッドベクトルを選択し、
前記複数のコミティッドベクトルの各成分と秘密鍵とが群位数を法とする関係式を満たし、
前記第２のコミットメントは、前記対の一方のべき乗剰余であり、
前記べき乗剰余のべき指数が前記コミティッドベクトル選択手段によって選択されたデータの一部と前記基底ベクトルと前記ベクトルチャレンジとを用いて算出されるデータであることを特徴とする請求項１記載の署名装置。
【請求項３】
前記コミティッドベクトルの各成分と前記秘密鍵とが群位数を法とする一次式を満たし、前記第１のコミットメントは乱数を含むデータをもとに算出され、前記データの一部は前記ベクトルチャレンジによって決定され、かつ前記べき指数が前記データの一部及び前記基底ベクトルから一次式で表されることを特徴とする請求項２記載の署名装置。
【請求項４】
前記コミティッドベクトルは２つの成分からなり、前記成分の一方は、他方の前記成分に秘密鍵を加えた値の群位数を法として剰余した値であり、
前記第１のコミットメントは前記乱数、及び、前記コミティッドベクトルの各成分を特定するデータをもとに算出され、
前記べき指数は前記データの一部と前記基底ベクトルを内積した値であることを特徴とする請求項３記載の署名装置。
【請求項５】
セキュリティーパラメータがκ、Ｎ、νであり、前記巡回群の位数がｑであるとき、
前記コミティッドベクトル選択手段は、
剰余群Ｘ＿｛０１｝，．．．，Ｘ＿｛０Ｎ｝∈（Ｚ／ｑＺ）をランダムに選択し、
ｊ＝１，・・・Ｎの前記剰余群Ｘ＿｛０ｊ｝にｘを加えたものの位数ｑを法として剰余したものをＸ＿｛１ｊ｝とし、
ｉ＝０，１の前記コミティッドベクトルは、Ｙ＿ｉ＝（Ｘ＿｛ｉ１｝，．．．，Ｘ＿｛ｉＮ｝）であり、
前記第１のコミットメント計算手段は、ランダムにνビットのビット列ｒを選択し、
ｉ＝０，１であり、前記公開鍵、Ｘ＿｛ｉｊ｝，ｉ，ｊ，ｒを含むデータのハッシュ値を前記第１のコミットメントＣ＿｛ｉｊ｝とし、
前記基底ベクトル計算手段は、前記公開鍵及び前記第１のコミットメントＣ＿｛ｉｊ｝を含むデータのハッシュ値を前記基底ベクトルＶ＝（ｕ＿１，．．．，ｕ＿Ｎ）とし、
前記第２のコミットメント計算手段は、前記基底ベクトルＶとＹ＿０との内積を算出し、さらに第２のコミットメントＧ＝ｇ＾｛Ｘ｝を算出し、
前記ベクトルチャレンジ計算手段は、公開鍵、｛Ｃ＿｛ｉｊ｝｝、Ｇ、ｒ及び前記署名装置が受信したメッセージを含むデータのハッシュ値Ｋ＝（ｃ＿１，．．．，ｃ＿Ｎ）を算出し、
前記ベクトルレスポンス計算手段は、ｊ＝１，．．．，Ｎすべてについて前記ベクトルレスポンスξ＿｛ｊ｝＝Ｘ＿｛ｃ＿ｊｊ｝、及びΞ＝（ξ＿１，．．．，ξ＿κ）を算出し、
署名文（ｒ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ξ）を出力することを特徴とする請求項４記載の署名装置。
【請求項６】
前記コミティッドベクトル選択手段は、前記複数のコミティッドベクトルを選択し、前記複数のコミティッドベクトルの各成分と秘密鍵とが関係式を満たすことを特徴とする請求項１記載の署名装置。
【請求項７】
前記関係式は、前記複数のベクトルの各成分と秘密鍵との一次式を満たし、
前記第１のコミットメントの入力は乱数を含むデータをもとに算出されることを特徴とする請求項６記載の署名装置。
【請求項８】
前記複数のコミティッドベクトルは、複数の成分を有し、
前記成分の一方は、他方の成分に秘密鍵を加えたものであり、
前記第１のコミットメントは前記乱数、及び、前記各成分を特定するデータをもとに算出されることを特徴とする請求項７記載の署名装置。
【請求項９】
セキュリティーパラメータがκ、Ｎ、νであり、整数の集合Ｒ｛κ＋ξ｝を０≦Ｒ｛κ＋ξ｝＜２＾｛κ＋ξ｝とするとき、
前記コミティッドベクトル選択手段は、
剰余群Ｘ＿｛０１｝，．．．，Ｘ＿｛０Ｎ｝∈（Ｚ／ｑＺ）をランダムに選択し、
ｊ＝１，・・・Ｎの前記剰余群Ｘ＿｛０ｊ｝にｘを加えたものをＸ＿｛１ｊ｝とし、
ｉ＝０，１の前記コミティッドベクトルは、Ｙ＿ｉ＝（Ｘ＿｛ｉ１｝，．．．，Ｘ＿｛ｉＮ｝）であり、
前記第１のコミットメント計算手段は、
ランダムにνビットのビット列ｒを選択し、
ｉ＝０，１であり、前記公開鍵、Ｘ＿｛ｉｊ｝，ｉ，ｊ，ｒを含むデータのハッシュ値を前記第１のコミットメントＣ＿｛ｉｊ｝とし、
前記基底ベクトル計算手段は、前記公開鍵及び前記第１のコミットメントＣ＿｛ｉｊ｝を含むデータのハッシュ値を前記基底ベクトルＶ＝（ｕ＿１，．．．，ｕ＿Ｎ）とし、
前記第２のコミットメント計算手段は、前記基底ベクトルＶとＹ＿０との内積を算出し、さらに第２のコミットメントＧ＝ｇ＾｛Ｘ｝を算出し、
前記ベクトルチャレンジ計算手段は、公開鍵、｛Ｃ＿｛ｉｊ｝｝、Ｇ、ｒおよび前記署名装置が受信したメッセージを含むデータのハッシュ値Ｋ＝（ｃ＿１，．．．，ｃ＿Ｎ）を算出し、
前記ベクトルレスポンス計算手段は、ｊ＝１，．．．，Ｎすべてについて前記ベクトルレスポンスξ＿｛ｊ｝＝Ｘ＿｛ｃ＿ｊｊ｝、及びΞ＝（ξ＿１，．．．，ξ＿κ）を算出し、
署名文（ｒ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ξ）を出力することを特徴とする請求項８記載の署名装置。
【請求項１０】
前記コミティッドベクトル選択手段は、前記コミティッドベクトルを複数選択し、
前記複数のコミティッドベクトルの各成分と秘密鍵とが群位数を法とする関係式を満たし、
前記第２のコミットメントは、前記対の一方のべき乗剰余であり、
前記べき乗剰余のべき指数が前記コミティッドベクトル選択手段によって選択されたデータの一部と前記基底ベクトルと前記ベクトルチャレンジとを用いて算出されたデータであることを特徴とする請求項１記載の署名装置。
【請求項１１】
前記コミティッドベクトルの各成分と秘密鍵とが群位数を法とする一次式を満たし、前記第１のコミットメントは乱数を含むデータをもとに算出され、前記データの一部が前記ベクトルチャレンジによって決定され、前記べき指数が前記データの一部及び前記基底ベクトルに対して一次式で表されることを特徴とする請求項１０記載の署名装置。
【請求項１２】
前記コミティッドベクトルの各成分は、一方の成分は、他方の成分に秘密鍵を加えた群位数を法として剰余した値であり、前記べき指数が前記データの一部と前記基底ベクトルとを内積した値であり、前記基底ベクトルが所定数ｔで（１，ｔ＾１，ｔ＾２，・・・，ｔ＾Ｎ）と乗算した値であることを特徴とする請求項１１記載の署名装置。
【請求項１３】
前記メッセージＭとするとき、
前記コミティッドベクトル選択手段は、ランダムにＹ＿０＝（Ｘ＿｛０１｝，．．．，Ｘ＿｛０Ｎ｝）∈Ｚｑ＾｛Ｎ｝を選択し、ｊ＝１，．．．，ＮについてＸ＿｛１ｊ｝＝ｘ＋Ｘ＿｛０ｊ｝ｍｏｄｑとし、前記コミティッドベクトルＹ＿１＝（Ｘ＿｛１１｝，．．，Ｘ＿｛１Ｎ｝を生成し、
前記第２のコミットメント計算手段は、Ｘ＝＜｛Ｙ＿０，Ｖ｝＞＝Σ＿ｊＸ＿｛０ｊ｝２＾｛ｊ−１｝ｍｏｄｑを算出し、さらに前記コミットメントＧ＝ｇ＾｛Ｘ｝を算出し
前記第１のコミットメント計算手段は、各ｉ、ｊについてランダムにｒ＿｛ｉｊ｝∈｛０，１｝＾｛ν｝を選択し、Ｘ＿｛ｉｊ｝の第１のコミットメントＣ＿｛ｉｊ｝＝Ｈ＿｛｛０，１｝＾ν｝（Ｘ＿｛ｉｊ｝，ｒ＿｛ｉｊ｝）を算出し、
前記ベクトルチャレンジ計算手段は、Ｋ＝（ｃ＿｛１｝，．．．，ｃ＿｛Ｎ｝）＝Ｈ＿｛｛０，１｝＾｛Ｎ｝（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ｍ）を算出し、
前記ベクトルレスポンス計算手段は、各ｊに対し、前記ベクトルレスポンスξ＿ｊ＝Ｘ＿｛ｃ＿ｊｊ｝ｍｏｄｑを算出し、さらにΞ＝（ξ＿｛１｝，．．．，ξ＿｛Ｎ｝）を算出し、
署名文（｛Ｃ＿｛ｉｊ｝｝，｛ｒ＿｛ｃ＿ｊｊ｝｝，Ｇ，Ξ）を出力することを特徴とする請求項１２記載の署名装置。
【請求項１４】
入力されたデータの正当性を判定する検証装置において、
前記入力されたデータは、メッセージと前記メッセージに対する署名文とを有し、
前記データに正当性があるときのみ前記データを受理し、検証計算に第１のコミットメントを用い、前記第１のコミットメントの個数よりも少ない回数のべき乗剰余を実行し、
前記データの正当性が認められたとき、前記第１のコミットメントは、前記データの一部であるベクトルレスポンスの成分を含むデータのハッシュ値であり、
公開鍵は、離散対数問題に係る巡回群の元の対を含むデータであり、
秘密鍵は、前記対の位数の離散対数であることを特徴とする検証装置。
【請求項１５】
基底ベクトルを算出する基底ベクトル計算手段と、
ベクトルチャレンジを算出するベクトルチャレンジ計算手段と、
前記第１のコミットメントの正当性を判定する第１の正当性検証手段と、
前記ベクトルレスポンスの正当性を判定する第２の正当性検証手段と、
前記各手段において入出力されるデータを記憶する記憶手段とを有し、
前記ベクトルチャレンジと前記基底ベクトルとがハッシュ値であり、前記第１の正当性検証手段と前記第２の正当性検証手段とが前記署名文を正当なものと判定したときのみ前記データの入力を受理することを特徴とする請求項１４記載の検証装置。
【請求項１６】
前記第１の正当性検証手段は、前記ベクトルレスポンスを有する前記入力されたデータの一部を所定の方法でハッシュ関数に入力し、算出したハッシュ値が前記第１のコミットメントと一致するときのみ前記第１のコミットメントが正当であると判断し、
前記第２の正当性検証手段は、前記判定するデータが第２のコミットメントとよばれるデータと前記ベクトルレスポンスとを有し、前記公開鍵が離散対数問題に係る巡回群の元を二つ含み、前記各元のべき乗剰余である第１及び第２のべき乗剰余を算出し、前記第１のべき乗剰余が前記第２のべき乗剰余と前記第２のコミットメントとを乗算した値と等しいか否かを判定し、
前記第１のべき乗剰余は、前記公開鍵の一部である元を位数とし、Ｓｃｈｎｏｒｒチャレンジをべき指数とし、
前記第２のべき乗剰余は、前記公開鍵の一部である元を位数とし、Ｓｃｈｎｏｒｒレスポンスをべき指数とし、
前記Ｓｃｈｎｏｒｒチャレンジは、前記ベクトルチャレンジと前記基底ベクトルとを用いて算出されるデータであり、
前記Ｓｃｈｎｏｒｒレスポンスは、前記ベクトルレスポンスと前記基底ベクトルとを用いて算出されるデータであることを特徴とする請求項１５記載の検証装置。
【請求項１７】
前記署名文は前記署名装置によりランダムに選択されるデータを含み、
前記ランダムに選択されるデータは、前記第１の正当性検証手段で計算される各ハッシュ関数へ入力され、
前記ベクトルレスポンスの一つの成分が前記各ハッシュ関数へ入力され、
前記Ｓｃｈｎｏｒｒチャレンジは、前記ベクトルチャレンジと前記基底ベクトルに関する一次式であり、
前記Ｓｃｈｎｏｒｒレスポンスは、前記ベクトルレスポンスと前記基底ベクトルに関する一次式であることを特徴とする請求項１６記載の検証装置。
【請求項１８】
前記Ｓｃｈｎｏｒｒチャレンジは、前記ベクトルチャレンジと前記基底ベクトルとの内積であり、
前記Ｓｃｈｎｏｒｒレスポンスは、前記ベクトルレスポンスと前記基底ベクトルとの内積であることを特徴とする請求項１７記載の検証装置。
【請求項１９】
前記メッセージがＭであり、かつ前記判定するデータが（ｒ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ξ）であるとき、
前記基底ベクトル計算手段は、前記公開鍵と｛Ｃ＿｛ｉｊ｝｝とを含むデータのハッシュ値を計算し、該ハッシュ値が前記基底ベクトルＶ＝（ｕ＿１，．．．，ｕ＿Ｎ）であり、
前記ベクトルチャレンジ計算手段は、前記公開鍵および｛Ｃ＿｛ｉｊ｝｝，Ｇ，ｒ，Ｍを含むデータのハッシュ値を計算し、該ハッシュ値が前記ベクトルチャレンジＫ＝（ｃ＿１，．．．，ｃ＿Ｎ）であり、
前記第１の正当性検証手段は、
各ｊ＝１，．．．，Ｎに対し、Ｃ＿｛ｃ＿ｊｊ｝と前記ハッシュ関数とが一致する場合のみＣ＿｛ｃ＿ｊｊ｝が正当であると判断し、
全てのＣ＿｛ｃ＿ｊｊ｝が正当であるときにのみ｛Ｃ＿｛ｊｊ｝｝が正当であると判断し、
前記ハッシュ関数が公開鍵及びξ＿｛ｊ｝，ｃ＿ｊ，ｊ，ｒを含むデータのハッシュ値であり、
前記第２の正当性検証手段は、
ｇ＾｛＜Ｖ，Ξ＞｝＝ｈ＾｛＜Ｖ，Ｋ＞｝Ｇが成立するか否かを判定し、
ｇ＾｛＜Ｖ，Ξ＞｝＝ｈ＾｛＜Ｖ，Ｋ＞｝Ｇが成立したとき、前記署名文が正当であると判定することを特徴とする請求項１８記載の検証装置。
【請求項２０】
前記ベクトルチャレンジを算出するベクトルチャレンジ計算手段と、
前記第１のコミットメントの正当性を判定する第１の正当性検証手段と、
前記ベクトルレスポンスの正当性を判定する第２の正当性検証手段と、
前記第１の正当性検証手段及び前記第２の正当性検証手段において正当性が認められた場合のみ前記署名文を受理することを特徴とする請求項１４記載の検証装置。
【請求項２１】
前記第１の正当性検証手段は、前記入力されたデータの一部をハッシュ関数に入力したときのハッシュ値と前記第１のコミットメントとが一致したとき、前記第１のコミットメントが正当であると判断し、
前記第２の正当性検証手段は、前記判定するデータが第２のコミットメントとよばれるデータと前記ベクトルレスポンスとを有し、前記公開鍵が離散対数問題に係る巡回群の元を二つ含み、前記各元のべき乗剰余である第１及び第２のべき乗剰余を算出し、前記第１のべき乗剰余が前記第２のべき乗剰余と前記第２のコミットメントとを乗算した値と等しいか否かを判定し、
前記第１のべき乗剰余は、前記公開鍵の一部である元を位数とし、Ｓｃｈｎｏｒｒチャレンジをべき指数とし、
前記第２のべき乗剰余は、前記公開鍵の一部である元を位数とし、Ｓｃｈｎｏｒｒレスポンスをべき指数とし、
前記Ｓｃｈｎｏｒｒチャレンジは、前記ベクトルチャレンジと前記基底ベクトルとを用いて算出され、
前記Ｓｃｈｎｏｒｒレスポンスは、前記ベクトルレスポンスと前記基底ベクトルとを用いて算出されることを特徴とする請求項２０記載の検証装置。
【請求項２２】
前記署名装置が正当に署名文を作成した場合にはランダムに選ばれるはずのデータが含まれていない場合、前記データの受理を拒否し、
前記ランダムに選ばれるはずのデータは、前記第１の正当性検証手段で計算される各ハッシュ関数へ入力され、
前記ベクトルレスポンスの一つの成分が前記各ハッシュ関数へ入力され、
前記Ｓｃｈｎｏｒｒチャレンジは、前記ベクトルチャレンジと前記基底ベクトルに関する一次式であり、
前記Ｓｃｈｎｏｒｒレスポンスは、前記ベクトルレスポンスと前記基底ベクトルに関する一次式であることを特徴とする請求項２１記載の検証装置。
【請求項２３】
前記Ｓｃｈｎｏｒｒチャレンジが前記ベクトルチャレンジと前記基底ベクトルとの内積であり、
前記Ｓｃｈｎｏｒｒレスポンスが前記ベクトルレスポンスと前記基底ベクトルとの内積であることを特徴とする請求項２２記載の検証装置。
【請求項２４】
前記メッセージをＭとし、前記検証する署名文が（｛Ｃ＿｛ｉｊ｝｝，｛ｒ＿｛ｃｊｊ｝｝，Ｇ，Ξ）であるとき、
前記ベクトルチャレンジ計算手段は、Ｋ＝（ｃ＿｛１｝，．．．，ｃ＿｛Ｎ｝）＝Ｈ＿｛｛０，１｝＾｛Ｎ｝｝（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ｍ）を算出し、
前記第１の正当性検証手段は、ｊ＝１，．．．，Ｎのすべてについて、Ｃ＿｛ｃ＿ｊｊ｝＝Ｈ＿｛｛０，１｝＾ν｝（ξ＿ｊ，ｒ＿｛ｃ＿ｊｊ｝）が成立するか否かを判定し、全てのｊについて成立する場合、ｂ＝１と、成立しない場合、ｂ＝０と判定し、
ｂ＝０のとき、前記第２の正当性検証手段は、ｇ＾｛＜Ｖ，Ξ＞｝＝ｈ＾｛＜Ｖ，Ｋ＞｝Ｇが成立するか否かを判定し、
ｇ＾｛＜Ｖ，Ξ＞｝＝ｈ＾｛＜Ｖ，Ｋ＞｝Ｇが成立しないとき、ｂ＝０とし、前記署名文が受理されなかった旨のデータを出力し、
ｇ＾｛＜Ｖ，Ξ＞｝＝ｈ＾｛＜Ｖ，Ｋ＞｝Ｇが成立しているとき、ｂ＝１とし、前記署名文が受理された旨のデータを出力することを特徴とする請求項２３記載の検証装置。
【請求項２５】
正当性を判定する証明文として請求項４記載の前記署名装置によって作成された署名文を用いることを特徴とする証明装置。
【請求項２６】
正当性を判定する証明文として請求項８記載の前記署名装置によって作成された署名文を用いることを特徴とする証明装置。
【請求項２７】
正当性を判定する証明文として請求項１２記載の前記署名装置によって作成された署名文を用いることを特徴とする証明装置。
【請求項２８】
検証者指定証明方式の検証装置における公開鍵の正当性を判定するための証明文を生成する証明装置であって、
前記検証装置の公開鍵は、二つのデータを含み、前記第１のデータと第２のデータとが同じ巡回群に属し、検証者の秘密鍵又はその一部が前記第１のデータを位数とし、前記第２のデータを離散対数とし、
正当性を判定する証明文、若しくはその一部として請求項４記載の署名装置によって作成された署名文を用いることを特徴とする証明装置。
【請求項２９】
検証者指定証明方式の検証装置における公開鍵の正当性を判定するための証明文を生成する証明装置であって、
前記検証装置の公開鍵は、二つのデータを含み、前記第１のデータと第２のデータとが同じ巡回群に属し、検証者の秘密鍵又はその一部が前記第１のデータを位数とし、前記第２のデータを離散対数とし、
正当性を判定する証明文、若しくはその一部として請求項８記載の署名装置によって作成された署名文を用いることを特徴とする証明装置。
【請求項３０】
検証者指定証明方式の検証装置における公開鍵の正当性を判定するための証明文を生成する証明装置であって、
前記検証装置の公開鍵は、二つのデータを含み、前記第１のデータと第２のデータとが同じ巡回群に属し、検証者の秘密鍵又はその一部が前記第１のデータを位数とし、前記第２のデータを離散対数とし、
正当性を判定する証明文、若しくはその一部として請求項１２記載の署名装置によって作成された署名文を用いることを特徴とする証明装置。
【請求項３１】
証明文、若しくはその一部として前記署名文を用い、
検証者指定証明方式の検証装置の公開鍵に対する証明文の正当性を検証する
ことを特徴とする請求項１８記載の検証装置。
【請求項３２】
証明文、若しくはその一部として前記署名文を用い、
検証者指定証明方式の検証装置の公開鍵に対する証明文の正当性を検証する
ことを特徴とする請求項２３記載の検証装置。
【請求項３３】
暗号文の作成に使用した乱数の知識を証明する証明文、若しくはその一部として請求項４記載の前記署名装置によって作成された署名文を用いることを特徴とする暗号化装置。
【請求項３４】
暗号文の作成に使用した乱数の知識を証明する証明文、若しくはその一部として請求項８記載の前記署名装置によって作成された署名文を用いることを特徴とする暗号化装置。
【請求項３５】
暗号文の作成に使用した乱数の知識を証明する証明文、若しくはその一部として請求項１２記載の前記署名装置によって作成された署名文を用いることを特徴とする暗号化装置。
【請求項３６】
暗号文の一部として含まれる証明文として前記署名文を用い、前記証明文を請求項１８記載の前記検証装置により検証することを特徴とする復号化装置。
【請求項３７】
暗号文の一部として含まれる証明文として前記署名文を用い、前記証明文を請求項２３記載の前記検証装置により検証することを特徴とする復号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、署名装置、検証装置、証明装置、暗号化装置、及び復号化装置に関し、特に、署名文偽造問題が離散対数問題に効率的に帰着する署名装置、検証装置、証明装置、暗号化装置、及び復号化装置に関する。
【背景技術】
【０００２】
公開鍵は、暗号化と復号に異なる鍵を用いる暗号であり、復号に用いる鍵を秘密にする一方、暗号化に用いる鍵を公開する。公開鍵は、公開する鍵の真正性を確保する仕組みが必要となるものの、事前に通信相手に鍵を配送する必要がなく、かつ通信相手確認や受信データの真正性確認等を可能にするディジタル署名を実現できる。そのため、インターネット等などのネットワークにおける情報セキュリティ技術として広く利用されている。
【０００３】
近年、公開鍵の研究として証明可能な安全性と実用性を兼ね備えた暗号方式が注目されている。現在、実用化されている暗号方式には、これまでに効率的な解読法が見つかっていないものの、安全性が証明されていないものが多い。したがって、それらの暗号方式について、効率的な解読法が存在する可能性を否定することはできない。
【非特許文献１】
Mihir. Bellare and Phillip. Rogaway.  Random Oracles are Practical: A Paradigm for Designing Efficient Protocols. ACM-CCS. 1993. pp. 62-73
【非特許文献２】
Mihir Bellare, Phillip Rogaway. The Exact Security of Digital Signatures: How to Sign with RSA and Rabin. In Advances in Cryptology --- EUROCRYPT'96, vol.1070 of LNCS, pp.399-416, Springer-Verlag, 1996.
【非特許文献３】
Jean-Sebastien Coron. On the Exact Security of Full Domain Hash. In Advances in Cryptology --- CRYPTO 2000, vol.1880 of LNCS, pp.229-235, Springer-Verlag, 2000.
【非特許文献４】
Amos. Fiat and Adi. Shamir. How to prove yourself: Practical Solution to Identification and  Signature Problems. In Advances in Cryptology --- CRYPTO'86,  vol.263 of LNCS, pp.186-194, Springer-Verlag, 1987.
【非特許文献５】
Eu-Jin Goh, Stanislaw Jarecki. A Signature Scheme as Secure as the Diffie-Hellman Problem. In Advances in Cryptology --- EUROCRYPT 2003, vol.2656 of LNCS, pp.401-415, Springer-Verlag, 2003.
【非特許文献６】
Kazuo Ohta, Tatsuaki Okamoto. On Concrete Security Treatment of Signatures Derived from Identification. In Advances in Cryptology --- CRYPTO'98, vol.1462 of LNCS, pp.354-369, Springer-Verlag, 1998.
【非特許文献７】
Rafael Pass. On Deniability in the Common Reference String and Random Oracle Model. In Advances in Cryptology --- CRYPTO 2003,vol.2729 of LNCS pp.316-337, SpringerVerlag, 2003.
【非特許文献８】
David Pointcheval, Jacques Stern: Security Arguments for Digital Signatures and Blind Signatures. J. Cryptology 13(3):361-396 (2000)
【非特許文献９】
R.Rivest, A.Shamir, L.Adleman. A Method for Obtaining Digital Singatures and Public-Key Cryptosystems. Communicaions of the ACM. vol.21, No.2, pp.120-126, 1978.
【非特許文献１０】
C. Schnorr. Efficient Signature Generation by Smart Cards. Journal of Cryptology, 4(3), pp. 161-174, 1991.
【非特許文献１１】
Handbook of Applied Cryptography. A. Menezes P. Oorschot, and S. Vanstone, CRC Press.
【非特許文献１２】
Rafael Pass. On Deniability in the Common Reference String and Random Oracle Model. In Advances in Cryptology --- CRYPTO 2003, vol.2729 of LNCS, pp.316-337, Springer-Verlag, 2003.
【非特許文献１３】
Markus Jakobsson, Kazue Sako, and Russell Impagliazzo. Designated Verifier Proofs and Their Applications. In Advances in Cryptology --- EUROCRYPT'96, vol. 1070 of LNCS, pp.143-154, Springer-Verlag, 1996.
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上記の発明は以下の問題を有している。
【０００５】
非特許文献９により最初の電子署名方式が提案されて以来、安全でかつ効率的な署名方式の実現が暗号理論における一つの目標であった。この目標を実現する為にまず考えられたのは、Fiat-Shamirヒューリスティック（非特許文献４）やhash-then-sign 法(非特許文献１)を用いた署名方式である。
【０００６】
しかし、こうした署名方式の安全性証明(非特許文献３、６、８)では、多項式時間では署名文を偽造できないことは示されているものの、具体的にどの程度の計算量で署名文を偽造できるのかが示されていない。そのため、ベースとなる問題の復号に要する計算量よりもずっと少ない計算量で署名文の偽造に成功する攻撃者が存在する可能性がある（非特許文献２）。
【０００７】
Schnorr署名方式（非特許文献１０）は、そのような可能性をはらむ署名方式の一つである。ベースとなる問題である離散対数問題がλビット程度の安全性を持っていたとしても、Schnorr署名方式の安全性証明（非特許文献６、８）はSchnorr署名方式がλ／２ビット程度の安全性を持つことしか保証されない。そのため、署名文の偽造問題が離散対数問題に効率的に帰着できる署名方式が望まれる。
【０００８】
このような性質を満たす方式を作ることは、理論的に可能であることが知られている。離散対数問題のcut-and-choose式の証明（非特許文献７）の方法で変換してできる方式は、この性質を満たす。しかし、この方式は、署名・検証計算に多くの計算量を必要としてしまう。署名文の偽造問題が離散対数問題に効率的に帰着できる署名方式でかつ計算量の少ない方式を作ることはできない（非特許文献５）。
【０００９】
非特許文献２では、安全性証明の際に攻撃者をrewindするため、ベースとなる問題への帰着効率が落ちるので、ベースとなる問題よりも安全性が劣る。Schnorr署名方式の安全性証明\cite[PS00]では、攻撃者をrewindするのでベースとなる問題である離散対数問題よりも安全性が劣ってしまう。
【００１０】
そこで、本発明は、ハッシュ値をコミットメントとして用いていることにより、攻撃者をrewindすることなくコミットメントから攻撃者の秘密情報を要約する署名装置、検証装置、証明装置、暗号化装置、及び復号化装置を提案することを目的としている。
【課題を解決するための手段】
［００１１］
［００１２］
請求項２記載の発明は、コミットメントを用いて署名文を生成し、前記コミットメントは、コミットする値を含む組のハッシュ値であり、公開鍵として離散対数問題に係る巡回群の元の対を含むデータを用い、かつ秘密鍵として前記対の位数の離散対数を用いる署名装置において、第一のコミットメントに係るコミティッドベクトルを選択するコミティッドベクトル選択手段と、第１のコミットメントを算出する第一コミットメント計算手段と、基底ベクトルを算出する基底ベクトル計算手段と、前記べき乗剰余を算出し、第２のコミットメントを生成する第２のコミットメント計算手段と、ベクトルチャレンジを算出するベクトルチャレンジ計算手段と、前記第１のコミットメントと、前記べき乗剰余の算出に用いた集合と、前記ベクトルチャレンジと、前記基底ベクトルとを用いてベクトルレスポンスを算出するベクトルレスポンス計算手段と、前記コミティッドベクトル、前記第１のコミットメント、前記基底ベクトル、前記第２のコミットメント、前記ベクトルチャレンジ、及び前記ベクトルレスポンスを格納する記憶部とを有し、前記基底ベクトルと前記ベクトルチャレンジとがハッシュ値であることを特徴とする。
［００１３］
請求項３記載の発明は、請求項２記載の署名装置において、前記コミティッドベクトル選択手段は、複数の前記コミティッドベクトルを選択し、前記複数のコミティッドベクトルの各成分と秘密鍵とが群位数を法とする関係式を満たし、前記集合が前記コミティッドベクトル選択手段によって選択されたデータの一部と前記基底ベクトルと前記ベクトルチャレンジとを用いて算出されるデータであることを特徴とする。
［００１４］
請求項４記載の発明は、請求項３記載の署名装置において、前記コミティッドベクトルの各成分と前記秘密鍵とが群位数を法とする一次式を満たし、前記第一コミットメントの入力が乱数を含むデータであり、前記データの一部は前記ベクトルチャレンジによって決定され、かつ前記集合が前記データの一部及び前記基底ベクトルから一次式で表されることを特徴とする。
［００１５］
請求項５記載の発明は、請求項４記載の署名装置において、前記コミティッドベクトルは２つの成分からなり、前記成分の一方は、他方の前記成分に秘密鍵を加えた値の群位数を法として剰余した値であり、第一コミットメントへの入力が前記コミティッドベクトルの各成分を特定するデータを有し、前記集合は前記データの一部と前記基底ベクトルを内積した値であることを特徴とする。
【００１６】
請求項６記載の発明は、請求項５記載の署名装置において、セキュリティーパラメータがκ、Ｎ、νであり、前記巡回群の位数がｑであるとき、前記コミティッドベクトル選択手段は、剰余群Ｘ＿｛０１｝，．．．，Ｘ＿｛０Ｎ｝∈（Ｚ／ｑＺ）をランダムに選択し、ｊ＝１，・・・Ｎの前記剰余群Ｘ＿｛０ｊ｝にｘを加えたものの位数ｑを法として剰余したものをＸ＿｛１ｊ｝とし、ｉ＝０，１の前記コミティッドベクトルは、Ｙ＿ｉ＝（Ｘ＿｛ｉ１｝，．．．，Ｘ＿｛ｉＮ｝）であり、前記第１のコミットメント計算手段は、ランダムにνビットのビット列rを選択し、ｉ＝０，１であり、前記公開鍵、Ｘ＿｛ｉｊ｝，ｉ，ｊ，ｒを含むデータのハッシュ値を前記第１のコミットメントＣ＿｛ｉｊ｝とし、前記基底ベクトル計算手段は、前記公開鍵及び前記第１のコミットメントＣ＿｛ｉｊ｝を含むデータのハッシュ値を前記基底ベクトルＶ＝（ｕ＿１，．．．，ｕ＿Ｎ）とし、前記第二コミットメント計算手段は、前記基底ベクトルＶとＹ＿０との内積を算出し、さらに第２のコミットメントＧ＝ｇ＾｛Ｘ｝を算出し、前記ベクトルチャレンジ計算手段は、公開鍵、｛Ｃ＿｛ｉｊ｝｝、Ｇ、ｒ及び前記署名装置が受信したメッセージを含むデータのハッシュ値Ｋ＝（ｃ＿１，．．．，ｃ＿Ｎ）を算出し、前記ベクトルレスポンス計算手段は、ｊ＝１，．．．，Ｎすべてについて前記ベクトルレスポンスξ＿｛ｊ｝＝Ｘ＿｛ｃ＿ｊｊ｝、及びΞ＝（ξ＿１，．．．，ξ＿κ）を算出し、署名文（ｒ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ξ）を出力することを特徴とする。
【００１７】
請求項７記載の発明は、請求項２記載の署名装置において、前記コミティッドベクトル選択手段は、前記複数のコミティッドベクトルを選択し、前記複数のコミティッドベクトルの各成分と秘密鍵とが関係式を満たすことを特徴とする。
【００１８】
請求項８記載の発明は、請求項７記載の署名装置において、前記関係式は、前記複数のベクトルの各成分と秘密鍵との一次式を満たし、前記第１のコミットメントの入力が乱数を含むデータであることを特徴とする。
【００１９】
請求項９記載の発明は、請求項８記載の署名装置において、前記複数のコミティッドベクトルは、複数の成分を有し、前記成分の一方は、他方の成分に秘密鍵を加えたものであり、前記第１のコミットメントの入力として、前記第１のコミットメントへの入力が前記各成分を特定するデータと、第何番目の成分であるかを特定するデータとを含むことを特徴とする。
【００２０】
請求項１０記載の発明は、請求項９記載の署名装置において、セキュリティーパラメータがκ、Ｎ、νであり、整数の集合Ｒ｛κ＋ξ｝を０≦Ｒ｛κ＋ξ｝＜２＾｛κ＋ξ｝とするとき、前記コミティッドベクトル選択手段は、剰余群Ｘ＿｛０１｝，．．．，Ｘ＿｛０Ｎ｝∈（Ｚ／ｑＺ）をランダムに選択し、ｊ＝１，・・・Ｎの前記剰余群Ｘ＿｛０ｊ｝にｘを加えたものをＸ＿｛１ｊ｝とし、ｉ＝０，１の前記コミティッドベクトルは、Ｙ＿ｉ＝（Ｘ＿｛ｉ１｝，．．．，Ｘ＿｛ｉＮ｝）であり、前記第１のコミットメント計算手段は、ランダムにνビットのビット列ｒを選択し、ｉ＝０，１であり、前記公開鍵、Ｘ＿｛ｉｊ｝，ｉ，ｊ，ｒを含むデータのハッシュ値を前記第１のコミットメントＣ＿｛ｉｊ｝とし、前記基底ベクトル計算手段は、前記公開鍵及び前記第１のコミットメントＣ＿｛ｉｊ｝を含むデータのハッシュ値を前記基底ベクトルＶ＝（ｕ＿１，．．．，ｕ＿Ｎ）とし、前記第２のコミットメント計算手段は、前記基底ベクトルＶとＹ＿０との内積を算出し、さらに第２のコミットメントＧ＝ｇ＾｛Ｘ｝を算出し、前記ベクトルチャレンジ計算手段は、公開鍵、｛Ｃ＿｛ｉｊ｝｝、Ｇ、ｒおよび前記署名装置が受信したメッセージを含むデータのハッシュ値Ｋ＝（ｃ＿１，．．．，ｃ＿Ｎ）を算出し、前記ベクトルレスポンス計算手段は、ｊ＝１，．．．，Ｎすべてについて前記ベクトルレスポンスξ＿｛ｊ｝＝Ｘ＿｛ｃ＿ｊｊ｝、及びΞ＝（ξ＿１，．．．，ξ＿κ）を算出し、署名文（ｒ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ξ）を出力することを特徴とする。
【００２１】
請求項１１記載の発明は、請求項１０記載の署名装置において、第一のコミットメントに係るコミティッドベクトルを選択するコミティッドベクトル選択手段と、第１のコミットメントを算出する第一コミットメント計算手段と、基底ベクトルを算出する基底ベクトル計算手段と、前記べき乗剰余を算出し、第２のコミットメントを生成する第２のコミットメント計算手段と、ベクトルチャレンジを算出するベクトルチャレンジ計算手段と、前記第１のコミットメントと、前記べき乗剰余の算出に用いた集合と、前記ベクトルチャレンジと、前記基底ベクトルとを用いてベクトルレスポンスを算出するベクトルレスポンス計算手段と、前記コミティッドベクトル、前記第１のコミットメント、前記基底ベクトル、前記第２のコミットメント、前記ベクトルチャレンジ、及び前記ベクトルレスポンスを格納する記憶部とを有し、前記基底ベクトルと前記ベクトルチャレンジとがハッシュ値であることを特徴とする。
【００２２】
請求項１２記載の発明は、請求項１１記載の署名装置において、前記コミティッドベクトル選択手段は、前記コミティッドベクトルを複数選択し、前記複数のコミティッドベクトルの各成分と秘密鍵とが群位数を法とする関係式を満たし、前記集合が前記コミティッドベクトル選択手段によって選択されたデータの一部と前記基底ベクトルと前記ベクトルチャレンジとを用いて算出されたデータであることを特徴とする。
【００２３】
請求項１３記載の発明は、請求項１２記載の署名装置において、前記コミティッドベクトルの各成分と秘密鍵とが群位数を法とする一次式を満たし、前記第１のコミットメントが乱数を含むデータであり、前記データの一部が前記ベクトルチャレンジによって決定され、前記集合が前記データの一部及び前記基底ベクトルに対して一次式で表されることを特徴とする。
【００２４】
請求項１４記載の発明は、請求項１３記載の署名装置において、前記コミティッドベクトルの各成分は、一方の成分は、他方の成分に秘密鍵を加えた群位数を法として剰余した値であり、前記集合が前記データの一部と前記基底ベクトルとを内積した値であり、前記基底ベクトルが所定数tで（１，ｔ＾１，ｔ^２，・・・，ｔ＾Ｎ）と乗算した値であることを特徴とする。
【００２５】
請求項１５記載の発明は、請求項１４記載の署名装置において、前記メッセージＭとするとき、前記コミティッドベクトル選択手段は、ランダムにＹ＿０＝（Ｘ＿｛０１｝，．．．，Ｘ＿｛０Ｎ｝）∈Ｚｑ＾｛Ｎ｝を選択し、ｊ＝１，．．．，ＮについてＸ＿｛１ｊ｝＝ｘ＋Ｘ＿｛０ｊ｝ｍｏｄｑとし、前記コミティッドベクトルＹ＿１＝（Ｘ＿｛１１｝，．．．Ｘ＿｛１Ｎ｝を生成し、前記第２のコミットメント計算手段は、Ｘ＝＜｛Ｙ＿０，Ｖ｝＞＝Σ＿ｊＸ＿｛０ｊ｝２＾｛ｊ−１｝ｍｏｄｑを算出し、さらに前記コミットメントＧ＝ｇ＾｛Ｘ｝を算出し、前記第１のコミットメント計算手段は、各ｉ、jについてランダムにｒ＿｛ｉｊ｝∈｛０，１｝＾｛ν｝を選択し、Ｘ＿｛ｉｊ｝の第１のコミットメントＣ＿｛ｉｊ｝＝Ｈ＿｛｛０，１｝＾ν｝（Ｘ＿｛ｉｊ｝，ｒ＿｛ｉｊ｝）を算出し、
前記ベクトルチャレンジ計算手段は、Ｋ＝（ｃ＿｛１｝，．．．，ｃ＿｛Ｎ｝）＝Ｈ＿｛｛０，１｝＾｛Ｎ｝（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ｍ）を算出し、前記ベクトルレスポンス計算手段は、各jに対し、前記ベクトルレスポンスξ＿ｊ＝Ｘ＿｛ｃ＿ｊｊ｝ｍｏｄｑを算出し、さらにΞ＝（ξ＿｛１｝，．．．，ξ＿｛Ｎ｝）を算出し、署名文（｛Ｃ＿｛ｉｊ｝｝，｛ｒ＿｛ｃ＿ｊｊ｝｝，Ｇ，Ξ）を出力することを特徴とする。
【００２６】
請求項１６記載の発明は、入力されたデータの正当性を判定する検証装置において、前記入力されたデータは、メッセージと前記メッセージに対する署名文とを有し、前記データに正当性があるときのみ前記データを受理し、検証計算に第１のコミットメントを用い、前記第１のコミットメントの個数よりも少ない回数のべき乗剰余を実行し、前記データの正当性が認められたとき、前記第１のコミットメントは、前記データの一部であるベクトルレスポンスの成分を含むデータのハッシュ値であり、公開鍵は、離散対数問題に係る巡回群の元の対を含むデータであり、秘密鍵は、前記対の位数の離散対数であることを特徴とする。
【００２７】
請求項１７記載の発明は、請求項１６記載の検証装置において、基底ベクトルを算出する基底ベクトル計算手段と、ベクトルチャレンジを算出するベクトルチャレンジ計算手段と、前記第１のコミットメントの正当性を判定する第１のコミットメント正当性検証手段と、べき乗剰余を算出し、前記ベクトルレスポンスの正当性を判定する第２の正当性検証手段と、前記各手段において入出力されるデータを記憶する記憶手段とを有し、前記ベクトルチャレンジと前記基底ベクトルとがハッシュ値であり、前記第一コミットメント正当性検証手段と前記第二正当性検証手段とが前記署名文を正当なものと判定したときのみ前記データの入力を受理することを特徴とする。
【００２８】
請求項１８記載の発明は、請求項１７記載の検証装置において、前記第１のコミットメント正当性検証手段は、前記ベクトルレスポンスを有する前記入力されたデータの一部を所定の方法でハッシュ関数に入力し、算出したハッシュ値が前記第１のコミットメントと一致するときのみ前記第１のコミットメントが正当であると判断し、前記第二正当性検証手段は、前記判定するデータが第２のコミットメントとよばれるデータと前記ベクトルレスポンスとを有し、前記公開鍵が離散対数問題に係る巡回群の元を二つ含み、前記各元のべき乗剰余である第１及び第２のべき乗剰余を算出し、前記第１のべき乗剰余が前記第２のべき乗剰余と前記第２のコミットメントとを乗算した値と等しいか否かを判定し、前記第１のべき乗剰余は、前記公開鍵の一部である元を位数とし、Schnorrチャレンジを集合とし、前記第２のべき乗剰余は、前記公開鍵の一部である元を位数とし、Schnorrレスポンスを集合とし、前記Schnorrチャレンジは、前記ベクトルチャレンジと前記基底ベクトルとを用いて算出されるデータであり、前記Schnorrレスポンスは、前記ベクトルレスポンスと前記基底ベクトルとを用いて算出されるデータであることを特徴とする。
【００２９】
請求項１９記載の発明は、請求項１８記載の検証装置において、前記署名装置が正当に署名文にランダムに選択されるデータが含まれていない場合、前記データは受理されず、前記ランダムに選択されるデータは、前記第一コミットメント正当性検証手段で計算される各ハッシュ関数へ入力され、前記ベクトルレスポンスの一つの成分が前記各ハッシュ関数へ入力され、前記Schnorrチャレンジは、前記ベクトルチャレンジの一次式、及び前記基底ベクトルの一次式であり、前記Schnorrレスポンスは、前記ベクトルレスポンスの一次式、及び前記基底ベクトルの一次式であることを特徴とする。
【００３０】
請求項２０記載の発明は、請求項１９記載の検証装置において、前記Schnorrチャレンジは、前記ベクトルチャレンジと前記基底ベクトルとの内積であり、前記Schnorrレスポンスは、前記ベクトルレスポンスと前記基底ベクトルとの内積であることを特徴とする。
【００３１】
請求項２１記載の発明は、請求項２０記載の検証装置において、前記メッセージがＭであり、かつ前記判定するデータが（ｒ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ξ）であるとき、前記基底ベクトル計算手段は、前記公開鍵と｛Ｃ＿｛ｉｊ｝｝とを含むデータのハッシュ値を計算し、該ハッシュ値が前記基底ベクトルＶ＝（ｕ＿１，．．．，ｕ＿Ｎ）であり、
前記ベクトルチャレンジ計算手段は、前記公開鍵および｛Ｃ＿｛ｉｊ｝｝，Ｇ，ｒ，Ｍを含むデータのハッシュ値を計算し、該ハッシュ値が前記ベクトルチャレンジＫ＝（ｃ＿１，．．．，ｃ＿Ｎ）であり、前記第１のコミットメント正当性検証手段は、各ｊ＝１，．．．，Ｎに対し、Ｃ＿｛ｃ＿ｊｊ｝と前記ハッシュ関数とが一致する場合のみＣ＿｛ｃ＿ｊｊ｝が正当であると判断し、全てのＣ＿｛ｃ＿ｊｊ｝が正当であるときにのみ｛Ｃ＿｛ｊｊ｝｝が正当であると判断し、前記ハッシュ関数が公開鍵及びξ＿｛ｊ｝，ｃ＿ｊ，ｊ，ｒを含むデータのハッシュ値であり、前記第２の正当性検証手段は、ｇ＾｛＜Ｖ，Ξ＞｝＝ｈ＾｛＜Ｖ，Ｋ＞｝Ｇが成立するか否かを判定し、ｇ＾｛＜Ｖ，Ξ＞｝＝ｈ＾｛＜Ｖ，Ｋ＞｝Ｇが成立したとき、前記署名文が正当であると判定することを特徴とする。
【００３２】
請求項２２記載の発明は、請求項１６記載の検証装置において、前記ベクトルチャレンジを算出するベクトルチャレンジ計算手段と、前記第１のコミットメントの正当性を判定する第１のコミットメント正当性検証手段と、前記べき乗剰余を算出し、前記ベクトルレスポンスの正当性を判定する第２の正当性検証手段と、前記第１のコミットメント正当性検証手段及び前記第２の正当性検証手段において正当性が認められた場合のみ前記署名文を受理することを特徴とする。
【００３３】
請求項２３記載の発明は、請求項２２記載の検証装置において、前記第１のコミットメント正当性検証手段は、前記入力されたデータの一部をハッシュ関数に入力したときのハッシュ値と前記第１のコミットメントとが一致したとき、前記第１のコミットメントが正当であると判断し、前記ハッシュ関数へ入力される前記データは、二つのべき乗剰余を算出し、前記二つのべき乗剰余の一方が前記他方のべき乗剰余に前記第二コミットメントを乗算した値と等しいか否かを判定し、前記判定するデータは、第２のコミットメントと前記ベクトルレスポンスと有し、前記公開鍵は、離散対数問題に係る巡回群の元を有し、前記各べき乗剰余は、前記公開鍵の一部である元の他方を位数、Schnorrチャレンジを集合であり、前記Schnorrチャレンジは、前記ベクトルチャレンジと前記基底ベクトルとを用いて算出され、前記Schnorrレスポンスは、前記ベクトルレスポンスと前記基底ベクトルとを用いて算出されることを特徴とする。
【００３４】
請求項２４記載の発明は、請求項２３記載の検証装置において、前記署名装置が正当に署名文を作成した場合にはランダムに選ばれるはずのデータが含まれていない場合、前記データの受理を拒否し、前記ランダムに選ばれるはずのデータは、前記第一コミットメント正当性検証手段で計算される各ハッシュ関数へ入力され、前記ベクトルレスポンスの一つの成分が前記各ハッシュ関数へ入力され、前記Schnorrチャレンジは、前記ベクトルチャレンジの一次式、及び前記基底ベクトルの一次式であり、前記Schnorrレスポンスは、前記ベクトルレスポンスの一次式、及び前記基底ベクトルの一次式であることを特徴とする。
【００３５】
請求項２５記載の発明は、請求項２４記載の検証装置において、前記Schnorrチャレンジが前記ベクトルチャレンジと前記基底ベクトルとの内積であり、前記Schnorrレスポンスが前記ベクトルレスポンスと前記基底ベクトルとの内積であることを特徴とする。
【００３６】
請求項２６記載の発明は、請求項２５記載の検証装置において、前記メッセージをＭとし、前記検証する署名文が（｛Ｃ＿｛ｉｊ｝｝，｛ｒ＿｛ｃｊｊ｝｝，Ｇ，Ξ）であるとき、前記ベクトルチャレンジ計算手段は、Ｋ＝（ｃ＿｛１｝，．．．，ｃ＿｛Ｎ｝）＝Ｈ＿｛｛０，１｝＾｛Ｎ｝｝（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ｍ）を算出し、前記第一コミットメント正当性検証手段は、ｊ＝１，．．．，Ｎのすべてについて、Ｃ＿｛ｃ＿ｊｊ｝＝Ｈ＿｛｛０，１｝＾ν｝（ξ＿ｊ，ｒ＿｛ｃ＿ｊｊ｝）が成立するか否かを判定し、全てのｊについて成立する場合、ｂ＝１と、成立しない場合、ｂ＝０と判定し、ｂ＝０のとき、前記第２の正当性検証手段は、ｇ＾｛＜Ｖ，Ξ＞｝＝ｈ＾｛＜Ｖ，Ｋ＞｝Ｇが成立するか否かを判定し、ｇ＾｛＜Ｖ，Ξ＞｝＝ｈ＾｛＜Ｖ，Ｋ＞｝Ｇが成立しないとき、ｂ＝０とし、前記署名文が受理されなかった旨のデータを出力し、ｇ＾｛＜Ｖ，Ξ＞｝＝ｈ＾｛＜Ｖ，Ｋ＞｝Ｇが成立しているとき、ｂ＝１とし、前記署名文が受理された旨のデータを出力することを特徴とする。
［００３７］
請求項２７記載の証明装置は、請求項５記載の方法によって証明文の正当性を判定する方法を用いることを特徴とする。
［００３８］
請求項２８記載の証明装置は、請求項９記載の方法によって署名文の正当性を判定する方法を用いることを特徴とする。
［００３９］
請求項２９記載の証明装置は、請求項１４記載の方法によって作成された署名文の正当性を判定することを特徴とする。
［００４０］
［００４１］
請求項３１記載の発明は、検証者指定証明方式の検証装置における公開鍵の正当性を判定する証明装置であって、前記検証装置の公開鍵は、二つのデータを含み、前記第１のデータと第２のデータとが同じ巡回群に属し、検証者の秘密鍵又はその一部が前記第一のデータを位数とし、前記第２のデータを離散対数とし、正当性を判定する証明文、若しくはその一部として請求項５記載の署名装置によって作成された署名文を用いることを特徴とする。
［００４２］
請求項３２記載の発明は、検証者指定証明方式の検証装置における公開鍵の正当性を判定する証明装置であって、前記検証装置の公開鍵は、二つのデータを含み、前記第１のデータと第２のデータとが同じ巡回群に属し、検証者の秘密鍵又はその一部が前記第一のデータを位数とし、前記第２のデータを離散対数とし、正当性を判定する証明文、若しくはその一部として請求項９記載の署名装置によって作成された署名文を用いることを特徴とする。
［００４３］
請求項３３記載の発明は、検証者指定証明方式の検証装置における公開鍵の正当性を判定する証明装置であって、前記検証装置の公開鍵は、二つのデータを含み、前記第１のデータと第２のデータとが同じ巡回群に属し、検証者の秘密鍵又はその一部が前記第一のデータを位数とし、前記第２のデータを離散対数とし、正当性を判定する証明文、若しくはその一部として請求項１４記載の署名装置によって作成された署名文を用いることを特徴とする。
【００４４】
請求項３４記載の発明は、検証者指定証明方式の検証装置の公開鍵に対する証明文の正当性を検証装置であって、請求項２０記載の方法によって検証することを特徴とする。
【００４５】
請求項３５記載の発明は、検証者指定証明方式の検証装置の公開鍵に対する証明文の正当性を検証する検証装置であって、請求項２５記載の方法によって検証することを特徴とする。
【００４６】
請求項３６記載の暗号化装置は、暗号文の作成に使用した乱数の知識を証明する証明文、若しくはその一部として請求項５記載の方法で作成された署名文を用いることを特徴とする。
【００４７】
請求項３７記載の暗号化装置は、暗号文の作成に使用した乱数の知識を証明する証明文、若しくはその一部として請求項９記載の方法で作成された署名文を用いることを特徴とする。
【００４８】
請求項３８記載の暗号化装置は、暗号文の作成に使用した乱数の知識を証明する証明文、若しくはその一部として請求項１４記載の方法で作成された署名文を用いることを特徴とする。
【００４９】
請求項３９記載の復号化装置は、暗号文の一部として証明文を含み、前記証明文を請求項２０記載の方法により検証することを特徴とする。
【００５０】
請求項４０記載の復号化装置は、暗号文の一部として証明文を含み、前記証明文を請求項２５記載の方法により検証することを特徴とする。
【発明の効果】
【００５１】
本発明は、ハッシュ値をコミットメントとして用いていることにより、攻撃者をrewindすることなくコミットメントから攻撃者の秘密情報を要約することができ、かつSchnorr署名方式よりも安全性を確保することができる。また、署名・検証でそれぞれ一回ずつ巾乗剰余計算を行うことにより、署名検証計算における計算量が少なくすることができる。
【発明を実施するための最良の形態】
【００５２】
以下に、本実施形態に係る署名装置及び検証装置の構成及び動作について説明する。
【００５３】
［第１の実施形態］
図１は、本実施形態に係る署名装置ＳＢＮ０及び検証装置ＶＢＮ０の構成を示すブロック図である。署名装置ＳＢＮ０は、受信装置ＲＢＮ０を用いてデータを受信し、送信装置ＳｅＢＮ０からデータを送信する。検証装置ＶＢＮ０は、受信装置ＲＢＮ１を用いてデータを受信する。データの通信に使う通信路には、例えばＬＡＮ、インターネット等を用いることができるが、これに限定されるものではない。
【００５４】
ここで、本実施形態において記号について説明する。
【００５５】
Ａは、位数がｑの巡回群である。位数ｑのビット数は、κである。ｇは、巡回群Ａの基点を表す。なお、巡回群Ａの位数ｑを公開しても巡回群Ａに係る離散対数問題の改ざんは困難なものとする。
【００５６】
Ｚは、整数全体のなす環を表す。Ｎは、自然数全体のなす集合を表す。ベクトルａに対し、ａの第ｉ成分をａ＿ｉと表す。さらに＜・,・＞で内積を表す。ベクトルａとｂの内積は、＜ａ,ｂ＞＝ａ＿１ｂ＿１＋・・・ａ＿Ｎｂ＿Ｎとする。集合ＸのＸ値ハッシュ関数は、Ｈ＿Ｘで表す。
【００５７】
次に、鍵生成の方法を説明する。ランダムにｘ∈（Ｚ／ｑＺ）＼｛０｝を取り、ｈ＝ｇ＾ｘとする。公開鍵及び秘密鍵は、それぞれ（ｇ，ｈ，ｑ）、ｘである。署名装置ＳＢＮ０は、記憶部ＳＢ０に公開鍵と秘密鍵を保存する。また、公開鍵は、検証装置ＶＢＮ０が何らかの形で入手できる場所に保管されているものとする。入手方法としては、例えば、インターネット上に公開された公開鍵簿に保管する手段、署名装置ＳＢＮ０から直接入手する手段等がある。検証装置ＶＢＮ０は、必要に応じて公開鍵を入手し、記憶部ＳＢ０に保管する。鍵生成方法の詳細は非特許文献１１を参照されたい。以後、すでに検証装置ＶＢＮ０が公開鍵を入手した状態から説明する。
【００５８】
まず、ＳＢＮ０の動作を図１から３を用いて説明する。
【００５９】
受信装置ＲＢＮ０がメッセージを受け取ると、署名装置ＳＢＮ０は、まず、該メッセージを入力手段ＳＢ１に入力する。そして、コミティッドベクトル選択手段ＳＢ２、第一コミットメント計算手段ＳＢ３、基底ベクトル計算手段ＳＢ４、第二コミットメント計算手段ＳＢ５、ベクトルチャレンジ計算手段ＳＢ６、ベクトルレスポンス計算手段ＳＢ７、及び署名文出力手段ＳＢ８において、署名文が作成・出力される。
【００６０】
各手段（ＳＢ１からＳＢ７）は、必要に応じて記憶部ＳＢ０からデータを読み込み、処理を施した後、記憶部ＳＢ０に格納する。
【００６１】
以下に各手段（ＳＢ１からＳＢ７）における具体的な処理について説明する。
【００６２】
入力手段ＳＢ１は、受信装置ＲＢＮ０からメッセージＭを受け取り、メッセージＭを記憶部ＳＢ０に格納する。
【００６３】
次に、コミティッドベクトル選択手段ＳＢ２における処理について説明する。
【００６４】
まず、コミティッドベクトル選択手段ＳＢ２は、記憶部ＳＢ０にメッセージＭが格納されると、位数ｑを記憶部ＳＢ０から読み込む（ＳＦ２）。位数ｑが読み込まれると、コミティッドベクトル選択手段ＳＢ２は、位数ｑの剰余群Ｘ＿｛０１｝,．．．，Ｘ＿｛０Ｎ｝∈（Ｚ／ｑＺ）をランダムに選択する（ＳＦ３）。次に、ｊ＝１，．．．，Ｎの全てについて、Ｘ＿｛１ｊ｝＝ｘ＋Ｘ＿｛０ｊ｝ｍｏｄｑを算出する（ＳＦ４）。そして、ｉ＝０及びｊ＝１，．．．，ＮのＸ＿｛０ｊ｝をＹ＿０と、ｉ＝０及びｊ＝１，．．．，ＮのＸ＿｛１ｊ｝をＹ＿１とし（ＳＦ５）、第ｉコミティッドベクトルと呼ぶ。Ｙ＿０及びＹ＿１は、記憶部ＳＢ０に格納される（ＳＦ６）。
【００６５】
第一コミットメント計算手段ＳＢ３における処理について説明する。
【００６６】
第一コミットメント計算手段ＳＢ３は、まず、（ν，ｇ，ｈ，｛Ｘ＿｛ｉｊ｝｝，ｉ，ｊ，ｒ）を記憶部ＳＢ０から読み込む（ＳＦ７）。次に、第一コミットメント計算手段ＳＢ３は、ランダムにνビットのビット列ｒを選択する（ＳＦ８）。そして、ビット列ｒ及び公開鍵（ｇ，ｈ，ｑ）を含むデータのハッシュ値Ｃ＿｛ｉｊ｝＝Ｈ＿｛｛０，１｝？ν｝（ｇ，ｈ，Ｘ＿｛ｉｊ｝，ｉ，ｊ，ｒ）を算出する（ＳＦ９）。ここで、ｉ＝０，１とする。なお、本実施形態においては、第一コミットメント計算手段ＳＢ３によって算出されたハッシュ値Ｃ＿｛ｉｊ｝を第一コミットメントとし、｛Ｃ＿｛ｉｊ｝｝＿｛ｉ＝０，１，ｊ＝１，．．．，Ｎ｝を第一コミットメントベクトルとする。
【００６７】
第一コミットメント計算手段ＳＢ３によって算出された第一コミットメントベクトル（ｒ，｛Ｃ＿｛ｉｊ｝｝）は、記憶部ＳＢ０に格納される（ＳＦ１０）。
【００６８】
基底ベクトル計算手段ＳＢ４における処理について説明する。
【００６９】
まず、基底ベクトル計算手段ＳＢ４は、（ｑ，Ｎ，ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝）を記憶部ＳＢ０から読み込む（ＳＦ１１）。
【００７０】
次に、基底ベクトル計算手段ＳＢ４は、公開鍵（ｑ，ｇ，ｈ）及び第一コミットメント｛Ｃ＿｛ｉｊ｝｝を含むデータのハッシュ値Ｖ＝（ｕ＿１，．．．，ｕ＿Ｎ）＝Ｈ＿｛（（Ｚ／ｑＺ）＼｛０｝）＾｛Ｎ｝｝（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝）を算出し（ＳＦ１２）、Ｖを基底ベクトルとして記憶部ＳＢ０に格納する（ＳＦ１３）。
【００７１】
次に、第二コミットメント計算手段ＳＢ５を説明する。
【００７２】
まず、第二コミットメント計算手段ＳＢ５は、（ｑ，ｇ，Ｖ，Ｙ＿０）を記憶部ＳＢ０から読み出し（ＳＦ１４）、基底ベクトルＶとＹ＿０との内積を算出する（ＳＦ１５）。さらに、第二コミットメントＧ＝ｇ＾｛Ｘ｝を算出し（ＳＦ１６）、第二コミットメントＧを記憶部ＳＢ０に格納する（ＳＦ１７）。
【００７３】
次に、ベクトルチャレンジ計算手段ＳＢ６における動作を説明する。
【００７４】
まず、ベクトルチャレンジ計算手段ＳＢ６は、（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，ｒ，Ｍ）を記憶部ＳＢ０から読み込み（ＳＦ１８）、ベクトルチャレンジＫ＝（ｃ＿１，．．．，ｃ＿Ｎ）＝Ｈ＿｛｛０，１｝＾Ｎ｝（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，ｒ，Ｍ）を算出し（ＳＦ１９）、記憶部ＳＢ０に格納する（ＳＦ２０）。
【００７５】
次に、ベクトルレスポンス計算手段ＳＢ７における動作を説明する。
【００７６】
まず、ベクトルレスポンス計算手段ＳＢ７は、（｛Ｘ＿｛ｉｊ｝｝，｛ｃ＿ｊ｝）を記憶部ＳＢ０から読み出し（ＳＦ２１）、ｊ＝１，．．．，Ｎにおけるξ＿｛ｊ｝＝｛ｃ＿ｊｊ｝を算出し、ベクトルレスポンスΞ＝（ξ＿１，．．．，ξ＿κ）として記憶部ＳＢ０に格納する（ＳＦ２４）。
【００７７】
次に、署名文出力手段ＳＢ８の動作について説明する。
【００７８】
署名文出力手段ＳＢ８は、署名文（ｒ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ξ）を読み出し（ＳＦ２５）、署名文（ｒ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ξ）を検証装置ＶＢＮ０に出力する（ＳＲ２６）。
【００７９】
次に、検証装置ＶＢＮ０の構成及び動作について図１及び図４を用いて説明する。
【００８０】
受信装置ＲＢＮ１がメッセージＭを受信すると、入力手段ＶＢ１はメッセージＭ及びその署名文（ｒ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ξ）を記憶部ＶＢ０に格納する（ＶＦ１）。メッセージＭ及び署名文（ｒ、｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ξ）が記憶部ＶＢ０に格納されると、基底ベクトル計算手段ＶＢ２、ベクトルチャレンジＶＢ３、第一正当性検証手段ＶＢ４、第二正当性検証手段ＶＢ５、及び出力手段ＶＢ６における以下の検証処理を経て、署名文の正当性が検証される。
【００８１】
まず、基底ベクトル計算手段ＶＢ２における動作について説明する。
【００８２】
基底ベクトル計算手段ＶＢ２は、記憶部ＶＢ０から（Ｎ，ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝）を読み出し（ＶＦ２）、基底ベクトルＶ＝（ｕ＿１，．．．，ｕ＿Ｎ）＝Ｈ＿｛（（Ｚ／ｑＺ）＼｛０｝）＾｛Ｎ｝｝（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝）を算出し（ＶＦ３）、記憶部ＶＢ０に格納する（ＶＦ４）。
【００８３】
次に、ベクトルチャレンジ計算手段ＶＢ３における動作について説明する。
【００８４】
ベクトルチャレンジ計算手段ＶＢ３は、（ν，ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，ｒ，Ｍ）を記憶部ＶＢ０から読み込み（ＶＦ５）、ベクトルチャレンジＫ＝（ｃ＿１，．．．，ｃ＿Ｎ）＝Ｈ＿｛｛０，１｝＾ν｝（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，ｒ，Ｍ）を算出し（ＶＦ６）、記憶部ＶＢ０に格納する（ＶＦ７）。
【００８５】
次に、第一コミットメント正当性検証手段ＶＢ４における動作について説明する。
【００８６】
まず、第一コミットメント正当性検証手段ＶＢ４は、記憶部ＶＢ０から（ν，ｇ，ｈ，ξ＿｛ｊ｝，｛ｃ＿ｊ｝，｛Ｃ＿｛ｃ＿ｊｊ｝｝）を読み出す（ＶＦ８）。そして、ｊ＝１，．．．，Ｎそれぞれについて、Ｈ＿｛｛０，１｝＾｛ν｝｝（ｇ，ｈ，ξ＿｛ｊ｝，ｃ＿ｊ，ｊ，ｒ）＝Ｃ＿｛ｃ＿ｊｊ｝が成立するか否かを検証する。そして、Ｈ＿｛｛０，１｝＾｛ν｝｝（ｇ，ｈ，ξ＿｛ｊ｝，ｃ＿ｊ，ｊ，ｒ）＝Ｃ＿｛ｃ＿ｊｊ｝が成立したｊをｂ＝１とし、不成立のｊをｂ＝０とし、記憶部ＶＢ０に格納する（ＶＦ９）。さらに、第一のコミットメント正当性検証手段ＶＢ４は、ｊ＝１，．．．，Ｎに対応するｂが０であるか否かを判定する（ＶＦ１０）。そして、ｂ＝０のときは（ＶＦ１０／ＹＥＳ）、検証を終了する。ｂ＝１のときは（ＶＦ１０／ＮＯ）、第二正当性検証手段ＶＢ５における処理に移行する。
【００８７】
まず、第二正当性検証手段ＶＢ５は、（ｂ，ｇ，ｈ，Ｖ，Ξ，Ｋ，Ｇ）を記憶部ＶＢ０から読み出す（ＶＦ１２）。次に、ｇ＾｛＜Ｖ，Ξ＞｝＝ｈ＾｛＜Ｖ，Ｋ＞｝Ｇが成立するか否かを確認し、成立している場合はＶＦ９において格納されたｂ＝１をｂ＝０に書き換える（ＶＦ１３、ＶＦ１４））。ここで、＜Ｖ，Ξ＞をＳｃｈｎｏｒｒレスポンス、＜Ｖ，Ｋ＞をＳｃｈｎｏｒｒチャレンジとする。
【００８８】
最後に、出力手段ＶＢ６は、ｂ＝１ならば署名文が受理された旨のデータを出力し、ｂ＝０ならば署名文が棄却された旨のデータを出力する。
【００８９】
［第２の実施形態］
図１は、本実施形態に係る署名装置ＳＢＮ０及び検証装置ＶＢＮ０の構成を示すブロック図である。署名装置ＳＢＮ０は、受信装置ＲＢＮ０を用いてデータを受信し、送信装置ＳｅＢＮ０からデータを送信する。検証装置ＶＢＮ０は、受信装置ＲＢＮ１を用いてデータを受信する。データの送受信は、例えば、ＬＡＮ、インターネット等を用いて行われるが、これに限定されるものではない。
【００９０】
ここで、本実施形態において記号について説明する。
【００９１】
Ａは、位数がｑの巡回群である。位数ｑのビット数は、κである。ｇは、巡回群Ａの基点を表す。なお、巡回群Ａの位数ｑを公開しても巡回群Ａに係る離散対数問題の改ざんは困難なものとする。
【００９２】
Ｚは、整数全体のなす環を表す。Ｎは、自然数全体のなす集合を表す。ベクトルａに対し、ａの第ｉ成分をａ＿ｉと表す。さらに＜・,・＞で内積を表す。ベクトルａとｂの内積は、＜ａ,ｂ＞＝ａ＿１ｂ＿１＋・・・ａ＿Ｎｂ＿Ｎとする。集合ＸのＸ値ハッシュ関数は、Ｈ＿Ｘで表す。そして、Ｒ＿｛κ＋ζ｝＝Ｚ∩［０，２＾｛κ＋ζ｝］とする。集合Ｘのハッシュ値関数は、Ｈ＿Ｘとする。
【００９３】
次に、鍵生成の方法を説明する。ランダムにｘ∈（Ｚ／ｑＺ）＼｛０｝を取り、ｈ＝ｇ＾ｘとする。公開鍵及び秘密鍵は、それぞれ（ｇ，ｈ，ｑ）、ｘである。署名装置ＳＢＮ０は、記憶部ＳＢ０に公開鍵と秘密鍵を保存する。また、公開鍵は、検証装置ＶＢＮ０が何らかの形で入手できる場所に保管されているものとする。入手方法としては、例えば、インターネット上に公開された公開鍵簿に保管する手段、署名装置ＳＢＮ０から直接入手する手段等がある。検証装置ＶＢＮ０は、必要に応じて公開鍵を入手し、記憶部ＳＢ０に保管する。鍵生成方法の詳細は非特許文献１１を参照されたい。以後、すでに検証装置ＶＢＮ０が公開鍵を入手した状態から説明する。
【００９４】
次に、本実施形態に係る署名装置ＳＢＮ０の具体的な動作を図１、５、及び６を用いて説明する。
【００９５】
受信装置ＲＢＮ０がメッセージを受け取ると、署名装置ＳＢＮ０は、まず、該メッセージを入力手段ＳＢ１に入力する。そして、コミティッドベクトル選択手段ＳＢ２、第一コミットメント計算手段ＳＢ３、基底ベクトル計算手段ＳＢ４、第二コミットメント計算手段ＳＢ５、ベクトルチャレンジ計算手段ＳＢ６、ベクトルレスポンス計算手段ＳＢ７、及び署名文出力手段ＳＢ８において、署名文が作成・出力される。
【００９６】
次に、コミティッドベクトル選択手段ＳＢ２の詳細な動作について説明する。
【００９７】
コミティッドベクトル選択手段ＳＢ２は、まず、記憶部ＳＢ０から（Ｍ，κ，ζ）を読み込む（ＳＦ２２）。次に、剰余群Ｘ＿｛０１｝，．．．，Ｘ＿｛０Ｎ｝をＲ＿｛κ＋ζ｝から選択する（ＳＦ２３）。そして、ｊ＝１，．．．，Ｎの全てについてＸ＿｛１ｊ｝＝ｘ＋Ｘ＿｛０ｊ｝を算出する（ＳＦ２４）。そして、ｉ＝０及びｊ＝１，．．．，ＮのＸ＿｛０ｊ｝をＹ＿０と、ｉ＝０及びｊ＝１，．．．，ＮのＸ＿｛１ｊ｝をＹ＿１とし（ＳＦ２５）、第ｉコミティッドベクトルと呼ぶ。Ｙ＿０及びＹ＿１は、記憶部ＳＢ０に格納される（ＳＦ２６）。
【００９８】
第一コミットメント計算手段ＳＢ３における処理について説明する。
【００９９】
第一コミットメント計算手段ＳＢ３は、まず、（Ｎ，｛ｃ＿｛ｊ｝｝，｛Ｘ＿｛ｉｊ｝｝）を記憶部ＳＢ０から読み込む（ＳＦ２７）。次に、第一コミットメント計算手段ＳＢ３は、ランダムにνビットのビット列ｒを選択する（ＳＦ２８）。そして、ビット列ｒ及び公開鍵（ｇ，ｈ，ｑ）を含むデータのハッシュ値Ｃ＿｛ｉｊ｝＝Ｈ＿｛｛０，１｝？ν｝（ｇ，ｈ，Ｘ＿｛ｉｊ｝，ｉ，ｊ，ｒ）を算出する（ＳＦ２９）。ここで、ｉ＝０，１とする。なお、本実施形態においては、第一コミットメント計算手段ＳＢ３によって算出されたハッシュ値Ｃ＿｛ｉｊ｝を第一コミットメントとし、｛Ｃ＿｛ｉｊ｝｝＿｛ｉ＝０，１，ｊ＝１，．．．，Ｎ｝を第一コミットメントベクトルとする。
【０１００】
第一コミットメント計算手段ＳＢ３によって算出された第一コミットメントベクトル（ｒ，｛Ｃ＿｛ｉｊ｝｝）は、記憶部ＳＢ０に格納される（ＳＦ２１０）。
【０１０１】
基底ベクトル計算手段ＳＢ４における処理について説明する。
【０１０２】
まず、基底ベクトル計算手段ＳＢ４は、（κ，ζ，Ｎ，ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝）を記憶部ＳＢ０から読み込む（ＳＦ２１１）。
【０１０３】
次に、基底ベクトル計算手段ＳＢ４は、公開鍵（ｑ，ｇ，ｈ）及び第一コミットメント｛Ｃ＿｛ｉｊ｝｝を含むデータのハッシュ値Ｖ＝（ｕ＿１，．．．，ｕ＿Ｎ）＝Ｈ＿｛（Ｒ＿｛κ＋ζ｝＼｛０｝）＾｛Ｎ｝｝（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝）を算出し（ＳＦ２１２）、Ｖを基底ベクトルとして記憶部ＳＢ０に格納する（ＳＦ２１３）。
【０１０４】
次に、第二コミットメント計算手段ＳＢ５を説明する。
【０１０５】
まず、第二コミットメント計算手段ＳＢ５は、（Ｖ，Ｙ＿０，Ｇ）を記憶部ＳＢ０から読み出し（ＳＦ２１４）、基底ベクトルＶとＹ＿０との内積を算出する（ＳＦ２１５）。さらに、第二コミットメントＧ＝ｇ＾｛Ｘ｝を算出し（ＳＦ２１６）、第二コミットメントＧを記憶部ＳＢ０に格納する（ＳＦ２１７）。
【０１０６】
次に、ベクトルチャレンジ計算手段ＳＢ６における動作を説明する。
【０１０７】
まず、ベクトルチャレンジ計算手段ＳＢ６は、（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，ｒ，Ｍ）を記憶部ＳＢ０から読み込み（ＳＦ１８）、ベクトルチャレンジＫ＝（ｃ＿１，．．．，ｃ＿Ｎ）＝Ｈ＿｛｛０，１｝＾Ｎ｝（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，ｒ，Ｍ）を算出し（ＳＦ１９）、記憶部ＳＢ０に格納する（ＳＦ２２０）。
【０１０８】
次に、ベクトルレスポンス計算手段ＳＢ７における動作を説明する。
【０１０９】
まず、ベクトルレスポンス計算手段ＳＢ７は、（Ｎ，｛ｃ＿｛ｊ｝｝，｛Ｘ＿｛ｉｊ｝｝）を記憶部ＳＢ０から読み込み（ＳＦ２２１）、ｊ＝１，．．．，Ｎにおけるξ＿｛ｊ｝＝Ｘ＿｛ｃ＿ｊｊ｝を算出し、ベクトルレスポンスΞ＝（ξ＿１，．．．，ξ＿Ｎ）として記憶部ＳＢ０に格納する（ＳＦ２４）。
【０１１０】
次に、署名文出力手段ＳＢ８の動作について説明する。
【０１１１】
署名文出力手段ＳＢ８は、署名文（ｒ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ξ）を読み出し（ＳＦ２２５）、署名文（ｒ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ξ）を検証装置ＶＢＮ０に出力する（ＳＲ２２６）。
【０１１２】
次に、検証装置ＶＢＮ０の構成及び動作について図１及び図７を用いて説明する。
【０１１３】
受信装置ＲＢＮ１がメッセージＭを受信すると、入力手段ＶＢ１はメッセージＭ及びその署名文（ｒ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ξ）を記憶部ＶＢ０に格納する（ＶＦ１）。メッセージＭ及び署名文（ｒ、｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ξ）が記憶部ＶＢ０に格納されると、基底ベクトル計算手段ＶＢ２、ベクトルチャレンジＶＢ３、第一正当性検証手段ＶＢ４、第二正当性検証手段ＶＢ５、及び出力手段ＶＢ６における以下の検証処理を経て、署名文の正当性が検証される。
【０１１４】
まず、基底ベクトル計算手段ＶＢ２における動作について説明する。
【０１１５】
基底ベクトル計算手段ＶＢ２は、記憶部ＶＢ０から（Ｎ，κ，ζ，ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝）を読み出し（ＶＦ２２）、基底ベクトルＶ＝（ｕ＿１，．．．，ｕ＿Ｎ）＝Ｈ＿｛（Ｒ＿｛κ＋ζ｝＼｛０｝）＾｛Ｎ｝｝（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝）を算出し（ＶＦ２３）、記憶部ＶＢ０に格納する（ＶＦ２４）。
【０１１６】
次に、ベクトルチャレンジ計算手段ＶＢ３における動作について説明する。
【０１１７】
ベクトルチャレンジ計算手段ＶＢ３は、（Ｎ，ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，ｒ，Ｍ）を記憶部ＶＢ０から読み込み（ＶＦ２５）、ベクトルチャレンジＫ＝（ｃ＿１，．．．，ｃ＿Ｎ）＝Ｈ＿｛｛０，１｝＾Ｎ｝（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，ｒ，Ｍ）を算出し（ＶＦ２６）、記憶部ＶＢ０に格納する（ＶＦ２７）。
【０１１８】
次に、第一コミットメント正当性検証手段ＶＢ４における動作について説明する。
【０１１９】
まず、第一コミットメント正当性検証手段ＶＢ４は、記憶部ＶＢ０から（ν，ｇ，ｈ，ξ＿｛ｊ｝，｛ｃ＿ｊ｝，｛Ｃ＿｛ｃ＿ｊｊ｝｝）を読み出す（ＶＦ２８）。そして、ｊ＝１，．．．，Ｎそれぞれについて、Ｈ＿｛｛０，１｝＾｛ν｝｝（ｇ，ｈ，ξ＿｛ｊ｝，ｃ＿ｊ，ｊ，ｒ）＝Ｃ＿｛ｃ＿ｊｊ｝が成立するか否かを検証する。そして、Ｈ＿｛｛０，１｝＾｛ν｝｝（ｇ，ｈ，ξ＿｛ｊ｝，ｃ＿ｊ，ｊ，ｒ）＝Ｃ＿｛ｃ＿ｊｊ｝が成立したｊをｂ＝１とし、不成立のｊをｂ＝０と判定する（ＶＦ２１０）。さらに、第一のコミットメント正当性検証手段ＶＢ４は、ｊ＝１，．．．，Ｎに対応するｂが０であるか否かを判定する（ＶＦ２１０）。そして、ｂ＝０のときは（ＶＦ２１０／ＮＯ）、検証を終了する。ｂ＝１のときは（ＶＦ２１０／ＹＥＳ）、ｂ＝１を記憶部ＶＢ０に格納する（ＶＦ２１１）。
【０１２０】
まず、第二正当性検証手段は、（ｂ，ｇ，ｈ，Ｖ，Ξ，Ｋ，Ｇ）を記憶部ＶＢ０から読み出す（ＶＦ２１２）。次に、ｇ＾｛＜Ｖ，Ξ＞｝＝ｈ＾｛＜Ｖ，Ｋ＞｝Ｇが成立するか否かを確認し、成立している場合はＶＦ９において格納されたｂ＝１をｂ＝０に書き換える（ＶＦ２１３、ＶＦ２１４））。ここで、＜Ｖ，Ξ＞をＳｃｈｎｏｒｒレスポンス、＜Ｖ，Ｋ＞をＳｃｈｎｏｒｒチャレンジとする。
【０１２１】
最後に、出力手段ＶＢ６は、ｂを記憶部ＶＢ０から読みこみ（ＶＦ２１５）、ｂ＝１ならば署名文が受理された旨のデータを出力し、ｂ＝０ならば署名文が棄却された旨のデータを出力する（ＶＦ２１６）。
【０１２２】
［第３の実施形態］
図８は、本実施形態に係る署名装置ＳＢ３０及び検証装置ＶＢＮ３０の構成を示すブロック図である。署名装置ＳＢ３０は、受信装置ＲＢＮ３０を用いてデータを受信し、送信装置ＳｅＢＮ３０からデータを送信する。検証装置ＶＢＮ３０は、受信装置ＲＢＮ３１を用いてデータを受信する。データの送受信は、例えば、ＬＡＮ、インターネット等を用いて行われるが、これに限定されるものではない。
【０１２３】
ここで、本実施形態において記号について説明する。
【０１２４】
Ａは、位数がｑの巡回群である。位数ｑのビット数は、κである。ｇは、巡回群Ａの基点を表す。なお、巡回群Ａの位数ｑを公開しても巡回群Ａに係る離散対数問題の改ざんは困難なものとする。
【０１２５】
Ｚは、整数全体のなす環を表す。Ｎは、自然数全体のなす集合を表す。ベクトルａに対し、ａの第ｉ成分をａ＿ｉと表す。さらに＜・,・＞で内積を表す。ベクトルａとｂの内積は、＜ａ,ｂ＞＝ａ＿１ｂ＿１＋・・・ａ＿Ｎｂ＿Ｎｍｏｄｑとする。集合ＸのＸ値ハッシュ関数は、Ｈ＿Ｘで表す。そして、基底ベクトルは、Ｖ＝（ｕ＿１，．．．，ｕ＿｛Ｎ｝）＝（２＾｛０｝，．．．，２＾｛Ｎ−１｝）とする。
【０１２６】
次に、鍵生成の方法を説明する。ランダムにｘ∈（Ｚ／ｑＺ）＼｛０｝を取り、ｈ＝ｇ＾ｘとする。公開鍵及び秘密鍵は、それぞれ（ｇ，ｈ，ｑ）、ｘである。署名装置ＳＢＮ３０は、記憶部ＳＢ３０に公開鍵と秘密鍵を保存する。また、公開鍵は、検証装置ＶＢＮ３０が何らかの形で入手できる場所に保管されているものとする。入手方法としては、例えば、インターネット上に公開された公開鍵簿に保管する手段、署名装置ＳＢＮ３０から直接入手する手段等がある。検証装置ＶＢＮ３０は、必要に応じて公開鍵を入手し、記憶部ＳＢ３０に保管する。鍵生成方法の詳細は非特許文献１１を参照されたい。以後、すでに検証装置ＶＢＮ０が公開鍵を入手した状態から説明する。
【０１２７】
次に、本実施形態に係る署名装置ＳＢＮ３０の具体的な動作を図８、９、及び１０を用いて説明する。
【０１２８】
受信装置ＲＢＮ３０がメッセージを受け取ると、署名装置ＳＢＮ３０は、まず、該メッセージを入力手段ＳＢ３１に入力する。そして、コミティッドベクトル選択手段ＳＢ３２、第二コミットメント計算手段ＳＢ３３、第一コミットメント計算手段ＳＢ３４、ベクトルチャレンジ計算手段ＳＢ３５、ベクトルレスポンス計算手段ＳＢ３６、及び署名文出力手段ＳＢ３７において、署名文が作成・出力される。
【０１２９】
入力手段ＳＢ３１は、受信装置ＲＢＮ３０からメッセージＭを受け取り、メッセージＭを記憶部ＳＢ３０に格納する。
【０１３０】
次に、コミティッドベクトル選択手段ＳＢ３２の詳細な動作について説明する。
【０１３１】
コミティッドベクトル選択手段ＳＢ３２は、まず、記憶部ＳＢ３０から（ｑ，ｘ）を読み込む（ＳＦ３２）。次に、剰余群Ｘ＿｛０１｝，．．．，Ｘ＿｛０Ｎ｝を（Ｚ／ｑＺ）から選択する（ＳＦ３３）。そして、ｊ＝１，．．．，Ｎの全てについてＸ＿｛１ｊ｝＝ｘ＋Ｘ＿｛０ｊ｝を算出する（ＳＦ３４）。そして、ｉ＝０及びｊ＝１，．．．，ＮのＸ＿｛０ｊ｝をＹ＿０と、ｉ＝０及びｊ＝１，．．．，ＮのＸ＿｛１ｊ｝をＹ＿１とし（ＳＦ３５）、第ｉコミティッドベクトルと呼ぶ。Ｙ＿０及びＹ＿１は、記憶部ＳＢ０に格納される（ＳＦ３６）。
【０１３２】
第二コミットメント計算手段ＳＢ３３における処理について説明する。
【０１３３】
第二コミットメント計算手段ＳＢ３３は、まず、（ｑ，Ｖ，Ｙ＿０，ｇ）を記憶部ＳＢ３０から読み込み（ＳＦ３７）、集合Ｘ＝＜｛Ｙ＿０，Ｖ｝＞＝Σ＿ｊＸ＿｛０ｊ｝２＾｛ｊ−１｝ｍｏｄｑを算出する（ＳＦ３８）。次に、コミットメントＧ＝ｇ＾｛Ｘ｝を算出し（ＳＦ３９）、コミットメントＧを記憶部ＳＢ３０に格納する（ＳＦ３１０）。
【０１３４】
第一コミットメント計算手段３４における処理について説明する。
【０１３５】
第一コミットメント計算手段３４は、まず（ν，｛Ｘ＿｛ｉｊ｝｝）を読み込み（ＳＦ３１１）、ｉ，ｊそれぞれについてランダムにνビットのビット列ｒを選択する（ＳＦ３１２）。そして、ビット列ｒ及び公開鍵（ｇ，ｈ，ｑ）を含むデータのハッシュ値Ｃ＿｛ｉｊ｝＝Ｈ＿｛｛０，１｝？ν｝（Ｘ＿｛ｉｊ｝，ｒ＿｛ｉｊ｝）を算出する（ＳＦ３１３）。ここで、ｉ＝０，１とする。なお、本実施形態においては、第一コミットメント計算手段ＳＢ３によって算出されたハッシュ値Ｃ＿｛ｉｊ｝を第一コミットメントとする。
【０１３６】
第一コミットメント計算手段ＳＢ３によって算出された第一コミットメントベクトル｛Ｃ＿｛ｉｊ｝｝は、記憶部ＳＢ０に格納される（ＳＦ３１４）。
【０１３７】
次に、ベクトルチャレンジ計算手段ＳＢ３５における動作を説明する。
【０１３８】
まず、ベクトルチャレンジ計算手段ＳＢ３５は、（Ｎ，ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ｍ）を記憶部ＳＢ０から読み込み（ＳＦ３１５）、ベクトルチャレンジＫ＝（ｃ＿１，．．．，ｃ＿Ｎ）＝Ｈ＿｛｛０，１｝＾Ｎ｝（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ｍ）を算出し（ＳＦ３１６）、記憶部ＳＢ０に格納する（ＳＦ３１７）。
【０１３９】
次に、ベクトルレスポンス計算手段ＳＢ３６における動作を説明する。
【０１４０】
まず、ベクトルレスポンス計算手段ＳＢ３６は、（｛ｃ＿｛ｊ｝｝，｛Ｘ＿｛ｉｊ｝｝）を記憶部ＳＢ０から読み込み（ＳＦ３１８）、ｊ＝１，．．．，Ｎにおけるξ＿｛ｊ｝＝Ｘ＿｛ｃ＿ｊｊ｝を算出し（ＳＦ３１９）、ベクトルレスポンスΞ＝（ξ＿１，．．．，ξ＿κ）として記憶部ＳＢ３０に格納する（ＳＦ３２０、ＳＦ３２１）。
【０１４１】
次に、署名文出力手段ＳＢ３７の動作について説明する。
【０１４２】
署名文出力手段ＳＢ３７は、署名文（｛Ｃ＿｛ｉｊ｝｝，｛ｒ＿｛ｃ＿ｊｊ｝｝，Ｇ，Ξ）を読み出し（ＳＦ３２２）、署名文（｛Ｃ＿｛ｉｊ｝｝，｛ｒ＿｛ｃ＿ｊｊ｝｝，Ｇ，Ξ）を検証装置ＶＢＮ３０に出力する（ＳＦ３２３）。
【０１４３】
次に、検証装置ＶＢＮ０の構成及び動作について図８及び１１を用いて説明する。
【０１４４】
受信装置ＲＢＮ３１がメッセージＭを受信すると、入力手段ＶＢ３１はメッセージＭ及びその署名文（｛Ｃ＿｛ｉｊ｝｝，｛ｒ＿｛ｃ＿ｊｊ｝｝，Ｇ，Ξ）を記憶部ＶＢ０に格納する（ＶＦ３１）。メッセージＭ及び署名文（｛Ｃ＿｛ｉｊ｝｝，｛ｒ＿｛ｃ＿ｊｊ｝｝，Ｇ，Ξ）が記憶部ＶＢ３０に格納されると、ベクトルチャレンジＶＢ３２、第一正当性検証手段ＶＢ３４、第二正当性検証手段ＶＢ３３、及び出力手段ＶＢ３５における以下の検証処理を経て、署名文の正当性が検証される。
【０１４５】
次に、ベクトルチャレンジ計算手段ＶＢ３２における動作について説明する。
【０１４６】
ベクトルチャレンジ計算手段ＶＢ３２は、（Ｎ，ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ｍ）を記憶部ＶＢ３０から読み込み（ＶＦ３２）、ベクトルチャレンジＫ＝（ｃ＿１，．．．，ｃ＿Ｎ）＝Ｈ＿｛｛０，１｝＾Ｎ｝（ｇ，ｈ，｛Ｃ＿｛ｉｊ｝｝，Ｇ，Ｍ）を算出し（ＶＦ３３）、記憶部ＶＢ３０に格納する（ＶＦ３４）。
【０１４７】
次に、第一コミットメント正当性検証手段ＶＢ３３における動作について説明する。
【０１４８】
まず、第一コミットメント正当性検証手段ＶＢ３３は、記憶部ＶＢ３０から（ν，ξ＿ｊ，ｒ＿｛ｃ＿ｊｊ｝，｛Ｃ＿｛ｃ＿ｊｊ｝｝）を読み出す（ＶＦ３５）。そして、ｊ＝１，．．．，Ｎそれぞれについて、Ｈ＿｛｛０，１｝＾｛ν｝｝（ξ＿ｊ，ｒ＿｛ｃ＿ｊｊ｝，ｊ，ｒ）＝Ｃ＿｛ｃ＿ｊｊ｝が成立するか否かを検証する。そして、Ｈ＿｛｛０，１｝＾｛ν｝｝（ｇ，ｈ，ξ＿｛ｊ｝，ｃ＿ｊ，ｊ，ｒ）＝Ｃ＿｛ｃ＿ｊｊ｝が成立したｊをｂ＝１とし、不成立のｊをｂ＝０と判定する（ＶＦ３６）。さらに、第一のコミットメント正当性検証手段ＶＢ４は、ｊ＝１，．．．，Ｎに対応するｂが０であるか否かを判定する（ＶＦ３７）。そして、ｂ＝０のときは（ＶＦ３７／ＮＯ）、検証を終了する。ｂ＝１のときは（ＶＦ３７／ＹＥＳ）、ｂ＝１を記憶部ＶＢ０に格納する（ＶＦ３８）。
【０１４９】
まず、第二正当性検証手段３３は、（ｂ，ｇ，ｈ，Ｖ，Ξ，Ｋ，Ｇ）を記憶部ＶＢ３０から読み出す（ＶＦ３９）。次に、ｇ＾｛＜Ｖ，Ξ＞｝＝ｈ＾｛＜Ｖ，Ｋ＞｝Ｇが成立するか否かを確認し、成立している場合はＶＦ９において格納されたｂ＝１をｂ＝０に書き換える（ＶＦ３１０、ＶＦ３１１））。ここで、＜Ｖ，Ξ＞をＳｃｈｎｏｒｒレスポンス、＜Ｖ，Ｋ＞をＳｃｈｎｏｒｒチャレンジとする。
【０１５０】
最後に、出力手段ＶＢ３５は、ｂを記憶部ＶＢ３０から読み込み（ＶＦ３１２）、ｂ＝１ならば署名文が受理された旨のデータを出力し、ｂ＝０ならば署名文が棄却された旨のデータを出力する。
【実施例１】
【０１５１】
第１の実施形態に離散対数のストレートラインエクストラクタブル証明方式（非特許文献１２参照）を適用した実施例について説明する。
【０１５２】
証明装置及び検証装置の構成を図１２に示す。図１２に示すように本実施例には証明装置ＰＳＰＢＮ０及び検証装置ＶＳＰＢＮ０があり、それぞれ第１の実施形態に係る署名装置ＳＢＮ０及び検証装置ＶＢＮ０に対応する。
【０１５３】
本実施例においては、メッセージＭの変わりに予め決められたＩＤ又は乱数を用いる。なお、メッセージＭの代わりにＩＤ又は乱数を用いること以外は、各部・各手段における動作は、第一の実施形態と同様である。
【０１５４】
さらに、本実施例には、第二又は三の実施形態に離散対数のストレートラインエクストラクタブル証明方式を適用することもできる。
【実施例２】
【０１５５】
本実施例は、実施例１に係る証明装置ＤＶＳＳＢＮ０と検証装置ＤＶＳＶＢＮ０に検証者指定証明方式を適用した例である。
【０１５６】
証明装置ＤＶＳＳＢＮ０は、受信装置ＤＶＳＲＢＮ０によってデータを受信し、通信装置ＤＶＳＣＢＮ０からデータを送信する。検証装置ＤＶＳＶＢＮ０は、受信装置ＤＶＳＲＢＮ１を用いてデータを受信する。データの通信に使う通信路は、例えばＬＡＮ、インターネット等を用いる。
【０１５７】
証明装置ＤＶＳＳＢＮ０は、入力手段ＤＶＳＳＢ１、鍵正当性証明文検証手段ＤＶＳＳＢ２、証明手段ＤＶＳＳＢ３、及び記憶部ＤＶＳＳＢ０を有して構成される。証明装置ＤＶＳＳＢＮ０の入力手段ＤＶＳＳＢ０から入力されたデータは、記憶部ＤＶＳＳＢ０に格納される。
【０１５８】
検証装置ＤＶＳＶＢＮ０は、出力手段ＤＶＳＶＢ１、鍵正当性証明文作成手段ＤＶＳＳＢ２、検証手段ＤＶＳＶＢ３、及び記憶部ＤＶＳＶＢ０を有して構成される。通信手段ＤＶＳＣＢＮ０から入力されたデータは、記憶部ＤＶＳＶＢ０に格納される。
【０１５９】
鍵正当性証明文作成手段ＤＶＳＳＢ２は、記憶部ＤＶＳＳＢ０から必要なデータを読み込み、その計算結果を記憶部ＤＶＳＳＢ０に格納する。
【０１６０】
同様に、証明手段ＤＶＳＳＢ３は、必要なデータを記憶部ＤＶＳＳＢ０から読み込み、その計算結果を記憶部ＤＶＳＳＢ０に格納する。
【０１６１】
鍵正当性証明文作成手段ＤＶＳＶＢ２は、必要なデータを記憶部ＤＶＳＶＢ０から読み込み、その計算結果を記憶部ＤＶＳＶＢ０に格納する。
【０１６２】
同様に、検証手段ＤＶＳＶＢ３は、必要なデータを記憶部ＤＶＳＶＢ０から読み込み、その計算結果を記憶部ＤＶＳＶＢ０に記憶する。
【０１６３】
出力手段ＤＶＳＶＢ１は、必要なデータを記憶部ＤＶＳＳＢ０から読み込み、データを出力する。
【０１６４】
対応する秘密を証明するためのインスタンスは、事前に証明装置ＤＶＳＳＢＮ０、検証装置ＤＶＳＶＢＮ０の間で共有する。例えば、証明する秘密は、送受信装置を使って通信路を介して送受信され、証明装置ＤＶＳＳＢＮ０及び検証装置ＤＶＳＶＢＮ０を作成する際、ハードコーディングしておく方法がある。
【０１６５】
また、証明装置ＤＶＳＳＢＮ０は、証明する秘密を事前に保持しているものとする。例えば、送受信装置を使って通信路を通して送る方法や、証明装置ＤＶＳＳＢＮ０を作成する際にハードコーディングしておく方法がある。
【０１６６】
次に、検証装置ＤＶＳＶＢ０において鍵を生成する方法について説明する。ランダムにｘ∈（Ｚ／ｑＺ）＾＊を取り、ｈ＝ｇ＾ｘとする。公開鍵及び秘密鍵は、それぞれ（ｇ，ｈ，ｑ）、ｘである。検証装置ＤＶＳＶＢＮ０の記憶部ＤＶＳＶＢ０は、公開鍵（ｇ，ｈ，ｑ）と秘密鍵ｘとを保存する。公開鍵（ｇ，ｈ，ｑ）の入手方法としては、例えばインターネット上に公開された公開鍵簿に保管する方法や、検証装置ＤＶＳＶＢＮ００から直接入手する方法がある。証明装置ＤＶＳＳＢＮ０は、必要に応じて公開鍵を入手し、記憶部ＤＶＳＳＢ０に保管する。鍵生成方法の詳細は、非特許文献１１を参照されたい。以後は、すでに証明装置ＤＶＳＳＢＮ０が公開鍵を入手した状態について説明する。
【０１６７】
以下、各装置の各手段における動作について説明する。
【０１６８】
検証装置ＤＶＳＶＢＮ０は、鍵正当性証明文検証手段ＤＶＳＶＢ２を行って自分の公開鍵に対応する秘密鍵を持っていることをあらわす証明文を作成する。証明文を作成する鍵正当性証明文作成手段ＤＶＳＶＢ２は、実施例１における証明装置ＰＳＰＢＮ０（図１２）と同様の動作をする。
【０１６９】
検証装置ＤＶＳＶＢＮ０は、通信装置ＤＶＳＣＢＮ１を介して作成した証明文を使って証明装置ＤＶＳＳＢＮ０に送信する。証明装置ＤＶＳＳＢＮ０は、通信装置ＤＶＳＣＢＮ０を使って証明文を受信する。証明装置ＤＶＳＰＢＮ０は、鍵正当性証明文検証手段ＤＶＳＳＢ２において証明文の正当性を検証する。なお、鍵正当性証明文検証手段ＤＶＳＳＢ２は、実施例１における検証装置ＶＳＰＢＮ０（図１２）と同様の動作をする。
【０１７０】
証明装置ＤＶＳＰＢＮ０は、証明手段ＤＶＳＳＢ３においてインスタンスに対応する秘密を持っているか、及び検証者の公開鍵に対応する秘密鍵を持っているかを証明する。検証装置ＤＶＳＶＢＮ０は、検証手段ＤＶＳＶＢ３においてその証明の正当性を検証する。
【０１７１】
証明手段ＤＶＳＳＢ３と検証手段ＤＶＳＶＢ３とは、それぞれ非特許文献１３における証明方法、検証方法と同じなので省略する。詳細は非特許文献１３を参照されたい。
【実施例３】
【０１７２】
本実施例においては、実施例１における構成及び動作に加え暗号方式を実現する（図１４に示す）。
【０１７３】
本実施例では、暗号化装置ＥＶＥＮ０と復号装置ＤＶＥＮ１とを有して構成される。暗号化装置ＥＶＥＮ１は、受信装置ＲＢＳ０を用いてデータを受信し、送信装置ＳｅＢＥ０を用いてデータを送信する。また、復号装置ＤＢＥＮ０は、受信装置ＲＢＥ１を用いてデータを受信する。データの通信には、例えば、ＬＡＮ、インターネット等を用いることができるが、これに限定されるものではない。
【０１７４】
次に、暗号装置ＥＢＥＮ０の鍵の生成方法について説明する。ランダムにｘ∈（Ｚ／ｑＺ）＾＊を取り、ｈ＝ｇ＾ｘとする。公開鍵及び秘密鍵は、それぞれ（ｇ，ｈ，ｑ）、ｘである。暗号装置ＥＢＥＮ０の記憶部ＥＥＢ０には、公開鍵と秘密鍵とが保存される。また、公開鍵は、復号装置ＤＢＥＮ０が何らかの形で入手できる場所に保管される。入手方法としては、例えばインターネット上に公開された公開鍵簿に保管する方法、暗号化装置ＥＢＥＮ０から直接入手する方法がある。復号装置ＤＢＥＮ０は、必要に応じて公開鍵を入手し、記憶部ＤＢＥ０に保管する。鍵生成方法の詳細は、非特許文献１１を参照されたい。以後は、すでに復号装置ＤＶＥＮ０が公開鍵を入手した状態からの動作について説明する。
【０１７５】
暗号化装置ＥＢＥＮ０では、入力手段ＥＢＥ１、暗号化手段ＥＢＥ２、証明手段ＥＢＥ３の順に処理が実行される。
【０１７６】
入力手段ＥＢＥ１が暗号化すべきメッセージｍ∈Ｇを受け取ると、メッセージｍ∈Ｇは記憶部ＥＢＥ０に記憶される。
【０１７７】
暗号化手段ＥＢＥ２では、メッセージｍ∈ＧのＥｌＧａｍａｌ暗号文が作成される。具体的には、暗号化手段ＥＢＥ２は、必要なデータを記憶部ＥＢＥ０から読み込み、ランダムにｙ∈Ｚ／ｑＺを選択する。そして、Ｉ＝ｇ＾｛ｙ｝、Ｊ＝ｍｈ＾｛ｙ｝を算出し、暗号文（Ｉ，Ｊ）として生成する。算出された暗号文（Ｉ，Ｊ）は、記憶部ＥＢＥ０に格納する。
【０１７８】
証明手段ＥＢＥ３は、まず、必要なデータを記憶部ＥＢＥ０から読み込み、ｇを底とするＩの離散対数問題による証明文Ｐを実施例１の証明装置ＰＳＰＢＮ０（図１２に示す）と同じ方法で作成する。最後に、暗号文（Ｉ，Ｊ，Ｐ）として記憶部ＥＢＥに格納する。
【０１７９】
受信装置ＲＢＥ１は、暗号文（Ｉ，Ｊ，Ｐ）を受け取ると、暗号文（Ｉ，Ｊ，Ｐ）を記憶部ＤＢＥ０に格納する。そして、検証手段ＤＢＥ１、復号手段ＤＢＥ３、出力手段ＤＢＥ４の順に処理を実行する。
【０１８０】
検証手段ＤＢＥ１は、まず、必要なデータを記憶部ＤＢＥから読み込み、暗号文Ｐを実施例１の検証装置ＶＳＰＢＮ０（図１２に示す）と同じ方法で検証し、暗号文Ｐが正当だと判断されたらｂ＝１とし、そうでないときはｂ＝０とする。最後に、その判定結果を記憶部ＤＢＥに格納する。
【０１８１】
復号装置ＤＢＥＮ０は、ｂを記憶部ＤＢＥ０から読み込み、ｂ＝０なら「暗号文は不当なものである」事を示すデータを出力し、ｂ＝１ならば復号手段ＤＢＥ３における処理を開始する。
【０１８２】
復号手段ＤＢＥ３は、ＥｌＧａｍａｌ暗号文を通常の復号操作により復号化する。具体的には、まず、必要なデータを記憶部ＤＢＥ０から読み込み、ｍ'＝Ｊ／Ｉ＾ｙを計算する。そして、その計算結果を記憶部ＤＢＥ０に格納する。
【０１８３】
出力手段ＤＢＥ４は、ｍ'を記憶部ＤＢＥ０から読み込み、ｍ'を出力する。
【図面の簡単な説明】
【０１８４】
【図１】本実施形態に係る署名装置及び検証装置の構成を示すブロック図である。
【図２】本実施形態に係る署名装置における処理のフローチャートである。
【図３】本実施形態に係る署名装置における処理のフローチャートである。
【図４】本実施形態に係る検証装置における処理のフローチャートである。
【図５】本実施形態に係る署名装置における処理のフローチャートである。
【図６】本実施形態に係る署名装置における処理のフローチャートである。
【図７】本実施形態に係る検証装置における処理のフローチャートである。
【図８】本実施形態に係る署名装置及び検証装置の構成を示すブロック図である。
【図９】本実施形態に係る署名装置における処理のフローチャートである。
【図１０】本実施形態に係る署名装置における処理のフローチャートである。
【図１１】本実施形態に係る検証装置における処理のフローチャートである。
【図１２】本実施形態に係る署名装置及び検証装置の構成を示すブロック図である。
【図１３】本実施形態に係る証明装置及び検証装置の構成を示すブロック図である。
【図１４】本実施形態に係る暗号化装置及び復号装置の構成を示すブロック図である。
【符号の説明】
【０１８５】
ＳＢＮ０    署名装置
ＳＢ０    記憶部
ＳＢ１    入力手段
ＳＢ２    コミティッドベクトル選択手段
ＳＢ３    第一コミットメント計算手段
ＳＢ４    基底ベクトル計算手段
ＳＢ５    第二コミットメント計算手段
ＳＢ６    ベクトルチャレンジ計算手段
ＳＢ７    ベクトルレスポンス計算手段
ＳＢ８    署名文出力手段
ＶＢＮ０    検証装置
ＶＢ０    記憶部
ＶＢ１    入力手段
ＶＢ２    基底ベクトル計算手段
ＶＢ３    ベクトルチャレンジ計算手段
ＶＢ４    第一正当性検証手段
ＶＢ５    第二正当性検証手段
ＶＢ６    出力手段
【図１】
0004830860.tif 000002
【図２】
0004830860.tif 000003
【図３】
0004830860.tif 000004
【図４】
0004830860.tif 000005
【図５】
0004830860.tif 000006
【図６】
0004830860.tif 000007
【図７】
0004830860.tif 000008
【図８】
0004830860.tif 000009
【図９】
0004830860.tif 000010
【図１０】
0004830860.tif 000011
【図１１】
0004830860.tif 000012
【図１２】
0004830860.tif 000013
【図１３】
0004830860.tif 000014
【図１４】
0004830860.tif 000015