天天看点

零知识证明-入门学习笔记(五)

零知识证明(zkp)(区块链)

1、由来因素

区块链,因为区块链可以回溯跟踪所有用户的交易信息,并且隐私保护性差,从隐私保护最有效的方案,能够通过实现零知识证明保证区块链的安全(比特币和以太坊网络网络,除了使用地址来替换交易双方的真实身份,使得交易具有部分匿名性以外,发送、接收地址和金额都是已知的,别人有可能通过网络上的各种信息、和现实世界发生的交互记录等将比特币地址和真实身份对应起来,也因此具有隐私暴露的隐患。) 而零知识证明能够很好的解决该问题。

2、概念

零知识证明是一种基于概率的验证方式,验证的内容包括“事实类陈述”和“关于个人知识的陈述”。验证者基于一定的随机性向证明者提出问题,如果都能给出正确回答,则说明证明者大概率拥有他所声称的“知识”。

例如对于现在登录网站而言,在Web服务器上存储了客户的密码的哈希值,为了验证客户实际上知道密码,目前大部分网站采用的方式是服务器对客户输入的密码进行哈希计算,并与已存结果对比,但是这种方式的弊病在于服务器在计算时就可以知道客户的原始密码,一旦服务器被攻击,用户的密码也就泄露了。如果能够实现零知识证明,那么就可以在不知道客户密码的前提下,进行客户登录的验证,即使服务器被攻击,由于并未存储客户明文密码,用户的账户还是安全的。

3、基本原理

基本的零知识证明协议是交互式的,需要验证方向证明方不断询问一系列有关其所掌握的“知识”的问题,如果均能够给出正确回答,那么从概率上来讲,证明方的确很有可能知道其所声称的“知识”。但是存在证明方与验证方一起作弊行为。

非交互式的零知识证明顾名思义,不需要互动过程,避免了串通的可能性,但是可能会额外需要一些机器和程序来决定试验的序列

4、实例

例子一

  A要向B证明自己拥有某个房间的钥匙,假设该房间只能用钥匙打开锁,而其他任何方法都打不开。这时有2个方法:

  ①A把钥匙出示给B,B用这把钥匙打开该房间的锁,从而证明A拥有该房间的正确的钥匙。

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

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

例子二

A拥有B的公钥,A没有见过B,而B见过A的照片,偶然一天两个人见面了,B认出了A,但A不能确定面前的人是否是B,这时B要向A证明自己是B:A给出一个随机值,并使用B的公钥对其加密,然后将加密后的数据交给B,B用自己的私钥解密并展示给A,如果与A给出的随机值相同,则证明对方是B。后面的方法属于零知识证明。

5、零知识证明的性质

  1. 完备性 completeness:如果证明方和验证方都是诚实的,并遵循证明过程的每一步,进行正确的计算,那么这个证明一定是成功的,验证方一定能够接受证明方。
  2. 合理性 soundness:没有人能够假冒证明方,使这个证明成功。
  3. 零知识性 zero-knowledge:证明过程执行完之后,验证方只获得了「证明方拥有这个知识」的信息,而没有获得关于这个知识本身的任何信息。

6、零知识证明及其相关的协议的优点

  1. 随着零知识证明的使用,安全性不会降级,因为该证明具有零知识性质。
  2. 高效性。该过程计算量小,双方交换的信息量少。
  3. 安全性依赖于未解决的数学难题,如离散对数、大整数因子分解、平方根等。
  4. 许多零知识证明相关的技术避免了直接使用有政府限制的加密算法,为相关产品的出口带去优势

继续阅读