零知识证明在区块链中找到了“新生命”

译文
区块链
零知识证明在计算机科学和密码学领域已经拥有数十年的应用历史,而如今它正在不断发展以支持区块链和Web3的去中心化身份验证。

​译者 | 李睿

审校 | 孙淑娟

零知识证明(ZKP)也称为ZKP协议,试图以最小的信息交换量在双方之间建立信任。在密码学中,它旨在限制身份验证活动期间的信息传输。ZKP的创始人明确研究了计算机证明中信息或知识的移动。ZKP是当时引入新的研究领域的一个重大进步。如今在Web3和区块链的背景下,将再次探讨ZKP的含义。

1.证明系统中的知识复杂度

ZKP的更准确名称可能是知识感知证明。提出这一观点的第一篇论文出现在20世纪80年代末发表的几篇变体论文中。该论文提到了与证明系统相关的知识复杂性,并提出了一个问题:当一方试图向另一方证明一个陈述时,必须传递的最低信息是什么?

要记住的概念是,人们正在尝试理解和控制信息流,同时支持有效的验证。 

2.ZKPvs.非对称加密

ZKP的想法来自上世纪70年代和上世纪80年代探索密码学新概念领域的时代。这与给人们带来非对称加密的环境相同。一些ZKP协议按照Diffie-Hellman密钥交换或RSA加密算法使用素因子分解作为单向(或陷阱门)函数。

对于非对称加密,主要目标是双方达成共享秘密。在ZKP中,其目标是在不透露无关信息的情况下提出索赔。在非对称加密中,双方共享一个秘密数字;在ZKP中,证明者在不泄露该数字的情况下证明他们实际上拥有一个秘密数字。

而ZKP在区块链中得到更多应用并不足为奇。

3.区块链和Web3中的ZKP

在不公开基础证明数据的情况下证明陈述或声明的能力具有令人兴奋的用途。一方面,很可能将ZKP与现有的身份验证应用程序结合使用。如果可以在不透露密码情况下证明拥有密码,那么就消除了所有的攻击向量。

不过,使用ZKP进行密码验证只是一个小步骤,它并没有真正改变人们如今熟悉的基本模型。要使这种身份验证机制起到作用,仍然需要将密码传输到与之交互的服务的中央服务器并存储在那里。更具革命性的方法需要考虑如果将ZKP集成到应用程序安全系统的设计中会发生什么。在这种情况下,开始看到现有身份验证的替代方案。如果政府部门和银行机构要承担签发加密密钥以验证重要声明的角色,用户可以使用ZKP协议来验证声明。

作为一个高级示例,如果政府部门将密钥作为护照的一部分,则ZKP可用于证明公民身份,而无需透露护照号码或公民姓名。通过采用哈希算法,公民可以使用ZKP来证明年龄等具体要求。

这种功能与Web3非常吻合,因为区块链用户已经持有加密密钥,并且知道如何使用它们。此外,ZKP可以允许在区块链去中心化身份的背景下进行身份和其他数据认证,无论是与现有的Web2应用程序在一起使用还是分开。让用户能够通过私钥显示其银行对账单或信用评分的零知识证据,这将在金融链上实现新的金融功能。

归根结底,ZKP力求最大程度地减少与当前身份验证模型相关的缺点:失去对用户数据的控制、用户数据暴露于黑客攻击以及用户数据的非自愿货币化。

4.ZKP的工作原理

在ZKP系统中,一方(证明者)向另一方(验证者)证明证明者拥有信息,在理想情况下除了这一事实之外不透露任何信息。有关ZKP的原始论文的作者使用了哈密顿图的示例,这是一种访问连通图中每个节点的图。

确定证明者拥有这样一个图的一种简单方法是传输图表本身。但这种方法可能泄漏大量信息,超出了证明者持有图表的事实。用ZKP创始人的话来说,它比单比特哈密顿量/非哈密顿数包含更多的信息。

可以想象这样一个场景,验证者改为重复查询图中特定线和点的信息,而证明者做出响应。如果证明者提供了足够多的有效响应,那么他们很可能确实持有哈密顿图。而图表本身永远不会被传输。

5.ZKP思想的实验

在公钥加密中,参与者传统上被称为Alice、Bob和Eve。在ZKP中,证明者称为Peggy,验证者称为Victor。 

