FINDING · DETECTION
The GFW's fully-encrypted detector (deployed Nov 2021) operates by exempting likely-benign traffic and blocking the rest. Five inferred exemption rules applied to the first TCP payload (pkt): Ex1 — popcount(pkt)/len(pkt) ≤ 3.4 or ≥ 4.6 (bits/byte); Ex2 — first 6+ bytes are printable ASCII [0x20–0x7e]; Ex3 — more than 50% of bytes are printable ASCII; Ex4 — more than 20 contiguous printable ASCII bytes; Ex5 — first bytes match TLS or HTTP fingerprint. Traffic failing all five exemptions is blocked. Experiments confirmed all rules still held as of February 2023.
From 2023-wu-fully-encrypted-detect — How the Great Firewall of China detects and blocks fully encrypted traffic · §4, Algorithm 1 · 2023 · USENIX Security
Implications
- Prepend 6+ printable ASCII bytes to the first packet (or spoof a TLS/HTTP header prefix) to trigger Ex2 or Ex5 and bypass the detector; this was adopted by Shadowsocks-rust, V2Ray, Outline, and others starting January 2022.
- Alternatively, bias the ciphertext popcount outside [3.4, 4.6] bits/byte (Ex1) by appending padding bits and shuffling; implemented in Shadowsocks-rust as the 'shadow-tls' padding scheme from October 2022.
- Any 'looks like nothing' protocol must account for all five exemption rules; Ex3 and Ex4 catch payloads that start with a non-printable header but have many printable bytes elsewhere in the first packet.
Tags
Extracted by claude-sonnet-4-6 — review before relying.