如何在以太坊上实现隐私交易?
本文为ConsenSys出品,作者为:Dean Pierce(ConsenSys Diligence)、Robert Drost (ConsenSys 研发部)、Mason Nystrom (ConsenSys),由加密谷独家编译。
在这个联系日益紧密的世界中,我们的信息被越来越多地分类、复制、共享和出售,维护一定程度的隐私成为重要挑战。
隐私并非二元结构,而是从完全公开到完全私有之间波动的一个范畴。因此,在谈到隐私时,首先有三个问题需要讨论:
- 消费者和企业希望保护哪些隐私?
- 人们愿意为隐私付出代价吗?
- 在公共区块链上实现私有交易的权衡是什么?
隐私的一个方面是匿名,或保持身份的私有权。放在公链背景下,匿名指的是各方交换某物(金钱、代币或数据)而不需要透露其身份或他们进行其他交易相关信息的能力。虽然这只是隐私的一个方面,但随着区块链的发展,其重要性日益突出。
像 BTC 和 ETH 这样的加密资产越来越多地被追踪,通过关联交易中的公共地址,可以在加密资产和法定货币转换时分析和链接到该地址真实的身份。这样做的最终结果是:交易双方的身份变得公开化。 由于公共区块链必须从根本上提供所有交易的日志,因此使用加密算法和协议保护用户及企业的隐私变得越来越重要。
在隐私问题上,企业和消费者有着截然不同的需求。企业通常需要保持交易数据的隐私,如产品名称、数量、价格、地址、个人可识别的财务信息等。
网络参与者身份通常是已知的,但根据角色身份的不同,可能需要选择保留或提供给其他参与者。
例如,货运代理可能不需要知道某个海运集装箱的内容,只需要知道集装箱已经到达。银行规定还限制了谁可以访问交易数据。安永使用 zk-snarks 以便在以太坊上进行私人交易的 Nightfall protocol ,以及摩根大通为 Quorum 开发的 anonymousi - zether 等,都是企业为以太坊开发的隐私解决方案的典型例子。
企业往往有很强的商业动机或隐私方面的规定,相比之下,消费者的隐私意识往往不强,关注也普遍较少 。消费者可能仅仅希望保护他们的身份、信用卡信息或其他敏感数据,以防止欺诈或身份盗窃。有时,消费者希望匿名交易,这就要求交易的发送方和接收方都能保持隐匿状态。然而,在日常生活中,隐私又常常被用户所忽视,大多数人为了方便或免费访问(接受 cookie、使用免费 wifi等)而愿意牺牲自己的隐私权益。
在消息传递的过程中,隐私机制通常被用于保护各方之间发送的内容。此外,它还被用于更广泛的通信通道和底层网络层的构造中。从公钥密码术的演变及其采用,再到其他密钥交换机制,我们已经看到了多种旨在实现端到端安全的互联网协议套件(IPSec v2、SSL)。这也确保了安全的 DNS 查询以及采用基于 Tor 的中继器的安全性。
通过学术研究和企业采用,许多成果从开放标准中衍生出来,其中许多技术已在个人用户技术堆栈中找到了自己的应用方式,最终使得终端用户受益。
就区块链而言,尽管 Zcash 已经有将近 3 年的历史, 但是在现有的 ZEC 中,只有大约 5% 是使用 SNARKs 存储的 。大约 95% 的 ZEC 存储在几乎没有隐私的透明地址中。根据这种低采用率,我们可以推断,也许大多数用户还没有为隐私付出成本和努力的需求。
回顾过往,内置的隐私层(如SSL)的成功使互联网成为可信的商业媒介,区块链技术最终被主流采用也仍然绕不开隐私这个重要议题。
隐私的权衡
这个问题更具技术性。我们需要更深入地研究如何在以太坊上实现隐私。区块链网络以可扩展性为代价换取了去中心化,而隐私机制和技术之间也需要权衡。我们将从研究其他关注隐私的区块链已经达到了何种目标入手,然后讨论以太坊网络隐私解决方案。
其他专注于隐私的典型区块链项目(Monero 和 Zcash)
在详细介绍以太坊之前,先介绍隐私币领域的两个主要参与者 Monero 和 Zcash。
在早期的竞争币时代,Monero 很特别,因为它的代码完全不基于 BTC,而是一个完全无关的名为 Bytecoin 的加密资产项目(Bytecoin 是首个使用 CryptoNote 协议的加密资产)。
原始的CryptoNote 设计将交易发送方的签名与许多其他诱饵签名混合(mixins),从而混淆了交易的发送方。这与隐身地址(stealth address)输出相结合,提供了非常强的隐私保证。“环签名”(ring signature)方案很早就被认为是一种高级的内置混合器,这已经不是什么新鲜事了。
在 2017 年,随着 RingCT 的引入,环签名隐藏交易数据的能力得到了极大的提高。RingCT 使用零知识范围证明(Zero-Knowledge Range Proof, ZKRP),增加了可以批量处理的签名种类。
RingCT 的引入还强制了最低的 mixin 要求,以减轻困扰 Monero 早期版本的连接性攻击。目前,使用环签名的主要挑战之一是其占用了大量磁盘空间来存储 Monero 区块链。此外,环签名不能扩展到大群体,目前仅限于 10-15 个参与者。
在 2018 年底,我们在 Monero 网络上看到了“Bulletproofs”(防弹证明)的引入,这是一种激动人心的全新零知识结构,它与环中签名的数量成对数扩展,从而减少了所需的交易规模。这项改进使 Monero 功能与其他区块链项目保持一致。
Zcash 是第一个使用 zksnark 的加密资产。使用这种技术,用户可以发送只对接收者可见的完全私有的交易。对于外部观察者来说,被发送到私人地址的 ZEC 似乎消失在一个大型的加密黑匣子中,当接收者想要将其代币移回非私人地址(与标准 BTC 地址类似)时,这些代币似乎是凭空冒出来的,发件人和收件人之间没有可观察到的联系。
关于零知识证明的一个重要注意事项是,它需要更多的计算能力来运行,这反过来又使交易更昂贵。
可替代性的威胁
以太坊网络提供了伪匿名性(即:交易链接到由用户持有私钥签名的公钥地址,而不是由用户名/密码签名),其分布式特性和透明性使许多全新的技术功能成为可能。
然而,与 BTC 类似,以太坊也会在不知情的情况下暴露部分用户,这些用户在使用可替代数字资产转移时,可能没有意识到他们共享信息的传播广度。
一种对隐私的威胁在于用户知道与公钥和私钥相关联的身份。考虑到 BTC 和以太坊等区块链的公共性,天真地使用它们的内置交易框架就像留下了面包屑,给别人追踪资产(甚至是可替代资产)转移痕迹提供了便利。
通过生成地址保证隐私
随着隐私技术的不断发展,可以考虑许多更复杂的威胁模型。2012 年,BIP32 引入了分层确定性密钥(Hierarchical Deterministic keys),它允许单个种子短语生成永不停止的“新”BTC 地址流。这使得用户每次接受交易时都可以生成新的地址,而且所有这些地址都可以轻松导出并导入到新的钱包中,而不必分别导入多个随机生成的密钥。
以太坊也有相同的功能,但新生成的密钥在获得所需的 ETH 资金之前不能与智能合约进行交互。 许多建立在以太坊上的系统将用户的现实身份与地址进行关联,这也使问题变得复杂化 。链接到以太坊地址的这种额外的元数据会使以太坊特别容易受到去匿名化攻击。幸运的是,将以太坊暴露给这些威胁的智能合约功能也可以使用前沿的密码系统,从而支持安全、无缝的私密交易。
ZK 结构和可信任初始设置
许多零知识结构需要所谓的“可信任初始设置”(Trusted Setups)。这意味着整个构造依赖于特殊随机数的生成,任何知道这些随机数的人都能够窥视操作的内部。
为了降低这种顾虑,开发者设计了复杂的模式来生成随机参数,以确保构造可被信任。这通常涉及到社区中几个受信任的成员,每个成员都获得自己的私有随机数据,并以某种方式将它们彼此组合,如果“任何”参与方删除了它们的关键数据,secret 值就是安全的。因此,只有所有参与方都串通起来才能使结构面临风险。
值得注意的是, Monero 使用的 Bulletproofs 不需要可信任初始设置,但是 Zcash 中的 zksnark 需要 。Zcash 的可信任初始设置记录在 RadioLab 中。相反,STARKs 不需要可信任初始设置,因为他们选择使用哈希函数作为“设置”,而不是任何类型的特殊数字。
Zero-Knowledge Notes (ZK-Notes)
作为以太坊隐私领域的先行者,AZTEC Protocol使用“zero-knowledge notes”系统来追踪隐藏的财务信息。这些 note 在以太坊网络上是可见的,包括每个 note 的所有者,但是每个 note 上存储的金额对每个人都是隐藏的,除了 note 的所有者。
当一个 note 所有者决定执行一个“joinSplit”操作时,零知识的魔力就出现了,这意味着他们可以获取他们控制的任意数量的 note,并创建一组输出note,这些 note 可能属于也可能不属于其他人。这一点与隐形地址技术相结合,可以使每一个新创建的 note 都属于一个从未在网络上使用过的以太坊地址。
在常见的用例中,一个“ZK-Asset”合约可以连接到任何 ERC-20 兼容的代币,并允许用户存储代币以生成 ZK-Notes,或者,燃烧 ZK-Notes 以提取。这种机制使得以太坊网络上的任何现有资产能以保护隐私的方式进行交易。AZTEC Protocol 使用的证明比 zk - snark 更容易使用,但是仍然需要一个可信任初始设置。
Aztec 也在用其他新奇的解决方案来建立可信任设置。PLONK 是一个新的、高效的ZK-SNARK 结构,它需要一个可信任设置,所有程序都可以重用这个单独的设置。 由于对 gas 的要求不高,PLONK 在以太坊的实际应用中是足够有效的。
AZTEC Protocol 首席执行官 Tom Pocock 相信,PLONK 可以被用来编写复杂的逻辑语句,同时保持完美的隐私。
ZK 与安全多方计算(Secure MPC)结合
这种方法在 ZKBoo 和 Ligero 中实施,通过要求证明者提交安全多方计算协议的副本,将安全协议“编译”到 ZK-PCP 系统(最早使用概率证明的 ZK 系统之一)中,使验证者能够随机评估其中一方的观点。这意味着,拥有相关数据知识的实体可以任意模拟多方之间的分布式计算,然后在随机的评估点显示计算副本。更重要的是,使用 MPC 使创建私有智能合约成为可能。
像 ZK-STARK 一样,基于 MPC 的证明具有如下特征:
- 透明:随机数的生成是公共信息;
- 后量子安全(Post-quantum secure):公共随机性和哈希函数仍然是量子系统无法大规模解决的问题;
- 可扩展:基于 MPC 的证明具有准线性的证明时间和验证者时间,可以高效进行分批计算;
也就是说,基于 MPC 的技术在区块链领域还没有得到充分的开发,这些技术将比现有的ZK 技术更加通用,特别是在需要各方保护与实际计算本身相关的机密信息的情况下。例如,MPC 技术对于运行信用评分算法来评估客户的信用度很有用,但是无论客户还是银行都不想放弃其交易历史等机密信息,以及在 ML 信用评分模型中的权重。
硬件限制
当 Zcash 第一次引入使用 zk- snark 发送交易的想法时,人们对使用隐蔽交易所需的计算能力存在严重担忧,因为生成一个交易需要几个小时甚至更长时间。但之后,我们已经取得了长足进步,现在已经能够在浏览器甚至移动设备上完成类似的任务,只需要几秒钟。
混合器
混合器的话题也引起了很多人的关注。今年5月,Vitalik 在以太坊网站上发布了新一代混合机的设计和大致框架。
以太坊混合器有助于实现钱包或个人的本地私有交易。 ETH 的可跟踪性意味着特定的交易可以被跟踪并链接到其他钱包或账户。混合器用来交换 ETH ,以进一步使交易匿名化。
许多团体致力于使以太坊混合器更加实用。下面是储存和提取混合ETH 的计算和 gas 费用的最新图表。
应用层的单个混合器也许目前还不能为用户提供绝对隐私,而只提供概率保证。然而,这已经可以满足大多数个人和企业的需求。
谁为 Gas 费买单?
这些方法的一个致命缺陷是,到最后,需要有人为获得产出而支付 gas 费。这些 ETH 从何而来?如果最终支付的 ETH 可以追溯到某个用户,那么该用户就可以去匿名化,这就违背了目的本身。
这就产生了一种隐私“先有鸡还是先有蛋”的场景,在这种情况下,接受匿名 ETH 的唯一方法就是已经有了匿名 ETH。在 Vitalik 关于混合器的博客文章中,他用一个简单的中继器注册合约解决了这个问题。在该协议中,承诺发布任意交易的中继操作人员可以注册一个 HTTP 端点,这样的交易可以匿名发布。
最后,必须考虑钱包改动和操作安全性。如何找出安全的默认设置来保护用户,同时又不会给他们带来太麻烦的体验,这个问题还在讨论中。所有这些混合解决方案都需要大量参与者来合理地期望隐私,因为工具需要易于大众使用。但是,任何捷径都可能导致一些非常严重的隐私侵犯。例如,一个用户混合了一些 ETH,将其中的一部分花在一些本来应该是私有的东西上,之后可能会忘记自己将哪个钱包用于私有交易,然后将剩余的 ETH 发送回一个与他们公开关联的地址。
这些技术进展表明了,以太坊网络上的隐私问题已经得到越来越多的关注。 虽然在公共区块链上实现隐私看似矛盾,但零知识证明等技术将使各种新的前沿用例成为可能。 与此同时,这些解决方案将增强用户的能力,让他们对自己的财务隐私放心。
事关隐私时,并没有什么灵丹妙药。为了创建一个加密的原生世界,匿名交易或其他保护个人信息的能力至关重要。虽然本文并非对以太坊上所有隐私功能的完整概述,但已经涉及到了实现企业和消费者隐私需求的各种方法。整个加密资产生态系统都受到了提供自由的抗审查技术的启发。
我们将继续研究和评估以太坊的隐私解决方案,以帮助教育和推动这项技术的发展。
Dean Pierce、Robert Drost、Mason
作者:Nystrom
翻译:Flash Chan
编辑:Sonny Sun
排版:Roy