An An ISP-Scale Deployme ment of Ta TapDance Presented by Nikita Borisov (@nikitab) https://refraction.network/
Internet Filtering • Applies at many layers • DNS manipulation • BGP manipulation • DPI / content inspection • Packet filtering: IP/port
Cat-and-mouse game • Censors identify and block proxies • Circumventors deploy and distribute new proxies • Advantage if proxies are: • Harder to find • Faster to deploy • Harder to block • Easier to distribute
TapDance : End-to-Middle Anticensorship without Flow Blocking Friendly ISP Client Reachable server NotBlocked.com TapDance Proxy 8
TapDance Protocol Overview TapDance Proxy Client Censor Reachable Server (TLS Handshake) K K 9
Incomplete HTTP request example GET / HTTP/1.1\r\n Host: www.site.com\r\n X-Ignore: u]DhsYGxVxEvuZEhESta…\r\n Encrypt \x1e\x91\xb2\xce\x94\x8a\x6b\x3c\x78\x8c\x6f\x03 \x5e\xef\x97\x34\xf1\x2e\xc6\xe6\x7f\x10\xc8\x46 \xf9\x25\x6a\x0c\xff\x6d\x38 … \x70\xd7\x2c\x63 … 10
Incomplete HTTP request example \x1e\x91\xb2\xce\x94\x8a\x6b\x3c\x78\x8c\x6f\x03 \x5e\xef\x97\x34\xf1\x2e\xc6\xe6\x7f\x10\xc8\x46 \xf9\x25\x6a\x0c\xff\x6d\x38 … \x70\xd7\x2c\x63 … TapDance Station station Decrypt private key Shared Secret: ; Client random: … 11
Client ¡ Decoy ¡ Server ¡ TLS ¡ 1 ¡ Handshake ¡ K ¡ K ¡ Enc K (incomplete ¡HTTP ¡request): ¡ ¡ 2 ¡ “\x95\x1f\x6b\x27\xe2 ¡… ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡\xc8\x3f\x22 ¡…” ¡ Tag ¡ TapDance ¡Sta2on ¡ Sta<on ¡extracts ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡, ¡recovers ¡ K ¡ ¡ 3 ¡ Tag ¡ 4 ¡ ACK ¡[seq=Y, ¡ack=X] ¡ ¡Server ¡ sends ¡ACK ¡ Sta<on ¡sends ¡confirma<on ¡ 5 ¡ and ¡waits ¡ Enc K (“Sta<on ¡here”), ¡[seq=Y, ¡ack=X, ¡len=M] ¡ ACK ¡[seq=X, ¡ack=Y+M] ¡ 6 ¡ Enc K (“GET ¡hSp://blocked.com/ ¡…”), ¡[seq=X, ¡ack=Y+M] ¡ Sta<on ¡sends ¡blocked.com ¡ 7 ¡ Enc K (“HTTP/1.1 ¡200 ¡OK ¡ ¡… ¡ ¡<html> ¡ ¡….”) ¡ EncryptedAlert, ¡FIN+ACK ¡[seq=X’, ¡ack=Y’, ¡len=N] ¡ Connec<on ¡ teardown ¡ 8 ¡ EncryptedAlert, ¡FIN+ACK ¡[seq=Y’, ¡ack=X’+N+1, ¡len=N] ¡ ¡ ACK ¡[seq=X’+N, ¡ack=Y’+N] ¡ Sta<on ¡sends ¡TCP ¡RST ¡ 9 ¡ RST ¡[seq=X, ¡ack=Y] ¡
TapDance Trial Deployment • Worked with two mid-size ISPs: 10 (or 40)-Gbps Management Mirror interface TapDance 1U server w/ station 4x10Gbps Intel X710 NIC
10 Gbps 40 Gbps 40 Gbps
University of Colorado Network Science network Upstream Campus network 10 Gbps Management Mirror interface Bro Cluster TapDance station
Reachable site discovery AS 237 AS 104 <List of trusted TLS sites> Timeout TCP window <List of sites that meet timeout/window thresholds> TapDance Client ~900 reachable sites <List of TapDance-compatible reachable sites>
TapDance client • 100% in Go • Partnered with Psiphon – Integrated TapDance in Psiphon’s Android app – Deployed to ~70K users in censored countries via remote update
Total traffic 60 Gbps 50 40 30 20 10
User traffic 800 Mbps 700 600 500 400 300 200 100
Detectability • A TapDance connection looks different from regular web browsing – DNS request – Connection scheduling – TLS negotiation (ClientHello, SNI) – HTTP request sizes
Detectability • A TapDance connection looks different from regular web browsing – DNS request • DoH/DoT – Connection scheduling • QUIC / ORIGIN Frame – TLS negotiation (ClientHello, SNI) • Encrypted SNI – HTTP request/response sizes • HTTP/2 PUSH
Detectability • A TapDance connection looks different from regular web browsing – DNS request • DoH/DoT Privacy from network observers – Connection scheduling makes censorship harder! • QUIC / ORIGIN Frame – TLS negotiation (ClientHello, SNI) • Encrypted SNI – HTTP request/response sizes • HTTP/2 PUSH
Looking for new ISP partners! An ISP-Scale Deployment of TapDance https://refraction.network/ 23
Recommend
More recommend