Zero-Knowledge-Proofs

為什麼驗證者必須在 Shnorr 協議中發送挑戰?

  • June 13, 2020

在證明者想要證明他有證人的 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 $ ).

引用自:https://crypto.stackexchange.com/questions/81328