ConsenSys:以太坊上的隐私保护技术

作者: Dean Pierce (ConsenSys 尽调部)、Robert Drost (ConsenSys 研发部)、以及 Mason Nystrom (ConsenSys)

翻译&校对: 曾汨 & 阿剑

来源:以太坊爱好者

编者注:原标题为《科普 | 以太坊上的隐私保护技术》

在这个联系日益紧密的世界里,我们的信息被记录、复制、传播和出售的频次与日俱增,想要维持我们预期的隐私水平并非易事。

大多数事物都不是非黑即白的,隐私也不例外,它处在完全公开到完全隐私的范围之间。因此,当我们谈论隐私的时候,首先得搞清楚下面三个问题。

用户和企业想要保留哪些事项的隐私性?

人们是否愿意为隐私付出财力?

在公有链上达成隐私交易需要权衡什么?

本文旨在简单地研究公有链上实际的隐私需求,并在抽象层面上探讨实行隐私解决方案的权衡。

问题一:隐私的重要程度分几等?

 

匿名(或身份隐私)是隐私的一种体现。在公有链的语境中,匿名是指参与者可以在不泄露(与他们自己或历史交易相关的)身份信息的前提下进行交易(例如交易货币、代币或数据)。尽管这只是隐私的一个方面,但它也随着区块链的进化而变得越来越重要。越来越多的密码学货币(比如比特币和以太币)被追踪到与其交易相关的公开地址,并通过分析密码学货币与法币的转换而将该地址与链下交易者的真实身份关联起来。这会导致交易者的身份变得更加公开。更何况公链上所有的历史交易都是可查的,因此使用加密算法和协议来保护用户和企业的隐私已经变得越来越重要。企业和用户对于隐私有着截然不同的诉求。企业通常希望保护自己在交易数据方面的隐私,例如产品名称、数量、价格、地址、以及可识别的个人财务信息,等等。网络参与者的身份往往是公开的,但也会需要根据对方的身份来决定公开多少信息。举例来说,货运代理可能并不需要知道某个集装箱里装的是啥,而只需要知道它什么时候到就行了。银行制度也限制了交易数据的访问权限。对于想要在以太坊上开发隐私解决方案的企业而言,安永会计师事务所(Ernst and Young)在以太坊上使用 zk-snarks 技术实现隐私交易的 黄昏(Nightfall) 协议,以及摩根大通(JP Morgan)在 Quorum (译者注:Quorum 是一个基于以太坊构建的开源区块链平台)上开发的 匿名以太(Anonymous-Zether)都是很好的学习样本。

企业对隐私往往有较强烈的商业需要或合规需要,与之相比,用户则向来缺乏对隐私的关注及保护意识。尽管如此,用户依然希望保护自己的身份、信用卡信息及其它敏感数据,以防被窃取身份或遭到诈骗。有时候,用户希望可以匿名交易,这就要求交易双方都具备隐私保护。可惜的是,在我们的日常生活中,隐私并不是天然存在的,绝大多数人都愿意牺牲自己的隐私来换取便利或免费的权益(比如接受 cookies、使用免费 WiFi、追踪上网记录等等操作)。

问题二:隐私是伪需求么?

 

我们在通信语境下常说的隐私指的是保护参与者之间发送的内容。其实除此之外,隐私还被用于通信通道及基础网络层的更加广泛的构造中。从公钥密码学的演化到其他密钥交换机制中用于生成端到端的安全网络 / 传输层协议(IPSec v2、SSL)中,我们都能看见这种构造的身影。此外,这类构造的存在让我们可以安全地使用 DNS 查询以及基于 Tor 的中继器。已经有学术研究从通用标准领域着手,开展了相当多的工作,且其成果已被企业用于保持数据传输中的隐私性和机密性 —— 不过许多这类技术已经在零售用户技术栈中找到了自己的适用场景 —— 从而让终端用户受益。

让我们把眼光锁定在区块链领域 —— 尽管 Zcash 已经诞生将近3年了,但现存的 ZEC 中仍然只有 5% 是采用 SNARK 技术存储的(并且其中还有将近一半使用的是旧版的 SNARK 技术)。大约有 95% 的 ZEC 被存储在透明的地址中,毫无隐私可言。通过这一现象,我们可以推断也许大部分用户还没有意识到需要为隐私付出财力。

然而,要想推动区块链技术的大规模普及,隐私不可或缺。诸多致力于使互联网成为一个可信商业媒介的内建隐私层(如 SSL)的成功,表明用户和企业希望可以将隐私原生地内建于系统和应用之中。

问题三:隐私的权衡

 

