在Groth16方案(https://eprint.iacr.org/2016/260.pdf) 第2.2节的零知识定义中,为什么允许模拟器设置陷阱门?陷阱门信息包含了应该由设置销毁的有毒废物。换句话说,如果模拟器(即模拟被动攻击者)了解有毒废物,它会损害协议的安全性吗?
发布于 2022-08-13 10:22:14
陷阱门是争论零知识的基础。你可以这样想:有了陷阱门,证明者可以在不知道证人的情况下提供有效的证据,而且证据与真实的证据是无法区分的。这保证了没有任何关于证人的有效证据被泄露,因为没有它就可以产生类似的证据。
当然,圈套门不应该被现实世界的拥护者所知晓--这会让他们作弊。
在传统的NIZK系统(如Groth-Sahai )中,诀窍是系统参数可以在两种无法区分的模式中产生--一种带有陷阱门,另一种没有。在现实世界中,我们使用一个可以保证参数在无陷阱模式下生成的设置(实际上,我们也可以使用一个设置来生成带有陷阱门的参数,但以保证没有人知道陷阱门的方式)。
编辑-修正了一个不正确的答案,我混淆了Groth16 16和GrothSahai08 08,这要感谢威尔逊指出了这一点。
对于Groth来说,无陷阱模式是一个均匀的随机字符串。生成无陷阱参数的一种简单方法是使用"nothing up my袖“方法,即确保结果不受任何人控制的过程--例如,获取上一次抽奖的结果,添加一组小数的\pi,并使用SHA2对结果进行散列。任何类似的事情都会奏效的。
然而,对于SNARKs,特别是对于Groth16,情况完全不同:我们通常没有任何方法使用统一的随机字符串*来进行建筑工作。我们仍然需要这个陷阱门内部的模拟(当我们证明零-知识),但现在,我们必须确保验证者不知道陷阱门(并依靠一个指数的知识假设来表明,如果他们欺骗而不知道陷阱门,他们必须了解证人)。在这种情况下,最好的解决方案通常是使用多个当事方的安全分布式协议生成这个SRS,以“稀释”信任。这可能是昂贵的,也不是完全令人满意的,但这是一次性的成本,这是我们所能做的最好的(不仅仅是信任谁产生了SRS)。
(*)对于一些具有简洁证明但不简洁的验证器运行时的证明系统,例如防弹,我们可以这样做。就我所知,实现一个只依赖于随机字符串并具有简洁验证的高效的SNARK是一个开放的问题。
https://crypto.stackexchange.com/questions/101350
复制相似问题