Skip to content

TLS-in-TLS 检测与规避

简介

本文介绍 TLS-in-TLS(嵌套 TLS 隧道)的检测原理,以及 XTLS(特别是 XTLS Vision)如何通过分流技术消除这一特征。

本文回答

  • 什么是 TLS-in-TLS 特征
  • 审查方如何检测 TLS-in-TLS
  • XTLS 如何通过识别内部 TLS 流量来消除嵌套特征
  • XTLS Vision 流控模式的具体机制

本文在项目中的位置

本文属于背景知识层。理解 TLS-in-TLS 检测是理解 XTLS 和 Vision 流控设计动机的前置条件。

适合读者

所有想理解为什么"用 TLS 隧道传输 TLS 流量"不安全,以及 XTLS 如何解决这个问题的读者。

前置知识

TLS 记录层结构,TLS 握手流程,TCP 流的基本概念。

文章理解难度

较难。需要理解 TLS 协议的二进制结构和分流(splicing)技术的原理。

重点

  • 双层 TLS 带来的可检测特征
  • XTLS 的分流(splicing)核心思想
  • XTLS Vision 是怎么识别 TLS 流量的
  • REALITY 与 XTLS 的关系

上级文档和相关文档

主要证据

USENIX Security 论文关于 TLS 流量检测的部分,XTLS Vision 源码,nthLink 反审查白皮书。


TLS-in-TLS 是什么

当代理工具使用 TLS 作为传输层时(即客户端到代理服务端之间的通道使用 TLS 加密),而代理正在传输的流量本身也是 TLS 流量(如访问 HTTPS 网站),就会形成 TLS-in-TLS 嵌套。

这种嵌套在代理服务常见于:

  • Trojan:代理流量伪装为 HTTPS,外层是到代理的 TLS,内层是到目标的 TLS
  • VLESS + TLS:使用标准 TLS 作为传输安全的 VLESS
  • VMess + TLS:VMess 跑在 WebSocket + TLS 上

TLS-in-TLS 的可检测特征

1. 数据包大小异常

TLS 记录层的每个记录有固定的最大长度(通常 16KB)。当 TLS 流量被封装在另一个 TLS 隧道中时:

  • 外层 TLS 记录需要承载内层 TLS 记录 + 外层代理协议的头部
  • 这导致外层 TLS 记录的数据部分比正常 TLS 流量偏大

正常 HTTPS 流量的 TLS 记录大小分布是已知的(由 HTTP 请求/响应的典型大小决定)。嵌套导致了偏离这个分布的可检测异常。

2. 时序特征异常

双 TLS 嵌套的握手过程具有特定的时序模式:

  • 外层 TLS 握手 → 代理认证 → 内层 TLS 握手 → 应用数据
  • 这个模式下,在连接建立后很快会出现第二组 TLS 握手消息

审查方可以通过分析连接建立后数据包的时间间隔来识别这种模式。

3. TLS 握手消息计数异常

正常 TLS 连接中,ClientHello 和 ServerHello 在连接的初始阶段各只出现一次。TLS-in-TLS 中,在第一组握手完成后,很快会在加密流量中检测到第二组握手的特征——即使数据是加密的,消息的数量和时序可以被观测到。

4. 加密数据内部的 TLS 结构

2022 年 10 月,据社区报告,GFW 出现了一轮大规模阻断,影响了 Trojan-go、VLESS+TLS+WebSocket 等多种 TLS 隧道协议。这被认为是 GFW 部署了针对 TLS-in-TLS 的检测。

虽然 GFW 无法解开 TLS 加密,但通过分析数据流的包大小序列时序模式,可以推断出内部是否包含 TLS 流量。

2023 年 5 月,Xray 创建者 RPRX 发布的 Trojan-Killer POC 进一步证明了 TLS-in-TLS 检测不需要解密——只需分析 TLS 握手后首个应用数据包的大小分布即可精确定位代理服务端。

应对 TLS-in-TLS 的 XTLS Splice 分流技术和 Vision 填充策略详见 XTLS 流控机制。REALITY 与 XTLS 的协作关系见 REALITY 协议详解

外部参考资料

资料:XTLS Vision 协议说明 类型:官方文档 链接:https://github.com/XTLS/Xray-core/discussions/1295 可信度:A

资料:nthLink 反审查白皮书 类型:技术报告 链接:https://www.opentech.fund/wp-content/uploads/2023/11/nthLink_whitepaper_are_shadowshocks_and_trojan-go_still_relevant.pdf 可信度:B,社区分析

读者自检

读完本文后应能回答:

  • TLS-in-TLS 有哪些可检测特征
  • XTLS 分流的技术原理
  • Vision 相比基础 XTLS 的改进
  • REALITY 和 XTLS 的协作方式

下一步阅读