// 02 · Moderní kryptologie · Zápočet ZKR 2026

AES-128
CBC mód

Typ: Symetrická bloková šifra
Vznik: 1998 (standard 2001)
Klíč: 128 / 192 / 256 bitů
Status: Bezpečná (NIST standard)

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.

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.

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)
ShiftRows — cyklický posun řádků state matice (0, 1, 2, 3 pozice)
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
SubBytes ShiftRows MixColumns AddRoundKey
Runda 10
SubBytes ShiftRows AddRoundKey
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.

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
SubBytes ShiftRows MixColumns AddRoundKey Finální stav

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 —
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.

Š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.
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č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.
Kde AES chrání tvoje data dnes?
HTTPS (TLS 1.3) · WiFi WPA2/WPA3 · BitLocker / FileVault · Signal / WhatsApp · SSH · VPN (OpenVPN, WireGuard) · AWS S3 šifrování · iOS/Android šifrování telefonu