Zero-Knowledge-Proofs

ZK-SNARK 基礎知識:知道 t(x),是什麼阻止證明者創建隨機 h(x) 來偽造 L、R 和 O

  • July 10, 2021

這裡這里這裡閱讀了一些 ZK-SNARK 解釋器後,我仍然不明白一些事情。

該算法的設置使用 QAP 計算多項式 P(x) = L(x) * R(x) - O(x),以及目標除數多項式 t(x),以表示目標計算的通用形式. 然後,為了創建一個證明,證明者

  • 針對目標計算的特定參數計算 P(x) = L(x) * R(x) - O(x)。
  • 計算 h(x) = P(x) / t(x)。
  • 計算 h(s)、L(s)、R(s) 和 O(s) 以發送給驗證者。然後驗證者使用這些值來檢查是否 h(s) * t(s) = L(s) * R(s) - O(s),或者 t 除以 P 沒有餘數。

如果證明者知道 t(x),是什麼阻止了它選擇隨機的 h(x),計算 h(x) * t(x),並偽造 L(x)、R(x) 和 O(x)正確的順序?它將通過“無剩餘”驗證程序檢查。它仍然是多項式(E(s^d) 的線性組合),因此也應該滿足移位檢查。

我錯過了什麼?

請讓我確認正確的問題陳述,就 QAP 而言。也許省略 R1CS,這不是這個問題的重點。

請記住(1)“高效”(簡潔)驗證是 snarks 的目標,(2)有秘密(見證)“混入”多項式 $ L(), R(), O(), h() $ . 缺少兩點:(1)多項式在隨機點進行評估 $ \tau $ 對證明者隱藏(“有毒廢物”),以及(2)橢圓曲線和雙線性運算(配對)。

多項式評估為 $ \tau $ 作為組元素發送進行驗證。驗證方程等效於問題中所述的方程,直至使用 Schwartz-Zippel 引理評估的可忽略的穩健性誤差(機率)。

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