可以对 BitTorrent 客户端进行指纹识别吗?

信息安全 隐私 匿名 指纹识别 比特流
2021-09-09 10:23:18

正如https://panopticlick.eff.org/所展示的,网络浏览器很容易被指纹识别,包括主动和被动的(通常你可以通过简单地监控网络来识别网络浏览器)。

我的问题是:BitTorrent 客户端也可以吗?

到目前为止,我的研究表明,DHT“地址”可能是持久的和/或揭示了 torrent 客户端拥有的信息哈希列表,从而使被动指纹识别变得微不足道,因为信息哈希列表几乎是唯一的。这是真的?

我还记得阅读过,在大多数客户端中,即使其中一些被暂停,也可以远程获取当前在 bittorrent 客户端中的所有信息哈希列表。这表明主动指纹识别的可能性。虽然我找不到来源。

客户端版本字符串也提供了一些信息,虽然太少而不能作为指纹信息的唯一来源。

对于 BitTorrent 客户端,基于流的行为指纹识别是否构成威胁?

是否有任何其他信息来源可用于我不知道的指纹识别?

1个回答

一旦启动,BitTorrent 客户端会生成一个名为 的 20 字节标识符peer_id,它由ClientIdentifierClientVersion-RandomNumbers. 授予,ClientIdentifier并且ClientVersion不提供任何身份证明,但RandomNumbers 可以用于识别客户,并且需要了解一些事项:

  • peer_id可以是客户想要发送的任何东西该协议没有定义它应该如何生成,也没有定义它应该如何构建。

  • 客户将其提供peer_id给任何要求它的人(这是握手的一部分)。

  • 设置no_peer_id标志允许通信发生而无需透露peer_id.

  • peer_id每次重新启动客户端时都会生成uTorrent 3.3 甚至会在运行时生成一个新peer_id

然而,BitTorrent使用了一个名为Kademlia的DHT,这对于安全研究(AKA stalkers)来说是一个好消息。不久前,我分析了 uTorrent 和传输,它们都使用 DHT/PEX 加密(如果启用并强制)。

当客户端进入 DHT“网络”时,它通过连接到一些引导服务器来引导。这通常发生在您第一次运行新客户端时。但这并不是引导 Kademlia 时发生的唯一事情。

当客户端加入网络时,它会获得一个随机生成的标识符,称为node ID. 此节点 ID 是从与 BitTorrent 的“信息哈希”相同的 160 位空间中随机选择的。您可以随时清除您的 DHT 信息并重新加入网络,这将为您提供一个新的标识符。由于这样做的用户并不多,因此您可以相对地将其视为标识符。

要获得客户的信息,node ID向他们发送 DHTping消息就足够了,它会用它的 ID 进行响应

{"t":"T_ID", "y":"q", "q":"ping", "a":{"id":"THE_SENDER_ID"}}

  • t 是事务 ID,它标识消息并与响应一起发回
  • y是消息的类型,值"q"表示它是一个查询。
  • q 是查询的类型,这里是 ping 查询。
  • a表示查询的参数。这里它只包含发送者的节点 ID。

客户会回应

Response = {"t":"T_ID", "y":"r", "r": {"id":"MY_ID"}}

"r"y意味着这是一个响应。

这些主要是协议本身提供的两种识别客户端的方法。