区块链百科 | 如何理解零知识证明?

能链科技 发布在 海盗号 54409

正是基于零知识证明,区块链实现了点对点的信任,而不再需要依靠第三方提供可信验证。

听上去是不是很玄幻,零知识证明的信任基础是什么?它如何「凭空产生了信任」?而我们怎么信任零知识证明?今天我们就来聊聊这个底层问题。

 

一、什么是零知识证明

 

上一篇我们在介绍默克尔树应用价值时,留的悬念之一便是零知识证明。

在此,我们仍以默克尔树结构为例,实现零知识证明即意味着,如何证明某个人拥有L1 - L4这些原始数据,但又不需将数据公之于众?第一步:证明者可通过创建如图所示的默克尔树结构,然后对外公布Hash0-1、Hash1以及Top Hash(在哈希算法篇时,我们曾介绍过仅哈希值无法推导出原始数据)。

第二步:通过数据L1经哈希算法生成Hash0-0,然后根据公布的Hash0-1生成Hash0 ,再根据公布的Hash1生成Top Hash。如果最后生成的Top Hash值与公布的Top Hash值一致,则可证明他是拥有L1 - L4数据,而不需要公布这一系列的原始数据。这也就实现了零知识证明。

由此可见,零知识证明所依托的是一系列数学与计算机基础理论,如果我们信任数学,信任逻辑,信任这些基础理论,那么我们就能理解零知识证明是一种实现了密码学理论的技术,并基于安全假设「模拟」出了⼀个虚拟的可信第三⽅。

实际上,零知识证明(Zero Knowledge Proof)的研究最早始于1985年,由MIT教授Shafi Goldwasser, Silvio Micali 和 密码学大师Charles在《The Knowledge Complexity of Interactive Proof-Systems》论文中提出。正是这篇文章提出了 零知识证明 这个伟大概念,并逐步成为了现代密码学理论的根基之一,而Shafi Goldwasser和Silvio Micali也于2012 年获得了有“计算机界诺贝尔奖”之称的图灵奖。

简单来说,零知识证明描述了这样一个过程:即证明者能够在不向验证者提供任何有用信息的前提下,使验证者相信某个论断(Statement)是正确的

理论听起来比较绕,但早在16世纪文艺复兴时期,两位意大利数学家为竞争一元三次方程求根公式发现者的桂冠时,就采用了零知识证明。

数学家塔尔塔里雅和菲奥都宣称自己掌握了这个求根公式,为了证明自己没有说谎,又不把公式的具体内容公布出来,他们摆开了擂台:双方各出30个一元三次方程给对方解,谁能全部解出,就说明谁掌握了这个公式。比赛结果显示,塔尔塔里雅解出了菲奥出的全部30个方程,而菲奥一个也解不出。于是人们相信塔尔塔里雅是一元三次方程求根公式的真正发现者,虽然当时除了塔尔塔里雅外,谁也不知道这个公式到底是什么。

 

二、 零知识证明的关键属性

 

从上述简要说明可以看出,任何零知识证明都必须满足的三个关键属性:

完整性(completeness):如果证明者是诚实的,那么他最终会说服验证者。

可靠性(Soundness):证明者只能说服验证者该陈述是否属实。

零知识性(Zero-knowledgeness):除了知道陈述是真实的,验证者无法( 或很难)获知除了所证明信息之外的任何信息。也因此,验证者不可能向第三方证实他拥有该秘密。

真正的挑战来自于第三点:零知识性

在此之前,这个领域的研究工作主要聚焦在加强证明系统的可靠性(Soundness)。也就是说原先大家都假设,会有恶意的证明者试图耍手段,误导验证者接受错误的论述。

但 Goldwasser等人却从另一个角度思考了这个问题:如果我们压根就不相信验证者,该怎么办?更具体的来说是关心信息泄露的问题:“在验证者的验证过程中,究竟会获取多少单纯验证论述真假无需知道的额外信息。”

因此,学者们提出了一个“模拟器”算法的存在。机械地来看,模拟器就像一个特殊的证明者。不过与真正的证明者不同,后者以一些能够证明陈述真实性的特定信息开始,模拟器则不会,它必须能够“欺骗”每一个验证者使他们相信该陈述是真实的,同时产生与真实证明者在统计意义学上相同(或者说无法区分)的输出结果副本。但由于模拟器没有“知识”能被提取,因此显然验证者在与之交互后无法获得任何有价值的信息

举例来说,就像证明人 Alice 向验证人 Bob 证明两个看起来一样的图片有差异,并且自己能识别这个差异。Bob 将两个图片在 Alice 无法看到的情况下更换或保持顺序, 再次让 Alice 识别是否顺序调整。如果 Alice 每次都能正确识别顺序是否变化, 则 Bob 会以较大概率认可 Alice 的证明。

此过程中, Bob 除了知道 Alice 确实能识别差异这个论断外, 自己无法获知或推理出任何额外信息( 包括该差异本身) 也无法用 Alice 的证明(例如证明过程的录像) 去向别人证明自己知道这个差异。

 

 三、零知识证明的应用

 

自零知识证明的概念被提出以来,人们不断将其理论进行完善和发展,并将其应用到各个领域,例如身份认证系统,存证系统、数据共享等,在隐私越来越受关注的今天,零知识证明在隐私数据保护的应用中大放异彩

隐私数据保护:在我们日常生活中,比如成绩单,只想向人证明成绩及格了,但是不想让别人知道我到底考了多少分;比如购买保险事,只想向保险公司证明没有心脏病,但不需要暴露病历的全部信息,不管是成绩单、病历、账本等等,都可以把其中任何部分扣掉,换成⼀个很像随机数的零知识证明,它能证明被扣掉的敏感数据仍然是可信的,真实的。

计算压缩与区块链扩容:在传统的区块链架构中,同样的计算被重复多次,比如签名的校验,交易合法性校验,智能合约的执行等等。因为有了计算的证明,同样一个计算就没必要重复多次了,这些计算过程都可以被零知识证明技术进行压缩。

身份认证:用户可以向网站证明,他拥有私钥,或者知道某个只要自己才知道的秘密答案。而网站并不需要知道这个密钥,但是可以通过零知识证明,确认用户的身份去中心化存储:服务器可以向用户证明他们的数据被妥善保存,并且不泄露数据的任何内容。

信用记录:信用记录是另一个可以充分发挥零知识证明优势的领域,用户可以有选择性的向另一方出示自己的信用记录,同时证明信用记录的真实性。

由此,零知识证明真正解决了「数据的信任」,实现了「隐私数据的保护」,也让区块链真正实现了「信任机器」这一构想。

本文链接:https://www.8btc.com/media/606111
转载请注明文章出处

评论
登录 账号发表你的看法,还没有账号?立即免费 注册