BitTorrent Private Torrents 原理解析
概述
private tracker 是一种限制对其所追踪的种子访问权限的机制。其作用是促进资源共享,并且常常会记录注册用户的统计信息,并对未能充分上传的用户限制对某些或全部种子的访问权限。
在生成元信息文件时,用户可以通过在种子的元信息文件(metainfo file,参加 BitTorrent 协议规范)的”info” 字典中包含键值对”private=1″ 来表示该种子为 PT 种子。
当一个 BitTorrent 客户端获取到包含”private=1″ 键值对的元信息文件时,它必须只向 private tracker 进行报告,并且必须只与 private tracker 返回的节点建立连接。
当一个 PT 种子的元信息文件中的”announce-list” 中出现多个 Trackers(参见多 Tracker 元数据扩展),每个节点在同一时间内只能使用一个 tracker,并且只在当前 tracker 失败时切换到其他 tracker 。在切换 tracker 时,节点必须断开与当前所有节点的连接,并仅与新 tracker 提供的节点建立连接。
原理
Private Tracker 不会公开节点的信息,这样入侵者就无法直接联系其他节点。但是,一旦入侵者获取了某个节点的 IP 地址和端口,他们可以通过直接连接节点进行文件共享。在种子群中,入侵者将被视为正常的节点,并具有与其他节点相同的权利和待遇。
目前,BitTorrent 有四种方式可以让一个节点了解种子群中的其他节点:
Trackers [1],
Distribute Hash Table (DHT) [2],
Peer EXchange (PEX) [3],
Local Service Discovery (LSD) [5].
除了 Private Tracker 之外,通过任何其他机制公布或交换节点信息都会破坏 tracker 的访问控制。这意味着如果在 PT 种子中,某个入侵者获得或猜测了已经在 PT 种子中的某个节点的 IP 和端口,那么与入侵者交换节点信息将为入侵者提供完整的节点列表。
当节点在不同的 tracker 之间切换时,该节点会断开与旧 tracker 的连接,以防止成为一个连接 private tracker 和连接 public tracker 的节点之间的桥梁。这在一定程度上减轻了攻击者修改元信息文件的 announce-list 并通过 public tracker 网站重新分发元信息文件的影响。