密码学中,零知识证明(Zero Knowledge Proof,也称ZKP)或零知识协议是一种方法。该方法可令证明者在不透露信息本身或其他任何信息的情况下,让验证者相信或证明给验证者某个陈述或论断的真实性。
零知识证明最初是于由麻省理工教授Shafi Goldwasser、Silvio Micali以及密码学大师Charles Rockoff三位作者编撰的《The Knowledge Complexity of Interactive Proof Systems》论文中被提出的。该一算法概念为现代密码学奠定了一定基础。
零知识证明的三个满足条件:
-
完整性:如果陈述是真实的,则验证者可以相信证明者确实拥有正确的信息。
-
可靠性:如果陈述是错误的,则证明者没法采取任何方式来欺骗验证者。
-
零知识:如果陈述是真实的,验证者除了从证明者处得知陈述为真实,其他什么都不知道。
零知识证明的类型:
-
交互式证明:即证明者说服验证者,但需要对每个单独的验证者重复此过程。
-
非交互式证明:顾名思义,非交互式即不需要有验证者并与其沟通证明,而是证明者生成一个证明,所有人都可以使用相同的证明进行验证。
密逃示例说明
如果你认为上文的描述太抽象,我们在这里举个例子⬇️。
小零与小十正在玩密室逃脱,此时小零告诉小十他已经破解了某“宝箱”的密码。但是小零不愿意直接分享现成的“答案”,也不愿当着小十的面将宝箱打开。那么怎样证明给小十,他真的破解了迷题并且知道宝箱密码呢?
于是他让小十写了一串只有自己知道的字符串,同时附上了独一无二的签名,将纸张从宝箱的缝隙中塞了进去。
随后小零打开宝箱取出了小十放进去的纸张,并展示给了小十看,证明了他确实知道宝箱密码,而且这张纸确实是宝箱里拿出来的。
该解密过程既没有被小十知晓,同时小零又证明了他已破解了宝箱密码。
区块链中的零知识证明
区块链网络公开透明,也可以说是不具备隐私性,因为所有运行于区块链的节点均可查看并下载账本中存储的所有数据。
区块链则将零知识证明技术结合后通过这种方式来证明交易已被正确执行,且不会将例如地址、金额这样的交易秘密信息泄露。因此零知识证明可以在确保区块链内部发送、接受及其他交易信息都保持匿名性的前提下,保障交易的准确和有效。
兼顾性能和安全性是业内的长期痛点也是至关重要的一点,尤其是对区块链底层开发平台而言。零知识证明如果可以得到更多应用,区块链的大规模采用之日也许将不再遥远。
Zcash等区块链目前已开始采用零知识证明——用户可以创建隐私交易,隐藏交易金额以及发送者和接收者的地址。
其去中心化预言机网络可以将智能合约接入链下数据和计算资源,也可以应用零知识证明来证明某一链下数据,并同时在链上隐藏数据内容。
Chainlink正在开发的基于零知识证明技术的预言机解决方案DECO的零知识证明方案可以实现包括低抵押贷款和创建去中心化身份认证协议在内的一系列智能合约应用场景。
零知识证明的其他应用
保护隐私
不仅是区块链领域,在生活中,我们也会遇到这样的场景:买房前,是不是会被要求提供银行账单以及各项个人财务相关的隐私文件?在这种情况下,基于零知识证明的系统可以为用户提供证明他们有足够资金的可能性,而无需与房地产经纪人共享任何私人数据。
身份认证
在抵押贷款中,贷款人既可以证明自己的资质,又可以保护自己的隐私(隐藏姓名、地址或信用分数等敏感信息)。
倘若想要向社区证明项目的背景及团队背景可靠呢?团队成员总不可能把自己的ID贴到官网,或者分享自己的定位来力证自己的团队是安全的。
此时CertiK推出的KYC服务,即可让项目团队通过“零知识证明”来向社群证明自己的项目安全可靠。
尽管这样的尽职调查无法100%消除欺诈,但筛选出的低风险团队大大降低了投资者受骗的风险。
核心团队的可靠性是社区、投资者、平台和合作伙伴信任的基础。