本記事を読むために必要な知識:ゼロ知識証明の基礎
本記事では、『離散対数の不一致を証明するゼロ知識証明』[3]についてのべる。
『離散対数の不一致を証明するゼロ知識証明』とは、離散多数が一致しないことの、ゼロ知識証明である。
『離散対数の不一致を証明するゼロ知識証明』は次の式を証明する。
(
を『離散対数の不一致を証明するゼロ知識証明』と呼ぶ。
このようなゼロ知識証明は、署名ベースのブラックリスト[2]に用いられる。署名ベースのブラックリスト(signature based revocation)とは、特定の署名をブラックリストに置くことで、その署名者(i.e., 署名者の持つ秘密鍵)を失効する方式である。このような失効方法は、匿名認証など署名者を特定できない場合などに、有効なである。例えば、匿名認証方式の一つであるEPID[2]ではこのような失効能力を持つ。これによりEPIDでは署名者の匿名性を担保したまま、署名者を失効することができる。
署名ベースのブラックリストでは、ブラックリストに登録されていないことをゼロ知識証明する。つまり過去に秘密鍵を用いて生成した署名が、ブラックリストに追加されてないことを証明する。具体的には以下の表の値のもと、次の式を証明する。
表記 | 式 | 意味 |
---|---|---|
署名者の持つ秘密鍵 | ||
- | 失効リストの長さ | |
- | ||
署名の一部。ランダムに生成される。 | ||
署名の一部。 | ||
前提知識として、『2つの離散対数に対するゼロ知識証明』[1]について紹介する。
(
を『離散対数の不一致を証明するゼロ知識証明』と呼ぶ。
このゼロ知識証明は効率的かつ、よく知られたゼロ知識証明方式である。
なおこのゼロ知識証明の詳細については、本稿では説明しない。
詳細は[1]を参照してほしい。
『離散対数の不一致を証明するゼロ知識証明』の手続きについてのべる。
『離散対数の不一致を証明するゼロ知識証明』を説明する上で、以下の表記を扱う。
表記 | 式 | 意味 |
---|---|---|
離散対数1。証明者が保有。 | ||
離散対数2。証明者が保有しない。 | ||
生成元1。公開情報。 | ||
生成元2。公開情報。 | ||
累乗した値1。公開情報。 | ||
累乗した値2。公開情報。 | ||
ラップする値。乱数。 | ||
ラップする値。 | ||
証明者は以下の手順で検証者に、『離散対数の不一致を証明するゼロ知識証明』を証明する。
証明者はランダムに
証明者は
証明者は
証明者は以下のゼロ知識証明を検証者に証明する。
※
検証者は以下の手順で証明者の、『離散対数の不一致を証明するゼロ知識証明』を検証する。
すべて検証できれば証明を受理し、検証できなければ証明を棄却する。
『離散対数の不一致を証明するゼロ知識証明』は、
主に以下のコンセプトから構成される。
次の式を証明することで離散対数が一致しないと言える。
また上式を変形し、
と表現できる。
この
離散対数が一致しないことを証明できる。
上記の式をゼロ知識証明するためには、次のような課題がある。
ゼロ知識性を満たすため、
具体的には、乱数
このようなラップされた値は、以下の計算から
上記の式をゼロ知識証明するためには、次のような課題がある。
上の式を式変形することで、『2つの離散対数に対するゼロ知識証明』の形にする。
以下の計算から
よって以下のようなゼロ知識証明が導き出される。
これは『2つの離散対数に対するゼロ知識証明』を用いて、
以下のように行われる。
以下のゼロ知識証明には以下の課題がある。
ラップにつかった値
ここで証明する関係とは、
このような証明は、『2つの離散対数に対するゼロ知識証明』を用いて、以下のように行われる。
によってできる。
これは
上記に述べた、ゼロ知識証明をまとめると、以下のようになる。
本記事では、『離散対数の不一致を証明するゼロ知識証明』[3]について紹介した。