技术编程|网络安全的重要性:增强公共DHT,抵御Eclipse攻击!

随着网络规模的不断扩大 , 2020年IPFS的一个主要重点是改进内容路由 。虽然官方对DHT上的请求速度进行了重大改进 , 但另一个关键重点是网络的安全性 。
技术编程|网络安全的重要性:增强公共DHT,抵御Eclipse攻击!
文章图片

文章图片

在发布go-ipfs 0.5之前的工作中 , A-SIT和Graz科技大学的Bernd Prünster和Alexander Marsalek联系了协议实验室 , 告知官方他们在针对go-ipfs 0.4.23的研究中发现的一种攻击 , 这种攻击可以让攻击者用最少的资源吃掉公共DHT上的任何节点 。
在过去3个小版本的go-ipfs(0.5、0.6和0.7)中 , 官方一直与Bernd和Alexander密切合作 , 发布增量改进 , 减轻了他们的原始攻击 , 并将此类攻击的成本和难度提高了几个数量级 。今天这篇文章将深入研究该攻击和官方发布的各种缓解措施 。
如果你想阅读完整的论文 , “全部的Eclipse病毒——扰乱破坏IPFS系统” , 你可以在TU Graz研究门户网站上找到它 。
缓解攻击
Eclipse攻击指的是攻击者将对等体与网络其他部分隔离开来 , 使目标对等体只与攻击者控制的对等体通信的能力 。这种攻击的目标是污染目标对等体的DHT路由表 , 使只有攻击者控制的对等体存在 。在Bernd和Alexander发现的攻击中 , 他们利用libp2p和大量预先生成的Peer ID列表 , 创建了一个Sybil攻击 , 共计29TB的数据 , 以libp2p中的信誉系统 , 从而接管路由表 。
如果你对Sybil攻击不熟悉的话 , 其原理是利用单个Peer的大量假名ID来颠覆信誉系统 , 以增加对网络的影响力 。在这种攻击的背景下 , 假ID最终会在受影响对等体的路由表中取代对等体的位置 。
为了使这种攻击成功 , libp2p中的一些漏洞被暴露出来 , 最终导致这种攻击在go-ipfs 0.4.23中非常有效 。在这次攻击被发现的时候 , libp2p存在的一个主要问题是 , DHT并没有偏向于长寿的对等体 , 它并没有保护其下层桶中的对等体(网络另一半的对等体) 。这个问题使得攻击者可以快速地将诚实的对等体从目标的路由表中驱逐出去 , 以支持其不诚实的对等体 。作为go-ipfs 0.5中DHT大修工作的一部分 , 官方改变了路由表中条目的管理方式 。其中一个主要的影响变化是 , 官方将不再从路由表中驱逐仍然可用的对等体 。这加上官方在go-ipfs 0.5中对DHT所做的其他改进 , 使得攻击的执行难度增加了几个数量级 。你可以在IPFS 0.5内容路由深挖中阅读关于DHT的详细变化 。
技术编程|网络安全的重要性:增强公共DHT,抵御Eclipse攻击!
文章图片

文章图片

除了go-ipfs 0.5中的改动 , 官方还修复了几个问题 , 进一步增加了这次攻击的难度和成本 。攻击成功的部分原因是由于Sybil节点能够通过滥用对作为中继的对等体的评分方式的缺陷来攻击有价值连接的信誉系统 。该缺陷可以让一个Sybil节点充当后续Sybil对等体的中继 , 从而继续提升中继的得分 。这可以为单个对等体使用嵌套的Sybils快速获得大量的不正当的声誉 。为了解决这个问题 , 官方对中继应用了一个恒定的分数 , 这使得官方仍然可以重视它们 , 但避免它们能够夸大自己的声誉 。通过提高内部声誉系统的完整性 , 官方降低了Sybil攻击的功效 。
官方为增加这类攻击的成本所做的另一个重大改变是在路由表中引入IP多样性要求 。最初的go-ipfs 0.4.23攻击能够以相对较低的费用在单台机器上运行 , 因为路由表有可能只包含来自单一主机的对等体 。现在 , IP多样性的要求限制了来自任何主机的对等体数量 , 这使得从单台机器上执行日蚀攻击变得不可行 , 进一步将攻击成本从go-ipfs 0.5提高了两个数量级以上 。


推荐阅读