评估以太坊隐私技术方案,零知识协议、安全多方计算、混合器谁更胜一筹?
前言:当我们谈到隐私时,并没有什么灵丹妙药能够解决所有的问题,而是需要针对特定的用例使用不同的方法和机制。本文旨在评估各类以太坊隐私技术方案的优缺点及适用场景。原文作者:Dean Pierce(ConsenSys Diligence)、Robert Drost (ConsenSys 研发部)以及Mason Nystrom (ConsenSys)
在一个联系越来越紧密的世界里,我们的信息被人复制、共享甚至被用于销售目的,而要维护我们想要的隐私水平,这可能会是一个挑战。
和大多数事物一样,隐私并非是二元对立关系的,而是介于完全公开及完全保密之间。所以在谈到隐私问题时,我们有三个问题需要进一步讨论。
- 消费者和企业想要的隐私是什么样的程度?
- 人们愿意为隐私付出代价吗?
- 在公共区块链上实现隐私交易的权衡是什么?
第一个问题:什么程度的隐私是有意义的?
隐私的一个例子是匿名,或者说是身份的私密化。在公链的背景下,匿名性是指当事方在不需要披露其自身或其他交易者身份相关信息的情况下交换某物(金钱、代币或数据)的能力。虽然这只是隐私的一个方面,但随着区块链的发展,它已经变得越来越重要。
像比特币和以太币之类的加密货币,因为相关交易地址及信息是公开的原因,再加上分析方法的不断发展,人们可将这些交易与链外身份关联到一起,这使得这些加密货币的使用者的身份变得越来越透明。
对于隐私权,企业和消费者有着截然不同的要求。企业通常以交易数据的形式要求隐私,例如产品名称、数量、价格、地址、个人可识别的财务信息等。
网络参与者通常是已知的,但可能需要保留身份或根据其角色提供给其他参与者。例如,货运代理可能不需要知道某个运输集装箱的内容,而只需要知道该集装箱已经到达。银行业法规还会限制谁可以访问交易数据。安永公司的 Nightfall协议 ,以及摩根大通(JP Morgan)为Quorum定制的 匿名Zether协议 ,是企业为以太坊开发隐私解决方案的主要例子。
相比企业(通常围绕隐私有很强的商业动机及监管),迄今为止,消费者对隐私的意识和关注程度则普遍较低。当然,消费者也希望保护自己的身份、信用卡信息或其他敏感数据,以防止欺诈或身份盗窃事件的发生。而有时,消费者就希望用到匿名交易,这就要求交易的发送者和接受者都具有隐私。然而,隐私在消费者的日常生活中并不是天然存在的,大多数人为了方便或免费访问而自愿牺牲他们的隐私(接受cookies、使用免费WiFi等)。
第二个问题:隐私有需求吗?
隐私通常发生在消息传递的环境中,以保护各方之间发送的内容,它还被用于通信通道和底层网络层这样更广泛的构造中。
但在加密货币背景下,隐私的需求似乎并没有人们想象的那么强烈。
具体来说,虽然Zcash已存在大约3年的时间,但只有大约 5%的ZEC 使用了SNARKs(其中大约有一半是使用的旧版SNARKs),另外大约有 95%的ZEC 存储在几乎没有隐私的透明地址中。 通过这种低采用情况,我们可以推断,也许大多数用户对隐私并没有付费需求 (成本相对较高)。
然而,最终区块链技术要成为主流仍然需要隐私。内置的隐私层(如SSL)使得互联网成为了一个值得信赖的商业媒介,这表明消费者和企业所希望的隐私,是被内置到系统和应用当中的。
第三个问题:隐私的权衡
第三个问题是更偏向技术的,其需要对以太坊平台上的隐私技术方案进行深入的检查,这还会涉及到各种机制的权衡。
其他隐私区块链给我们带来的启示(门罗币和Zcash)
在我们讨论以太坊的隐私话题之前,我们不妨先看一下隐私币领域里的两大主流参与者:门罗币和Zcash。门罗币在早期的竞争币时代是特别的,因为它的代码库并不是源自比特币代码库,而是基于一个完全不相关的加密货币项目Bytecoin(其使用的是CryptoNote协议的参考设计),而原CryptoNote协议设计是通过混合一笔交易的发送者(通过混合它们的签名以及很多其他诱饵签名来实现)来达到隐私目的。通过这一点,再结合隐形地址输出方案,这给门罗币带来了非常强大的隐私保证。这一“环签名”方案早被誉为是一种内置式混合器,但其并不成熟。2017年,随着RingCT技术方案的引入,环签名方案隐藏交易数据的能力大大提高,RingCT使用零知识范围证明来增加可进行批处理的签名种类。RingCT的引入还强制执行最小混和要求,以减少早期版本门罗币的可关联性攻击。而使用环签名方案的最大挑战之一是,其会占用大量磁盘空间,这使得门罗币区块链变得十分臃肿。此外,环签名方案并不适用于大型群体,其目前仅限于10-15人的群体。
而在2018年末,我们看到了门罗币网络引入了“ Bulletproof ”(防弹证明),这是一种令人兴奋的新零知识方案,其改善了环签名方案,减少了交易所需的大小,这种改进使得门罗币的隐私交易成本大大降低。
Zcash 是第一个使用 zkSNARKs 技术的加密货币,通过这种零知识证明方案,用户可发送仅对接收者可见的完全隐私的交易,而对于外部观察者而言,ZEC似乎被发送到了一个巨大的密码黑匣子中,当接收者想要将他们的币移回到一个非隐私地址(类似比特币标准地址)时,这些币似乎是凭空而来的,这使得发送者和接收者之间没有明显的联系。关于零知识证明的一个重要注意事项是,其需要更多的计算能力来运行,这使得交易变得更加昂贵。
对可互换性的威胁
以太坊网络提供了伪匿名性(即交易链接到由用户持有的私钥所对应的地址),其分布式以及透明性特性使得许多全新的技术能力成为可能。然而,类似于比特币,以太坊也会无意中暴露使用这些数字资产的用户的信息。
鉴于比特币和以太坊等区块链的公开特性,天真地使用它们的内置交易框架,就好比是一路撒下面包屑,这使得对手可轻易地跟踪你的交易路径。
通过地址生成获得的隐私
随着隐私技术的不断进步,我们可考虑很多更为复杂的威胁模型。2012年,BIP32(比特币改进提议)引入了 分层确定性密钥(HD Key) ,允许一个种子短语可生成一个不断产生新比特币地址的流。这允许用户每次接受交易时可生成新的地址,所有这些地址都可轻松地通过一个种子短语导出和导入新的钱包。而在以太坊中,也存在着相同的功能,尽管新生成的密钥不能与智能合约直接进行交互(直到它们得到了它们所需的gas成本(ETH资助)。这一点也很复杂,因为很多基于以太坊的系统将用户真实身份的许多方面与他们的地址联系起来,这种与以太坊地址链接的额外数量的元数据,可以使以太坊特别容易受到去匿名化攻击的影响。幸运的是,那些使以太坊暴露于这些威胁的智能合约,也可被尖端的新密码学系统所使用,从而实现安全和无缝的隐私交易。
ZK构造和可信设置
很多零知识证明构造会用到所谓的 “可信设置”(Trusted Setup) ,这意味着整个构造依赖于特殊随机数的生成,任何知道这些随机数的人都有能力窥视操作内部。为了减轻这些担忧,人们就设计了复杂的方法来生成这些随机参数,以确保构造能够被信任。这通常涉及到社区中的几个可信成员,每个成员都派生出他们自己的私有随机数据,并以一种方式将它们彼此结合(如果任何一方删除了他们的密钥数据,那么秘密值是安全的。因此,所以参与方都需要串通)。值得注意的是,门罗币所使用的“ Bulletproof”(防弹证明)是不需要可信设置的,而Zcash的zkSNARKs却是需要的,另外,STARKs也不需要可信设置,因为它们使用了哈希函数作为“设置”,而不是任何类型的特殊数字。
零知识Note(ZK-Note)
AZTEC 是以太坊隐私领域的早期推动者,其使用的是一个“零知识note”系统来追踪隐秘财务状况。这些 note在以太坊网络上是可见的(包括每个note的所有者),但是除了note的所有者之外,note上存储的金额数量对其他所有人而言都是隐藏的。当一个note 拥有者决定执行“ joinSplit ”操作时,零知识的魔力就来了,这意味着他们可记下他们控制的任意数量的note,并创建一组输出note,这些note可能属于也可能不属于其他人。与隐形地址技术相结合,这可使创建的每个新note都归一个完全干净的以太坊地址所有。在一个常见的用例中,一个“ZK-Asset”(零知识资产)合约可连接到任何ERC20兼容代币,允许用户存放代币以生成ZK-Note,并允许用户燃烧ZK-Note进行提币。此机制允许以太坊网络上的任何现有资产以保护隐私的方式进行交易。
AZTEC协议使用的证明要比ZK-Snarks更容易使用,但其仍需要一个可信设置。
AZTEC也正在接近其他新的需要可信设置的新生解决方案。 PLONK 是一种新的、高效的ZK-SNARK结构,所有程序都可重用这一设置。由于PLONK的gas需求量并不大,因此它对以太坊而言更有实用价值。对此,AZTEC协议首席执行官Tom Pocock认为,PLONK可用于编程复杂的逻辑语句,以保持完美的隐私。
ZK与安全多方计算(MPC)的结合使用
在ZKBoo以及最近的 Ligero 例子中,零知识证明系统就与安全多方计算(MPC)进行了结合使用。这要求证明者提交安全MPC协议的记录,然后让验证者随机评估其中一方的视图,将安全多方计算协议“编译”成ZK-PCP系统(最早使用概率证明的ZK系统之一)。更重要的是,使用MPC有可能创建隐私智能合约。与ZK-STARKs一样,基于MPC的证明具有:
- 透明性:随机数的生成是公开信息;
- 后量子安全性;
- 可扩展性:基于MPC的证明具有一个(准线性)证明时间及一个验证者时间,这可提高分期和批量计算的效率;
也就是说,基于MPC的技术在区块链领域还没有得到充分的开发,这些技术将比现有的ZK(零知识)技术普遍得多,特别是在各方需保护与实际计算本身有关的机密信息的情况下。例如,MPC技术对于尝试运行信用评分算法来评估客户信用度而言是有用的,无论是客户还是银行都不想放弃与其交易历史相关的机密信息,以及在ML信用评分模型中的权重。
硬件限制
当Zcash首次提出使用zk-SNARKs来发送交易的想法时,人们对使用隐形交易所需的计算力的数量存在严重担忧,在当时这需要数小时或更长的时间才能生成交易。从那时起,我们已走过了很长的一段路,而当前的实现能够在浏览器甚至在移动设备上,以秒为单位完成类似的任务。隐私混合器
最近一个备受关注的话题就是混合器,早在今年5月份时,Vitalik就发布了以太坊网络下一代 混合器设计的动机和粗略概要 的一篇文章。用户需要以太坊混合器来帮助他们实现钱包或个人的隐私交易,以太币的可追溯性意味着特定的交易可被跟踪并链接到其他钱包、账户等。而混合器则被用于交换以太币,以提高交易的隐私性。
从那时起,很多团队在进行相关的努力,以使混合器更适合于以太坊。下面是一个最新的图表,计算了相关混合交易的gas成本。
应用层中单独的混合器永远不会给用户提供绝对的隐私性,而只是提供了概率保证。然而,这或许足以满足大多数个人和企业的隐私需求。
谁为Gas买单?
然而,上述这些混合器方法中存在着一个致命的缺陷,那就是,最终需要有人支付gas才能确认输出。那这部分以太币是从哪里来呢?如果支付最终确认输出的以太币可追溯到某个用户,那么该用户就相当于失去了匿名保护,这就破坏了整个隐私目的。这就产生了一种隐私“鸡与蛋”的场景,其中接受匿名以太币的唯一方法是已拥有匿名以太币。在Vitalik的原混合器帖子中,他用一个简单的中继者注册合约解决了这一问题,其中承诺发布任意交易的中继运营者可注册一个HTTP端点,这样交易就可实现匿名发布。
最后,我们还需要考虑钱包和操作安全问题,这需要在保护用户安全的同时,又不会给用户带来太多麻烦的体验。所有这些混合器解决方案需要大量的参与者来合理地期望隐私,所以工具需要容易被容易使用,但这里的任何捷径都可导致一些严重侵犯隐私的行为。
这些技术,以及行业当中很多其它在发展的技术,都是以太坊网络的隐私问题越来越受到关注的标志,而这些技术进展可能很快会得到巨大的推动。虽然在公共区块链上实现隐私似乎有些自相矛盾,但零知识和其他隐私技术方案将使得各种新的、尖端的用例成为可能。
展望未来
本文并不是对以太坊所有隐私方案的完整概述,当我们谈到隐私时,并没有什么灵丹妙药能够解决所有的问题,而是需要针对特定的用例使用不同的方法和机制。
因此,我们将继续检查和评估以太坊的隐私解决方案,以帮助科普和推动这类技术的发展。这包括未来会提供的关于具体隐私解决方案的文章以及解释各种隐私技术的报告,另外还有对目前正在构建隐私解决方案的项目及公司的更深入的分析。
披露:Consensys仍然对隐私和可扩展性技术非常感兴趣,Consensys实验室已投资了Aztec协议、Ligero以及Starkware,并会继续寻找突破这一领域限制的项目。
感谢Min Teo、Joseph Chow、Zac Williamson、Amira Bouguera、Praneeth Srikanti以及Steve Marx提供的帮助。