零知识证明---简易版
版权声明:本文授权BH好文好报群摘编、推广、转载请声明
前言:
现实生活中,我们出行必不可少要带上身份证,因为买票住酒店统统都需要。小小的一张身份证卡,即包含了个人的所有信息,也具有法律效应。因此它对每个社会人很重要,也因为有太多隐私,我们也总担心它丢掉或被盗。但是现在有了区块链技术,再配合零知识证明的运用,或许可以解决我们的困扰。因为不懂什么是零知识证明,所以查阅了一些文章帮助自己理解。下面这篇文章我觉得比较通俗易懂,特翻译出来,如果你也对零知识证明感兴趣,希望能为你的理解助力。
原文标题:A zero knowledge proof for Where’s Wally
https://medium.com/swlh/a-zero-knowledge-proof-for-wheres-wally-930c21e55399
By Patrick Woodhead
原文翻译如下:
在区块链世界里,零知识证明--这一话题有很高的热度。
比如:智能合约可以用零知识证明来隐去一个合约到底是怎样被触发的,而只是披露一个事实--就是这个合约已实现了。
So,零知识证明到底是什么呢?
A zero knowledge proof is a protocol between two parties, a prover and a verifier, where the prover, who makes some claim, can convince the verifier that their claim is valid, whilst revealing nothing more than the validity of their claim.
是不是晦涩难懂呢?
与其逐句解释,不如用一个有趣的故事来说明,等你再回头读这段话时,也许你就能理解了。
零知识证明的故事背景大多是这样的:
1,有一个很难解决的问题
2,对问题的陈述
在我讲的这个故事里,包含了:
1,问题:Where’s Wally(Wally在哪?)
2,对问题的陈述:一张专门的Where’s Wally拼图
角色
好吧,下面是我们故事的主角。首先是Peggy,the prover(证明者)
证明者Peggy喜欢提出论断。自然了,她期望人们都相信她的推断是有效的。但是这也给她带来了困扰,因为她不想泄露她推断的细节,不想为了证明什么就把她辛苦掌握的知识透露出去。
在我们故事里,Peggy的论断是这样的:I have found Wally in the above Where’s Wally puzzle.(我已经在wally在哪的拼图里找到了Wally的位置)
我们故事里的另一个主角是Vitcor, the verifier(验证者)
他喜欢听到Peggy的论断,但他更喜欢确信Peggy没有糊弄他,因为他可不想自己像个傻瓜似的被耍。
于是他想知道Peggy是否真的在拼图里找到Wally的位置了。
So.....
也就是说证明者Peggy提出了知道Wally在哪的论断,并且向Victor,验证者炫耀。
按传统验证的方式,有一个很明显的方式可以让Peggy来验证她的论断。那就是她只需要在拼图上指出Wally的位置就可以了。这样一来,验证者Victor就会完全相信Peggy没有说谎了。但是,Peggy(证明者)并不喜欢以这种方式来验证,因为这样的话,Victor就轻易知道拼图中Wally的位置了。
零知识证明的方法阐述
如果证明者Peggy不相信验证者Victor,或者不想泄露她的秘密知识。如果验证者Victor也知道在哪里找到Wally,那么Peggy解决问题用的知识就没什么价值了。当然,Peggy更不希望他离开后欺骗其他人说是他自己找到了Wally的位置。
因此,她就想,我是否仍然可以说服验证者Victor:我知道拼图里Wally 的位置,却不用透露Wally 的位置信息吗?我能否以零知识说服他?
SO, 证明者Peggy需要隐藏的是什么呢?
对于任何零知识证明来说,最好先想想验证者Victor已经掌握的信息是什么。
本故事里,验证者Victor已经掌握的信息有:
1,Wally在拼图中某个位置。
2,Wally可能在拼图中的任一位置。
因此,当Peggy向Victor展示她的解决方案时,Peggy只需要遮挡住Wally可能在拼图中占据的所有其他可能位置,。只要Peggy传达出的信息没有超出Victor已知信息范围,她就会很高兴。所以她提出了以下方案(或协议)。
协议
证明者Peggy出去找了一张黑色卡片,长宽至少是Where’s Wally拼图的两倍。然后她在卡片的中间切出一个Wally形状的洞。
然后,她将Where's Wally拼图(放在一张纸上)粘贴到黑色卡片的背面,以便拼图上的Wally正好卡在卡片中间Wally孔上。重要的是,验证者Victor,他站在黑色卡片前面,无法看到Wally在拼图中以外的部分,即便Peggy正在把它往卡片上贴。 但是,一旦Peggy解决了这个难题,Victor就可以肯定他没有被欺骗,因为如果Peggy不知道Wally在哪,她就不可能通过这个洞展示Wally。 (显然,Peggy可以用一些狡猾的手段来欺骗Victor,例如,在她的口袋里藏着打印出来的Wally图像,但让我们假设所有这些方法Victor都已考虑了。)因此,当验证者Victor通过洞看到Wally时,他相信证明者Peggy的说法是有效的(协议的这种属性在学术上被称为soudness正确性)
Peggy也很高兴。由于黑色卡片足够大,所以当她将拼图粘贴到黑色卡片背面时,不管Wally在拼图中哪个位置,都不会透过黑色卡片被看到。
因此,这个协议满足了证明者Peggy的愿望:她能让验证者Victor知道她的验证结果(学术上叫完整性),同时也没向Victor披露超过他已知的关于Wally的信息(学术上称为零知识)。
Peggy已经验证了她论断的有效性,并且是以零知识的方式,也就是零知识证明。
此时你若重读最上面那段英文,是不是好理解多了。
零知识证明在现实中如何被运用?
回到我们开始的地方,智能合约要求某人要满足条件A或B或C,才能执行合约。但“履行者”可能不希望透露他们确实满足这些条件中的哪一个。也许这些信息很敏感。
那么,这类似于将Where’s Wally拼图分成与Wally大小相同的N个盒子,Peggy运用零知识证明她知道Wally在哪个盒子中:盒子1或盒子2或盒子3或...或盒子N 。
对用零知识证明的智能合约,验证者们能看到合同可以被执行了,但不会知道更多信息了,除了他们事先已经知道的。
为什么有人希望隐藏满足合约被触发的信息呢?也许是因为它涉及了Peggy的身份信息,签名或是其它她个人敏感的隐私。
点评:
零知识证明就是向别人验证一个结果,只能对方看到那个正确的答案,至于验证过程中用到的方法或步骤统统不告诉。就好比证明能做出XX菜的就是真正的厨师,于是那个厨师只需要把那到菜端到你面前给你吃就行了,至于怎么做出来的统统保密,不给人看到。当然个人觉得这种方式能有效,也在于证明者和验证者都很诚实且相信对方,重要的是验证者接受这种验证方式。
好吧,希望你也理解零知识证明了,不用给我发好人勋章,哈哈哈哈。。。
温馨提示:
如需对本文转载,请注明原文出处,作者以及转载出处和译者,谢谢配合!!!
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
早赞声明:为方便早赞、避免乱赞,“BH好文好报群”为点赞者、写作者牵线搭桥,实行“先审后赞、定时发表”的规则,也让作品脱颖而出、速登热门!加群微信:we01230123(天平)