-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
InnerFade
https://github.com/lhear/InnerFade
域名缓存命中的情况下,流量特征将和正常流量无法区分,理论上支持亿级域名缓存
核心特性
-
0 RTT: 缓存命中时,连接建立用时和直连目标网站一致。
-
TLS MITM: 动态生成并签署 TLS 证书,实现对客户端 HTTPS 流量的透明解密,消除了TLS in TLS特征。
-
REALITY: 使用REALITY进行通信和对抗主动探测。
-
多路复用: 没有实现多路复用,以避免可能的MUX in MUX包长度特征。 -
流量伪装:
-
ALPN 透传: 透明地传递原始的 应用层协议协商 (ALPN) 值,解决了其他MITM代理常见的兼容性问题。
-
域名持久缓存: 客户端和服务器端均采用高性能的自定义文件级哈希表(包含独立的索引文件和数据文件),用于持久存储域名及其基于 SHA256 哈希生成的短 ID。
-
隐蔽目标信息传输: 当客户端命中域名缓存时,会将目标域名的 ID、端口和 ALPN 码进行加密,并嵌入到 32 字节的 TLS
ClientHello.Random字段 中。 -
零包目标解析: 服务器在收到
ClientHello后,会解密并从Random字段中提取这些信息。这样,无需额外的网络数据包或任何可检测的元数据,即可解析出真正的目标地址。
-
工作流程
1. 客户端操作
- 对于 HTTPS 流量,客户端使用用户信任的 CA 执行 中间人攻击(Man-in-the-Middle) 进行解密。
- 客户端识别出目标域名、端口和 ALPN。
- 如果目标域名在本地缓存中(域名缓存命中),客户端会使用预共享密钥(源自 X25519 密钥交换)对域名 ID、端口和 ALPN 进行加密,并将加密数据嵌入到 REALITY 连接的
ClientHello.Random字段 中。 - 客户端建立与服务器的 REALITY 连接,并转发所有后续流量。
2. 服务器端操作
- 服务器在 TLS 握手期间检查传入的
ClientHello.Random字段。 - 使用其对应的解密密钥(源于其 X25519 私钥),尝试解密并提取域名 ID、端口和 ALPN。
- 如果解密成功,则从本地缓存中检索实际域名。
- 服务器连接到真正的目标地址,并转发流量。
wegood9 and showgood163
Metadata
Metadata
Assignees
Labels
No labels