【大文观链】区块链隐私保护破题者:零知识证明
摘要: 零知识证明的本质是对链上的数据进行隐私保护,而区块链中的隐私保护问题已经成为了制约公有链发展的一个重要因素。
链得得注:大文观链,是链得得APP新推出的区块链技术分析系列栏目。由链得得APP作者马文佩伴随诸位用户,对区块链、数字货币市场中前端技术方案进行应用层讲解与热点事件的技术层分析。每个工作日与大家一同分享“链圈技术宅”的那些头脑日常。
今年1月,加密货币Zcash举行了一个看起来相当惊人的仪式:他们在美国伊利诺伊州和威斯康星州上空的一架小型私人飞机上举行了一个“可信的设置仪式(trusted setup ceremony)”。这个仪式通过在乌克兰切尔诺贝利核设施中心获得的核废料产生辐射,并利用盖革计数器将放射性脉冲转换成了一个“完全随机”的数字,并将其放在了Zcash的代码里。在仪式上,开发人员通过驾驶飞机,确保了恶意参与者不可能在其过程中破坏代码。
这个充满了噱头味道的仪式到底是用来干什么的?为什么要大张旗鼓的利用一个极其复杂的过程获得随机数?这就和 “零知识证明”有关了。
所谓“零知识证明”zero-knowledge proofs,简写为ZKPs,指的是证明者能够在不向验证者提供任何有用信息的情况下,使验证者相信某个论断是正确的协议。看上去非常复杂,但实现的方式很简单:A要向B证明他知道特定数独的答案,但又不能告诉B这个数独的解。B可以随机指定某一行、列或九宫格,A将这一行、列、九宫格里所有的数字按照从小到大的顺序写下来,其中包含了1-9的所有数字,就可以证明A的确知道这个数独题目的答案。
在这个过程当中,一旦A提前知道了B指定的行、列或九宫格,就可以在验证过程中作弊,所以B需要一个真正的随机数来确保这个验证方式是安全的。
在区块链中,节点之间利用零知识证明的方式就可以在不向验证者提供任何有用信息的情况下,使验证者相信这个区块是合法的。Zcash在其公有链中就应用了零知识证明的方式来保证区块内的信息虽然储存在每个节点上,但又不会泄露区块内的信息。而所谓“可信的设置仪式”就是利用一种噱头满满的方式产生随机数,并利用随机数来生成一个随机的测试序列,以防止链上的任何一方作假。
零知识证明的本质是对链上的数据进行隐私保护,而区块链中的隐私保护问题已经成为了制约公有链发展的一个重要因素。虽然比特币无需将真实世界的身份信息关联到钱包地址上,交易的发起者似乎是不可能被追踪的,比特币也因此被广泛应用于洗钱、非法交易、匿名交易等不太见得光的领域中,但实际上,比特币并不是那么“安全”。卡塔尔计算研究所于1月发布了一份报告,展示了如何利用比特币交易分析来对用户进行反匿名化。在超过100个案例中,他们能够将某人的可疑的区块链交易链接到这些人的公开账户上。此外,分析人士还设法将20多个公共账户与Tor隐藏服务的支付联系起来,包括丝绸之路和海盗湾。
另一方面,基于区块链本身的特性,在进行商业应用时,大部分公司会考虑到隐私问题而不会把重要的商业数据上传到区块链中,因为任何人(包括黑客、竞争者等等)都可以轻易看到这些信息。在区块链应用呼声很高的金融、医疗、管理等领域中,隐私保护的问题则尤为明显。隐私问题得不到解决,区块链技术就只能应用在透明度较高的行业当中,比如慈善、政务信息公开等领域。
在目前的主流公链中,零知识证明的应用相当广泛,但也有人尝试利用ECDHM 地址、环签名(Ring Signature)、混合器(Mixer)、代码混淆(Code Obfuscation)等方案解决隐私问题,这些方案将来会为大家进行介绍。
大文加油!