我正在阅读由Maksym Petkus - https://arxiv.org/pdf/1906.07221.pdf编写的对zkSnark的解释。
在第24页中,解释了多项式的zk-SNARK .在安装阶段,验证和验证密钥由可信设置创建。我理解如何使用证明键创建证据。
但是,如果我们看到验证键= { g^α, g^t(s) },我就不知道它是如何在验证阶段使用的。
核查阶段的步骤如下。

在步骤e(g^{p'}, g) = e(g^p, g^α)中,对此检查执行哪些操作?我假设是g^{p'} = (g^p)^α。要做到这一点,我不知道α。我只从整数的验证中知道g^α。
对于多项式馀因子的检验也有同样的疑问,我从验证密钥中知道g^{t(s)},但不知道t(s)。这张支票是怎么发生的?我假设验证器无法访问安装阶段。
请帮帮我。
发布于 2023-05-01 07:22:58
双线性配对具有许多性质,包括
e(A^\alpha, B) = e(A, B^\alpha) = {e(A, B)}^{\alpha} (其中\alpha是标量)
也就是说,您可以将左手项的指数移到右侧,也可以将其移出e地图本身。
(在您的示例中,A = B)
Polynomial限制检查
验证器需要检查p' = p^\alpha是否
这可以通过检查
g^{p'} \stackrel {?}{=} g^{p^\alpha}
让m = g^p。
所以,支票变成
g^{p'} \stackrel {?}{=} m^\alpha
使用双线性配对,
e(g^{p'}, g) \stackrel {?}{=} e(m^\alpha, g)
根据双线性配对的性质,可以将\alpha移到另一边,因此
e(g^{p'}, g) = e(m, g^\alpha) = e(g^p, g^\alpha)
所以他需要检查一下
$e(g^{p'},g) \stackrel {}{} e(g^p,g^α)$$
如果以上检查为真,则表示
p' = p^\alpha
Cofactors检查
验证器需要检查p = t(s)\star h是否
如果
e(g^p, g) = e(g^{t(s)\star h}, g)
现在,自从x^{a\star b} = x^{a^b}
e(g^p, g) = e(g^{{t(s)}^ h}, g)
同样,根据双线性对的性质,可以将h移到第二个参数,即验证器需要检查
e(g^p, g) \stackrel {?}{=} e(g^{t(s)}, g^h)
如果以上是真的,那就意味着
p = t(s)\star h
Vitalik关于配对的文章提供了更多关于如何检查配对的等式的信息。
https://medium.com/@VitalikButerin/exploring-elliptic-curve-pairings-c73c1864e627
我用乘法符号重写了他的一篇文章中的一段话。
配对更进一步,它允许你检查椭圆曲线点上的某些更复杂的方程,例如,如果P = g ^ p,Q = g ^ q和R = g ^ r,你可以检查p \star q = r是否有,只有P、Q和R作为输入。
https://crypto.stackexchange.com/questions/106342
复制相似问题