该文章揭示了以太坊 P2P 网络存在隐私问题,通过分析 P2P 网络中的消息交换,攻击者可以匿名识别验证者,并将其映射到网络节点的 IP 地址。研究表明,仅用三天的数据,简单的攻击就能识别超过 15% 的以太坊验证者,并进一步探讨了此技术的影响以及保护 P2P 网络中验证者隐私的潜在缓解措施。
作者:Lioba Heimbach, Yann Vonlanthen, Juan Villacis, Lucianna Kiffer, Roger Wattenhofer
预印本:[2409.04366] 以太坊验证器的去匿名化:P2P 网络存在隐私问题
以太坊 P2P 网络中交换的消息允许沉默的观察者对网络中的验证器进行去匿名化,即将验证器映射到网络中节点的 IP 地址。我们的去匿名化技术简单、经济高效,并且仅用三天的数据就能够识别超过 15% 的以太坊验证器。这篇文章讨论了该技术、其影响以及保护 P2P 网络中验证器隐私的潜在缓解措施。
以太坊的 P2P 网络使得验证器可以交换重要的消息,如区块和证明,从而保持区块链的运行。由于有一百多万个验证器,让每个验证器为每个区块向每个节点发送投票(证明)是不切实际的,尤其是在保持以太坊对 solo staker 可访问的前提下。为了使事情易于管理,投票(即验证器的证明)主要通过两种方式进行划分:
跨Slot的时间划分:验证器只需要在每个 epoch(即每 32 个Slot)投票一次,在随机Slot中投票。因此,只有一小部分在给定的Slot中投票。
跨委员会的网络划分:验证器被分成 64 个委员会。在每个委员会中,一组验证器被指定为聚合器,用于收集证明并将它们合并成一个聚合。将证明划分为委员会的做法也反映在网络层中,网络层也划分为 64 个证明子网(覆盖子网络)。每个委员会都会被分配到这 64 个子网中的一个,相应的证明只会在各自的子网内广播。在 GossipSub(以太坊使用的底层 P2P 实现)的上下文中,这些子网也被称为 主题。
GossipSub 中的证明传播: 当一个验证器签署一个证明时,它会通过将其发送给作为该子网一部分的对等点的子集来发布到其指定的子网。托管验证器的节点不需要订阅这个特定的子网,因为他们的委员会每个 epoch 都会改变。相反,网络中的每个节点默认订阅两个子网,并且仅在这两个子网中参与传播证明——这些被称为 骨干义务。此外,每个节点都与每个子网中的至少一个对等点保持连接,以便他们自己的证明可以通过一跳发送到正确的子网。
鉴于以太坊节点行为的背景,我们描述一个理想的对等点(一个给我们完美信息的对等点)会如何表现。假设我们连接到一个运行 VV 个验证器的对等点,该对等点是两个子网中的骨干。该对等点的验证器每个 epoch 会进行 VV 次证明。假设我们从这个对等点收到完美的信息,这意味着他们会将他们在两个骨干中听到的所有证明转发给我们。在每个 epoch 中,我们将收到来自我们的对等点的 VV 个证明,这些证明是针对他们的验证器的,以及来自所有其他 NN 个验证器的 $N\cdot \frac{2}{64}$ 个证明。
观察: 理想的对等点只有在他们是证明的签名者时,才会向我们发送他们不是骨干的子网中的证明。
因此,在这种情况下,我们收到对等点的 VV 个验证器的所有证明,并且可以将它们区分为我们没有从对等点的两个骨干收到的唯一证明。因此,在这种情况下,将验证器链接到对等点是微不足道的。
然而,实际上,网络消息数据并不完美。为了展示这一点,我们绘制了从一个示例对等点接收到的跨时间和子网的证明。在这个对等点上,我们将识别与该对等点相关的四个验证器;它们各自的证明以红色、蓝色、黄色和绿色高亮显示,而其余的证明以粉红色显示。请注意,来自这四个验证器的证明(它们恰好具有连续的标识符)似乎同样分布在各个子网中。相比之下,绝大多数的证明来自对等点作为骨干的两个子网(示例对等点的子网 12 和 13)。因此,我们可以通过观察我们从对等点收到的属于验证器的证明如何在各个子网中分布来定位我们的对等点上的验证器。
此外,这里体现了不完美的信息,对等点上托管的验证器偶尔会被分配为子网中的聚合器,每个验证器大约每 30 个 epoch 一次。在这些时候,他们暂时成为这些子网的骨干(较小的粉红色水平条),并接收来自属于该子网的多个验证器的证明。
基于上述观察和其他导致不完美信息的网络行为,例如临时断开连接,我们开发了一组启发式方法来将验证器与节点链接起来。我们验证了我们的结果(详见预印本)。
我们知道有三种现有的方法可以对 P2P 网络中的对等点进行去匿名化,与我们类似,它们仅依赖于观察消息。
一篇研究文章探讨了通过观察哪个对等点始终首先广播区块来将验证器映射到对等点。 还存在一篇 medium 文章,讨论了以类似的方式使用证明到达时间。 所提出的分析基于在 Gnosis Beacon Chain 上收集的数据。 最后,与我们的工作并行,另一篇研究文章讨论了使用动态订阅来对 P2P 网络中的验证器进行去匿名化。
我们认为,与这些方法相比,我们的方法需要的更少的数据或并发网络连接(在时间分析的情况下)。 此外,与基于到达时间的方法相比,它不太容易受到噪声的影响,并且如果节点托管超过 62 个验证器(这是基于动态订阅的方法的限制),它也可以工作。 因此,我们认为它能够在更短的时间内更精确地去匿名化更大比例的网络。
通过在三天的时间内在四个节点上部署我们的日志客户端,我们能够去匿名化 P2P 网络中超过 15% 的以太坊验证器。 我们的节点位于法兰克福 (FR)、首尔 (SO)、弗吉尼亚 (VA) 和苏黎世 (ZH)。 通过部署更多的节点并运行更长时间的测量,我们推测这个数字会增加。
通过我们收集的数据,我们还可以对验证器的地理 decentralization 和托管以及 staking pools 的行为进行额外的观察。
我们在下图中显示了验证器跨国家/地区的分布,包括总体分布和我们运行的四个节点的单独分布。 我们在荷兰发现了最大的比例(约 14%)。 此外,我们定位的验证器中有 71.53% 在欧洲,11.95% 在北美,11.52% 在亚洲,4.90% 在大洋洲,0.06% 在非洲,0.03% 在南美洲。
此外,我们注意到地理偏差,例如,SO 节点的澳大利亚和韩国去匿名化的相对比例很高。 因此,我们推测,向欧洲倾斜可能是因为我们在欧洲运行了四个节点中的两个。
\
country_validators693×219 5.28 KB
我们进行了类似的分析,以了解对等点的运行方式——它们是在云提供商上托管运行,还是通过住宅 ISP(可能是家庭 staker)运行。 总的来说,我们定位的验证器中约 90% 是通过云提供商运行的,其余 10% 属于住宅 ISP。 我们绘制了跨组织的分布,发现十大组织中有八个是云提供商。 此外,我们在 Amazon 数据中心定位了最大数量的验证器,即我们定位的验证器中的 19.80%。
\
org_validators693×219 5.26 KB
我们还深入研究了五个最大的 staking pools(Lido、Coinbase、Ether.Fi、Binance 和 Kraken)的做法。 平均而言,我们在给定对等点上观察到 staking pools 有 678 个验证器,最大的节点运行了 19,263 个验证器(!)。
此外,许多 staking pools 利用节点运营商,并且许多节点运营商为各种 staking pools 运行验证器。 这在 staking pools 之间创建了依赖关系。 特别是,我们发现来自两个使用相同节点运营商的不同 staking pools 的验证器的五个实例位于同一台机器上。
移除先前的区块提议者: 已经讨论过的一个安全问题是,Slot n+1 的提议者有动机阻止Slot n 的提议者发布区块。 如果成功,Slot n+1 的提议者可以将错过的交易和新交易都包含在其区块中,从而赚取更多的费用。 由于提议者是提前知道的(大约六分钟),攻击者可以对Slot n 的提议者进行去匿名化,并发起临时的 DoS 或 BGP 劫持攻击,阻止他们提交区块。 重要的是,这种攻击只需要持续四秒钟——做出区块提议的窗口。
破坏活性(Liveness)和安全性: 扩展这种攻击,攻击者可以不断地针对即将到来的提议者来阻止网络的进展。 如果超过三分之一的区块提议被错过,以太坊的 finality gadget 将无法最终确定区块,从而停止网络。 更糟糕的是,安全性可能会受到损害,因为许多以太坊轻客户端都假设链头已最终确定。 通过通过 DoS 或网络分区破坏网络同步性,攻击者可能会导致严重的问题。
为了减轻这些安全风险,人们可以提高 P2P 网络的隐私性或防御潜在的攻击。 我们将讨论这两种途径。
增加子网参与度: 验证器可以订阅比默认值更多的子网,从而使对手更难将特定的证明链接到验证器。 这增加了网络上的通信开销,可能会破坏以太坊使 solo staker 能够以最少的资源运行验证器的目标。 但是,鉴于即将到来的硬分叉中 MAX_EFFECTIVE_BALANCE 的增加,P2P 消息的数量可能会有轻微增加的空间。
跨多个节点运行验证器: 验证器可以在多个节点上分配其证明广播,从而使其更难以对其去匿名化。 虽然这增加了运营成本,但它可以通过将验证器职责分散到不同的 IP 地址来提高隐私性。
私有对等协议: Lighthouse 和 Prysm 客户端都允许验证器设置私有对等协议,其中一组受信任的对等点可以帮助中继 gossip 消息。 虽然这提高了性能和可靠性,但它也提供了一些隐私,从而使将验证器追踪到单个 IP 变得更加困难。 相反,攻击者将不得不针对协议中的多个对等点。 但是,找到受信任的对等点可能既昂贵又困难,特别是对于较小的 staker 而言。
匿名 Gossiping: 已经提出了像 Dandelion 和 Tor 这样的协议来增强匿名性。 例如,Dandelion 首先通过单个节点发送消息(“stem”阶段),然后再广播到网络(“fluff”阶段),这有助于隐藏消息来源。 但是,这些方法会引入延迟,并且可能不够快,无法满足以太坊 P2P 网络的需求。
网络层防御: 用于以太坊 P2P 层的 libp2p 框架已经包含了一些防御措施,例如限制连接数、限制传入流量速率以及自动调整防火墙。 但是,这些并非万无一失,并且在攻击期间可能仍然需要人工干预。
秘密领导者选举: 针对 DoS 攻击的另一种潜在防御是在区块生产者提出区块之前,对其身份保密。 这种想法称为 秘密领导者选举,可以避免其他问题,并且看起来很有希望。 已经为以太坊提出了一些提案,但据我们所知,它们仍处于早期设计阶段。
- 原文链接: ethresear.ch/t/privacy-p...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!