问题三更具技术性,需要我们对如何在以太坊上保护隐私以及涉及到的各种机制的权衡进行更加深入的研究。正如区块链网络需要在可扩展性和去中心化之间做出权衡,隐私机制和技术本身也需要权衡。我们先来研究一下其它主打隐私的区块链已经实施的隐私方案,然后讨论一些以太坊上的隐私解决方案。

来自其它主打隐私型区块链(Monero 和 Zcash)的经验教训

在深入介绍以太坊之前,先来了解一下隐私币领域的两个重量级玩家—— Monero 和 Zcash。在早期的山寨币时代,Monero 显得有点独树一帜,这是因为它的代码库并非基于比特币,而是基于 Bytecoin(它是 CryptoNote 协议的参考设计)—— 一个与比特币完全无关的项目。最初的 CryptoNote 设计是将交易发送者的签名和其它引诱签名混在一起(mixins)。通过将这一技术与隐蔽地址输出相结合,可以提供极强的隐私保障。“环签名” 设计早期由于其独特的内置混合器而名声大噪,余音尚存。

2017 年,由于引进了 RingCT ,环签名隐藏交易数据的能力得以飞跃式地提升,RingCT 使用了零知识范围证明来丰富可以同时批处理的签名种类。与此同时,RingCT 的引进还强制执行了最低混合要求,从而减轻了困扰早期版本 Monero 的可链接性攻击(linkability attack)问题。然而,金无足赤,环签名也并非完美的解决方案,它的一个主要的问题是占用了大量的磁盘空间来存储 Monero 区块链。此外,环签名还无法扩展至大型群组,当前每个群组的参与者数量被限制为 10-15 个。

2018 年末,我们看到 Monero 区块链上引进了 “防弹证明(Bulletproofs)” —— 一种令人兴奋的新型零知识结构,它使得环中签名的数量可以成对数扩展,从而减少交易所需占用的存储。这项改进使得 Monero 得以追上其它区块链项目的步伐。

说起零知识证明,Zcash 算是第一个吃螃蟹的项目了,它率先采用了 zkSNARK 技术。使用该技术,用户可以发送仅限接收者可见的纯私密交易。对于一个外部的观察者而言,被发送到隐私地址的 ZEC 仿佛消失在一个巨大的密码学黑箱中,当接收者想要将他们的 ZEC 转移回一个非隐私地址(和标准的比特币地址几乎一模一样)时,原本消失的 ZEC 仿佛凭空出现,而观察者永远也看不到发送者和接收者之间的联系。但不得不提的一点是,零知识证明需要耗费更多的计算资源,而这反过来会使得交易的成本更加高昂。

对 “同质性”(Fungibility)的威胁

以太坊网络上的交易具有伪匿名性(即,进行交易的地址与用户所持有的私钥对应的公钥相关联,而不是 用户名/密码),与此同时,得益于它分布式和透明的特性,许多新技术得以大展身手。

然而,与比特币类似,当使用此类技术进行诸如转让同质性(Fungibility,亦称为 “可互换性”,像 ECR-20 代币和 ETH 都可算是同质性资产)数字资产的操作时,如果用户对其所共享的信息广度毫无所知,其身份可能在不知不觉之间就被以太坊暴露了。而与公私钥对应的真实身份被暴露会严重威胁到隐私安全。考虑到诸如比特币和以太坊等区块链的公开性,当你天真地使用它们原生的交易框架进行交易时,所有资产的转移痕迹如同面包屑一样很容易留下来而被追踪 —— 即便是同质性资产。

隐私保护之地址生成大法

随着隐私技术的不断进步,许多更加复杂的威胁模型被纳入到了考虑范围中来。在 2012 年,BIP32 引入了层级确定性密钥(Hierarchical Deterministic keys),通过该技术,我们可以使用一套助记词来生成无数个 “全新的” 比特币地址。这意味着用户可以在每次收款时生成一个新地址,而所有的这些地址都可以轻松地在钱包之间导入导出,你再也不用拿着小本本记录一堆随机生成的毫无规律的密钥了,听上去是不是贼方便?

以太坊中也有同样的功能,尽管新生成的地址要想和智能合约交互,需要保证地址里的以太币足够支付 Gas 费。然而,由于许多基于以太坊构建的系统将用户的现实世界身份在许多方面与他们的地址关联了起来,问题又变得复杂了。与以太坊地址关联的额外的大量元数据会使得以太坊特别容易遭受去匿名化攻击。幸运的是,虽然某些智能合约功能会将以太坊暴露于这类威胁之下,但智能合约同样可以为前沿的密码学系统所用,可以带给用户安全无缝的隐私交易。

