我正在阅读由Maksym Petkus - http://www.petkus.info/papers/WhyAndHowZkSnarkWorks.pdf编写的对zkSnark的解释。
我已经理解了前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},可以根据s提供的加密能力计算g^{t(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,那么他将如何做到这一点?
简而言之,我无法弄清楚什么是需要“限制多项式”的攻击(以防止)。
发布于 2021-10-10 12:26:46
文章的第15页提供了E(s^0)=E(1)=g (我将将其称为E_0)。同样地,他们也得到了
让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)}的验证者没有什么与他们的信念相矛盾的。
https://crypto.stackexchange.com/questions/95485
复制相似问题