为什么说“zk-SNARKs 需要一个可信的设置”才能工作?

在这种情况下,“可信设置”的含义是什么?人们常说 zk-STARKs 和 Bulletproofs 不需要可信设置。zk-STARKs 和 Bulletproofs 如何避免对可信设置的需求?

粗略情况下,零知识证明协议需要3个步骤:

1.Setup
2.Prove
3.Verify

1 需要执行一次,在此设置阶段完成后,通常可以使用设置的输出无限期地重复2 和3。

这些“可信设置”和“不可信设置”协议之间的区别在于步骤 1。在第一个设置步骤中,证明者和验证者就一些共同的“公共”参数达成一致,他们将需要这些参数来执行计算。“同意参数”通常意味着另一方强加了这组参数。

让我们举一个非常具体的例子,Schnorr 协议(这不是零知识,但这并不重要):
在这里插入图片描述

To see that the Schnorr protocol does not have a trusted setup: all of the public parameters are picked randomly, they have no “secret relation” between them. There is “no trust” necessary in the parameters.

看到 Schnorr 协议没有可信设置:所有公共参数都是随机选择的,它们之间没有“秘密关系”。参数中没有必要的“不信任”。

zkSNARKs 不一定需要可信设置。它不在定义中(“知识的简洁论证”不是“具有可信设置”,“succinct argument of knowledge” does not read “with trusted setup”),但 SNARK 最成熟的实例似乎直到最近才具有此属性。

要了解 Bulletproofs(不是 SNARK)如何不需要可信设置,可以查看其公共参数。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45859485/article/details/129152770