零知识方案及受信任初始设置(Trusted Setup)

许多零知识方案都要求有 “受信任初始设置”。这意味着整个方案依赖于特殊随机数的生成,而任何知道这些随机数的人都可以洞悉内部的操作,听上去好像很不靠谱的样纸……为了部分缓解这方面的担忧,一套复杂的随机数生成流程应运而生,以此确保结构的可信度。这套流程通常需要几个诚实的社区成员独立生成各自私有的随机数据,然后将这些数据以某种方式组合起来,只要其中任何一个成员删除了 TA 的随机数据,那么最终计算出来的数据就是安全的。因此,除非所有参与者共谋,否则相关的方案不会面临风险。

需要指出的是,Monero 使用的子弹证明并不需要可信设置,但是 Zcash 中所应用的 zkSNARK 则需要。你可以在目前著名的 RadioLab 的文章中查看 Zcash 的可信设置流程文档。相反,STARK 并不需要任何可信设置,它们使用哈希函数的选择作为它们的 “设置”,而不是任何特殊数字。已经有多种形式的可信设置流程被提出来了,比如永续 Powers of Tau 多方计算流程。

零知识票据(ZK-Notes)

作为以太坊隐私领域的先行者,AZTEC 协议使用了一个 “零知识票据” 系统来追踪隐匿的资产。这些票据(包括票据的所有者)公开在以太坊网络上,但除非你是该票据的主人,否则无从知晓每条票据中的金额。

当票据的所有者决定执行 “joinSplit” 操作时,零知识就开始施展它的魔力了 —— 票据的所有者可以选取其所控制的任意数量的票据,并创建一组不一定属于其他人的输出票据。这与上文提到的隐蔽地址技术相结合,可以使得创建的每一个新票据都归属于一个完全崭新的以太坊地址(从未在以太坊网络上使用过的地址)。

来看一个常见的使用场景吧,一个 “零知识资产” 合约可以与任意兼容 ERC20 格式的代币相连接,用户可以将代币存入这个合约,获得一个零知识票据作为存款证明,当用户想要取回存款时,只需 “烧掉” 零知识票据即可。有了这一机制,我们可以通过隐蔽地交易以太坊网络上现存的任何资产。AZTEC 协议采用的证明比 ZK-Snark 更加容易使用,但受信任启动设施依然是其绕不过去的一道坎。

Aztec 也在使用其它新奇的方案来实现受信任初始设置。PLONK 就是一种新型的高效 ZK-SNARK 结构,它只需要进行一次可信设置,然后所有的程序就都可以复用该设置啦。并且,由于 PLONK 对 gas 的需求量不高,因此对于以太坊上的实际使用而言,它已经足够有效了。基于这样的交易能力,AZTEC 的 CEO Tom Pocock 相信 PLONK 可以以一种完美保护隐私的方式编写逻辑复杂的程序。

将安全多方计算引入零知识

此方案之前在 ZKBoo 中使用过,最近也被应用于 Ligero,它将安全多方计算协议 “编译” 进了 ZK-PCP 系统(最早使用概率证明的 ZK 系统)中,其实现方式为要求证明者(“在头脑中”)提交一份安全多方计算协议的副本,然后验证者可以随机评估任一参与者的视图(view)。说白了就是指拥有相关数据信息的实体可以模拟多方之间的分布式计算,然后在评估的随机点显示该计算的副本。更重要的是, MPC 的使用为创建隐私型智能合约带来了希望。

类似 ZK-STARK ,基于 MPC 的证明有如下优点:

透明 —— 随机数的生成是公开信息

后量子安全 —— 依赖于公开的随机性以及哈希函数的可用性使得量子系统无法发动大规模攻击

可扩展 —— 基于 MPC 的证明具有(拟线性的)证明时间和验证时间,从而实现分批运算的高效率

在使用这类技术时,还需要考虑如何对其权衡才能使中小型 “电路”/问题 达成最优 —— 因为这可能会给验证者带来潜在的可扩展性问题。

话虽如此,基于 MPC 的技术在区块链领域还没有发挥出它的全部潜力,它们可能会比现存的零知识技术更具通用性,尤其是在需要参与者保留与实际计算相关的机密信息的情况下。例如,当尝试运行一个信用评分算法来评估用户信用度的时候,MPC 技术可能很有用,因为无论用户还是银行都不愿意泄露各自的机密信息 —— 用户不愿意泄露他们的交易历史,银行同样不想交出它们的 ML 信用评分模型中的权重信息。

硬件局限

