区块链本身的一个关键优势就是透明性,然而在许多情况下,智能合约应用却出于各种商业或法律原因需要保障数据隐私,比如传入专有数据触发智能合约执行。现在,越来越多项目都采用零知识证明(ZKP)技术在公链上保护隐私。(注:零知识证明指一方向另一方发送加密证明,在不透露数据内容的情况下证明自己拥有某个数据)在区块链网络中,零知识证明只披露某条隐藏信息是有效且为证明者所拥有的。
本文将详细探讨零知识证明如何保障隐私,而隐私保护是零知识证明对用户的核心价值。另外文中还会列举零知识证明在区块链上的各种用例,以及如何利用 Chainlink 的 DECO 技术建立保护隐私的预言机网络,证明数据来自某一 web 服务器的同时保护数据隐私,并实现向后兼容。
零知识证明的运行机制
零知识证明最早由 MIT 的 Shafi Goldwasser 和 Silvio Micali 在 1985 年一篇名为《互动式证明系统的知识复杂性》的论文中提出。作者在论文中提到,证明者(prover)有可能在不透露具体数据的情况下让验证者(verifier)相信数据的真实性。零知识证明可以是交互式的,即证明者面对每个验证者都要证明一次数据的真实性;也可以是非交互式的,即证明者创建一份证明,任何使用这份证明的人都可以进行验证。零知识证明目前有多种实现方式,如 zk-SNARKS、zk-STARKS、PLONK 以及 Bulletproofs。每种方式在证明大小、证明者时间以及验证时间上都有自己的优缺点。
零知识证明有三个基本特征,即:
-
完整性:如果 statement 为 true,则诚实的验证者可以相信诚实的证明者确实拥有正确的信息。
-
可靠性:如果 statement 为 false,则任何不诚实的证明者都无法说服诚实的验证者相信他拥有正确的信息。
-
零知识性:如果 statement 为 true,则验证者除了从证明者那里得知 statement 为 true 以外,什么都不知道。
总而言之,要创建零知识证明,验证者需要让证明者执行一系列操作,而证明者只有在得知底层信息的情况下才能正确执行。如果证明者乱蒙一个结果,那么验证者极有可能在验证中发现并证明他的错误。
零知识证明概念演示,如何在不透露数据内容的情况下向对方证明拥有数据
如果要用一个概念直观地解释零知识证明如何证明用户拥有数据,可以想象一个山洞只有一个入口,洞里面有两条路(路径 A 和路径 B),这两条路由一扇门连接,要说出密码才能通过这扇门。Alice 希望向 Bob 证明她知道开门的密码,但不想将密码透露给 Bob。因此,Bob 需要站在山洞外,Alice 从其中一条路走进山洞,而 Bob 并不知道她选了哪条路。接着,Bob 指定 Alice 从其中一条路回到山洞入口(注:这是随机选择的)。如果 Alice 最初选择从路径 A 走到门口,但 Bob 让她从路径 B 回来,唯一的方法就是穿过那扇门,而穿过门必须知道密码。为了充分证明 Alice 真的知道门的密码,而不是运气好刚好选到了同一条路,这个过程可以反复重复好几次。
这一步操作完成后,Bob 就可以非常确信 Alice 知道门的密码,与此同时 Alice 也不用向 Bob 透露密码是什么。虽然以上只是零知识证明机制简单的概念演示,但真正的零知识证明运用的是密码学,在不透露数据的情况下证明数据的存在。在这个山洞的示例中有一个输入数据,一条路径和一个输出数据。在计算机中也存在类似的系统和电路,传入数据,数据通过某些电路门之后再输出。零知识证明利用了类似这种电路机制来创建证明。
想象有这么一种计算机电路,传入数据,并输出某一抛物线上的值。如果用户能够对抛物线上的某一点连续给出正确答案,那么就可以确信他知道这条抛物线函数是什么,因为每一轮成功猜出正确答案的概率会越来越低。你可以把电路理解成 Alice 在山洞里走的路径。如果她能够顺利通过电路,那么就说明她极有可能知道穿过电路的“密码”。在不透露任何具体信息的情况下证明自己拥有数据,将带来许多关键价值,特别是对区块链领域而言尤为如此。
零知识证明的价值
零知识证明的主要价值是可以在以太坊等透明的公链上利用隐私数据集。区块链本质上透明度非常高,任何在区块链网络中运行的节点都可以查看并下载所有储存在账本中的数据,而区块链结合了零知识证明技术,可以让用户和企业用隐私数据来执行智能合约,并且不透露具体的数据内容。
供应链公司、企业和银行等传统实体希望创建并执行智能合约,但又为了在竞争中保持优势需要保护商业机密,因此在区块链网络中保障数据隐私就显得至关重要。另外,这些实体通常受到法律监管约束,必须保护客户个人身份数据隐私,并要遵守欧盟通用数据保护条例和美国健康保险便携性和责任法案(HIPAA)等各项法律法规。
联盟链的出现可以有效保护机构交易数据隐私,但联盟链在网络规模上却逊色于公链,公链可以覆盖全世界各地的用户,并形成巨大的网络效应。而零知识证明可以使这些机构安全地与公链网络交互,并同时保护内部敏感数据隐私。因此,零知识证明成功为传统企业激活了一些列公链的应用场景,推动创新,并建立更高效的全球经济体系。
零知识证明应用
Zcash 等区块链已经开始采用零知识证明,用户可以创建隐私交易,隐藏交易金额以及发送者和接收者的地址。去中心化预言机网络可以将智能合约接入链下数据和计算资源,也可以应用零知识证明来证明某一链下数据,并同时在链上隐藏数据内容。
DECO 是目前 Chainlink 正在开发的基于零知识证明技术的预言机解决方案,也是 Chainlink 网络的安全链下计算套件中的一个隐私保护预言机协议。DECO 在 HTTPS/TLS 协议基础上进行了扩展(注:HTTPS/TLS 是互联网最常用的数据传输协议),保障数据从各个隐私和付费数据源传输过程中的隐私性和防篡改性。DECO 可以与现代 TLS 版本兼容,无需使用可信硬件,并且可向后兼容,服务器端无需修改。因此,使用 DECO 的 Chainlink 预言机节点可以证明数据来自可信服务器,并在链上隐藏数据内容。另外,由于维护了 TLS 托管链,因此还可以证明数据源。
DECO 等零知识证明方案可以实现一系列智能合约应用场景,其中包括低抵押贷款(undercollateralized loans)。在低抵押贷款中,贷款人既可以证明自己的信贷资质,又可以保护自己的隐私。具体而言,贷款人可以基于权威网站上的记录生成信贷资质,并隐藏姓名、地址或信用分数等敏感信息(注:只显示信用分数是否超过某一阈值)。
DECO 还可以用来创建去中心化身份认证(DID)协议,比如 CanDID 用户可以拥有并保管自己的身份认证信息,而不是让中心化的第三方托管这些信息。这些身份认证信息由名为“issuer”的机构签名,这些权威机构可以将用户与公民身份、职业和教育背景等身份信息挂钩。DECO 可以让现有 web 服务器成为 issuer,为账户提供秘钥共享管理功能,并基于社保卡号等确定性的独特身份认证实现隐私版的抗女巫攻击功能。
最后,DECO 等零知识证明方案不仅可以为用户带来价值,还能让传统机构和数据提供商将其专有的敏感数据变现,并充分保障数据隐私。最终只在链上公布零知识证明的证明结果,而数据内容不会直接公布在链上。这为数据提供商打开了新的市场。数据提供商可以变现数据并提高收入,并同时充分保障数据隐私。另外再加上 Chainlink Mixicles,不仅可以保护协议中输入的数据隐私,还可以保护协议中的条款隐私。
企业和机构可以有机结合区块链网络的透明性以及零知识证明的隐私性,在最大程度上实现价值,既保护内部数据隐私,又将数据用于智能合约应用中。