零知识证明是密码学中的一个高级协议,从字面意思理解,首先它是一个证明,并且是不包含任何知识的证明,下面来看现实生活中的一个例子:
小明:“我拿到驾照了,刚拿到的”
小红:“不信,真拿到的话你让我看看”
小明:“好吧,给你看看”
小红看到了小明的驾照之后,不仅相信了“小明有驾照”这一事实,然而也知道了小明的年龄等一些隐秘信息。
零知识证明解决了上面的问题。
基本的零知识证明协议
下面看一个洞穴问题:
洞穴问题
C,D之间的门需要一个咒语才能打开,peggy知道这个咒语,他想向victor证明他知道这个咒语,但是又不能告诉他咒语,下面是他让Victor证明的过程:
(1)Victor站在A点
(2)Peggy一直走进洞穴,到达C或者D点。
(3)在Peggy消失在洞穴之后,Victor走到B点。
(4)之后Victor向Peggy喊,让他:
(a)从左通道出来
(b)或者从又通道出来
(5)Peggy答应了,有必要的话他就用咒语打开门
(6)Peggy和Vector重复(1)-(5)步n次
然而上面有一个问题,Vector相信Peggy知道这个咒语,但是他无法让第三个人相信Peggy知道这个咒语,第三个人很有可能怀疑Vector和Peggy合作来欺骗他的。
上面说明了两件事,其一,Victor不可能使第三方相信这个证明的有效性。其二,它证明了这个协议是零知识的。
网友评论