IPFS2020年的一个主要焦点是随着网络规模的不断扩大而改进内容路由。虽然我们已经对DHT上的请求速度做出了重大改进,但我们的另一个关键关注点是网络的安全性。
在我们工作go-ipfs0.5的发布,A-SIT的BerndPrünster和AlexanderMarsalek和格拉茨科技大学联系了我们,告诉我们他们在研究Go-IPFS0.4.23期间发现了一种攻击,可以让攻击者用最少的资源使公共分布式哈希表上的任何节点黯然失色。
在过去的3个go-ipfs小版本中,我们一直与Bernd和Alexander密切合作,这使我们能够发布增量改进,减轻了他们最初的攻击,并将此类攻击的成本和难度提高了几个数量级。今天我们将深入探讨攻击和我们已经发布的各种缓解措施。如果你想阅读全文,“全蚀的心脏-扰乱星际文件系统”,你可以在TUGraz研究门户网站上找到它。
●减轻攻击●vchen251980
Eclipse攻击是指攻击者将对等设备与网络的其余部分隔离,以便目标对等设备仅与攻击者控制的对等设备通信的能力。此攻击的目标是污染目标对等点DHT路由表,以便只显示攻击者控制的对等点。
在Bernd和Alexander发现的攻击中,他们使用libp2p和大量预生成的Peerid列表创建了Sybil攻击,在libp2p中对声誉系统进行博弈,以接管路由表。
如果您不熟悉Sybil攻击,其想法是您可以使用具有大量假名ID的单个对等点来颠覆信誉系统,以增加对网络的影响力。在此攻击的上下文中,虚假ID最终取代了受影响对等点的路由表中诚实对等点的位置。
为了使这次攻击成功,暴露了libp2p中的一些漏洞,这最终导致这次攻击在go-ipfs0.4.23中非常有效。在此攻击被发现时,libp2p的一个主要问题是DHT不支持长寿命的对等点,而且它没有保护其较低桶中的对等点。这个问题允许攻击者快速地从目标的路由表中驱逐诚实的对等点,以使其支持不诚实的对等点。作为对go-ipfs0.5中DHT的彻底修改工作的一部分,我们改变了路由表中条目的管理方式。
影响此操作的主要变化之一是,我们将不再从仍可用的路由表中逐出对等点。再加上我们对go-ipfs0.5中DHT所做的其他改进,使得攻击的执行难度增加了几个数量级。您可以在IPFS0.5内容路由深入介绍中了解对DHT的详细更改。
除了go-ipfs0.5中的变化之外,我们还解决了几个进一步增加攻击难度和成本的问题。这次攻击成功的部分原因是,一个Sybil节点通过滥用对作为中继的节点的评分的缺陷来有价值连接的信誉系统。该缺陷可能允许一个Sybil节点作为后续Sybil节点的中继,这将继续提高中继的分数。这可以通过使用嵌套Sybils为单个对等点完成,从而迅速获得大量不可靠的声誉。
为了解决这个问题,我们对继电器应用了一个不变的分数,这允许我们仍然重视他们,但避免他们能够夸大他们的声誉。通过提高内部信誉系统的完整性,我们已经降低了西比尔攻击的效力。
为了增加这类攻击的成本,我们所做的另一个重大改变是在路由表中引入IP多样性需求。最初对go-ipfs0.4.23的攻击能够在一台机器上运行,而且成本相对较低,因为路由表可能只包含来自单个主机的对等点。IP多样性要求现在限制了来自任何给定主机的对等点的数量,这使得从单台机器执行eclipse攻击变得不可行,进一步增加了go-ipfs0.5攻击成本的两个数量级。
●验证缓解措施●
作为与Bernd和Alexander合作的一部分,我们希望确保能够适当地测试和验证我们的修复,我们采取了两种方法:
现场测试。在我们的允许下,他们对公共网络上的一个托管引导节点执行了一次受控攻击。这使我们能够收集实时度量和日志,从我们的可见性和它们的外部观察观察攻击的有效性。在从go-ipfs0.5开始的IPFS发行版之前,在IPFS的每个版本上都执行了受控攻击,这使我们能够在生产环境中验证修复程序。
Testground复制。多亏了Testground的开发和发布,Bernd和Alexander共享了他们的攻击代码,我们能够创建测试计划来复制攻击的各个部分。这使我们能够在受控的测试环境中对变更进行大规模测试,以验证攻击是可能的,并验证我们的缓解措施。拥有这些测试计划的好处是,我们可以在IPFS和libp2p版本上继续运行它们,以确保不会引入回归。
此外,这确保了我们可以在受控的环境中更长时间地运行攻击,从而进一步分析攻击的效率和成本。
●我们今天所处的位置●vchen251980
在过去的一年里,我们对IPFS和libp2p的性能和安全性都有了显著的改进,协作是这项工作成功的重要因素。Bernd和Alexander所做的研究以及他们与我们如此紧密合作的意愿对于帮助我们改善网络的稳定性具有不可估量的价值。我们很感激有机会一起工作。vchen251980
随着今年9月go-ipfs0.7的发布,我们将执行针对IPFS和libp2p的eclipse和Sybil攻击的难度和成本从它的0.4.23增加了几个数量级。
如果您还没有更新到go-ipfs0.7,我们建议您尽快更新,以便充分利用这些改进。查阅go-ipfs0.7更新指南,了解如何更新的细节!
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。