HAC(10.4.2)の第10章、我々は平方根因子に難しい複合モジュロ抽出(推定)困難を使用してゼロ知識証明に基づく周知Feige -フィアット-シャミール識別プロトコルを参照します。スキームを自分の言葉で説明します(そしてうまくいけばそれを正しくします)。
単純なスキームから始めましょうを、因数分解が困難な十分に大きいサイズのBlum整数(で、とそれぞれが3 mod 4)とします。以来ブラム数である、の要素の半分ヤコビシンボル+1及び他の半分を持っている持っている-1。+1要素の場合、それらの半分には平方根があり、平方根を持つ各要素には4つの要素があり、1つはそれ自体が正方形です。n = p q p q n Z ∗ n
今ペギーはランダムな要素を選択からし、セットが。次に、をVictorに送信します。次は、プロトコルです:ビクターは、ペギーはの平方根を知っていることを確認したいとペギーはについては何も漏らすことなく、彼にそれを証明したい彼女は、このような知っている事実を超えた。Z ∗ n v = s 2 v v s s
- ペギーはでランダムを選択し、をビクターに送信します。Z ∗ n r 2
- ビクターはおそらくまたはをペギーに送り返します。b = 1
- ペギーはビクターにを送ります。
ビクターは、受け取ったものを二乗し、正しい結果と比較することにより、ペギーが正しい答えを送信したことを確認できます。もちろん、この相互作用を繰り返して、ペギーが単なる幸運な推測者である可能性を減らします。このプロトコルはZKであると主張されています。証拠はさまざまな場所で見つけることができます(たとえば、Boaz Barakの講義ノート)。
このプロトコルを拡張してより効率的にする場合、Feige-Fiat-Shamirと呼ばれます。上記と非常によく似ています。私たちは、とペギーを開始ランダムな値とランダム兆候彼女のように自分の正方形を公開し。つまり、一部をランダムに無効にします。今s 1 ⋯ s k t 1 = ± 1 、⋯ t k = ± 1 v 1 = t 1 s 2 1、⋯ 、v k = t k s 2 k v i
- ペギーはでランダムを選択し、をビクターに送信します。Z ∗ n r 2
- ビクターequiprobably送信値bはIから{ 0 、1 }ペギーへ戻ります。
- ペギーは、送信ビクターにします。
私の質問: signビットが必要なのはなぜですか?括弧内に、HACは、秘密情報が漏洩していないことを証明するために必要な技術的要件として存在していることに注目しています。Feige-Fiat-Shamirのウィキペディアページ(プロトコルが間違っています)は、これがないと少しリークすることを意味しています。
ペギーが兆候を省略した場合、ペギーから何かを抽出する攻撃は見つかりません。