什么是零知识证明(ZKP)?一文全面了解零知识证明

时间:2024-09-12  分类:电子


零知识证明技术让用户在保护自身隐私的前提下,更高效、更安全地完成验证。如果说比特币是区块链带给现实世界的第一大发明,提供价值存储的新方式,以太坊的智能合约是第二大里程碑事件,解锁创新的潜力,那么零知识证明的应用是区块链发展史上第三大第三大技术革新,带来隐私和可扩展。这既是Web3生态的重要一环,也是有潜力推动社会变革的重要基础技术。


这篇文章以非技术人员的角度,介绍零知识证明的应用场景、工作原理、发展现状和未来趋势,以期让无技术背景的读者了解零知识证明即将带来的重大变革。


一.什么是零知识证明(ZKP)?


零知识证明(ZKP)是在1985年由ShafiGoldwasser、SilvioMicali、ChalesRackoff合着的论文《Theknowledgecomplexityofinteractiveproofsystems》首次提出的数学协议,除了某一要证明的事实之外,不会透露任何其他信息。验证者无法获得生成证明的秘密信息。


举一个例子帮助大家理解:我要证明我知道某个人的电话号码,我只需要能够在众人面前拨通那人的电话就可以证明这一事实,不需要透露那人的真实号码。


零知识证明提供了一种有效的近乎无风险的数据分享方式。利用零知识证明,我们可以保留对数据的所有权,极大地提高隐私保护,有望使数据泄露事件成为过去式。


零知识证明具有三个特性:



零知识证明存在极小的概率产生合理性误差,即一个作弊的证明者可能使验证者相信一个错误的声明。零知识证明是概率性的证明,而不是确定性的证明,但我们可以通过一些技术将合理性误差降低到可以忽略不计。


二.零知识证明(ZKP)的应用


零知识证明最重要的两个应用场景是隐私和可拓展。


2.1隐私


零知识证明允许用户在没有透露个人详细信息的情况下,安全地分享必要的信息来获得商品和服务,免受黑客攻击和个人身份信息的泄露。随着数字和物理领域的逐渐融合,零知识证明的隐私保护功能对于Web3乃至Web3以外的信息安全变得至关重要。如果没有零知识证明,用户信息就会存在受信任的第三方数据库,有受到黑客攻击的潜在危险。零知识证明在区块链中的第一应用案例是隐私币Zcash,用来隐藏交易细节。


2.1.1身份信息保护和验证


在网上活动中,我们经常需要提供诸如姓名、出生日期、电子邮件、复杂的密码来证明我们是有合法使用权限的用户。因此也常在网上留下了不愿透露的敏感信息。如今接到直呼我们姓名的电话已经屡见不鲜,可见个人信息泄露的情况十分严重。


我们可以利用区块链技术,赋予每个人一个包含个人数据的特殊加密数字标识符。这个数字标识符可以构建去中心化身份,且不可能在其所有者不知情的情况下被伪造或改变。去中心化身份可以由用户来控制对个人身份的访问权限,在不透露护照细节的情况下证明公民身份,简化了认证过程,还减少了用户由于遗忘密码而失去访问权限的事件发生。零知识证明由能证明用户身份的公开数据和带有用户信息的隐私数据生成,可用于用户访问服务时的身份验证。这既减少了繁琐的验证流程,提升了用户体验,又避免用户信息的中心化存储。


此外,零知识证明还可以在构建私人信誉系统,允许服务机构在用户不暴露身份的情况下验证其是否符合某些信誉标准。用户可以从Facebook、Twitter和Github等平台在掩盖具体来源账号的前提下,匿名输出声誉。


2.1.2匿名支付


使用银行卡支付的交易细节通常对多方可见,包括支付提供商、银行等相关方,这在一定程度上暴露了普通公民的隐私,用户需要信任相关方不作恶。


加密货币可以使支付摆脱第三方,直接进行点对点交易。但目前主流公链上的交易公开可见,虽然用户地址匿名,依然存在通过链上的关联地址和链下如交易所KYC、Twitter信息等数据分析来找到现实世界身份。如果知道一个人的钱包地址,相当于可以随时查看个人的银行账户余额,甚至可能对用户身份、财产造成威胁。


而零知识证明可以从隐私币、隐私应用和隐私公链三个层次来提供匿名支付。隐私币Zcash,隐藏了包括发送方、接收方地址、资产类型、数量和时间等交易细节。TornadoCash是以太坊上的去中心化应用,使用零知识证明混淆交易细节来提供隐私转账(但也多被用于黑客洗钱)。Aleo是旨在从协议层面为应用程序提供隐私功能的L1区块链。


2.1.3诚实行为


零知识证明可以在保留隐私的前提下促进诚实行为。协议可以要求用户提交零知识证明来证明其诚实行为。由于零知识证明的合理性(错的对不了),用户必须根据协议要求做出诚实的行为才可以提交有效的证明。


