Advanced Encryption Standard

Advanced Encryption Standard (AES), původním názvem Rijndael, je specifikace pro šifrování elektronických dat zavedená americkým Národním institutem pro standardy a technologie (NIST) v roce 2001.

AES je varianta Rijndaelovy blokové šifry vyvinutá dvěma belgickými kryptografy, Joan Daemen a Vincent Rijmen, kteří předložili návrh NIST během procesu výběru AES. Rijndael je rodina šifer s různými velikostmi klíčů a bloků. Pro AES vybral NIST tři členy rodiny Rijndael, každý s velikostí bloku 128 bitů, ale třemi různými délkami klíče: 128, 192 a 256 bitů.

AES nahrazuje Data Encryption Standard (DES), který byl publikován v roce 1977. Algoritmus popsaný AES je algoritmus se symetrickým klíčem, což znamená, že stejný klíč se používá pro šifrování i dešifrování dat.

AES je součástí normy ISO/IEC 18033-3. AES je k dispozici v mnoha různých šifrovacích balíčcích a je první (a jedinou) veřejně přístupnou šifrou schválenou americkou Národní bezpečnostní agenturou (NSA) pro přísně tajné informace při použití v kryptografickém modulu schváleném NSA.

AES je založen na principu návrhu známém jako substituční-permutační síť a je efektivní jak v softwaru, tak v hardwaru. Na rozdíl od svého předchůdce DES nepoužívá AES síť Feistel. Většina výpočtů AES se provádí v konkrétním konečném poli.

AES funguje na poli 4 x 4 sloupců hlavního řádu o 16 bytech b0, b1, ..., b15.

Velikost klíče použitá pro šifru AES určuje počet transformačních iterací, která převedou vstup, nazývaný prostý text, na konečný výstup, nazývaný šifrový text. Počet iterací je následující:

  • 10 iterací pro 128bitové klíče.
  • 12 iterací pro 192bitové klíče.
  • 14 iterací pro 256bitové klíče.

Každá iterace se skládá z několika kroků zpracování, včetně jednoho, který závisí na samotném šifrovacím klíči. K transformaci šifrovaného textu zpět na původní prostý text pomocí stejného šifrovacího klíče se použije sada zpětných iterací.

Popis algoritmu:

  1. KeyExpansion - klíče jsou odvozeny od šifrovacího klíče pomocí plánu klíčů AES. AES vyžaduje samostatný 128bitový blok klíčů pro každou iteraci plus jeden další.
  2. Přidání klíče počáteční iterace:
    1. AddRoundKey - každý bajt stavu je kombinován s bajtem klíče pomocí bitového xor.
  3. 9, 11 nebo 13 iterací:
    1. SubBytes - krok nelineární substituce, kde je každý bajt nahrazen jiným podle vyhledávací tabulky.
    2. ShiftRows - krok transpozice, kdy se poslední tři řádky stavu cyklicky posouvají o určitý počet kroků.
    3. MixColumns - lineární směšovací operace, která funguje na sloupcích stavu a kombinuje čtyři bajty v každém sloupci.
    4. AddRoundKey
  4. Finálová iterace (celkem 10, 12 nebo 14 iterací):
    1. SubBytes
    2. ShiftRows
    3. AddRoundKey