新闻详情

IPFS:强化公共DHT以抵抗eclipse攻击

发布时间:2020-11-12

 IPFS2020 年的一个主要焦点是随着网络规模的不断扩大而改进内容路由。虽然我们已经对 DHT 上的请求速度做出了重大改进,但我们的另一个关键关注点是网络的安全性。 

在我们工作 go-ipfs 0.5 的发布,A-SIT 的 Bernd Prünster 和 Alexander Marsalek 和格拉茨科技大学联系了我们,告诉我们他们在研究 Go-IPFS 0.4.23 期间发现了一种攻击,可以让攻击者用最少的资源使公共分布式哈希表上的任何节点黯然失色。

在过去的 3 个 go-ipfs 小版本(0.5、0.6和0.7)中,我们一直与 Bernd 和 Alexander 密切合作,这使我们能够发布增量改进,减轻了他们最初的攻击,并将此类攻击的成本和难度提高了几个数量级。今天我们将深入探讨攻击和我们已经发布的各种缓解措施。

 减轻攻 

Eclipse 攻击是指攻击者将对等设备与网络的其余部分隔离,以便目标对等设备仅与攻击者控制的对等设备通信的能力。此攻击的目标是污染目标对等点 DHT 路由表,以便只显示攻击者控制的对等点。

在 Bernd 和 Alexander 发现的攻击中,他们使用 libp2p 和大量预生成的 Peer id 列表(总计29TB数据)创建了 Sybil 攻击,在 libp2p 中对声誉系统进行博弈,以接管路由表。

如果您不熟悉 Sybil 攻击,您可以使用具有 ID 的单个对等点来颠覆信誉系统,以增加对网络的影响力。在此攻击的上下文中,虚假 ID 最终取代了受影响对等点的路由表中诚实对等点的位置。

为了使这次攻击成功,暴露了 libp2p 中的一些漏洞,这最终导致这次攻击在 go-ipfs 0.4.23 中非常有效。在此攻击被发现时,libp2p 的一个主要问题是 DHT 不支持长寿命的对等点,而且它没有保护其较低桶中的对等点。这个问题允许攻击者快速地从目标的路由表中驱逐诚实的对等点,以使其支持不诚实的对等点。作为对 go-ipfs 0.5 中 DHT 的彻底修改工作的一部分,我们改变了路由表中条目的管理方式。

影响此操作的主要变化之一是,我们将不再从仍可用的路由表中逐出对等点。再加上我们对 go-ipfs 0.5 中 DHT 所做的其他改进,使得攻击的执行难度增加了几个数量级。您可以在 IPFS 0.5 内容路由深入介绍中了解对 DHT 的详细更改。

除了 go-ipfs 0.5 中的变化之外,我们还解决了几个进一步增加攻击难度和成本的问题。这次攻击成功的部分原因是,一个 Sybil 节点通过滥用对作为中继的节点的评分的缺陷来欺骗有价值连接的信誉系统。该缺陷可能允许一个 Sybil 节点作为后续 Sybil 节点的中继,这将继续提高中继的分数。这可以通过使用嵌套 Sybils 为单个对等点完成。

为了解决这个问题,我们对继电器应用了一个不变的分数,这允许我们仍然重视他们,但避免他们能够夸大他们的声誉。通过提高内部信誉系统的完整性,我们已经降低了西比尔攻击的效力。

为了增加这类攻击的成本,我们所做的另一个重大改变是在路由表中引入 IP 多样性需求。最初对 go-ipfs 0.4.23 的攻击能够在一台机器上运行,而且成本相对较低,因为路由表可能只包含来自单个主机的对等点。IP 多样性要求现在限制了来自任何给定主机的对等点的数量,这使得从单台机器执行 eclipse 攻击变得不可行,进一步增加了 go-ipfs 0.5 攻击成本的两个数量级。

 验证缓解措施

作为与 Bernd 和 Alexander 合作的一部分,我们希望确保能够适当地测试和验证我们的修复,我们采取了两种方法:

现场测试。在我们的允许下,他们对公共网络上的一个托管引导节点执行了一次受控攻击。这使我们能够收集实时度量和日志,从我们的可见性和它们的外部观察观察攻击的有效性。在从 go-ipfs 0.5 开始的 IPFS 发行版之前,在 IPFS 的每个版本上都执行了受控攻击,这使我们能够在生产环境中验证修复程序。

Testground 复制。多亏了 Testground 的开发和发布,Bernd 和 Alexander 共享了他们的攻击代码,我们能够创建测试计划来复制攻击的各个部分。这使我们能够在受控的测试环境中对变更进行大规模测试,以验证攻击是可能的,并验证我们的缓解措施。拥有这些测试计划的好处是,我们可以在 IPFS 和 libp2p 版本上继续运行它们,以确保不会引入回归。

此外,这确保了我们可以在受控的环境中更长时间地运行攻击,从而进一步分析攻击的效率和成本。

 我们今天所处的位置

在过去的一年里,我们对 IPFS 和 libp2p 的性能和安全性都有了显著的改进,协作是这项工作成功的重要因素。Bernd 和 Alexander 所做的研究以及他们与我们如此紧密合作的意愿对于帮助我们改善网络的稳定性具有不可估量的价值。我们很感激有机会一起工作。

随着今年 9 月 go-ipfs 0.7 的发布,我们将执行针对 IPFS 和 libp2p 的 eclipse 和 Sybil 攻击的难度和成本从它的 0.4.23 增加了几个数量级。

在线客服
销售热线
0816-8039888
销售客服
点击这里给我发消息 点击这里给我发消息
售后客服
点击这里给我发消息 点击这里给我发消息
投诉/建议/合作
点击这里给我发消息
技术微信
值班手机
13696293888