plaintext0123456789ABCDEF14 roundsSubBytesShiftRowsMixColumnsciphertext????????????????????????????????AES-256: 14 rounds of confusion + diffusion

Šifrování AES

11 min přečtenoKryptografie

AES je šifrovací algoritmus. Byl vybrán americkou vládou v roce 2001 po víceleté otevřené soutěži a stal se tahounem kryptografie pro celou moderní internetovou éru. TLS, WireGuard, BitLocker, FileVault, šifrování úložiště vašeho telefonu – všechny pod kapotou jsou AES.

Celé tělo článku je uvedeno níže v angličtině.

AES (Advanced Encryption Standard) je symetrická bloková šifra vybraná organizací NIST v roce 2001 po pětileté otevřené soutěži, která proti sobě postavila patnáct návrhů. Vítěz – původně pojmenovaný Rijndael, navržený belgickými kryptografy Joan Daemen a Vincent Rijmen – se stal šifrovacím standardem pro americká federální data a rychle výchozím pro téměř každý komerční systém.

Co znamená „symetrická bloková šifra“

Symmetric: šifruje stejný klíč. Porovnejte s kryptografií s veřejným klíčem (RSA, ECDH), kde existují samostatné klíče pro každý směr.

Bloková šifra: šifruje najednou kusy dat s pevnou velikostí. AES používá 128bitovou (16bajtovou) velikost bloku bez ohledu na velikost klíče.

Prostý text je rozdělen do bloků a každý blok je transformován řadou matematických operací pomocí klíče. Výstup je šifrovaný text stejné délky jako vstup.

Velikost klíče

AES podporuje tři velikosti klíčů:

  • AES-128 — 128bitový interní klíč, 10 kol operace
  • AES-192 — 192bitový klíč, 12 kol
  • AES-256 — 256bitový klíč, 14 kolXPLZ32Z34X3XX jsou považovány za bezpečné AES-128 má 2^128 možných klíčů, což je daleko za rozsahem hrubé síly – při jednom bilionu pokusů za sekundu trvá vyčerpání klíčového prostoru asi 10 sexdecillionů let. AES-256 je vybrán pro nominální dodatečnou bezpečnostní rezervu proti budoucímu kryptografickému pokroku, zejména kvantovému (Groverův algoritmus snižuje efektivní sílu klíče o polovinu proti kvantovým počítačům, takže AES-256 poskytuje postkvantovou úroveň zabezpečení 128 bitů). kola:

    • SubBytes — nahraďte každý bajt pomocí nelineární substituční tabulky (S-box).
    • ShiftRows — cyklicky posouvejte každý řádek stavu 4x4 matrix.
    • MixColumns — vynásobte každý sloupec pevnou maticí (ve speciálním konečném poli).
    • AddRoundKey — XOR s klíčem specifickým pro kolo odvozeným z hlavního klíče. záměna (každý výstupní bit závisí na mnoha klíčových bitech) a difúze (každý bit otevřeného textu ovlivňuje mnoho výstupních bitů) – dvě vlastnosti, které Shannon identifikoval jako zásadní pro bezpečnou šifru.

      Provozní režimy

      AES šifruje jeden blok po druhém. Chcete-li šifrovat delší data, režim provozu definuje, jak blokuje řetěz. Důležité režimy:

      • ECB (elektronický číselník) — každý blok je šifrován nezávisle. Nepoužívejte na nic; identické bloky otevřeného textu vytvářejí identický šifrovaný text a odhalují strukturu.
      • CBC (Cipher Block Chaining) — každý blok XORed s předchozím šifrovaným textem před zašifrováním. Standard po mnoho let; zranitelný vůči útokům padding-oracle, pokud není ověřen.
      • CTR (Counter) — zašifruje zvyšující se čítač a XOR pomocí prostého textu. Efektivně mění AES na proudovou šifru.
      • GCM (režim Galois/Counter) — CTR + autentizační značka v jednom průchodu. Dominantní moderní režim; používá TLS 1.3, WireGuard a většina nových protokolů. AEAD (Authenticated Encryption with Associated Data) je formální název pro tuto třídu.

      Pokud si dnes vybíráte režim AES, použijte AES-GCM, pokud nemáte konkrétní důvod, proč to neudělat. Obyčejný AES-CBC bez HMAC je footgun.

      Hardwarová akcelerace

      Intel představil instrukční sadu AES-NI v roce 2010; ARM udělal totéž o několik let později. Moderní CPU šifrují AES rychlostí přesahující 10 GB/s na jádro. Šifra je v podstatě zdarma v ceně CPU; úzkým hrdlem pro šifrovanou komunikaci je jen zřídka samotný AES.

      To je důvod, proč je AES-GCM výchozím nastavením moderních protokolů: je bezpečný a efektivně bezplatný na hardwaru. Bez hardwarové podpory je ChaCha20-Poly1305 preferovanou alternativou, protože je rychlejší než softwarový AES na jednoduchých CPU a jádrech ARM.

      Tam, kde se nepoužívá AES

      Některá místa se AES výslovně vyhýbají. WireGuard používá ChaCha20, protože protokol se zaměřuje na vestavěná zařízení a minimální rozmanitost šifrování. Starší protokoly (starší SSH, starší OpenVPN) jsou kvůli kompatibilitě stále výchozí pro jiné šifry. Tor používá kombinaci šifer vybraných spíše pro rozmanitost než pro výkon. Ale pro nové univerzální šifrování – šifrování disku, připojení TLS, šifrování souborů – je AES výchozí a bezpečná volba. Nejlepší akademický útok na plnou šifru snižuje náklady na hrubou sílu asi 4krát – což znamená, že efektivní zabezpečení AES-128 je kolem 126 bitů, což je stále zcela nepraktické prolomit. Útoky na postranní kanály (časování, analýza výkonu) mohou odhalit klíče, když je implementace naivní, ale implementace v konstantním čase s hardwarovou akcelerací tuto díru zacelují. Šifra je podle všech rozumných opatření bezpečná.

