go-ipfs 0.7:加强IPFS公共DHT抵抗攻击

2020-11-04 15:48:43

随着9月发布的go-ipfs 0.7,我们将对IPFS和libp2p进行eclipse和Sybil攻击的难度和成本比其前一个版本0.4.23增加了几个数量级。

1104-1-1.jpg


  随着网络的不断扩展,IPFS在2020年的主要重点是改善内容路由。尽管我们已经大大改进了DHT上的请求速度,但对我们来说,另一个重要的重点是网络的安全性。在我们发布go-ipfs 0.5的工作中,我们被Bernd Prünster和Alexander Marsalek在联系A-SIT和技术格拉茨大学告诉我们,他们在研究中发现的针对go-ipfs 0.4.23的攻击,这将使攻击者使用最少的资源来掩盖公共DHT上的任何节点。在过去的3个较早的go-ipfs版本(0.5、0.6和0.7)中,我们一直与Bernd和Alexander密切合作,这使我们能够发布增量改进,从而减轻了他们的原始攻击并增加了成本和难度。这种攻击有几个数量级。今天,我们将深入研究攻击和已发布的各种缓解措施。如果您想阅读完整的论文“心灵的全食-破坏星际文件系统”,可以在TU Graz研究门户网站上找到它。


  减轻攻击

  蚀攻击是指攻击者将对等方与网络其余部分隔离开的能力,从而使目标对等方仅与攻击方控制的对等方通信。攻击的目标是污染目标对等点DHT路由表,以便仅存在攻击者控制的对等点。在Bernd和Alexander发现的攻击中,他们使用libp2p和大量预先生成的对等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进行的其他改进,使攻击更加难以执行几个数量级。您可以在DHT中阅读有关DHT的详细更改IPFS 0.5内容路由深入研究。

  除了go-ipfs 0.5的更改之外,我们还修复了一些问题,这些问题进一步增加了此攻击的难度和成本。攻击成功的部分原因在于,Sybil节点能够通过滥用对作为中继的对等方进行计分的方式来博弈有价值的连接的信誉系统。该缺陷可能会使Sybil节点充当后续Sybil对等节点的中继,这将继续提高中继的分数。对于使用嵌套Sybils的单个对等方可以做到这一点,以迅速获得许多不必要的声誉。为了解决这个问题,我们对中继器应用了恒定的分数,这使我们仍然可以对中继器进行评估,但避免了中继器提升其声誉。通过改善内部信誉系统的完整性,我们降低了Sybil攻击的效率。

  我们为增加此类攻击的成本而做出的另一项重大更改是在路由表中引入了IP分集要求。对go-ipfs 0.4.23的原始攻击能够以相对较低的费用在一台计算机上运行,因为路由表可能只包含来自一台主机的对等项。IP分集要求现在限制了可以来自任何给定主机的对等体的数量,这使得从单台计算机执行eclipse攻击变得不可行,从而使攻击成本比go-ipfs 0.5增加了两个数量级。


  验证缓解措施

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

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

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


  我们今天在哪里

  在这一年中,我们对IPFS和libp2p的性能和安全性进行了重大改进,而协作一直是使这项工作取得成功的重要部分。Bernd和Alexander所做的研究以及他们与我们如此紧密合作的意愿对于帮助我们改善网络的稳定性具有不可估量的价值。感谢您有机会一起工作。随着9月发布的go-ipfs 0.7,我们将对IPFS和libp2p进行eclipse和Sybil攻击的难度和成本比其前一个版本0.4.23增加了几个数量级。

  如果您尚未更新到go-ipfs 0.7,建议您尽快进行更新以充分利用这些改进的全部范围。查看go-ipfs 0.7更新指南,了解有关如何更新的详细信息!


最新推荐