假设Peggy有一个带有两个不同按钮的房间。她邀请Victor确认这两个按钮如何工作。证明她可以知道何时按下了一个按钮或另一个按钮。为了以“零知识”的方式证明这一说法,Peggy与Victor分别在不同的房间,而Peggy看不到Victor在做什么,但她可以分辨出何时按下了不同的按钮,并且可以将她看到的结果传达给Victor。也许Peggy可以看到根据按下的按钮发出不同颜色的灯光。图1显示了卡通形式的布局。 

图片

图1.Peggy的零知识房间和按钮

Victor第一次按下按钮时,Peggy提醒Victor有一个按钮被按下。此时,Victor可以假设Peggy猜对了,或者她真的能够看到其效果。任何一种可能性都同样正确。

为了增加对Peggy作弊的几率,两人可以进行多轮比赛。Victor可以每次按下相同的按钮或不同的按钮。如果她猜到了,Peggy的骗局很快就会被揭穿。每一轮正确猜测的概率都会变小。该过程可以重复多轮,以达到可接受的概率。

这个场景向Victor证明了Peggy知道什么时候按下按钮以及按下按钮的效果,——这就是Victor需要知道的全部内容。该实验没有揭示按钮的效果或Peggy监控它们的原理。它向Victor展示了按下这些按钮具有不同的效果,但他不需要知道这些效果是什么。

6.证明和概率

这里的关键是,Victor可以控制按下哪个按钮,但他不知道按下之后的效果。他依赖Peggy来完成反馈循环。与此同时,他保留了以很高的概率来判断Peggy是否能够看到按下哪个按钮的能力。这就是为什么说ZKP是概率证明而不是确定性证明的原因。

关于Peggy和Victor的实验场景,还有一点需要注意的是,这就是所谓的交互式证明。在这个模型中,验证者可以随意询问证明者。这与非交互式证明形成对比,在非交互式证明中,证明者自己进行验证,其过程并不在与验证者交互的情况下传输证明。任何一种风格都可以使用ZKP应用。

7.进一步使用ZKP

ZKP是一个不断扩展的领域,它为开发人员探索令人兴奋和不确定的领域创造了条件。最常见的通用协议是零知识简洁非交互式知识论证(zk-SNARK)。

以下是进一步研究ZKP的一些建议:

  • 有关ZKP在区块链中的实际应用,可以查看Mina项目。 
  • ZKP在以优化性能为核心的以太坊2级中也发挥着重要作用。对于空间中的特定项目,需要参考Polygon的Nightfall项目。 
  • 对于工作代码和库,可以参考Zilch项目。 
  • 有关主流公司如何在这一领域开展工作,可以参考Auth0与MATTR项目的合作。 

了解ZKP协议的一个很好的方法仍然是阅读原始ZKP白皮书。这可以使人们了解实际的精神,在设想如何将计算时间的因素引入证明系统,以限制攻击者在NP时间内欺骗证明的能力。一切都源于此,而实施代码和基础设施以实现这些想法的承诺就是现在所处的位置。

原文链接:https://www.infoworld.com/article/3668549/zero-knowledge-proof-finds-new-life-in-the-blockchain.html

责任编辑:武晓燕 来源: 51CTO技术栈
相关推荐

2019-06-24 16:30:33

区块链零知识证明比特币

2017-02-17 09:14:14

Hadoop

2021-04-09 06:25:41

区块链区块链技术

2021-08-09 08:40:33

零知识证明零信任网络安全

2019-12-04 18:30:44

区块链JavaJavaScript

2021-04-16 20:43:18

Go区块链编程

2020-02-10 11:32:11

区块链blockchain智能合约

2019-03-13 11:23:29

区块链区块链技术身份验证

2018-10-23 10:55:07

2018-04-11 08:00:47

AI运维生命力

2019-11-22 11:10:26

区块链技术

2021-02-02 10:40:10

区块链版权保护技术

2018-05-19 23:51:28

2018HTML5区块

2022-08-08 11:53:02

区块链CIO

2022-12-09 07:57:15

2019-09-29 19:12:13

区块链密码学技术零知识证明

2022-06-09 15:06:34

区块链零知识隐私

2020-12-23 10:49:30

区块链数字货币安全

2022-05-20 14:13:50

区块链金融工具

2022-03-14 13:55:34

区块链技术合法
点赞
收藏

51CTO技术栈公众号