MACI(MinimalAnti-CollusionInfrastructure,最小反串谋基础设施)就是一个促进诚实的应用场景,防止在链上投票或其他形式的决策过程中发生串谋。该系统利用密钥对和零知识证明技术来实现这一目标。在MACI中,用户将他们的公钥注册到一个智能合约中,并通过加密的消息将他们的投票发送到合约中。MACI的防串谋特性允许投票者改变他们的公钥,以防止其他人了解他们的投票选择。协调者在投票期结束时用零知识证明来证明他们已经正确处理了所有消息,且最终的投票结果是所有有效票数的总和。这保证了投票的完整性和公正性。


2.1.4个人信息核查


当我们想要获取贷款时,可以从公司拿一个数字收入证明来申请贷款。这个证明的合法性容易在密码学上得到检查。银行可以用零知识证明来验证我们的收入是否达到了规定的最低限度,但得不到敏感的具体信息。


2.1.5结合机器学习挖掘私有数据潜能


在训练机器学习模型时,通常需要大量的数据。通过使用零知识证明,数据拥有者可以证明他们的数据满足模型训练的要求,而无需实际公开这些数据。这有利于让私有数据发挥作用,并且实现货币化。


此外,零知识证明可以允许模型创建者证明他们的模型满足某些性能指标,但无需公开模型的细节,以防止他人复制或篡改他们的模型。


2.2可扩展


随着区块链用户的增多,区块链上需要进行大量的计算,造成了交易拥堵。有些区块链会走分片的扩展路线,但这需要对区块链的基础层进行大量的复杂的修改,可能会威胁到区块链的安全性。


另外一个较为可行的方案是走ZK-Rollup路线,利用可验证计算,将计算外包给另外一条链上的实体来执行,然后将零知识证明和可验证结果一起提交到主链上以供验证真实性。零知识证明保证交易的真实性,主链只需将结果更新到状态,不需要存储细节或重放计算,也不需要等待其他人来讨论交易的真实与否,极大地提高效率和扩展能力。开发者可借助零知识证明,设计可以运行在如手机这样的普通硬件上的轻节点dapps,更有利于Web3走向大众。


零知识证明的扩展既可运用在在一层网络上,如MinaProtocol,也可以运用二层网络ZK–rollups。


三.零知识证明(ZKP)如何工作


DmitryLaverenov(2019)把零知识证明结构分为交互式和非交互式。


3.1交互式零知识证明


交互式零知识证明的基本形式由三个步骤构成:证据、挑战者和回应



这个过程可以重复多次,直到证明者在不知道秘密信息却猜出正确答案的概率变得足够低。举一个简化的数学例子,如果证明者在不知道秘密信息却能猜出正确答案的概率为1/2,重复交互十次,证明者每次都命中的概率仅有万分之9.7,想让验证者错误地认可虚假证明的可能性极低。


3.2非交互式零知识证明


交互式零知识证明具有局限性,一方面是需要证明者和验证者同时存在并进行重复验证,另一方面是每计算一个新的证明都需要证明者和验证者传递一组信息,证明不可在独立的验证中重复使用。


为了解决交互式零知识证明的局限性,ManuelBlum,PaulFeldman,和SilvioMicali提出了非交互式零知识证明,由证明者和验证者共享密钥,且仅需进行一轮验证来使得零知识证明更加有效。证明者将秘密信息通过特殊算法来计算生成一个零知识证明,发送给验证者。验证者使用另外一种算法检查证明者是否知道秘密信息。该零知识证明一旦生成,任何有共享密钥和验证算法的人都可以进行验证。


非交互式零知识证明是零知识证明技术的一大突破,促进了今天使用零知识证明系统的发展。主要方法有ZK-SNARKS和ZK-STARKS。


四.零知识证明的主要技术路径


Alchemy(2022)将零知识证明的技术路径分为ZK-SNARKs、ZK-STARKs和递归ZK-SNARK。


4.1ZK-SNARKs


ZK-SNARKs是一个零知识的简洁的非交互式的证明。



-->> 1/3 文章未完,请继续阅读

以上就是什么是零知识证明(ZKP)?一文全面了解零知识证明的全部内容,望能这篇什么是零知识证明(ZKP)?一文全面了解零知识证明可以帮助您解决问题,能够解决大家的实际问题是非常好学习网一直努力的方向和目标。

ZK(Zero-Knowledge)验证者只能知道声明真实与否,不能获得任何多余的信息
S(Succinct)证明的尺寸很小,且可以被迅速验证
N(Non-Interactive)证明者和验证者之间只进行一次信息交换
AR(Argument)计算上合理的证明:对利用多项式时间的验证器而言,合理性成立