Fiat-Shamir
實現 Schnorr 非互動式零知識協議需要多少輪
我們可以使用 Fiat-Shamir 啟發式將 3-move Schnorr 協議替換為 1-move non-interactive 協議。
當我實現這個非互動式協議時(參考https://en.wikipedia.org/wiki/Fiat%E2%80%93Shamir_heuristic):那就是
讓 $ G $ 是一個有順序的循環群 $ q $ .
佩吉需要證明她知道 $ x $ 這是的離散對數 $ y =g^x $ 到固定基地 $ g $ .
- 她隨機選擇一個元素 $ v \in [1,q-1] $ 併計算 $ t = g^v $ .
- 她計算 $ c = H(g,y,t) $ , 在哪裡 $ H $ 是一個密碼散列函式(實現隨機預言)。
- 她計算 $ r = v-cx \pmod q $ . 證明是對 $ (t,r) $ .
- 任何人都可以通過以下方式檢查此證明 $ t = g^r \cdot y^c $ .
我的問題是:
假設 Peggy 是證明者,Victor 是驗證者。佩吉可以寄嗎 $ y =g^x $ 和一個證明 $ (t,r) $ 在同一輪?
或者應該分成兩輪:
- 第一輪是佩吉送的 $ y=g^x $ 給維克多。
- 第二輪是證明 $ (t,r) $ 給維克多。
如果我們合併兩輪,會不會有風險?
謝謝
不,將證明的兩部分一起發送不會產生任何額外的風險。
請注意,在協議結束時,Victor 知道相同的一組值,無論它是否被分成兩輪。因此,無論他在“一輪”版本中能夠實現什麼,他仍然可以在第二輪兩階段協議之後實現。