Colitu VPN
TCP · TLS 1.2/1.3

Trojan

Trojan 将 VPN 流量隐藏在带有真实证书的标准 TLS 连接(1.2 或 1.3)之中,因此看起来像 HTTPS。介绍它的工作原理、局限,以及它在 Colitu 中的角色。

Trojan 是 Colitu Adaptive Connect 在 Android 和 iOS 上尝试的第四种模式,同时也是 Windows 和 Linux 上按连接时间排序的 TCP 模式之一。它的思路很简单:不发明新的伪装,而是使用真正的东西。Trojan 服务器就是一台带有效证书的 TLS 服务器,Trojan 流量就是普通的 TLS。

它是什么

Trojan 协议由开源项目 trojan-gfw 提出,其文档对此有完整的描述。如今存在许多独立的实现;Colitu 服务器使用 sing-box(一个开源的通用代理平台)运行 Trojan。Trojan 建立在 TLS 之上,只在其上增加了一个非常小的请求格式。Colitu 的 Trojan 服务器目前接受 TLS 1.2 或 TLS 1.3(RFC 8446);尚未强制要求 1.3。

工作原理

  1. 应用打开一个 TCP 连接,并针对服务器的域名执行标准的 TLS 握手。它会验证服务器的真实证书,也就是 Hysteria2 所使用的同一份证书,通过 ACME 签发。
  2. 在 TLS 内的第一批数据中,应用发送其密码的十六进制 SHA-224 哈希、一个换行,以及一个简短的请求:命令(打开 TCP 连接或中继 UDP)、目标地址和端口,再加一个换行。
  3. 如果该哈希属于某个已知用户,服务器就会打开所请求的连接,并在两个方向上中继数据。
  4. 如果不是,该协议的设计使服务器不会暴露自己。最初的 trojan-gfw 实现会把这类连接交给一台普通的网络服务器,因此探测者得到的,就是任何 HTTPS 网站都会显示的内容。
  5. UDP 流量以带帧的数据包形式在同一个 TLS 数据流内传输。

为什么 Colitu 使用它

  • 另一种隐藏方式。 Reality 借用第三方网站;Trojan 则使用服务器自己的域名和真实证书。针对 Reality 式握手(例如一个知名网站名称配上无关的 IP 地址)的过滤系统,在这里没有可匹配的特征。
  • UDP 被封锁时基于 TLS 的备用方案。 当 Hysteria2 无法连接,而基于 Reality 的模式又被单独挑出来时,Trojan 提供了另一条经由普通 TLS 的路径。
  • 简单而成熟。 该协议小巧、被充分理解,并且被广泛实现。

它的强项

  • 封锁 UDP 的网络,例如一些酒店、办公室和校园网络:Trojan 只需要 TCP。
  • 单独挑出 Reality 的网络: 它的握手是针对服务器自己名称的普通 TLS 握手,证书来自公共证书颁发机构。
  • 普通、标准的 TLS: 在 TLS 会话之前或周围没有任何异常的封装。

局限,以及何时它不是最佳选择

  • 它有自己的名称和地址。 域名和证书属于服务器。一旦被识别,它们可以被按名称或 IP 地址封锁,而 Reality 则更难做到这一点。
  • “TLS 套 TLS”。 Trojan 没有与 XTLS Vision 对应的机制,因此嵌套 TLS 握手的规律可能仍然会被高级 DPI 看到。
  • 客户端的 TLS 指纹。 Trojan 协议没有定义类似浏览器的指纹;握手看起来如何取决于具体实现,而有些过滤系统看的恰恰是这一点。
  • 丢包链路上的 TCP。 在移动数据或糟糕的 Wi-Fi 上,它会像任何 TCP 协议一样降速;在那里 Hysteria2 通常更快。
  • 基于 TCP 的 UDP。 在 TCP 数据流内传输的通话和游戏,在丢包时会受影响,因为后面的数据包要等待丢失的那一个。

Adaptive Connect 如何使用它

在 Android 和 iOS 上,Trojan 排在第四位,位于 Hysteria2、VLESS Reality 和 VLESS XHTTP 之后。当 UDP 被封锁,且两种基于 Reality 的模式都无法连接或未通过流量检查时,才会使用它。Trojan 之后只剩下 Shadowsocks 2022。在 Windows 和 Linux 上,Trojan 与其他 TCP 模式一起按测得的连接时间排序,因此在某些网络上,它会紧接着 Hysteria2 之后被尝试。

安全与加密

  • 加密: TLS(1.2 或 1.3;服务器尚未强制要求 1.3)保护整个会话,包括密码哈希和目标地址。
  • 服务器认证: 由公共证书颁发机构签发的真实证书,通过 ACME 自动获取和续期,并由应用验证。没有它,中间人无法冒充服务器。
  • 客户端认证: 密码是你的账户在该服务器上的连接凭据的一部分,从不以明文发送,只会以哈希的形式存在于 TLS 之内。
  • 密钥处理: 凭据以加密形式交付给应用,从不公开。
  • 没有访问日志: 参见安全页面。

来源

立即体验

Trojan 作为五种模式之一,已在每个 Colitu 应用中就绪,你这边无需任何设置。下载 Colitu,或查看服务器位置。