Často kladené otázky

Je AES-256 lepší než AES-128?
Nominálně bezpečnější, v praxi obojí daleko za praktickou hrubou silou. Hlavním důvodem, proč si vybrat AES-256, je postkvantová odolnost – Groverův algoritmus snižuje na polovinu efektivní zabezpečení proti kvantovým útočníkům, takže AES-256 poskytuje 128bitové postkvantové zabezpečení oproti 64bitovému AES-128 (což začíná být nepříjemné). Pro většinu kontextů je obojí v pořádku.
Lze AES prolomit?
Ne hrubou silou v žádné realistické době. Útoky postranním kanálem na špatně implementované AES obnovily klíče; existují kryptoanalytické útoky na redukované AES; ale plný 10/12/14-kolový AES s implementací v konstantním čase nemá žádné známé praktické přerušení. Samotná šifra je zvuková.
Proč některé systémy používají ChaCha20 místo AES?
Výkon na hardwaru bez AES-NI (embedded zařízení, starší jádra ARM, jednoduché mikrokontroléry). ChaCha20 je implementován softwarově při konkurenční rychlosti s hardwarově akcelerovaným AES. Na moderních x86 a ARM s AES-NI je AES obvykle rychlejší. WireGuard zvolil ChaCha20, aby zajistil konzistentní výkon napříč hardwarem.
Co je AES-GCM vs AES-CBC?
Oba jsou režimy provozu AES. AES-GCM je ověřené šifrování – zašifruje a vytvoří ověřovací značku v jednom průchodu, čímž zabrání neoprávněné manipulaci. AES-CBC je pouze šifrování; pokud potřebujete autentizaci, musíte přidat HMAC samostatně a získání správné kombinace je famózně snadné. Pro nové návrhy použijte GCM.
Chrání AES před kvantovými počítači?
Symetrické šifry jako AES jsou mnohem odolnější vůči kvantům než RSA nebo ECDH. Algoritmus Grover snižuje efektivní sílu klíče na polovinu – AES-256 se stává ekvivalentem 128bitového klasického klíče, což je stále neproveditelné. AES-128 se stává 64bitovým, což je nepříjemné. Post-quantum doporučení je AES-256 plus velké velikosti MAC tagů.
Vysvětlení šifrování AES: Šifra za téměř vším šifrovaným