比特人-比特币第一中文社区

 找回密码
 立即注册(register)
查看: 24|回复: 0

科普丨如何简单易懂的解释“零知识证明”?

[复制链接]
发表于 2019-9-27 11:52:09 | 显示全部楼层 |阅读模式
如果让你用最简单易懂的表达方式来解释零知识证明,你可以怎么说?加密技术本就难以解释,如果还想通俗易懂的解释更是难上加难。

但是我们可以尝试用万圣节糖果的故事来解释零知识证明,保证你能看懂!



零知识证明

零知识证明(又称零知识密码证明,ZKP)是一种在不交换密码的情况下进行身份验证的方法,在这种情况下,密码是无法被窃取的。这是一件非常酷的事情,因为这可以保证你的通信安全,没有人能够获取你的通信内容或你与其他人共享的文件。

通过ZKP,你可以在不泄漏任何事情的情况下证明自己知道“另一端”那个人的很多秘密。“零知识”这一术语的本意源于:第一方(被称为“证明方”)没有透露有关机密的信息(“零知识”),但第二方(被称为“验证方”)确信第一方知道问题所涉及的秘密。

为什么你要在不说出秘密的情况下证明自己知道秘密呢?当你不信任别人,但仍然需要说服他们你知道这个秘密时,你就要在不泄漏秘密内容的情况下证明自己是知情的。那么这又是如何实现的呢?



巧克力棒和百万富翁


下面我们借助Bob和Alice在万圣节得到的巧克力棒来进行说明。

1.jpeg

Bob和Alice两个人想知道他们收到的巧克力数是不是一样多。但是因为他们不想把自己的巧克力分享给对方,所以他们并不想透露自己收到的巧克力的具体数量。

2.jpeg

我们假设他们的“不给糖果就捣蛋”袋子里正好有10、20、30或40块巧克力。

3.jpeg

为了在不说出各自具体数量的情况下比较两人巧克力的多少,Bob拿来了4个带锁的盒子,并在每个盒子上贴上标签,上面写着10个、20个、30个、40个(巧克力棒)。

4.jpeg

然后Bob只留下与自己拥有的巧克力数量(假设他有20个巧克力棒)一致的箱子的钥匙,扔掉其他所有箱子的钥匙后离开房间。

5.jpeg

Alice拿来4张纸,其中一张纸上写着“+”,其余三张纸上都写着“-”。

6.jpeg

然后她把所有写着“+”的纸(通过箱子上缝隙)放入与自己巧克力棒数量相对应的盒子中(假设她有30个巧克力棒)。把写有“-”的纸分别放入其他3个盒子中然后离开房间。

7.jpeg

Bob回到房间并用自己的钥匙打开与自己巧克力棒数量相对应的盒子,查看盒子中的纸上写的是“+”还是“-”。

8.jpeg

Bob如果发现盒子里的纸上写的是“+”,那么说明Alice拥有的巧克力数量和他是一样的。如果是“-”,则说明他们拥有的巧克力数量不同(但他们仍不会和彼此分享各自拥有的巧克力数量)。

我们知道Bob的袋子里有20个巧克力棒,Alice的袋子里有30个巧克力棒。通过打开盒子,并找到写有“-”的纸,Bob得知他和Alice拥有的巧克力数量不同。但是他并不知道Alice拥有的巧克力数量比自己多还是比自己少。

9.jpeg


Alice回到房间后会看到Bob手中的纸上写得是“-”,并由此得知Bob拥有的巧克力数与自己不同。但Bob和Alice仍然不知道对方到底有多少巧克力棒,他们只知道他们拥有的巧克力数量是不同的。

同样的例子,但是以一种稍微不同的形式,被广泛地称为“Yao’s Millionaire’s Problem姚氏百万富翁问题”。两个百万富翁想要知道他们拥有的钱数是否相等,却又不想透露具体的数值。这是ZKP工作原理的一个简单例子。

是不是十分简单明了?用这样的解释方式,5岁的小朋友也可以轻松理解“零知识证明”!



本版积分规则

小黑屋|Archiver|手机版|比特人-比特币第一中文社区

GMT+8, 2019-10-18 16:49 , Processed in 0.017990 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表