TapDance introduces chosen-ciphertext steganography, which allows the client to embed an arbitrary-length hidden message inside a valid TLS ciphertext without invalidating the TLS MAC or session. By exploiting ciphertext malleability in both stream-cipher (counter) mode and CBC mode, the client can choose specific byte values to appear in the ciphertext while constraining plaintext to a safe ASCII range (0x40–0x7F), encoding 6 bits of tag data per ciphertext byte. This provides unbounded covert-channel bandwidth, compared to the fixed 224-bit TLS nonce used by Telex and Decoy Routing or the 24-bit TCP ISN used by Cirripede.
From 2014-wustrow-tapdance — TapDance: End-to-Middle Anticensorship without Flow Blocking
· §3, §6
· 2014
· USENIX Security Symposium
Implications
Embedding covert signals in application-layer ciphertext (post-handshake TLS data) rather than fixed handshake fields removes size constraints and eliminates the need for multiple flows to convey a full tag.
Constrain the resulting plaintext to a plausible ASCII character class so that any middlebox inspecting plaintext (e.g., via TLS interception) does not observe anomalous byte patterns.