很多兄弟都不知道什么是零知识证明(ZeroKnowledgeProof)?今天我就简单分享以下
零知识证明可以让一方(证明方)在不透露任何实际信息的情况下向另一方(验证方)证明某保密信息或声明是真的。
术语「零知识」本身就表明了不需要揭露任何信息,证明方就可以向验证方证实ta所知道的保密信息以及ta的声明都是真的。
那为什么需要零知识证明呢?当我们不想披露任何信息,但需要说服其他人相信我们知道的保密信息和提出的声明是真的时候。
目前有两种零知识证明:
交互式的(Interactive)非交互式的(NonInteractive)
举例说明交互式的零知识证明
假设你需要通过ZKP(零知识证明)证明你的年龄大于或等于18岁,但不揭露具体年龄。我们需要第三方机构为你的年龄保证,具体如下:
第三方说:「已接收你的出生证明的复印件,他们已经得知你的年龄为21岁。现在为您提供一串数字密码,请将它保存到保密与安全的地方。稍后你会用到它。」
「你持有的那串数字密码将会被哈希算法处理22次,然后得出一个最终年龄哈希代码给你(没错,处理次数必须为年龄+1,才能使得整个操作行得通)。也就是说,你拿到那串数字密码之后,会有22次哈希处理过程才能获得最终的年龄哈希代码。」
「那你可以将你的姓名、时间戳与最终年龄哈希代码一起打包。这个证明包将提供给他人验证。」
好了,那么当你想要向其他人证明你的年龄超过18岁时,你只需要证明从你拿到数字密码到最终年龄哈希代码之间的哈希算法处理次数大于18就可以了。
那么怎么证明呢?你只需要向他人展示最后的18次哈希算法处理记录。你需要自己进行前4次哈希算法处理(对数字密码进行哈希算法处理4次),然后将结果提供给其他人:第四次哈希值。
他们会对第四次哈希值再处理18次(现在对你的数字密码总共进行了22次哈希算法处理),最终他们能够得出最终年龄哈希代码并且使用证明包对它进行验证。
实际上,验证者是在说:「发送我们一个值,我们会对其进行18次哈希算法处理,然后这个哈希值将与你提供的年龄哈希代码进行对比。」如果你低于18岁,最终年龄哈希代码的哈希算法处理次数就没有18次,我们对你提供的那个初始哈希值进行18次哈希算法处理后,就会与最终年龄哈希代码不一样。
?但是这种交互式方法有一些局限:
每次验证都需要进行整个冗长的过程。而上述例子只是简单的哈希算法处理,想象一下如果需要对实际加密算法进行计算会如何。证明方与验证方都需要同时在场,不管是在线还是面对面。
以上的内容就我今天要分享的内容了,有什么币圈问题需要咨询可以联系小新vx:huang33868。下图充分了解释了什么零知识证明结构兄弟们可以看一下。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。