Advanced Encryption Standard — od roku 2001 světový standard pro symetrické šifrování.
Používán v TLS, VPN, WiFi (WPA2), šifrování disků a tisících dalších aplikacích.
Změna jediného bitu klíče zcela změní celý výstup — tzv. avalanche efekt.
// Historie
Od soutěže NIST ke světovému standardu
AES vznikl jako náhrada za stárnoucí DES (Data Encryption Standard, 1977),
jehož 56bitový klíč byl v roce 1999 prolomen hrubou silou za méně než 24 hodin.
NIST (National Institute of Standards and Technology) vyhlásil mezinárodní soutěž.
1997
NIST vyhlašuje mezinárodní soutěž o nový šifrovací standard. Přihlásilo se 15 kandidátů z celého světa.
1998–2000
Veřejná kryptoanalýza všech kandidátů. Do finále postoupilo 5 šifer: Rijndael, Serpent, Twofish, RC6, MARS.
2001
Joan Daemen a Vincent Rijmen (Belgičané) zvítězili se šifrou Rijndael. NIST ji standardizoval jako AES (FIPS 197).
2003
NSA schválila AES-128 pro utajované informace, AES-256 pro přísně tajné. Globální adopce v TLS, WiFi, VPN.
Dnes
AES je nejpoužívanější symetrická šifra na světě. Hardware akcelerace (AES-NI instrukce) v každém moderním procesoru.
// Teorie
Jak AES funguje
AES je bloková šifra — šifruje data po blocích 128 bitů (16 bajtů).
Operuje nad čtvercovou maticí 4×4 bajtů (state). Klíč 128 bitů = 10 rund
transformací, každá runda skládá čtyři operace.
Čtyři operace AES rundy
SubBytes — nelineární substituce každého bajtu pomocí S-boxu (8×8 lookup table)
MixColumns — lineární transformace sloupců v GF(2⁸) — zajišťuje difúzi
AddRoundKey — XOR state s rundovním klíčem (z key schedule)
Poslední runda vynechává MixColumns. Inicializační runda provede pouze AddRoundKey.
Runda 0
AddRoundKey
Rundy 1–9
SubBytesShiftRowsMixColumnsAddRoundKey
Runda 10
SubBytesShiftRowsAddRoundKey
CBC mód (Cipher Block Chaining)
Šifrování: Ci = AESK(Pi ⊕ Ci-1) kde C0 = IV
Dešifrování: Pi = AESK-1(Ci) ⊕ Ci-1
IV = Initialization Vector (náhodný 16bajtový vektor, přenáší se spolu s ciphertextem)
CBC zajišťuje, že stejný plaintext vždy produkuje jiný ciphertext (díky IV).
Proč CBC? Bez řetězení bloků (ECB mód) by stejné bloky plaintextu produkovaly
stejné bloky ciphertextu — vzory by zůstaly viditelné. CBC každý blok před šifrováním XORuje
s předchozím ciphertextem, čímž eliminuje jakékoli vzory.
// Vizualizace
Animace šifrování krok za krokem
Sleduj jak se 16bajtový blok plaintextu transformuje přes všech 10 rund AES.
Každá buňka je jeden bajt — barva ukazuje aktuální operaci.
AES State Matrix — 10 rund
Rychlost:
Inicializace — AddRoundKey (Runda 0)
Plaintext XOR klíč
State (4×4 bajty)
Průběh rund
SubBytesShiftRowsMixColumnsAddRoundKeyFinální stav
// Implementace
Interaktivní šifrování
Implementace používá Web Crypto API — nativní kryptografická knihovna prohlížeče,
stejný AES který chrání HTTPS komunikaci. Žádný kód se nepřenáší na server.
AES-128-CBC šifrování / dešifrování
Klíč musí být přesně 16 znaků (= 128 bitů). IV se generuje náhodně při každém šifrování
a je uložen na začátku výstupu (prvních 32 hex znaků = 16 bajtů IV).
— generuje se automaticky —
⚠ Klíč musí mít přesně 16 znaků (aktuálně: 0)
—
Formát výstupu: IV (32 hex znaků) + ciphertext (hex). Při dešifrování vlož celý hex výstup — IV se extrahuje automaticky. Proč špatný klíč vrací hex? Web Crypto API odmítne vrátit text při neplatném paddingu (ochrana před padding oracle útokem) — zobrazujeme proto surové dešifrované bajty jako hex. Animace: Po zašifrování se vizualizace rund automaticky aktualizuje a posune na ni stránka.
// Zápočtová ukázka
Šifrování textu a avalanche efekt
Níže je ukázka šifrování delšího textu, jeho správného dešifrování a
neúspěšného dešifrování při změně jediného bitu klíče.
Avalanche efekt AES zajistí, že výstup bude zcela odlišný.
Originální text
Kryptografie je věda zabývající se utajováním informací pomocí matematických metod. AES (Advanced Encryption Standard) byl přijat jako světový standard v roce 2001 po mezinárodní soutěži vyhlášené institutem NIST. Nahradil zastaralý DES, jehož 56bitový klíč byl prolomen hrubou silou. AES používá klíče délky 128, 192 nebo 256 bitů a je považován za bezpečný i vůči kvantovým počítačům při použití 256bitového klíče.
—
—
—
// Avalanche efekt — porovnání ciphertextů
Jeden 16bajtový blok plaintextu, nulový IV, klíč se liší o 1 bajt (poslední znak).
Porovnáváme čistý AES výstup bez CBC řetězení — to by zkreslilo výsledek na ~100 % kvůli kaskádě bloků.
Správný avalanche efekt = ~50 % odlišných bitů.
Správný klíč
—
Změněný klíč (poslední bajt +1)
—
Odlišné bajty z prvních 64:
—
Ideální avalanche = ~50% odlišných bitů
Proč špatný klíč produkuje nesmysl?
AES je navržen tak, aby každý bit výstupu závisel na každém bitu klíče i plaintextu.
Změna jediného bitu klíče způsobí lavinový efekt přes všech 10 rund — v průměru se změní
~50 % bitů výstupu. Dešifrování špatným klíčem produkuje pseudonáhodná data.
// Bezpečnost & pravidla
Bezpečnostní analýza
AES-128 nabízí 2128 možných klíčů — přibližně
3.4 × 1038. Nejrychlejší superpočítač by potřeboval více času než je stáří
vesmíru pro prolomení hrubou silou. Nejlepší teoretický útok (biclique attack, 2011)
snižuje bezpečnost na 2126.1 — prakticky nevýznamné.
Pravidla bezpečného použití AES-CBC:
1. Klíč musí být náhodný — ne heslo přímo. Použij PBKDF2 nebo Argon2 pro derivaci klíče z hesla.
2. IV musí být náhodný a unikátní pro každou zprávu — nikdy neopakovat IV se stejným klíčem.
3. Autentizace — CBC samo o sobě neověřuje integritu. Použij AES-GCM nebo přidej HMAC.
4. Nikdy neimplementuj AES sám — použij prověřené knihovny (OpenSSL, libsodium, Web Crypto API).
Důsledky porušení protokolu: Opakování IV: Útočník může XORem dvou ciphertextů získat XOR plaintextů — průlom anonymity. Padding oracle: Pokud server odhaluje padding chyby, lze dešifrovat ciphertext bez znalosti klíče (CBC padding oracle attack). Slabý klíč: Hesla jako klíče jsou prolomitelná slovníkovým útokem — vždy derivuj klíč přes KDF.