在这种情况下,“可信设置”的含义是什么?人们常说,zk和防弹系统不需要可信的设置。zk和防弹表如何避免需要可信的设置?
发布于 2021-04-19 09:26:37
零知识协议的作用(非常粗略)分三个步骤。
(1)需要执行一次,在此安装阶段完成后,(2)和(3)通常可以使用设置的输出无限期地重复。
这些“可信安装”和“不可信安装”协议之间的区别在于步骤1。在第一个设置步骤中,验证程序和验证器就一些常见的“公共”参数达成一致,它们将需要这些参数来执行它们的计算。“商定参数”通常意味着另一方强加这组参数。
让我们举一个非常具体的例子,Schnorr协议(它不是零知识,但这并不重要):
为了确保Schnorr协议没有可信的设置:所有的公共参数都是随机选择的,它们之间没有“秘密关系”。参数中“不需要信任”。
@Mathdropout 已解释,即zkSNARK不一定需要可信设置。它不是在定义中(“知识的简洁论证”不读“使用可信的设置”),但是最成熟的SNARK实例似乎直到最近才拥有这个属性。
要了解防弹表( 是而非咆哮)如何不需要可信的安装程序,可以查看其公共参数。它们看起来很像Schnorr协议的公共参数:它们有一个字段\mathbb{F}_p、一个组\mathbb{G}_q和几组组生成器G, H, G_1, \dots, G_n, H_1, \dots, H_n \in \mathbb{G}_q。发电机之间不需要有关系,它们可以随机生成。例如,Dalek防弹衣使用Keccak海绵产生“无限”数量的随机基点.。
发布于 2021-04-19 21:53:45
大致回答!在零知识证明中,证明者(P)想向验证者(V)证明她知道证人(w)的陈述(s),而不披露任何关于证人的信息(零信息)。
但上述协议并不是非交互的(而且简洁)。为了使上述协议非交互式,我们需要一个预处理设置(即CRS模型)。换句话说,验证者和验证者之间应该有一些共同的参数,这样他们就可以与协议进行交互,并且我们应该将语句从电路转换成协议友好的版本来证明,最好是进行一些预计算,以使上述协议的计算高效。
有两种类型的设置:可信安装和透明(公共)安装。在可信的设置中,我们有一个陷阱,我们应该保守它的秘密,如果攻击者得到它,她可以证明虚假陈述。受信任的安装程序应该由可信的第三方运行一次。在透明的设置中,没有任何秘密。具有可信设置的zk框架的例子有皮诺曹和Zcash的zk,而具有透明设置的zk示例是黑暗的(如@Mathdropout回答的)和斯巴达等等。
此外,我们还有一些密码学模型。其中一个模型是随机预言模型。在随机预言模型中,我们使用哈希函数作为随机预言。随机甲骨文模型中的zk-SNARKs不需要可信的设置,而且是量子后安全的,但是效率很低。ROM中的zk例子有史塔克和奥罗拉等.
具有可信设置的zk-SNARKs比透明设置的zk-SNARKs或ROM中的zk-SNARKs更有效.例如,您可以在下面的表格中看到Zcash的zk有最小的证明大小和验证时间。事实上,也有一些权衡:你提供安全(通过信任设置)并采取有效的措施。
发布于 2021-04-17 22:15:31
不需要可信的设置。这只是因为所有依赖于配对(据我所知)的zk-咆哮都取决于一个“陷阱门”,它的知识使得这个计划变得不安全。而在2019年之前,这些是唯一已知的zk-咆哮者。
zk-斯塔克斯不依赖配对。防弹衣也没有。防弹衣可以说不是咆哮,因为核查时间不短。
黑暗计划给你一个不可信的zk (https://eprint.iacr.org/2019/1229)。最近,在本文中发现了一个漏洞,但是发现gap的密码学家能够修改该方案,使其现在是安全的,并且依赖于比以前更弱的密码假设:https://eprint.iacr.org/2021/358。
https://crypto.stackexchange.com/questions/89449
复制相似问题