零知识证明 – 有关Groth16的zk证明的理解

释放双眼,带上耳机,听听看~!

今天无意中又翻开了Groth16的论文,发现当初对Groth16算法中的zk证明理解不清晰。今天和朋友们讨论,终于给出比较满意的理解。分享一下,方便其他朋友理解Groth16算法或者NIZK算法的形式化表达。非密码学专业,在理解,用词方面比较随意,主要记录理解过程。有专业的朋友看到这篇文章,欢迎批评指正。

Groth16论文的下载地址:https://eprint.iacr.org/2016/260.pdf。

Groth16算法的形式化表达由(Setup, Prove, Vfy, Sim)组成:

零知识证明 - 有关Groth16的zk证明的理解

请注意,在Setup过程中,为关系R生成simulation的trapdoor。Prove和Vfy比较简单,就是生成和验证证明。Sim是只需要trapdoor和statement的情况下,能生成证明。

有关完美零知识(Perfect zero-knowledge)的定义:

零知识证明 - 有关Groth16的zk证明的理解

通过Prove生成可认可的证明和通过Simulation生成可认可的证明概率一样。简单的说,通过Prove能生成的证明,通过Simulation也能生成同样的证明的话,就认为是具有完美零知识的属性。

当初看了这个表达后,问自己了几个问题:

1/ simulation trapdoor是什么东西?和trapdoor function有什么关系?

simulation trapdoor和trapdoor function没有什么关系。trapdoor function,区别于one-way function(比如hash函数),在提供trapdoor的情况下,能容易地进行反向推导。simulation trapdoor,你可以认为就是随机数,只是个trapdoor(可能学术界喜欢用这个字眼吧)。

2/ 为什么通过Simulation能生成同样的证明就能说明具有Perfect zero-knowledge?

通过Simulation,也就是通过trapdoor和statement,能生成同样的证明。特别注意,通过Simulation生成证明,并不需要witness的信息。也就是说,理论上,存在使用和“witness”完全无关的信息能生成同样的证明。从而证明了,证明本身没有透露任何和“witness”相关的信息。

也就是,完美零知识。当然,trapdoor在现实应用中,必须在生成CRS后,“忘记”,因为拥有trapdoor,就拥有“伪造”证明的能力。如上的证明,证明了Groth16算法本身具有“完美零知识”的性质,和是否现实中”忘记“或者”不忘记“trapdoor没有关系。

零知识证明 - 有关Groth16的zk证明的理解

具体trapdoor以及Simulation的计算过程如何呢?

零知识证明 - 有关Groth16的zk证明的理解

零知识证明 - 有关Groth16的zk证明的理解

在已知A,B的情况下,很容易从验证公式推导并计算出C。

最后,借用一个朋友的比方,如果把Simulation和Prove想象成两个平行的宇宙空间。在Simulation这个空间中,只需要知道trapdoor以及statement,就能生成和Prove空间中使用witness生成一样的证明。也就是说,证明和witness无关。

零知识证明 - 有关Groth16的zk证明的理解

矿业新闻

矿工:我们不允许比特币跌到6500美元以下

2019-7-29 10:00:21

矿业新闻

【peter专栏】BTC的日常

2019-7-29 12:11:08

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索