HomeCybersecurityCBC Padding Oracle Attack — Query Lattice (2D)

CBC Padding Oracle Attack — Query Lattice (2D)

Interactive 2D simulator of the CBC padding-oracle attack that broke TLS record-layer encryption (BEAST/POODLE/Lucky13-class), running against REAL AES-128-CBC encryption (Web Crypto's crypto.subtle) instead of a toy cipher: watch the 256x16 oracle-query lattice fill in live as each byte of a genuine ciphertext block is recovered using only padding-valid/invalid responses.

Cybersecurity2DAdvanced60 FPS📱 Mobile-adapted⇄ 3D version
2d-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 runs the attack for real: it generates a fresh AES-128 key with crypto.subtle.generateKey, encrypts a random 16-byte secret block with a random IV, and then recovers that secret byte-by-byte using nothing but padding-valid/invalid responses from crypto.subtle.decrypt — the same primitive a real vulnerable TLS server exposes. The 2D lattice renders the actual 256-guess search at every byte position as it happens, so the fill pattern you see is the real geometric query-cost distribution, not a canned animation. Switch 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

Watch the real 256x16 oracle-query search lattice fill in live as a genuine AES-128-CBC ciphertext block (encrypted in-browser with crypto.subtle) is recovered byte-by-byte using only padding-valid/invalid responses — the same algorithm behind BEAST/POODLE/Lucky13 — then switch to AEAD/GCM to see why authenticated encryption blocks the attack outright.

TLSCBCpadding oracleAEADcryptographynetwork securityAESWeb Crypto

2D · HTML5 Canvas 2D · 60 FPS target · runs fully client-side, no install

What did you find?

Add reproduction steps (optional)