http://www.7klian.com

从零开始进修 zk-SNARK(二)——多项式的非交互式零常识证明

为了办理这个问题,我们可以特别再要求除了第一个以外的每一个参加者去加密然效果真他的参数。譬喻,Bob 同样果真了:

零常识证明

最后这个协议提供了一个证明给 Alice ,Bob 确实是用他知道的某个值对 a 举办求幂的,并且他也不能做此外任何操纵,譬喻:乘法,加法,因为这样就会粉碎 α-调动干系。
[email protected]安比尝试室: 换句话说,配对只支持 x * y 这种两个值的乘法,但不支持三个或以上的值相乘,好比不支持 x * y * z。

· verifier 也可以利用同样的要领本身伪造证明。
注解
在同态加密中,求幂是对被加密值举办乘法运算。我们可以应用这个布局到一个简朴的系数多项式 f(x) = c⋅ x的例子中:

· 提供一个元组 (a, a’) 给 Bob, 然后让他对这两个值执行任意的求幂运算,返回功效元组 (b, b’),这里的指数 “α-调动” 依然保持稳定,即 bα = b'(mod n)
c) 有了回覆的元组和 α,Alice 就可以验证等式:

因而 prover 就需要别离和每个 verifier 做交互来证明一个告诉(就是例子中指的多项式的常识)。
https://medium.com/@imolfar/why-and-how-zk-snark-works-3-non-interactivity-distributed-setup-c0310c0e5d1c
· verifier 必需生存 α and t(s) 直到所有相关证明被验证完毕,这就带来了一个大概造成奥秘参数泄漏的特别进攻面。
1)同态加密无法对两个加密值做乘法,那如何验证加密后的参数呢?
本系列文章已获作者中文翻译授权。

我们此刻筹备来归并这个慢慢演化出来的 zk-SNARKOP 协议。为简捷起见,我们将利用大括号来暗示由旁边的下标填充的一组元素,譬喻:

[email protected]安比尝试室: 借助这个”无本钱的”能力,就可以轻松实现零知了。可是这里实现零常识的要领和实际中的Pinocchio协议,尚有Groth16 方案略有差异。实际方案中是用乘法乘以 δ^(δ·t(s))。

当我们在验证每一个参加者奥秘参数的一致性时,要留意参加者生成 CRS 的进程并没有强制后一个参加者(就是我们例子中的 Bob 和 Carol)都要利用前面已经果真的 CRS。因而假如一个进攻者是链上的最后一个参加者,他可以像链上的第一个参加者一样忽略前面的 CRS 随便结构一个有效的 CRS,这样他就酿成了独一一个知道奥秘 s 和 α 的人。
尽量
交互式证明也有它的用处,譬喻一个 prover 只想让一个特定的 verifier (称为方针 verifier,更多的信息拜见 [JSI96] )确信,就不能再反复操作同一个证明去向别人证明这个声明白,可是当一个 prover 想让浩瀚的参加者同时可能永久地确信的话,这种要领就很低效了。prover 需要保持一直在线而且对每一个 verifier 执行沟通的计较。

信任任意一个参加者
· Bob 在元组的两个值的计较上都用了同一个指数(即 c)

配对操纵(双线性映射)是一个数学布局,暗示为函数 e(g,g),它给定一个数据会合的两个加密的输入(即 ga, gb ),可以将他们确定性地映射到另一组差异的输出数据集上的它们的乘积,即 e(ga, gb) = e(g, g)ab:

因而,我们就需要一个可以被反复利用,果真,,可信,又不会被滥用的奥秘参数。
作者:Maksym Petkus

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读