浅谈零知识证明
概述
零知识证明(zero knowledge),顾名思义其实就是在充分证明自己是某种权益的合法拥有者的同时,又不能把有关的信息泄露出去,即提供给外界的有用信息为"零"。
零知识起源
"零知识"的概念最早在20世纪80年代初,由麻省理工学院的研究人员Shafi Goldwasser, Silvio Micali和Charles Rackoff所提出,当时这些人正在研究与交互证明系统相关的问题,即一种理论系统,使得甲方(证明者)可以和乙方(验证者)交换信息,并借此说服乙方接受(通过验证)某个数学论述为真。
这个问题并不是单纯的理论思考,而是在真实,具体的应用中会面临到的问题。
我们举个例子,假设你想要使用密码登录网站,标准化的协议流程是这样的:客户端(你)输入密码并发送给服务器,服务器将你的密码进行哈希计算,然后对比存储在服务器端的密码哈希值,如果两者相同,你便能够登录系统。在上述过程中,服务器需要拥有你的密码明文,所以你的隐私能够被保障全看服务器端的脸色,如果服务器受到攻击,甚至被入侵,那么你的密码就会暴露给恶意攻击者,导致严重的后果。
Goldwasser,Micali和Rackoff等人提出的这种全新的方法,如果证明真的可行,那么它将允许我们在证明某些数学陈述为真的同时,保证不会有任何不相关的信息被泄露出去。
零知识证明的特性
零知识证明需要满足以下特性:
- 完整性(Completeness):如果论述(注: