枚举主线 DHT
Enumerating Mainline DHT
我试图理解为什么从历史上看,DHT(分布式哈希 table)是一个用于去中心化 p2p 网络的好系统。
从效率的角度来看:让一堆节点知道每个节点如何到达而无需它们之间的复杂通信(在主线 DHT 的情况下使用 XOR 距离)是一种极好的方式。
从匿名的角度来看,我认为情况并非如此:我想知道是否可以枚举 DHT 的节点,以及防止这种发现是否是 DHT 所面临的问题甚至应该解决。
例如:想象一个有 100 个节点的分布式哈希表。由于 DHT 的设计(至少是 Mainline DHT),一个节点会(如果我错了请纠正我):
- 知道资源 X 在节点 Y 中
- 也知道如何到达节点Y
我知道 DHT 爬虫(如 https://github.com/boramalper/magnetico)能够枚举所有节点。
我的推理是否正确,还是我误解了攻击向量?
非常感谢
Bittorrent 没有试图隐藏任何 swarm 成员的 IP 地址,除此之外,一些跟踪器公开了允许获取所有 infohash 列表的 API,然后依次获取每个 infohash 的所有 IP。因此,从本质上讲,BitTorrent 对等点集主要是 public。 DHT 添加了另一种获取此列表的方法。
这不是 bittorrent DHT 独有的,其他 p2p 网络也有类似的属性。
另请注意,参与 DHT 与参与任何特定的 Torrent 不同。节点可以简单地作为纯 DHT 节点运行,而无需附加任何 torrent 客户端。
我试图理解为什么从历史上看,DHT(分布式哈希 table)是一个用于去中心化 p2p 网络的好系统。
从效率的角度来看:让一堆节点知道每个节点如何到达而无需它们之间的复杂通信(在主线 DHT 的情况下使用 XOR 距离)是一种极好的方式。
从匿名的角度来看,我认为情况并非如此:我想知道是否可以枚举 DHT 的节点,以及防止这种发现是否是 DHT 所面临的问题甚至应该解决。
例如:想象一个有 100 个节点的分布式哈希表。由于 DHT 的设计(至少是 Mainline DHT),一个节点会(如果我错了请纠正我):
- 知道资源 X 在节点 Y 中
- 也知道如何到达节点Y
我知道 DHT 爬虫(如 https://github.com/boramalper/magnetico)能够枚举所有节点。
我的推理是否正确,还是我误解了攻击向量?
非常感谢
Bittorrent 没有试图隐藏任何 swarm 成员的 IP 地址,除此之外,一些跟踪器公开了允许获取所有 infohash 列表的 API,然后依次获取每个 infohash 的所有 IP。因此,从本质上讲,BitTorrent 对等点集主要是 public。 DHT 添加了另一种获取此列表的方法。
这不是 bittorrent DHT 独有的,其他 p2p 网络也有类似的属性。
另请注意,参与 DHT 与参与任何特定的 Torrent 不同。节点可以简单地作为纯 DHT 节点运行,而无需附加任何 torrent 客户端。