为什么不能加密 Torrent 流量?

Why can't torrent traffic be encrypted?

这个问题的目的是我只是想更好地理解 P2P 和网络以及安全/加密的本质。我是一名前端 Web 开发人员,如果我们低于 HTTP 请求,我对网络堆栈的了解并不多。

话虽这么说,但我正在尝试了解 ISP 如何 "sniffed" 洪流流量以及识别的内容。我觉得这个问题会暴露我的无知,但是有没有可能有某种类似 HTTPS 的 P2P 协议可读性不强?

我知道给定的数据包必须在整个过程中识别其到达网络的目的地,但不能将 torrent 数据包配置为仅显示其目的地,这样就没人能在整个过程中识别出它的目的,直到它到达目的地了吗?为什么 ISP 可以只查看 P2P 流量并了解所有相关信息,这显然是无法纠正的情况,而 SSH 却非常安全?

您正在考虑的问题是在私有上下文中只有两个对等点的点对点加密与 public 上下文中无限数量的对等点之间的区别。

任何 public 对等点的解密只有在某处有引物时才能生效——一个可供所有 public 对等点使用的解密密钥。在防止 ISP 的情况下,他们也可以访问该密钥,除非有一些排他性协议只在其他人之间共享密钥。这样做不切实际。

在点对点连接中,TLS 密钥协商最终会创建一个由对等方共享的会话加密密钥。密钥是伪随机的且特定于会话。未参与密钥协商的客户端无法使用这种方式在 Internet 上共享的数据。

Torrent 流量 可以 加密,并且有 VPNs/SOCKS 代理可用于重定向流量,即在连接到之前通过加密隧道通过另一个国家/地区同行。也就是说,即使您使用此类服务​​,也有很多方法可以通过侧通道泄漏流量(例如,DNS 查找、不安全的跟踪器、受感染的节点),而且大多数人的知识不足以遵循所有正确的 security/anonymity注意事项。此外,将自己限制为仅与同样强制加密的客户端通信将限制您可以连接的对等点的数量。

Bittorrent 流量(特别是用于传输大量数据的对等协议)can be encrypted. But it's the kind of encryption that does not provide strong confidentiality/authentication guarantees, similar (but not identical) to HTTP2's opportunistic encryption

Client-Tracker 通信可以使用 HTTPS 加密。

这两个组件为您提供了一个有效但受限的 bittorrent 堆栈,该堆栈已加密并且其内容对被动观察者不可见。

ISP 可能仍然能够根据边信道数据(数据包 sizes/traffic 模式、联系的域等)将其识别为 "bittorrent, probably",但他们无法确切知道是什么正在转移。

这里的每个答案似乎对问题都有不同的解释,或者更确切地说,加密的不同假定目的。由于您将其与 https 进行比较,因此您似乎可以合理地假设您正在寻找身份验证和机密性。我将列举一些降低“安全”级别的尝试。这是一个以 bittorrent 为中心的答案,因为您用 bittorrent 标记了问题。

SSL

从最强大的系统开始,可以通过 SSL 运行 bittorrent(许多客户端不支持它,但在完全受控的部署中可以做到)。这给你:

  1. 每个参与的同行的身份验证
  2. 能够通过使用 swarm root 签署证书来选择允许哪些对等节点进入 swarm。
  3. 所有对等连接+跟踪器连接的SSL加密

跟踪器可以验证连接到它的每个点,但即使点列表(或一个点)被泄露或被猜到,仍然存在点对点身份验证,阻止任何未经授权的访问。

基于 SSL 的 Bittorrent 已 implemented and deployed

加密种子

在 BitTorrent(在 uTorrent 客户端中)我们添加了对磁盘层种子文件对称加密的支持:

比特流引擎中的一切都将在加密块上运行。数据完整性检查(片段的 sha-1 散列)将在加密块上完成,.torrent 文件将包含加密数据的散列。像这样的加密 torrent 向后兼容不支持该功能的客户端,但他们将无法访问数据(只是帮助集群并为其播种)。

要以未加密的形式下载 torrent,您可以将 &key= 参数添加到磁体 link,uTorrent 会在磁盘边界解密和加密数据(让磁盘上的数据保持清晰) .任何人在没有密钥的情况下添加磁铁 link,只会得到加密数据。

还涉及一些其他细节,比如加密 .torrent 文件中的一些元数据。如文件列表等

这不会让您选择哪些同伴可以加入。您可以授予所需的对等点的访问权限,但由于它是对称密钥,任何有权访问的人都可以邀请其他人或发布密钥。它不会给你任何比你找到磁铁时更强大的身份验证 link.

它让您在 受信任的 同行之间保密,并且能够让不受信任的同行帮助播种。

比特流协议加密

bittorrent protocol encryption 可能更恰当地描述为混淆。它的主要目的不是验证或控制对群的访问(它从信息哈希派生加密密钥,所以如果你能保守秘密,你就可以得到 属性)。主要目的是避免琐碎的被动侦听和流量整形。我的理解是,如今避免被识别为比特流流量的效果较差。它还提供针对复杂和主动攻击的弱保护。例如,如果启用了 DHT,或者跟踪器连接未加密,则很容易了解作为密钥的信息哈希。

在私有种子文件(禁用 DHT 和对等交换)的情况下,假设跟踪器 运行s HTTPS 没有任何明显的漏洞。然而,我的经验是 https 跟踪器拥有自签名证书并且客户端验证跟踪器的情况并不少见。这意味着跟踪器的 DNS 条目中毒可能足以进入蜂群。