Zero-Knowledge-Proofs
為什麼驗證者必須在 Shnorr 協議中發送挑戰?
在證明者想要證明他有證人的 Shnorr 協議中 $ w $ 為了 $ g^w $ 發生以下互動:
- 證明者隨機選擇一個 $ r $ , 計算 $ y=g^r $ 並發送 $ y $
- 驗證者發送挑戰 $ x $
- 證明者計算 $ t=xw+r $ 並將其發送給驗證者
- 驗證者測試是否 $ g^t=(g^w)^x.y $
我的問題是為什麼驗證者會發送挑戰。如果證明者只是發送,他會被說服嗎? $ t=r+x $ 驗證者測試是否 $ g^t=g^w.y $ ? 加 $ t $ 不會透露證人。
我的問題是為什麼驗證者會發送挑戰,如果證明者只是發送,他會相信嗎? $ t=r+x $ 驗證者測試是否 $ g^t=g^w \cdot y $ ?
也就是說,證明者為什麼不直接發送 $ t $ 和 $ y $ ? 好吧,任何人都可以隨機選擇 $ t $ 併計算 $ y = g^t \cdot (g^w)^{-1} $ . 因為 $ g^w $ 是公開的,任何人都可以計算,因此不能作為知識證明。
而且,很容易找到解決方案 $ g^t=(g^w)^x \cdot y $ (不知道 $ w $ ),如果你知道 $ x $ 選擇之前的值 $ y $ (你建議一個常數 $ x=1 $ ,因此證明者預先知道)。但是,如果您能找到解決方案 $ g^t=(g^w)^x \cdot y $ 對於兩個不同的 $ x $ 的,那是不同的;很容易證明,通過兩種不同的解決方案 $ x $ 的(和相同的 $ y $ ),我們可以恢復 $ w $ (因此能夠做到這一點的人必須知道 $ w $ )。另一方面,我們不能只給出兩個解決方案(因為這意味著驗證者將能夠推斷出 $ x $ ).
所以,我們要做的是讓證明者給出一個解決方案 $ x $ 他無法提前預測;要麼他非常幸運(他猜對了 $ x $ 他產生時的價值 $ y $ ),或者他確實知道多種解決方案(因此知道 $ w $ ).