原文标题:《从零开始学习 zk-SNARK(二)——多项式的非交互式零知识证明》
原文来源:安比实验室 作者:Maksym Petkus
导读
上一篇文章(多项式的性质与证明)中,作者介绍了如何利用多项式的性质来证明某个多项式的知识,相信大家已经对构造证明有了一些基本的认识。目前的证明协议仍然存在一些缺陷,本文将会针对这些薄弱项进行改进,进而最终构造出关于多项式的零知识证明协议。本文重点:KEA,交互式零知识证明,非交互式零知识证明和 Setup。






注解
even@ 安比实验室: 换句话说,配对只支持 x * y 这种两个值的乘法,但不支持三个或以上的值相乘,比如不支持 x * y * z。
在某种意义上,这个类似于一个哈希函数,他将所有可能的输入值映射到可能的输出值的集合中的一个元素上,通常情况下这个过程是不可逆的。
注意:乍一眼看过去,这个限制可能会阻碍相关功能的实现,但在 zk-SNARK 中这反而是保证安全模式的最重要性质,参见 remark 3.3。
配对函数 e(g,g) 可以初步(严格来说是不对的)地类比成「交换」每一个输出的基数和指数的操作,使得基数 g 在交换过程中被修改成了指数的方式,即 ga → ag。"被转换"的两个输入一起被修改了,这样原始值 a 和 b 就在同一个指数下相乘了,即:
注意:配对操作是通过改变椭圆曲线来实现这些性质的,现在我们用的符号 gⁿ 就代表曲线上一个由生成元自相加了 n 次的点,而不是我们前面用到的乘法群生成元。
[DBS04] 这个综述提供了学习配对的出发点。
可信任参与方的 Setup
有了配对,我们现在就准备去设置安全公开且可复用的参数了。假定一下我们让一个诚实的参与方来生成秘密值 s 和 α。只有 α 和所有必要的 s 的幂及其对应的 α-变换被加密了,那么原始数据就必须要被删除(i 为 0,1,…,d):
信任任意一个参与者
尽管受信任设置很有效率,但众多 CRS 用户也必须要相信生成者确实删除了 α 和 s,这一点没有办法证明(proof of ignorance 是一个正在积极研究的领域 [DK18]),所以这种方法依然是无效的。因而很有必要去最小化或者消除这种信任。否则一个不诚实的参与方就可以构造假证明而不被发现。
一种解决办法就是由多个参与方使用前面小节中介绍的数学工具来生成一个组合式 CRS,这样这些参与方就都不知道「秘密」了。下面是一个实现方案,我们假设有三个参与者 Alice,Bob 和 Carol,对应为 A,B 和 C,其中 i 为 1, 2, …, d:
除非他们串谋,否则参与者们互相之间并不知道其他人的秘密参数。实际上,一个参与者必须要和其它所有的参与者串谋才能得到 s 和 α,这样在所有的参与者中只要有一个是诚实的,就没有办法伪造证明。
注意:这个过程可以被尽可能多的参与者重复完成。
有一个问题是如何验证参与者在生成 CRS 时用的随机数值是一致的,因为攻击者可以生成多个不同的随机数 s₁, s₂, … 和 α₁, α₂, …,然后代入这些不同的随机数去执行 s 的不同次幂计算(或提供随机数作为一个 CRS 的扩充),从而使 CRS 无效或者不可用。
庆幸的是,因为我们可以使用配对来乘以加密值,所以我们就可以从第一个参数开始逐一执行一致性校验,并且确保了每个参数都源于前一个。
当我们在验证每一个参与者秘密参数的一致性时,要注意参与者生成 CRS 的过程并没有强制后一个参与者(就是我们例子中的 Bob 和 Carol)都要使用前面已经公开的 CRS。因而如果一个攻击者是链上的最后一个参与者,他可以像链上的第一个参与者一样忽略前面的 CRS 随便构造一个有效的 CRS,这样他就变成了唯一一个知道秘密 s 和 α 的人。
为了解决这个问题,我们可以额外再要求除了第一个以外的每一个参与者去加密然后公开他的参数。例如,Bob 同样公开了:
同样的,Carol 也必须证明她的 CRS 是乘以了 Alice-Bob 的 CRS 后正常获得的。
这是一个健壮的 CRS 设置模式,它并不完全依赖于单个参与者。事实上,即使其它所有的参与者都串谋了,只要有一个参与者是诚实的,他能够删除并且永远不共享它的秘密参数,这个 CRS 就是有效的。所以在设置 CRS(有时候被称为仪式 [Wil16])的时候有越多不相关的参与者参与,伪造证明的可能性就越低。当有相互竞争的参与方参与的时候,就几乎不可能伪造证明了。这种模式能够包容其他一些怀疑这种 setup 可识别性的不受信方因为校验步骤确保了他们不会破坏(这里也包括很弱的 α 和 s 的使用)最终的 CRS。
注解
even@ 安比实验室: 现在有一些 zkSNARK 方案支持可升级的 CRS,任何怀疑 CRS 的参与方都可以对 CRS 进行更新。此外还有一些 zkSNARK 方案支持 Universal CRS,用不着对每一个电路进行受信任设置,而是只需要全局完成一次即可。除此之外,大量无需 Trusted Setup 的方案正在被充分研究。
多项式的 SNARK
我们现在准备来合并这个逐步演化出来的 zk-SNARKOP 协议。为简洁起见,我们将使用大括号来表示由旁边的下标填充的一组元素,例如:
Remark 3.3 如果 pairing 的结果有可能在其它类似的乘法协议中被复用,那么这里就完全没有安全性可言了,因为这样的话 prover 就可以构造
结论
我们用 zk-SNARK 协议来解决多项式问题的知识,不过这是一个有局限的例子。因为大家可以说 prover 只要用另外一个有界的多项式去乘以 t(x) 就可以很容易得构造出一个能够通过测试的多项式 p(x),并且这种结构也是有效的。
verifier 知道 prover 有一个有效的多项式,但是并不知道是哪一个。我们可以利用多项式的其他性质添加额外的证明,如:被多个多项式整除,是某个多项式的平方。虽然可能会有一个服务能够接受,存储和奖励所有经过证明的多项式,或者有一个需求,加密计算某种形式的未知多项式。然而若有通用方案就可以支撑无数的应用。
注解
even@ 安比实验室:总结一下这篇文章中一步一步解决了下面的几个问题:
保证 prover 的证明是按照规则正确构造的——> KEA
保证知识的零知性——>「无成本的」δ 变换
可复用证明——> 非交互式
非交互中如何设置安全公开且可复用的参数——> 参数加密,verifier 借助密码配对进行验证
保证参数的生成者不泄密——> 多方的 Setup
至此,一个用来证明多项式知识的完整的 zk-SNARK 协议就构造出来了,不过现在的协议在通用性上依然还有很多限制,后面的文章将继续介绍如何构造通用的 zk-SNARK。
原文链接
https://arxiv.org/pdf/1906.07221.pdf
https://medium.com/@imolfar/why-and-how-zk-snark-works-2-proving-knowledge-of-a-polynomial-f817760e2805
https://medium.com/@imolfar/why-and-how-zk-snark-works-3-non-interactivity-distributed-setup-c0310c0e5d1c
参考文献
[Dam91]—Ivan Damgård.「Towards practical public key systems secure against chosen ciphertext attacks」. In: Annual International Cryptology Conference. Springer. 1991, pp. 445–456.
[Gro10]—Jens Groth.「Short pairing-based non-interactive zero-knowledge arguments」. In: International Conference on the Theory and Application of Cryptology and Information Security. Springer. 2010, pp. 321–340.
[JSI96]—Markus Jakobsson, Kazue Sako, and Russell Impagliazzo.「Designated verifier proofs and their applications」. In: International Conference on the Theory and Applications of Cryptographic Techniques. Springer. 1996, pp. 143–154.
[DBS04]—Ratna Dutta, Rana Barua, and Palash Sarkar. Pairing-Based Cryptographic Protocols: A Survey. Cryptology ePrint Archive, Report 2004/064. https://eprint.iacr.org/2004/064. 2004.
[DK18]—Apoorvaa Deshpande and Yael Kalai. Proofs of Ignorance and Applications to 2-Message Witness Hiding. Cryptology ePrint Archive, Report 2018/896. https://eprint.iacr.org/2018/896. 2018.
[Wil16]—Zooko Wilcox. The Design of the Ceremony. 2016. url: https://z.cash/blog/the-design-of-the-ceremony/
来源链接:weixin.qq.com
欢迎加入律动 BlockBeats 官方社群:
Telegram 订阅群:https://t.me/theblockbeats
Telegram 交流群:https://t.me/BlockBeats_App
Twitter 官方账号:https://twitter.com/BlockBeatsAsia