基于 TLS 1.3 的翻墙方法,求指教
众所周知,现在shadowsocks流量有被识别、限速的风险,如六月初大批vps被封。
TLS 1.3 在前几年被提出来,现在已经被广泛采用。
它的握手是这样的:
======== TLS 1.3 Handshake ========
1. Client --> [Supported Ciphers, SNI, Key A, etc] --> Server
Client 向 Server 发送 ClientHello,并且发送自己要访问的网址(SNI),支持的加密方法列表,秘钥A
2. Client <-- [Cipher I chose, Key B, Encrypted Signed Cert] -- Server
Server 向 Client 发送自己选用的加密方法,秘钥B,用秘钥A、B 使用Diffe-Hellmen 算法导出的共享秘钥e,使用e加密的服务器证书
3. Client <--> Server (Communicate using DH derived shared key)
Client 和 Server 之间使用秘钥 e 加密进行通信
=============================
利用这点:
翻墙者(Client)和 Server 之间的流量使用预先分享的秘钥 f 进行加密,包装成 TLS 包。在 GFW 看来,这就是 第三步 的普通 TLS 流量。
为了防止主动探测,对于攻击者构造的正常的其他 TLS 包,返回正常的 TLS 握手错误包(如协议不支持)。
TLS 1.3 在前几年被提出来,现在已经被广泛采用。
它的握手是这样的:
======== TLS 1.3 Handshake ========
1. Client --> [Supported Ciphers, SNI, Key A, etc] --> Server
Client 向 Server 发送 ClientHello,并且发送自己要访问的网址(SNI),支持的加密方法列表,秘钥A
2. Client <-- [Cipher I chose, Key B, Encrypted Signed Cert] -- Server
Server 向 Client 发送自己选用的加密方法,秘钥B,用秘钥A、B 使用Diffe-Hellmen 算法导出的共享秘钥e,使用e加密的服务器证书
3. Client <--> Server (Communicate using DH derived shared key)
Client 和 Server 之间使用秘钥 e 加密进行通信
=============================
利用这点:
翻墙者(Client)和 Server 之间的流量使用预先分享的秘钥 f 进行加密,包装成 TLS 包。在 GFW 看来,这就是 第三步 的普通 TLS 流量。
为了防止主动探测,对于攻击者构造的正常的其他 TLS 包,返回正常的 TLS 握手错误包(如协议不支持)。