30. フェーズ2:あいまいな知人検証2
ゼロ知識証明を使う方法(2)
一般的なゼロ知識証明 ①
�
大きな素数の積nに対し、mod nでの平方剰余Zを与え、Z=T2 mod n
�
となるTを知っているかを検証する手法 (以下、 基礎プロトコル)
P(証明者)とV(検証者)の間で、下の試行を k回繰り返す
�
Pが実際にはTを知らないにも関わらず、k回連続して試行に成功する
�
可能性は2k分の1
① 乱数Rを選び、X = R2 mod nを計算し、Xを送付
② bとして0か1をランダムに選び、bを送付
③ bに応じて、以下のいずれかをYとして送付
Y = R b=0の場合
TR mod n b=1の場合
V(検証者)
P(証明者)
④ Vは以下が成立するかでYを検証
⑤ 上記に成功するたび、Pが2分の1の
X ≡ Y2 (mod n) b=0の場合
確率でTを知っていることが証明され、
k回繰り返すと詐称確率は2k分の1になる ZX ≡ Y2 ( mod n ) b=1の場合
30
31. フェーズ2:あいまいな知人検証2
ゼロ知識証明を使う方法(3)
一般的なゼロ知識証明 ②
�
大きな素数の積nに対し、nの素因数を知っているかを検証 する手法
�
(公開鍵に対する秘密鍵を知っているかに利用できる)
① 乱数Tを選び、Z = T2 mod nを計算し、Zを送付
② 基礎プロトコルを用い、Zのmod nでの平方根を
Vが知っていることをPに証明
k回
③ Pは n の素因数を知っているので、
Zのmod nでの平方根Sを計算できる
④ 基礎プロトコルを用い、Zのmod nでの平方根を
Pが知っていることをVに証明 V(検証者)
P(証明者)
k回
31