zkSnark:限制多項式
我正在閱讀 Maksym Petkus 撰寫的 zkSnark 解釋 - http://www.petkus.info/papers/WhyAndHowZkSnarkWorks.pdf
我已經理解了前 15 頁中的所有內容。
3.4 限制多項式(第 16 頁)
我們已經在選擇 s 的加密冪時限制了證明者,但這種限制並未強制執行,例如,可以使用任何可能的方式來找到一些任意值 $ z_p $ 和 $ z_h $ 滿足方程 $ z_p = (z_h)^{t(s)} $ 並將它們提供給驗證者而不是 $ g^p $ 和 $ g^h $ . 例如,對於一些隨機 r $ z_h = g^r $ 和 $ z_p = (g^{t(s)})^{r} $ , 在哪裡 $ g^{t(s)} $ 可以從提供的加密冪計算 $ s $ . 這就是為什麼驗證者需要僅提供權力加密的證明 $ s $ 被用來計算 $ g^p $ 和 $ g^h $ 沒有別的了。
我無法理解證明者如何找到一些任意值 $ z_p $ 和 $ z_h $ 滿足 $ z_p = (z_h)^{t(s)} $ ? 例如,對於一些隨機 r $ z_h = g^r $ 和 $ z_p = (g^{t(s)})^{r} $
證明者不知道 $ s $ &他也不知道 $ g $ ,那麼他將如何做到這一點?
簡而言之,我無法弄清楚需要“限制多項式”的攻擊(防止)是什麼。
根據論文的第 15 頁,證明者提供了 $ E(s^0)=E(1)=g $ (我將其稱為 $ E_0 $ )。同樣,它們提供有 $$ E_1:=E(s), E_1:=E(s^2),\cdots, E_d:=E(s^d). $$ 讓 $ t(s)=\sum_{0\le i\le d}c_is^i $ (與 $ c_i $ 證明者知道)然後 $ g^{t(s)}=E(t(s))=\prod_{0\le i\le d}E_i^{c_i} $ .
因此證明者知道兩者 $ g $ 和 $ g^{t(s)} $ 就像在論文中一樣,他們可以隨機選擇一個 $ r $ 建構 $ z_h $ 和 $ z_p $ 通過將這些值提高到冪 $ r $ .
攻擊的重點是上述計算不需要知道 $ p(x) $ 這就是證明者應該證明的知識。驗證者愚蠢到相信隨機值 $ z_h $ 確實等於 $ g^{h(s)} $ 然後 $ z_p $ 確實等於 $ g^{p(s)} $ 不會有任何與他們的信念相矛盾的東西。