HomeCybersecurityCBC Padding Oracle Attack on TLS

CBC Padding Oracle Attack on TLS

Interactive 3D simulator of the CBC padding-oracle attack that broke TLS record-layer encryption (BEAST/POODLE/Lucky13-class): recover a secret ciphertext block byte-by-byte using only padding-valid/invalid oracle responses, and see why AEAD ciphers (TLS 1.3's mandatory AES-GCM/ChaCha20-Poly1305) close the hole outright.

Cybersecurity3DAdvanced60 FPS
ssl-tls ↗ Open standalone

Before TLS 1.3, browsers negotiated CBC-mode block ciphers whose record layer decrypted each 16-byte block as DK(Ci) ⊕ Ci−1 and then stripped PKCS#7 padding — and if a server ever signalled, even indirectly through timing, whether that padding came out valid, it handed an attacker a one-bit oracle per query. This simulator renders the attack live in 3D: three rows of instanced byte-blocks represent the attacker-forged previous ciphertext block, the fixed target ciphertext block, and the plaintext byte being recovered, while the actual Vaudenay padding-oracle algorithm runs underneath — trying up to 256 guesses per byte position and confirming each one against a real padding check. Switch the cipher mode to AEAD/GCM to see why the same attack is instantly rejected: authenticated encryption checks the integrity tag before touching the padding at all, which is exactly why TLS 1.3 made AEAD ciphers mandatory and dropped CBC suites entirely.

⚙ Under the hood

Recover a secret TLS ciphertext block byte-by-byte using only padding-valid/invalid oracle responses (the real algorithm behind BEAST/POODLE/Lucky13), then switch to AEAD/GCM to see why authenticated encryption blocks the attack outright.

TLSCBCpadding oracleAEADcryptographynetwork security

3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install

What did you find?

Add reproduction steps (optional)