上周,我们图解了零知识证明,解释了区块链中的最常见的密码学到底是什么,引起了许多朋友的讨论。但同时,也有小伙伴表示太深奥没法完全看明白,还有的说想教孩子学习零知识证明,但不知道如何用孩子能听懂的语言去解释。
所以今天咱们就一起来看看,如果让你用最简单易懂的表达方式来解释零知识证明,你可以怎么说?
要解释加密技术是很困难的,要用通俗易懂的语言来解释加密技术则是难上加难。给孩子解释零知识证明(Zero Knowledge Proof)呢?简单!今天,我们就来用万圣节糖果解释一下零知识证明吧。
零知识证明
零知识证明(又称零知识密码证明,ZKP)是一种在不交换密码的情况下进行身份验证的方法,在这种情况下,密码是无法被窃取的。这是一件非常酷的事情,因为这可以保证你的通信安全,没有人能够获取你的通信内容或你与其他人共享的文件。
通过ZKP,你可以在不泄漏任何事情的情况下证明自己知道“另一端”那个人的很多秘密。“零知识”这一术语的本意源于:第一方(被称为“证明方”)没有透露有关机密的信息(“零知识”),但第二方(被称为“验证方”)确信第一方知道问题所涉及的秘密。
为什么你要在不说出秘密的情况下证明自己知道秘密呢?当你不信任别人,但仍然需要说服他们你知道这个秘密时,你就要在不泄漏秘密内容的情况下证明自己是知情的。那么这又是如何实现的呢?
巧克力棒和百万富翁
下面我们借助Bob和Alice在万圣节得到的巧克力棒来进行说明。
Bob和Alice两个人想知道他们收到的巧克力数是不是一样多。但是因为他们不想把自己的巧克力分享给对方,所以他们并不想透露自己收到的巧克力的具体数量。
我们假设他们的“不给糖果就捣蛋”袋子里正好有10、20、30或40块巧克力。
为了在不说出各自具体数量的情况下比较两人巧克力的多少,Bob拿来了4个带锁的盒子,并在每个盒子上贴上标签,上面写着10个、20个、30个、40个(巧克力棒)。
然后Bob只留下与自己拥有的巧克力数量(假设他有20个巧克力棒)一致的箱子的钥匙,扔掉其他所有箱子的钥匙后离开房间。
Alice拿来4张纸,其中一张纸上写着“+”,其余三张纸上都写着“-”。
然后她把所有写着“+”的纸(通过箱子上缝隙)放入与自己巧克力棒数量相对应的盒子中(假设她有30个巧克力棒)。把写有“-”的纸分别放入其他3个盒子中然后离开房间。
Bob回到房间并用自己的钥匙打开与自己巧克力棒数量相对应的盒子,查看盒子中的纸上写的是“+”还是“-”。
Bob如果发现盒子里的纸上写的是“+”,那么说明Alice拥有的巧克力数量和他是一样的。如果是“-”,则说明他们拥有的巧克力数量不同(但他们仍不会和彼此分享各自拥有的巧克力数量)。
我们知道Bob的袋子里有20个巧克力棒,Alice的袋子里有30个巧克力棒。通过打开盒子,并找到写有“-”的纸,Bob得知他和Alice拥有的巧克力数量不同。但是他并不知道Alice拥有的巧克力数量比自己多还是比自己少。
Alice回到房间后会看到Bob手中的纸上写得是“-”,并由此得知Bob拥有的巧克力数与自己不同。但Bob和Alice仍然不知道对方到底有多少巧克力棒,他们只知道他们拥有的巧克力数量是不同的。
同样的例子,但是以一种稍微不同的形式,被广泛地称为“Yao’s Millionaire’s Problem姚氏百万富翁问题”。两个百万富翁想要知道他们拥有的钱数是否相等,却又不想透露具体的数值。这是ZKP工作原理的一个简单例子。
是不是十分简单明了?用这样的解释方式,5岁的小朋友也可以轻松理解“零知识证明”的意思!想要了解哪些有关零知识协议的密码学解释?可以留言告诉我们,或在留言区和我们讨论你对其他密码学的解释方式哦~