零知识证明

        零知识证明Zero Knowledge Proof 是由S.Goldwasser等人在20世纪80年代首先引入的。零知识证明是一种密码协议,该协议的一方称为证明者(Prover),通常用P表示,协议的另一方是验证者(Verifier),一般用V表示。零知识证明是指P试图使V相信某个论断是正确的,但却不向V提供任何有用的信息,或者说在P论证的过程中V得不到任何有用的信息。
也就是说,零知识证明除了证明证明者论断的正确性外不泄露任何其他信息或知识。

       根据证明者P和验证者V的计算能力的不同,零知识证明可分为3类:完全零知识证明(Rerfect Zero Knowledge)、计算零知识证明(Computational ZeroKnowledge)和统计零知识证明(Statistical Zero Knowledge)。       为了更形象且直观地展示零知识证明的含义,下面通过两个实例对零知识证明这一概念进行类比阐释。

(1)若A要向B证明自己拥有某房间的钥匙,假设该房间只能用钥匙打开锁,而其他任何方法都打不开。
这时有两个办法可以完成上述任务:
①A把钥匙出示给B,B用这把钥匙打开该房间的锁;

②B确定该房间内有某一物体,A用自己拥有的钥匙打开该房间的门,然后把物体拿出来出示给B,从而证明
自己的确拥有该房间的钥匙。

第二个方法属于零知识证明,其好处在于在整个证明过程中,B始终不能看到钥匙的样子,从而避免了钥匙的泄露。

(2)A拥有B的公钥,但没有见过B,而B见过A的照片,偶然一天两人邂逅了,B认出了A,但A不能确定
面前的人是否是B,这时B要向A证明自己是B,此时也有两种证明方案:
①B把自己的私钥给A,A用这个私钥对某个数据签名,然后用B的公钥验证,如果正确,则可以证明对方
的确是B;
②A给出一个随机值,B用自己的私钥对其签名,然后把签名交给A,A用B的公钥验证是否是随机数的正确
签名,若正确则证明对方是B。

同样,第二个方案属于零知识证明,A除了相信B外,得不到B的任何私钥信息。

你可能感兴趣的:(密码学)