zk-SNARK 协议 在这一步步的改进之后,我们得到了最终版本的zkSNARK,又名 Pinocchio [Par + 13],协议 (零知识 部分是可选的并用不同的颜色 标注出来了),就是: Setup 选择生成元 g 和加密配对 e 将变量总数为 n 其中输入/输出变量数位 m 的函数 f(u) = y,转换为阶数为 d 大小为 n+1 的多项式形式(...
但是尽管已经做了加密,在零知识 性质上也还依然存在一个很明显的缺陷:即理论上多项式参数 c_i 是一个很广的取值范围内的值,实际上这个范围可能很有限(比如前面例子中的 6),这就意味着 verifier 可以在有限范围的系数组合中进行暴力破解,最终计算出一个与 prover 的答案相等的结果。比如我们将每个系数的取值范围...
even@安比实验室:17 年最早接触 zk-SNARK 开始,就断断续续得学习了一些 zk-SNARK 的知识,但对其原理始终存在诸多困惑,没有形成一个完整的认识。偶然一次机会,看到了 Maksym Petkus 的这篇文章。文章从最基本的多项式性质讲起,从一个简单易懂的证明协议开始,然后像堆积木一样在发现问题,修改问题中逐步去完善协议,...
在 zkSNARK 中,如果不可信或由单方生成密钥对,则可以实现这个属性。 零知识证明构造领域正在不断发展,包括引入了优化([BCTV13, Gro16, GM17]),改进例如可更新的 proving key 和 verification key([Gro+18]),以及新的构造方法(Bulletproofs [Bün+17], ZK-STARK [Ben+18], Sonic [Mal+19])。 even@安比...
17 年最早接触 zk-SNARK 开始,就断断续续得学习了一些 zk-SNARK 的知识,但对其原理始终存在诸多困惑,没有形成一个完整的认识。偶然一次机会,看到了 Maksym Petkus 的这篇文章。文章从最基本的多项式性质讲起,从一个简单易懂的证明协议开始,然后像堆积木一样在发现问题,修改问题中逐步去完善协议,直到最终构造出完...
even@安比实验室: 上一篇文章中我们学习了如何将程序转换为多项式进行证明。到这里似乎已经有点晕了,本文将对协议执行进一步的约束,并对协议展开优化。 作者:Maksym Petkus 翻译& 注解:even@安比实验室(even@secbit.io) 校对:valuka@安比实验室 本系列文章已获作者中文翻译授权。 结构性质 上文中的修改额外带来了...
注意:乍一眼看过去,这个限制可能会阻碍相关功能的实现,但在 zk-SNARK 中这反而是保证安全模式的最重要性质,参见remark 3.3。 配对函数 e ( g , g ) 可以初步(严格来说是不对的)地类比成“交换”每一个输出的基数和指数的操作,使得基数 g 在交换过程中被修改成了指数的方式,即 ga → ag 。"被转换"的...
even@安比实验室:17 年最早接触 zk-SNARK 开始,就断断续续得学习了一些 zk-SNARK 的知识,但对其原理始终存在诸多困惑,没有形成一个完整的认识。偶然一次机会,看到了 Maksym Petkus 的这篇文章。文章从最基本的多项式性质讲起,从一个简单易懂的证明协议开始,然后像堆积木一样在发现问题,修改问题中逐步去完善协议...