译者|李睿评论|建立信任。在密码学中,它旨在限制身份验证活动期间的信息传输。ZKP的创始人明确研究了计算机证明中信息或知识的移动。ZKP是一项重大进步,在当时引入了一个新的研究领域。现在在Web3和区块链的背景下,ZKP的意义将被重新探讨。1.证明系统中知识复杂性的ZKP更准确的名称可能是知识感知证明。最早提出这一点的论文出现在80年代后期发表的几篇变体论文中。该论文提到了与证明系统相关的智力复杂性,并提出了一个问题:当一方试图向另一方证明一个陈述时,必须传达的最少信息是什么?要记住的概念是人们试图在启用有效身份验证的同时理解和控制信息流。2.ZKPvs.非对称加密ZKP的思想来源于20世纪70年代和80年代探索密码学新概念领域的时代。这与为人们带来非对称加密的环境相同。一些ZKP协议使用质数分解作为Diffie-Hellman密钥交换或RSA加密算法之后的单向(或陷门)函数。对于非对称加密,主要目标是双方就共享秘密达成一致。在ZKP中,目标是在不泄露无关信息的情况下提出索赔。在非对称加密中,双方共享一个密码;在ZKP中,证明者证明他们实际上拥有一个秘密号码而不透露该号码。ZKP在区块链中得到越来越多的采用也就不足为奇了。3.ZKP在区块链和Web3中证明陈述或断言而不暴露底层证明数据的能力具有令人兴奋的用途。一方面,很有可能将ZKP与现有的身份验证应用程序结合使用。如果可以在不泄露密码的情况下证明拥有密码,那么所有攻击媒介都将被消除。尽管如此,使用ZKP进行密码验证只是一小步,并没有真正改变人们今天熟悉的基本模型。为了使这种身份验证机制起作用,密码仍然需要传输到与其交互的服务的中央服务器并存储在那里。一种更具革命性的方法需要考虑如果将ZKP集成到应用程序安全系统的设计中会发生什么。在这种情况下,开始寻找现有身份验证的替代方案。如果政府部门和银行机构要承担发行加密密钥的角色来验证重要的索赔,用户可以使用ZKP协议来验证索赔。作为一个高级示例,如果政府将密钥作为护照的一部分包含在内,则ZKP可用于证明公民身份而无需透露护照号码或公民姓名。通过采用哈希算法,公民可以使用ZKP来证明年龄等特定要求。此功能非常适合Web3,因为区块链用户已经持有加密密钥并知道如何使用它们。此外,无论是与现有Web2应用程序一起使用还是单独使用,ZKP都可以在区块链去中心化身份的上下文中允许身份和其他数据身份验证。让用户能够通过他们的私钥揭示他们的银行对账单或信用评分的零知识证据,将在金融链上实现新的金融能力。最终,ZKP寻求最小化与当前身份验证模型相关的缺点:失去对用户数据的控制、用户数据暴露于黑客攻击以及用户数据的非自愿货币化。4.ZKP的工作原理在ZKP系统中,一方(证明者)向另一方(验证者)证明证明者拥有该信息,理想情况下不泄露除此事实之外的任何信息。关于ZKP的原始论文的作者使用了哈密顿图的示例,该图访问连通图中的每个节点。确保证明者拥有此类图的一种简单方法是传输图本身。但是这种方法可能会泄露很多信息,而不仅仅是证明者持有图表这一事实。用ZKP创始人的话来说,它包含的信息比一个单位的哈密顿数/非哈密顿数还要多。可以想象这样一种场景,验证者改为反复查询图中特定线和点的信息,然后证明者做出响应。如果证明者提供了足够的有效响应,那么他们很可能确实持有哈密顿图。并且图表本身永远不会传输。5.ZKP思想的实验在公钥密码学中,参与者传统上被称为爱丽丝、鲍勃和夏娃。在ZKP中,证明者称为Peggy,验证者称为Victor。假设佩吉的房间有两个不同的按钮。她邀请Victor确认这两个按钮的工作原理。证明她可以分辨何时按下一个按钮或另一个按钮。为了以“零知识”的方式证明这个说法,Peggy和Victor在不同的房间,Peggy看不到Victor在做什么,但是她可以分辨出不同的按钮何时被按下,并且可以将她看到的结果发送给传达给维克多。也许Peggy可以看到根据按下哪个按钮发出不同颜色的灯。图1显示了卡通形式的布局。图1.Peggy的零知识房间和按钮Victor第一次按下按钮时,Peggy提醒Victor按下了按钮。此时,维克多可以假设佩吉猜对了,或者她真的可以看到效果。两种可能性都同样正确。为了增加佩吉出轨的几率,两人可以多玩几局。Victor可以每次按同一个按钮或不同的按钮。如果她猜对了,佩吉的骗局很快就会败露。每轮猜对的概率都会变小。这个过程可以重复多轮以获得可接受的概率。这一幕向维克多证明佩吉知道什么时候按下按钮以及它会做什么——而这正是维克多需要知道的。实验没有揭示按钮的效果或佩吉如何监控它们。它向Victor表明按下这些按钮会产生不同的效果,但他不需要知道这些效果是什么。6.证明与概率这里的关键是维克托可以控制按下哪个按钮,但是他不知道按下的效果。他依靠佩吉来完成反馈循环。同时,他保留了高概率判断佩吉是否能够看到按下了哪个按钮的能力。这就是为什么ZKP是概率证明而不是确定性证明。关于Peggy和Victor的实验场景需要注意的另一件事是,这称为交互式证明。在这个模型中,验证者可以随意询问证明者。这与非交互式证明形成对比,在非交互式证明中,证明者自己进行验证,并且该过程不会在不与验证者交互的情况下传输证明。可以使用ZKP应用任何一种样式。7.ZKP的进一步使用ZKP是一个不断扩展的领域,为开发者探索激动人心和不确定的领域创造了条件。最常见的通用协议是零知识简洁非交互式知识论证(zk-SNARK)。下面是对ZKP进一步研究的一些建议:关于ZKP在区块链中的实际应用,可以查看Mina项目。ZKP在以太坊Level2中也发挥着重要作用,它专注于优化性能。空间内的具体物品需要参考Polygon的Nightfall物品。对于工作代码和库,您可以参考Zilch项目。主流公司在这方面是如何做的,可以参考Auth0和MATTR项目的合作。了解ZKP协议的一个好方法仍然是阅读原始的ZKP白皮书。在设想如何将计算时间考虑到证明系统中以限制攻击者在NP时间内欺骗证明的能力时,这可以给人一种实践精神的感觉。一切都从这里开始,实现代码和基础设施以实现这些想法的承诺就是我们现在所处的位置。原文链接:https://www.infoworld.com/article/3668549/zero-knowledge-proof-finds-new-life-in-the-blockchain.html