当 Zcash 首次提出采用 zk-SNARK 来发送交易时,人们还很担心生成隐匿交易所需的计算资源够不够,因为可能需要花费数小时才能生成一笔交易。不过自那以后,我们已经取得了长足的进步,如今我们已经可以在浏览器甚至移动设备上花费仅仅几秒钟就完成类似的任务了。

隐私混币器

混币器最近备受瞩目。时间退回到五月份,Vitalik 发表了一篇文章,阐述了以太坊网络上的下一混币器设计的动机及大致轮廓。

当钱包或个人想要进行原生的隐私交易时,以太坊混币器就可以派上用场啦。以太币的可追踪性给了坏蛋可乘之机,他们可以通过对特定交易的跟踪而获得其背后的钱包、账户等信息。而混币器可以通过对以太币进行互换而实现匿名交易。

从那时起,许多团队都在夜以继日地开发更具实用价值的以太坊混币器。下面这张表中列出了截至目前为止各不同混币方案在存取过程中的计算及 gas 成本。

ConsenSys:以太坊上的隐私保护技术

-通过混币器的 GitHub 状态查看以太坊混币器的种类和它们各自的计算及 gas 成本-

处于应用层的独立混币器永远无法百分之百地保证用户的隐私,只能提供概率保证。然而,对于满足绝大多数个人和企业的需求而言,这已经绰绰有余了。

谁来为 Gas 买单?中继的风险

上面提到的种种方案存在一个致命的缺陷,那就是到最后一定要有人来为获得输出支付 gas 费。可用于支付 gas 的这些以太币从何而来呢?如果坏蛋可以通过这部分以太币而追踪到某些用户头上,那这些用户还怎么匿名?这岂不是前功尽弃!

于是,一场熟悉的 “先有鸡还是先有蛋” 的剧本在隐私保护的舞台上上演了,想要接收匿名的以太币?你的钱包里必须先有匿名的以太币!是不是很滑稽?Vitalik 在最初关于混币器的文章中提出使用一个简单的中继注册合约来搞定这个问题 —— 中继运营者可以注册一个 HTTP 端点,用于匿名发布任意交易。

最后,别忘了考虑钱包的交互及操作的安全性。钱包的默认设置需要安全到能保护用户隐私,但又不能让用户上手起来感觉太麻烦,至于如何实现这一点,大家还在努力当中。为使获得的隐私保护符合预期,所有的这些混币器方案都需要大量的参与者,因此该工具必须易于大众上手,但是任何快捷方式都可能会带来严重的隐私侵犯。举个很简单的例子吧,某用户使用混币器混合了一些以太币,然后出于保护隐私的目的用了其中一些,过了一段时间之后,他忘记哪个钱包曾经发送过隐私交易了,然后把曾经发送过隐私交易的钱包中剩余的以太币转回了一个和其身份直接相关的公开地址……简直是功亏一篑 🙁

从上面提到的这些技术以及许多其它正在这个领域发力的技术中,很容易发现以太坊上的隐私技术正在斩获越来越多的关注,并且这些进展也许很快就能得到大规模的推动。虽然在一个公有链上实现隐私看上去有些自相矛盾,但零知识以及其它隐私技术将使各种前沿的新玩法成为可能。与此同时,有了这些解决方案,用户也不用再为财务隐私提心吊胆。

展望未来

 

尽管本文并没有完整概述以太坊上所有的隐私方案,但也研究了各种实现企业和用户隐私的方式。带来自由的抗审查技术启发了许许多多密码学货币生态中的项目。为了创造一个原生的加密世界,匿名交易或保护个人信息的能力至关重要。想要保护隐私,我们没有什么灵丹妙药,但有许多为特定用例提供隐私的方法和机制。

因此,我们会持续研究和评估以太坊上的隐私解决方案,以帮助教育和推动这类技术的发展。未来,你还将看到我们发表的一系列内容,包括关于特定隐私解决方案的文章、解释各类隐私技术的报告、以及对目前正在构建隐私解决方案的项目和公司的更加深入的分析。披露ConsenSys 依然对隐私和可扩展性技术充满兴趣,ConsenSys Labs 已经投资了 Aztec Protocol、Ligero、和 Starkware,并会持续关注为该领域带来突破性进展的伟大项目。感谢 Min Teo、Joseph Chow、以及 Zac Williamson 和我一起商榷本文的初始大纲,同时感谢 Amira Bouguera、Praneeth Srikanti、以及 Steve Marx 提供的反馈。

(完)

(文内提供了许多超链接,请点击阅读原文到 EthFans 网站上获取)