### 使用される記号と意味
記号 | 意味 |
---|---|
$G$ | 集合 |
$g$ | ジェネレーター |
$q$ | ジェネレーターの位数 |
$s$ | 秘密鍵 |
$h$ | 公開鍵 $,h=g^s,$ |
$H$ | ハッシュ関数 |
$m$ | メッセージ |
シュノア証明
ゼロ知識証明を改良して、手順の繰り返しの必要をなくしたもの。
例
証明者が、ESDSAの秘密鍵を$,s,$を知っていることを、秘密鍵が検証者にもれない形で、検証者が確かめる。
- 証明者は、$Z_q,$から$,r,$をランダムに選択し、$x = g^r$を計算して、検証者に送る。
- 検証者は、ゼロ知識証明とは違って$c,$を$,0, 1,$からではなく、$Z_q,$から選択して、証明者に送る。← ゼロ知識証明との違いはここだけ
- 証明者は、$y = r + sc \bmod q,$を計算して検証者に送る。
- 検証者は、$g^y = xh^c,$が成り立つかを調べる。
証明者が秘密鍵を知っていれば、
$$
y = r + sc,,;
g^y = g^{r+sc} = g^r g^{sc} = xh^c
$$
となるので、検証式(ステップ4)は成り立つ。
また、この手順では、検証者に秘密鍵は漏れない。
証明者が秘密鍵を知らない場合に、検証式が成り立つ確率は$,1/q,$なので、$,q,$を大きくすることで、その確率を無視できる程度に小さくできる。
シュノア証明の非対話化
検証者から証明者にランダムな数値を送るステップを省き、証明者が代わりにその数値を作成することで、対話的なやりとりをゼロにすることが出来る。
以下は、上の例を非対話化したもの。現実には、証明者がランダム数値の代わりに、$,x,$にハッシュ関数を適用した値が使われるので、その形で変えてある。
- 証明者は、$Z_q,$から$,r,$をランダムに選択し、$x = g^r$を計算して、検証者に送る。
- 証明者は$,c = H(x),$を計算して、検証者におくる。← 上の例との違いはここだけ
- 証明者は、$y = r + sc \bmod q,$を計算して検証者に送る。
- 検証者は、$g^y = xh^c,$が成り立つかを調べる。
#### 通信の効率化
上の手順では、証明者から検証者に$,x, c, y,$がバラバラに送られているが、一度に送っても問題ない。また、$,x = g^y/h^c,$なので、$,x,$を送らないことで、データー量を削減できる。
シュノア署名
非対話型のシュノア署名のハッシュ関数の入力にメッセージを含めると、デジタル署名として使うことが出来る。
- 証明者は、$Z_q,$から$,r,$をランダムに選択し、$x = g^r$を計算する。
- 証明者は、$,c = H(x || m),$を計算する。
- 証明者は、$y = r + sc \bmod q,$を計算して、署名を$,\sigma = (c, y),$とする。
- 証明者は、検証者に$,(m, \sigma),$を送る。
- 検証者は、$,x = g^y/h^c,$を計算する。
- 検証者は、$,c = H(x || m),$が成り立つかを調べる。成り立てば署名は正しい。
###参考文献
暗号技術のすべて/IPUSIRON