如果 Tor 给所有的 IP 数据包提供支持,面临的困难和后果
扩展 Tor 以传输所有 IP 数据包(而不只是 TCP 流)可以提高可变动性并支持新协议,但同时它也带来了复杂的挑战,例如指纹识别风险、协议层的泄漏、更复杂的出口政策。
由于以下原因,这将变得非常使用: 这将使 Tor 能够更好地处理 VoIP 等新协议。 它可以解决应用程序 socks 端口化的整体需求。 出口中继也无需为所有的出口连接分配大量的文件描述符。
我们正朝着这个方向努力,但面临的难题有:
- IP 数据包泄露操作系统的特征。 我们仍然需要对 IP 层数据包进行规范化,以阻止类似 TCP 指纹分析攻击的事件。 鉴于 TCP 堆栈的多样性和复杂性,以及设备指纹分析攻击,最好的选择似乎是搭建我们自己的用户空间 TCP 堆栈。
- 应用层流仍然需要擦除。 我们仍然需要像 Torbutton 这样的用户端应用程序。 这样将不再是:在 IP 层捕获数据包并对其进行匿名化。
- 有些协议仍然泄露信息。 例如,必须重写 DNS 请求,以便将其传递到不可关联的 DNS 服务器,而不是用户 ISP 的 DNS 服务器;因此,我们必须了解所传输的协议。
- DTLS (TLS 数据报) 基本上没有人在使用了,而 IPsec 又很大。 一旦我们选择了传输机制,由于开始允许丢包、重发等,就需要设计新的端到端 Tor 协议,以避免标记攻击和其他可能的匿名性和完整性问题。
- 任意 IP 数据包的出口政策都意味着建立一个安全的入侵检测系统(IDS)。 节点运营者告诉我们,出口政策是他们愿意运行 Tor 的主要原因之一。 添加 IDS 控制出口政策会增加 Tor 的安全复杂性,而且很可能无论如何都不会成功,整个 IDS 和反 IDS 领域的论文都证明了这一点。 由于 Tor 只传输有效的 TCP 数据流(而不是任意的 IP 数据流,包括不正常的数据包和 IP 洪水),许多潜在的滥用问题都被解决了。 由于我们能够传输 IP 数据包,出口政策变得更加重要。 我们也需要在 Tor 目录中精简地描述出口政策,所以客户端才能够预测哪些节点能允许它们的数据包退出。 客户端在选择出口节点之前,也需要预测它们想要在一个会话中发送的所有数据包!
- Tor 内部的空间名称需要重新设计。 当传递地址给 Tor 客户端时,我们进行拦截,从而可以支持洋葱服务“.onion”地址。 在 IP 层这样做,需要在 Tor 和本地 DNS 解析器之间建立更复杂的接口。