1.浅析零知识证明
零知识证明(Zero—Knowledge Proof),是由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初提出的;它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。
顾名思义,零知识证明就是既能充分证明自己是某种权益的合法拥有者,又不把有关的信息泄露出去——即给外界的“知识”为“零”。
目前以匿名性闻名的数字资产Zcash的匿名交易就是依靠“零知识证明”实现的。
2.举例说明
举个例子:假如A 要向 B 证明自己拥有某个房间的钥匙,假设该房间只能用钥匙打开锁,而其他任何方法都打不开。有两个方法:
方法一
A 把钥匙出示给 B,B 用这把钥匙打开该房间的锁,从而证明 A 拥有该房间的正确的钥匙。
方法二
B 确定该房间内有某一物体,A 用自己拥有的钥匙打开该房间的门,然后把物体拿出来出示给 B,从而证明自己确实拥有该房间的钥匙。
方法二的原理就是零知识证明。
零知识证明可以在不泄露内容本身的情况下,证明我知道这个秘密,可以有效解决许多验证问题。
3.零知识证明的特性
完备性 completeness:如果证明方和验证方都是诚实的,并遵循证明过程的每一步,进行正确的计算,那么这个证明一定是成功的,验证方一定能够接受证明方。
合理性 soundness:没有人能够假冒证明方,使这个证明成功。
零知识性 zero-knowledge:证明过程执行完之后,验证方只获得了「证明方拥有这个知识」的信息,而没有获得关于这个知识本身的任何信息。
4.零知识证明的优点
随着零知识证明的使用,安全性不会降级,因为该证明具有零知识性质。
高效性,该过程计算量小,双方交换的信息量少。
安全性依赖于未解决的数学难题,如离散对数、大整数因子分解、平方根等。
许多零知识证明相关的技术避免了直接使用有政府限制的加密算法,为相关产品的出口带去优势。