零知识证明零知识证明,简称ZKPs,我们都知道区块链本身的一个关键优势就是透明性,但在很多情况下,智能合约应用需要出于各种商业或法律原因保护数据隐私,比如导入真实有效的数据触发智能合约执行,这就涉及到信息泄露的风险。如何避免这种情况?零知识证明的出现很好地解决了这个问题。
零知识证明( Zero Knowledge Proof)的研究始于1985年,由麻省理工学院教授Shafi Goldwasser、Silvio Micali、密码学家查尔斯在“The Knowledge Complexity of Interactive Proof-Systems”中提出。正是这篇文章提出了零知识证明,这个伟大的概念逐渐成为现代密码学理论的基础之一。2012年,Shafi Goldwasser和Silvio Micali还获得了图灵奖,被称为“诺贝尔计算机科学奖”。零知识证明系统的任务是“在不揭示知识的情况下证明某一事实”。这个过程是零知识证明。
举个例子:
想必大家都听过阿里巴巴的故事。有一天,强盗抓住了阿里巴巴,为了进入山洞的咒语折磨他。但是,聪明的阿里巴巴知道,如果他把咒语告诉强盗,他就完全没有价值了,他肯定会杀了他。如果他不说,他也会杀了他。于是他想了一个好办法,既不会泄露咒语,又能让强盗相信他知道咒语。
阿里巴巴说:“你离我一箭之遥,那就用弓箭指着我。当你举起右手时,我会拼着打开石门。当你举起左手的时候,我会拼着去关上石门。如果我逃跑或者做不到,就证明我不知道咒语。你可以用箭射死我。”强盗们同意了这个提议。经过多次尝试,阿里巴巴按照指示成功打开或关闭了石门。然而,由于一定的距离,他们听不清楚咒语是什么。就这样,阿里巴巴在没有透露任何信息的情况下,向劫匪证明了自己的真实性。
这个例子非常简单,尽管它只是零知识证明机制的简单概念演示。real 零知识证明使用密码学来证明数据的存在,而不公开数据。综上所述,创建零知识证明,验证者(强盗)需要证明者(阿里巴巴)执行一系列操作,证明者只有知道底层信息才能正确执行。如果证明者得到一个随机的结果,验证者很有可能在验证中发现并证明自己的错误。
那么零知识证明应用在区块链有什么价值呢?
自这一概念提出以来,人们将其应用于身份认证系统、证书存储系统、数据共享、水印检测、密钥交换等各个领域。在私有数据越来越受到重视的今天,零知识证明在私有数据保护的应用上大放异彩:
保护隐私数据:比如在日常生活中,我只想证明候选人通过了,但不想透露自己考了多少分;买保险的时候只是想证明自己没有心脏病,但又不想暴露案件的全部信息。不管是什么样的信息,都可以用随机数零知识证明,替换不想暴露的部分,这样可以证明数据是真实的。
认证:用户在使用网站时,可以向网站证明自己有私钥或者知道一个只有自己知道的答案。网站不需要知道密钥,但可以通过零知识证明确认用户身份。通过分散存储,服务器可以向用户证明数据已被正确保存且未被泄露。
压缩和区块链扩展:在传统的分块架构中,同样的计算要重复多次,比如签名验证、交易合法性验证、智能合同执行等地方。因为有了计算证明,同样的计算不需要重复多次,计算过程可以通过零知识证明技术进行压缩。
因此,零知识证明真正解决了“数据信任”的问题,实现了“对私有数据的保护”,使区块链真正实现了“信任机器”的思想。