大小事项
我正在为每个人构建隐私技术,而不仅仅是为密码朋克。我的链分析师的观点帮助我清晰地表达数据可能泄漏的地方,隐私技术可能出错的方式。我希望这有助于那些正在构建隐私保护协议和分布式应用程序的人。
介绍
在构建协议(Anoma 和 Namada)之前,我对区块链进行了去匿名化处理。我在加密领域的第一份工作是在 Chainaanalysis,该公司帮助美国政府机构在 2020 年扣押了 +1B 的加密货币,并在 2022 年帮助执法部门从 Ronin Bridge 黑客事件中追回了3000 万美元。我在 2017 年至 2018 年间以数据科学家的身份加入,这段经历使我在我非常清楚,隐私是至关重要的——特别是如果我们希望去中心化协议取代金融系统并作为剥削范式的替代品 。
从那时起,ZKP 和其他加密方案的使用激增,我们看到越来越多的杰出密码学家参与将隐私引入区块链。
这么多年过去了,我注意到区块链领域的绝大多数人都知道隐私很糟糕。但很少有人知道为什么——隐私很糟糕。
这也适用于密码学家,因为我还发现,成为一名出色的密码学家并不一定意味着你就是一名出色的隐私技术构建者。除非你只是为密码朋克而构建。在我看来,密码朋克不存在隐私问题,因为即使技术很糟糕,他们也知道并且可以私下使用它。
但我正在为每个人构建隐私技术,而不仅仅是密码朋克。
我的区块链分析师的 POV 帮助我清楚地阐明了数据可能在哪里泄露、隐私技术如何出错,以及在我们将 Namada 打造为一款为当今用户带来最佳实用隐私的产品时应优先考虑的事项。
如果您也在构建隐私保护协议和 dApp,我希望这对您也有帮助。
致谢
为Mary Maller、ceteris、zooko、Mikerah、Can、Joe、Christopher和 D 花时间阅读本文并给我提供大量反馈而干杯:3
内容
本文包含大量可视化、模因和以下主题:
像连锁分析师一样思考
当数据科学家/分析师发现区块链时,他们可能感觉就像加州农民发现黄金一样。不仅所有数据都是公开的,而且还有完整的节点可以免费为您提供数据,以及大量的工具和 API,他们可以使用它们来获取他们想要的数据以及他们想要的数据。结合越来越多的开源分析工具,任何人都可以非常便宜且轻松地成为链分析师。
大多数人认为连锁分析师是侦探。他们不是。这种区别很重要,因为它改变了您保护用户免受侵害的内容。
鲍勃是一名侦探,他的工作是抓住罪犯,无论是一个人还是一小群人,而(优秀的)侦探需要确定他们抓住的人实际上就是罪犯。换句话说,侦探需要100% 确信他们的结论 是正确的以及罪魁祸首到底是谁。
像 Awa 这样的链分析师完全不同,他们只有一个工作:将一个非常大的数据集变成一个非常小的数据集。通常,最终目标是减少匿名集(又名去匿名化)和/或对他们在网络上所做的事情进行分类(又名集群)。
与侦探不同,连锁分析师会尽可能争取最高的准确性,但在大多数情况下,他们会满足于 << 100% 的置信度。他们不太关心具体细节,例如现实世界的身份,并在网络覆盖范围上相互竞争。例如,谁覆盖了比特币所有地址的 75%,谁就比另一个只能覆盖 50% 的地址要好。
当然,连锁分析师的成功指标不是二元的,并且可能会根据分析的对象 和对象而有所不同。
一些连锁分析师这样做是为了好玩,另一些是为了科学,但大多数都是为了盈利。
连锁分析师获得大量报酬,因为他们帮助他人赚更多钱(为投资者和交易者提供市场洞察),以确保应该纳税的人已经纳税(合规),或者改善人们的生活谁更容易雇用鲍勃(执法、调查)。
根据您的客户是谁,您可能会更关注更高的置信度、更大的覆盖范围、更细粒度的集群或特定集群等。
担任连锁分析师
但是好吧,连锁 分析师是做什么的?我将其总结为几张图表和一个模因。
您从一个非常大的数据集开始(例如,比特币上的所有地址)。然后应用不同的方法将该集合的大小减小到更小的集合。我将这些方法分为两种:被动方法和主动方法。
被动与主动方法
被动方法包括统计、启发式、计时、价值和费用分析。听起来很复杂,但事实并非如此,你可以在家里使用最基本的 Python 库来完成它们。由于透明的区块链揭示了整个交易图,因此仅应用基本统计数据,链分析师的结果就可以非常好。
作为参考,2022 年发表的一篇论文(Tang 等人)测量到,虽然匿名集的大小为所有价值(0.1、1、10 和 100 ETH)的 44,014 笔交易,但实际匿名集为 16,661 笔交易这比用户预期小 62.46% ——该研究仅使用被动方法。
与被动方法不同,在被动方法中,您只是观察网络中发生的情况,在主动方法中,您直接与区块链交互,试图找到使用被动方法无法获取的数据。主动方法非常酷。这就像链分析师与透明区块链的最佳状态一样,因为真正去中心化的区块链无法歧视谁使用它们(区块链应该如此),包括链分析师。
一些主动方法非常简单,例如将资金存入交易所等托管服务提供的地址。假设您向 Coinbase 地址存入资金。从一次充值中,你可以得到以下数据:第一,这个地址是一个Coinbase地址;其次,如果 Coinbase 不为每个客户使用唯一的地址,您可以看到其他 Coinbase 用户的所有历史存款;第三,如果你幸运的话,你会看到 Coinbase 将资金转移到其他内部地址——大量数据,非常令人惊叹。
其他主动方法更加复杂。我最喜欢的是达纳安礼物攻击,以下是它的运作方式。
大多数用户指定转账金额的整数和最多一到四位小数,对吧?在 Danaan 礼物攻击中,攻击者的目标是通过发送极少量的资金(灰尘)但具有独特的低位小数序列,在毫无戒心的用户身上留下指纹。如果您想要链接进出屏蔽池(例如 Zcash 或 Aztec 的 ZK Money)的透明地址,这可能非常有用。这样,即使您看不到屏蔽集中发生的情况,您也可以链接带指纹的提款地址并将其与存款地址关联起来。
虽然 Zcash 上的指纹生存率约为16.6%(Biryukov 等人),但 2020 年发表的一篇论文(Béres 等人)观察到,用户的交易数量越少,指纹生存率越高。例如,在以太坊上部署的类似 Zcash 的应用程序(例如 Aztec)上,当一个地址仅发送 50 笔交易时,指纹生存概率约为 21.83%。存活率越高,链分析师可以对进出屏蔽池进行去匿名化的交易就越多。
链上数据与链下数据
到目前为止,我们只使用了链上数据。一旦添加链下数据,事情就会变得更加有趣。
将链下数据视为开源情报 (OSINT) 的子集。大多数连锁分析师使用互联网上提供的信息,包括:网站、论坛、社交媒体等。在推特在加密货币堕落者中流行之前,他们就一直在这样做。在比特币早期,用户经常在公共论坛上发布他们的地址或在 Reddit 上发布交易哈希。链分析师抓取了所有这些数据并将它们映射到链上数据。
作为连锁分析师的另一个目标是集群。目标是将大型数据集转换为多个较小的集群。
最常见的集群实践根据他们正在做的事情在区块链上进行分组。例如:下面的青色簇可以是交易所,绿色簇可以代表接受比特币作为支付形式的商店或服务,黄色簇可以代表混合服务。
对于集群,链分析师可以结合使用被动和主动技术以及链上和链下数据。最终的 wombo 组合是链分析师将上述所有内容与来自侧通道的数据、p2p 网络分析或映射 IP 地址结合起来。龙卷风现金和中继费用,例如恶意中继者可以收集用户的 IP和其他敏感信息。
一个有趣的事实是,当只有比特币和类似比特币的区块链时,集群(就像按活动标记子集一样)变得更加困难,因为在这些网络上你所能做的就是基于 UTXO 的交易。
随着以太坊以及具有账户模型和智能合约的类以太坊区块链的发展,集群变得微不足道:链分析师甚至不需要提供标签,因为你只需查看智能合约的逻辑即可。每个 dApp 都弄清楚他们在做什么。
将其与 ENS 域、支持加密的社交媒体(例如 Gitcoin、3Box 或 HumanityDAO)、作为 Twitter 个人资料的 NFT 以及其他导致集体人肉搜索的时尚结合起来……以太坊基本上抢走了链分析师的工作。
Meme 1:人们不会去匿名化以太坊,而是以太坊去匿名化自己
屏蔽交易与链分析师
仅供参考,我在这里使用 ZKPs 一词来指代 zk-snarks。IMO zk-snarks 在技术上优于环签名、TEE 等,所以我将其余部分排除在范围之外。根据兴趣,我可能会单独写一篇文章来解释这些方案在用户隐私保障方面的差异。同时,我真的推荐观看 Ian Miers 的演讲《中本聪没有衣服》。
Meme 2标题:但是零知识证明使加密货币变得私有,对吗?
首先,ZKP!=隐私
您可以部署 ZKP 来实现不同的属性,例如数据的简洁性或高效的验证。您可以部署 ZKP 来保护隐私,但它并不能保证用户的实际隐私。您可能在上一节中注意到,用于去匿名化和集群假名区块链的非常相似的技术可以在使用 ZKP 的区块链上获得非常好的结果。
要了解哪里可能出错,我们首先需要了解屏蔽池的工作原理。最好的起点是 Zcash,它是比特币的一个分支,支持透明交易并使用 zk-snarks 进行屏蔽交易。
对于链分析师来说,透明部分与任何其他假名区块链(比特币、以太坊等)相同。屏蔽部分可能比较棘手,因为借助 ZKP,屏蔽池内的交互不会泄露交易图。但这并不 意味着数据泄露为零。
Zcash 中的屏蔽池到底是什么?不要引用我的话,而是将其视为与智能合约的交互。
假设您在透明账户(T)中有一些 ZEC ,并且您想开始使用屏蔽交易。第一步是将您的 ZEC 从您的 T 账户转移到您的屏蔽账户(Z)。此转账并非完全私密!确实,收件人的地址(Z)没有被泄露,但其他一切都与透明地址相同。
这同样适用于取消屏蔽,因此从 Z 到 T 的屏蔽集之外的交易,其中发送者地址 (Z) 不会被泄露,但接收者地址会被泄露。
Z to Z交易不会泄露交易图,但这并不等于零数据被泄露:时间戳或交易费用是可观察的,并且您可以推断出一些统计数据,例如屏蔽交易的总数。
每当涉及透明地址时,大部分数据都会被泄露,而当交互保持在屏蔽集中时,泄露的数据最少。
有时,还有其他原因导致用户需要取消屏蔽,例如,从一套屏蔽设备转移到升级设备。为此,您需要在每次涉及 T 地址时至少取消屏蔽一次。
为了展示这些数据可以做多少事情,您可以参考 2020 年发表的一篇论文,该论文对屏蔽池的存款覆盖率达到 95%,对所有提款覆盖率达到 87.5%。与 2018 年之前的一项研究相比,这篇论文的聚类率提高了 9%。这两项研究都结合了被动、简单的主动方法和一点 OSINT 来对 Zcash 进行去匿名化。
这些都是学术研究的结果,这并没有考虑到以营利为目的 的连锁分析师的结果,他们的资本可能比博士生及其导师要好得多,例如 Chainaanalysis,他们筹集了总计美元到 2022 年底将达到5.36 亿。
私人执行虚拟机与链分析师
Meme 3标题:但 zKeVm 将使以太坊私有化,对吗?
请记住,ZKP != 隐私
您可以部署 ZKP 来启用隐私,但您也可以部署 ZKP 来实现其他属性,例如验证的简洁性。
旁注:一个更有趣的区别是数据隐私和函数隐私之间的区别(不过我将把它保存到另一篇文章中)。
例如,在 Polygon Hermez 或 Scroll 等系统中,ZKP 用于对链下计算的状态转换进行链上验证。通常,zkEVM 系统旨在支持特定的操作码,以实现与特定 ZK 汇总的兼容性。ZKP 不用于隐私而是用于简洁的另一个例子是 ZK 桥(例如 Succinct Labs 的桥)。
什么是私有执行虚拟机?基本上,以太坊或类似以太坊的架构,其中计算发生在链外,但您可以在链上验证特定的执行跟踪和状态转换是否正确。ZKP 通常用于: 隐私,因为 ZKP 消除了在链上发布数据的需要;验证的简洁性,调用链上验证者。
我将使用 ZEXE、veri-ZEXE、xyz-ZEXE 的协议分类为私有执行虚拟机,例如 Aleo 和 Espresso(至少在它们最近的转向之前)。
具有私有执行虚拟机的区块链!=为其用户提供更好的隐私。这取决于很多因素。
关键问题是,你生活在哪个世界?
世界A:您的区块链是一个孤岛,用户仅与您链上创建的资产和 dApp 进行交互。
世界 B:您的区块链与其他区块链进行互操作,用户可以与您链上创建的资产和 dApp 以及来自其他链的资产进行交互,以便将它们与您链上的私有 dApp 一起使用。
如果你的答案是 A——我有很多问题要问你,比如为什么你要在 2023 年建立一个筒仓——但好消息是链分析师的攻击面要小得多。坏消息是攻击面较小,因为您可以在该链上构建的私有应用程序的复杂性非常有限。
这里有很多东西需要解开,我不会详细介绍,但它归结为私有执行虚拟机的架构方式的一个关键限制:它们不是为处理交易对手发现的状态交互而设计的,而几乎每个 dApp 都需要这一点。这对于隐私来说非常重要,因为它会影响您(用户)必须向参与多用户交互的其他用户披露哪些数据。
换句话说,在类似 ZEXE 的虚拟机上,首先要考虑的是,您可能需要重写 dApp 的逻辑才能使其正常工作(您不能通过 c/pa Solidity 合约结束);第二件事是,你只能在用户已经知道最终状态(例如传输)的情况下构建 dApp。
如果你想深入挖掘,我可以推荐有关交易对手发现和隐私以及Taiga(Anoma 的统一执行环境)如何克服限制的演讲。
跨链交易与链分析师
大多数阅读本文的人都会回答 B,因为大多数加密货币用户已经是多链的。多链用户也越来越习惯使用桥或 IBC 等互操作协议进行跨区块链交互的想法。
不幸的是,桥接和互操作协议会损害隐私。
Meme 4标题:Chainaanalysis 需要你找出比特币交易和跨链交易之间的差异
跨链交易是假名的。这意味着链分析师将在链 A 和 B 之间的交易与以太坊内的交易中发现相同数量的数据(整个交易图)。这是由于无需许可的网桥和 IBC 具有设计限制。
让我们看几个例子。
这是 Osmosis(透明)和 Cosmos(透明)之间通过 IBC 进行的交易。由于两条链本身都不支持隐私,因此链分析师可以在以太坊到以太坊交易中观察到尽可能多的数据:
本身支持隐私的链又如何呢?例如 Zcash、Namada 等。由于 IBC 的设计和任何去信任的桥接结构(如Namada <> Bridge),交易需要取消屏蔽(从 Z 到 T)才能通过 IBC 进行传输。正如我们之前在 Zcash 中看到的那样,每次涉及透明地址时,泄露的数据量都会更大:
两条具有原生隐私的链之间的交易怎么样?遗憾的是,除非桥接、互操作协议设计发生变化,否则解除屏蔽的要求保持不变,如下图所示,描述了 Namada 和 Aleo 之间的交易:
幸运的是,这个问题可以通过改变互操作性和桥接协议的设计来解决,并改用私有网桥和私有 IBC。
请记住:当交互保持在屏蔽组(也称为 Z 到 Z)内时,泄露的数据最少。私有桥/IBC 的美妙之处在于它无需取消屏蔽跨链传输,因此即使是跨链交易也不会显示交易图:
太长了;隐私对于用户来说真的很糟糕,而链分析师的生活也太轻松了。
那么我们如何扭转局面呢?
Meme 5标题:GG EZ
最大化链上隐私
做什么?如果我们今天想为多链用户提供最好的隐私 ?
很简单:隐私集大小才是最重要的。
快速练习:图 11 显示了 4 个屏蔽集(AD),其中屏蔽集的大小通过屏蔽事务的数量 和 来衡量
A < B < C < D
。问题:哪个屏蔽集最难去匿名化?
我们绝对可以同意,屏蔽集 A 比 D 更容易去匿名化。
如今提供最佳的链上隐私并不是什么高深的科学。
你所需要的只是两个原则:第一,无限增加屏蔽集的大小——因为大小越大,每笔交易的隐私性就越好;其次,尽量减少透明交易的使用,最大化屏蔽交易的使用——因为只要涉及透明地址,大部分数据就会被泄露,而当交互保持在屏蔽集中时,泄露的数据就会最少。
无限扩大屏蔽装置的尺寸
首先,我们需要消除限制屏蔽装置大小的因素。加密货币协议、隐私 dApp 和私有执行虚拟机的设计导致隐私集碎片化。
另一种看待它的方式是设计如何直接限制屏蔽集的大小:Zcash 匿名集的限制与流通中的 ZEC绑定在一起——而 ZEC 拥有我们今天所知的最好的匿名集。整个加密货币匿名规模的理论极限将是所有网络和资产,这比单个资产匿名集大几个数量级——这就是为什么我们需要为任何资产(无论何种类型)提供统一的屏蔽集(阅读更多在MASP电路上)。这可以与连接所有屏蔽装置的专用桥/IBC相结合,以实现更大的屏蔽装置。毕竟,隐私爱陪伴,区块链也是如此。
但即使我们将所有加密货币都变成一个屏蔽集,与美元匿名集的规模相比,其规模仍然很小。另一方面,法币的匿名集仅限于货币本身,因此 MASP 的真正强大之处在于,如果所有法币都被数字化,它可以结合所有加密货币和法币的匿名集,这web2 基础设施是不可能的。
Meme 6标题:文斯·麦克马洪也关心尺寸
保留在屏蔽组中
请记住,当交互保留在屏蔽集中时,泄露的数据最少。要克服的第一个障碍是鼓励每个人使用屏蔽交易而不是透明交易,然后留在屏蔽集中。这可以通过一种经济机制来实现,该机制激励用户开始使用屏蔽交易并继续使用它们,同时有效地扩大屏蔽集的规模(阅读有关该机制和CC电路的更多信息)。需要注意的是:屏蔽集中的资产没有被锁定,可以在屏蔽集中自由使用——而且有数量惊人的应用程序可以仅基于多资产屏蔽交易构建。应用程序越多,屏蔽交易越多,屏蔽集越大。
此外,无需离开屏蔽装置。这适用于用户想要使用另一个链上存在的功能或应用程序的情况。这就是屏蔽操作的用途:屏蔽帐户可以签署一系列操作,例如使用 Osmosis,而不会丢失任何隐私。对于私有网桥/IBC 来说效果更好,因为即使是屏蔽操作的内容也不会被泄露。
通过用户体验增强隐私
即使有屏蔽操作和/或私有桥/IBC,用户也可能需要取消屏蔽其资产。为了让每个人都能获得最好的隐私,最好的最终用户产品需要与协议垂直集成。在接口层面,可以最大限度地优化链上隐私,其功能包括:随机化值和时间、随机化费用以及在链上或目标链上自动创建透明地址。
为了帮助直觉,链分析师最难链接哪些交易(往返于屏蔽集 A、B、C 和 D) ?
结论
当谈到隐私设置时,要么大一点,要么回家。
未来的工作
在这篇文章中,我优先考虑最大化链上隐私。然而,完美的链上隐私并不能提供端到端的隐私。为了实现这一目标,我们需要考虑所有形式的 OSINT,以及区块链架构中其他层(如 P2P 层、内存池、正在读取和未写入的数据)公开的数据。