AES (standard šifrování)

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 7. března 2021; kontroly vyžadují 20 úprav .
AES, Rijndael-AES, Rijndael
Tvůrce Vincent Rayman
Yoan Dymen
Vytvořeno 1998 _
Velikost klíče 128/192/256 bitů
Velikost bloku 128 bit
Počet kol 10/12/14 (závisí na velikosti klíče)
Typ Substitučně-permutační síť
 Mediální soubory na Wikimedia Commons

AES ( Advanced Encryption Standard ; také Rijndael , [rɛindaːl] -   reindal ) je symetrický algoritmus blokové šifry (velikost bloku 128 bitů, klíč 128/192/256 bitů), přijatý jako šifrovací standard vládou USA v důsledku Soutěž AES . Tento algoritmus byl dobře analyzován a nyní je široce používán, jako tomu bylo u jeho předchůdce DES . Americký Národní institut pro standardy a technologie (NIST) zveřejnil specifikaci AES 26. listopadu 2001   po pětiletém období, během kterého bylo vytvořeno a vyhodnoceno 15 nominací. 26. května 2002 byl AES oznámen jako šifrovací standard. Od roku 2009 je AES jedním z nejpoužívanějších symetrických šifrovacích algoritmů [1] [2] . Podporu pro akceleraci AES zavedl Intel do rodiny procesorů x86 počínaje Arrandale v roce 2010 a později u procesorů Sandy Bridge ; AMD je u Bulldozeru od roku 2011.

Historie AES

2. ledna 1997 NIST oznamuje [3] svůj záměr vybrat nástupce DES , který je od roku 1977 americkým standardem . 2. října 2000 bylo oznámeno, že vítězem soutěže se stal Rijndaelův algoritmus [4] a byla zahájena procedura standardizace. 28. února 2001 byl návrh zveřejněn a 26. listopadu 2001 byl AES přijat jako FIPS 197. Historickou retrospektivu soutěže lze nalézt na webu NIST [5] .

Popis AES

Definice a pomocné procedury

Definice
blok sekvence bitů, které tvoří vstup, výstup, stav a kulatý klíč. Blok lze také chápat jako sekvenci bajtů
Šifrovací klíč tajný kryptografický klíč, který je používán procedurou Key Expansion k vytvoření sady kulatých klíčů; může být reprezentováno jako obdélníkové bajtové pole se čtyřmi řádky a Nk sloupci
Šifrovaný text výstup šifrovacího algoritmu
rozšíření klíče postup pro generování kulatých klíčů ze šifrovacího klíče
Kulatý klíč Kulaté klíče se získávají ze šifrovacího klíče pomocí procedury Key Expansion. Jsou aplikovány na stát při šifrování a dešifrování
Stát výsledek středního šifrování, který může být reprezentován jako obdélníkové bajtové pole se 4 řádky a Nb sloupci
S box nelineární substituční tabulka používaná v několika bajtových substitučních transformacích a v proceduře Key Expansion pro substituci hodnoty bajtu jedna ku jedné. Předem vypočítaný S-box je vidět níže
Nb počet sloupců (32bitová slova), které tvoří stav . Pro AES Nb = 4
Nk počet 32bitových slov, která tvoří šifrovací klíč. Pro AES Nk = 4, 6 nebo 8
Ne. počet nábojů, který je funkcí Nk a Nb . Pro AES č . = 10, 12, 14
Rcon[] pole, které se skládá z bitů 32bitového slova a je konstantní pro dané kolo. Předběžně vypočítané Rcon[] lze vidět níže

S box

sbox = pole{ 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 };

Reverzní S-box pro proceduru InvSubBytes

InvSbox = pole{ 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d };

Rcon[]

Rcon = pole{ pole{0x00, 0x00, 0x00, 0x00}, pole{0x01, 0x00, 0x00, 0x00}, pole{0x02, 0x00, 0x00, 0x00}, pole{0x04, 0x00, 0x00, 0x00}, pole{0x08, 0x00, 0x00, 0x00}, pole{0x10, 0x00, 0x00, 0x00}, pole{0x20, 0x00, 0x00, 0x00}, pole{0x40, 0x00, 0x00, 0x00}, pole{0x80, 0x00, 0x00, 0x00}, pole{0x1b, 0x00, 0x00, 0x00}, pole{0x36, 0x00, 0x00, 0x00} }; Pomocné procedury
AddRoundKey() transformace během šifrování a zpětného šifrování, ve kterém Round Key XOR je stav c. Délka RoundKey je rovna velikosti State (tj. pokud Nb = 4, pak je délka RoundKey 128 bitů nebo 16 bajtů)
InvMixColumns() transformace při dešifrování, což je opak MixColumns()
InvShiftRows() transformace při dešifrování, což je opak ShiftRows()
InvSubBytes() transformace při dešifrování, což je inverze k SubBytes()
MixColumns() transformace šifrování, která vezme všechny sloupce State a smíchá jejich data (nezávisle na sobě), aby získala nové sloupce
RotWord() funkce používaná v proceduře Key Expansion, která bere 4bajtové slovo a cyklicky jej prochází
ShiftRows() šifrovací transformace, které zpracovávají Stav, cyklicky posouvají poslední tři řádky Stavu o různé hodnoty
SubBytes() šifrovací transformace, které zpracovávají stav pomocí nelineární bajtové substituční tabulky (S-box), aplikují ji nezávisle na každý bajt stavu
Podslovo() funkce používaná v proceduře Key Expansion, která přijímá čtyřbajtové slovo jako vstup a použitím S-boxu na každý ze čtyř bajtů vytvoří výstupní slovo

Šifrování

AES je standard založený na Rijndaelově algoritmu. Pro AES je délka vstupu (blok vstupních dat) a Stav (stav) konstantní a rovná se 128 bitům a délka šifrovacího klíče K je 128, 192 nebo 256 bitů. Původní Rijndaelův algoritmus zároveň umožňuje délku klíče a velikost bloku od 128 do 256 bitů s krokem 32 bitů. Pro označení zvolených délek vstupu, stavu a šifrovacího klíče ve 32bitových slovech, se pro různé délky klíče používá označení Nb = 4 pro vstup a stav, Nk = 4, 6, 8 pro šifrovací klíč.

Na začátku šifrování se vstup zkopíruje do pole State s pravidlem , for a . Poté se na stav aplikuje procedura AddRoundKey() a poté stav prochází transformační procedurou (kolem) 10, 12 nebo 14krát (v závislosti na délce klíče), přičemž se bere v úvahu, že poslední kolo je mírně odlišné od předchozích. Výsledkem je, že po dokončení posledního kola transformace je State zkopírován na výstup podle pravidla , for a .

Samostatné transformace SubBytes(), ShiftRows(), MixColumns() a AddRoundKey() zpracovávají stav. Pole w[] - obsahuje plán klíče.

Šifra(byte in[4*Nb], byte out[4*Nb], slovo w[Nb*(Nr+1)]) začít stav bytu[4,Nb] stav = v AddRoundKey(stav, w[0, Nb-1]) pro kolo = 1 krok 1 až Nr-1 SubBytes (stav) ShiftRows(stav) MixColumns (stav) AddRoundKey(stav, w[kolo*Nb, (kolo+1)*Nb-1]) konec pro SubBytes (stav) ShiftRows(stav) AddRoundKey(stav, w[Nr*Nb, (Nr+1)*Nb-1]) ven = stát konec

Obr. 1. Pseudokód pro šifru

SubBytes()

Procedura SubBytes() zpracovává každý stavový bajt nezávisle provedením nelineární substituce bajtů pomocí substituční tabulky (S-box). Tato operace zajišťuje nelinearitu šifrovacího algoritmu. Stavba S-boxu se skládá ze dvou kroků. Nejprve se vezme reciproká hodnota pole Galois . Pro všechny operace v tomto poli se používá ireducibilní polynom . Za druhé, pro každý bajt b, který tvoří S-box, se použije následující operace:

kde a kde je i-tý bit b a  je i-tý bit konstanty . To poskytuje ochranu proti útokům na základě jednoduchých algebraických vlastností.

ShiftRows()

ShiftRowspracuje se stavovými řetězci. Při této transformaci se stavové řádky cyklicky horizontálně posouvají o r bajtů v závislosti na čísle řádku. Pro nulový řádek je r = 0, pro první řádek r = 1 B atd. Každý sloupec výstupního stavu po aplikaci procedury se tedy ShiftRowsskládá z bajtů z každého sloupce výchozího stavu. Pro algoritmus Rijndael je vzor posunu řetězce pro 128bitové a 192bitové řetězce stejný. U 256bitového bloku se však od předchozích liší tím, že 2., 3. a 4. řádek jsou posunuty o 1, 3 a 4 bajty. Tato poznámka se netýká AES, protože používá pouze Rijndaelův algoritmus se 128bitovými bloky, bez ohledu na velikost klíče.

MixColumns()

Postup MixColumnsmíchá čtyři bajty každého sloupce Stav pomocí reverzibilní lineární transformace. MixColumnszpracovává stavy po sloupcích, přičemž každý z nich považuje za polynom třetího stupně. Tyto polynomy se násobí [6] in modulo pevným polynomem . Spolu s zavádí difúzi do šifry. ShiftRows MixColumns

AddRoundKey()

AddRoundKey RoundKeyKombinuje se se stavem v každém kole postupu . Pro každé kolo Roundkey se získá z CipherKeyc pomocí postupu KeyExpansion; každý RoundKey má stejnou velikost jako State. Procedura provádí bitové XOR každého bajtu States každým bajtem RoundKey.

Algoritmus zpracování klíče

Algoritmus zpracování klíče se skládá ze dvou procedur:

  • Algoritmus generování kulatého klíče (algoritmus rozšíření klíče)
  • Algoritmus pro výběr kulatého klíče (iterační klíč)

Algoritmus pro generování kulatých klíčů

Algoritmus AES, který používá proceduru KeyExpansion() a dodává ji šifrovací klíč, K, získává klíče pro všechna kola. Celkem je Nb*(Nr + 1) slov: zpočátku algoritmus potřebuje sadu Nb slov a každé z Nr kol potřebuje Nb klíčové datové sady. Výsledné pole klíčů pro kola je označeno jako , . Algoritmus KeyExpansion() je zobrazen v pseudokódu níže.

Funkce SubWord() trvá čtyřbajtové vstupní slovo a aplikuje S-box na každý ze čtyř bajtů. Co se stalo, je přivedeno na výstup. RotWord() bere slovo jako vstup , kterým prochází a vrací . Pole slov, které je pro toto kolo konstantní , obsahuje hodnoty , kde x = {02} a je mocninou ( začíná od 1) .

Z obrázku můžete vidět, že první slova rozšířeného klíče jsou vyplněna šifrovacím klíčem. Do každého následujícího slova se vloží hodnota získaná během operace XOR a ty XOR z předchozích a Nk pozic před slova. Pro slova, jejichž pozice je násobkem Nk, se použije transformace na w[i-1] před XOR, po které následuje XOR s kulatou konstantou Rcon[i]. Výše uvedená transformace sestává z kruhového posunu bajtů ve slově (RotWord()) následovaného procedurou SubWord() - stejně jako SubBytes(), pouze vstupní a výstupní data budou mít velikost slova.

Je důležité si uvědomit, že postup KeyExpansion() pro 256bitový šifrovací klíč se mírně liší od postupu pro 128bitové a 192bitové šifrovací klíče. Jestliže a je násobkem , pak se SubWord() použije před XOR'a.

KeyExpansion(byte key[4 * Nk], word w[Nb * (Nr+1)], Nk) začít teplota slova i = 0; while(i < Nk) w[i] = slovo(klávesa[4*i], klávesa[4*i+1], klávesa[4*i+2], klávesa[4*i+3]) i = i + 1 konec chvíle i = Nk while(i < Nb * (Nr+1)) teplota = w[i - 1] if (i mod Nk = 0) temp = SubWord(RotWord(temp)) xor Rcon[i / Nk] jinak if (Nk > 6 a i mod Nk = 4) temp = Podslovo (temp) konec pokud w[i] = w[i - Nk] xor tepl i = i + 1 konec chvíle konec

Pseudokód pro rozšíření klíče

Dešifrování

InvCipher(byte in[4 * Nb], byte out[4 * Nb], word w[Nb * (Nr+1)]) začít stav bytu[4, Nb] stav = v AddRoundKey(stav, w[Nr * Nb, Nb * (Nr+1) - 1]) pro kolo = Nr - 1 krok -1 dolů na 1 InvShiftRows(stav) InvSubBytes (stav) AddRoundKey(stav, w[Nb * kolo, Nb * (kolo+1) - 1]) InvMixColumns(stav) konec pro InvShiftRows(stav) InvSubBytes (stav) AddRoundKey(stav, w[0, Nb - 1]) ven = stát konec

Pseudokód pro inverzní šifru

Algoritmus pro výběr kulatého klíče

Při každé iteraci se z pole vybere kulatý klíč pro operaci AddRoundKey , počínaje prvkem až .

Varianty algoritmu

Na základě Rijndaelova algoritmu, který je základem AES, jsou implementovány alternativní kryptoalgoritmy. Mezi nejznámější patří účastníci soutěže Nessie : Anubis o involucích, jejímž autorem je Vincent Rayman, a vylepšená verze šifry - Grand Cru od Johana Borsta.

Zabezpečení

V červnu 2003 americká Národní bezpečnostní agentura zjistila, že AES je dostatečně silný na to, aby mohl být použit k ochraně utajovaných informací .  Do úrovně SECRET bylo povoleno používat klíče 128 bitů, pro úroveň TOP SECRET byly vyžadovány klíče 192 a 256 bitů [7] .

XSL útok

Na rozdíl od většiny ostatních šifer má AES jednoduchý matematický popis. To znepokojilo mimo jiné Nielse Fergusona , který ve své práci poznamenal, že bezpečnost šifry je založena na novém nevyzkoušeném předpokladu o složitosti řešení určitých typů rovnic ( anglicky  „The security of Rijndael závisí na novém a nevyzkoušeném předpokladu tvrdosti : je výpočetně nemožné řešit rovnice tohoto typu" ) [8] [9] , stejně jako Bruce Schneier, který ve společné knize s Nilsem napsal:

K AES máme jednu kritiku: moc nedůvěřujeme jeho bezpečnosti. Co nás na AES nejvíce znepokojuje, je jeho jednoduchá algebraická struktura… Žádná jiná bloková šifra nemá tak jednoduché algebraické vyjádření. Nemáme ponětí, zda to vede k útoku nebo ne, ale nevědomost je dostatečným důvodem k tomu, abychom byli k používání AES skeptičtí.

Původní text  (anglicky)[ zobrazitskrýt] K AES máme jednu kritiku: nedůvěřujeme zcela zabezpečení... Co nás na AES nejvíce znepokojuje, je jeho jednoduchá algebraická struktura... Žádná jiná bloková šifra, o které víme, nemá tak jednoduché algebraické vyjádření. Nemáme ponětí, zda to vede k útoku nebo ne, ale nevědomost je dostatečným důvodem k tomu, abychom byli skeptičtí ohledně použití AES - Niels Ferguson , Bruce Schneier Praktická kryptografie - 2003 - str. 56-57

Nicolas Courtois a Josef  Pieprzyk publikovaliv roce 2002 článek , ve kterém popsali teoretický útok, který nazvali XSL útok ( eXtended Sparse Linearization ), který by mohl umožnit prolomení AES šifer a Hada [10] [11] . Ne všichni však výsledky práce přijali optimisticky:   

Domnívám se, že v práci Courtoise-Pepshika je chyba. Nadhodnotili počet lineárně nezávislých rovnic. V důsledku toho nemají dostatek lineárních rovnic k řešení systému a [specifikovaná] metoda nemůže Rijndaela rozlousknout. Má nějakou zásluhu a stojí za prozkoumání, ale Rijndael ve své současné podobě nehackuje.

Původní text  (anglicky)[ zobrazitskrýt] Domnívám se, že práce Courtoise-Pieprzyka je chybná. Přepočítávají počet lineárně nezávislých rovnic. Výsledkem je, že ve skutečnosti nemají dostatek lineárních rovnic k vyřešení systému a metoda Rijndaela nerozbije… Metoda má určitou hodnotu a stojí za to ji prozkoumat, ale Rijndaela tak, jak stojí, nerozbije. — Don Coppersmith , komentář k blogovému příspěvku od Bruce Schneiera

Na stránce věnované diskusi o soutěži NESSIE , koncem roku 2002 jeden z autorů šifry Vincent Rayman uvedl, že XSL útok je jen sen ( anglicky  The XSL attack is not an attack. It is a dream ) (tento pohled byl později zopakován v roce 2004 na 4. konferenci AES v Bonnu ). Na to Courtois odpověděl, že tento sen by se pro autora AES mohl stát noční můrou ( anglicky  It may also be a very bad dream and turn into a nightmare ) [12] (hra se slovy: sen se překládá jak jako sen , tak jako sen . Nightmare se překládá jako noční můra, noční můra ).

V roce 2003 Sean Murphy a Matt Robshaw publikovali  článek , ve kterém ( za předpokladu, že výsledky Courtoise a Pepshika jsou správné) odůvodnili možnost útoku na algoritmus AES, čímž se počet operací pro cracknutí snížil z 2128 na 2100 . Na 4. konferenci AES však  Ilia Toli a Alberto Zanoni ukázali, že práce Murphyho a Robshawa byla nesprávná [ 13] .  Později, v roce 2007, Chu-Wee Lim a Khoongming Khoo také ukázali, že tento útok nemůže fungovat tak, jak je popsáno [14 ] .  

Útok na boční kanál

Útoky postranním kanálem nesouvisí s matematickými rysy šifry, ale využívají určité implementační vlastnosti systémů využívajících tyto šifry za účelem odhalení částečně nebo zcela tajných dat, včetně klíče. Existuje několik podobných útoků na systémy využívající algoritmus AES.

V dubnu 2005 publikoval Daniel J. Bernstein  článek popisující útok, který využívá informace o době provádění každé šifrovací operace k prasknutí [15] . Tento útok vyžadoval k nalezení klíče přes 200 milionů vybraných šifrových textů [16] .

V říjnu 2005 představili Doug Arne Osvik, Adi Shamir a Eran Trumer článek popisující několik útoků, které využívají čas k nalezení klíče. Jeden z prezentovaných útoků získal klíč po 800 šifrovacích operacích. Útok vyžadoval, aby kryptoanalytik mohl spouštět programy na stejném systému, kde bylo šifrování provedeno [17] .

V prosinci 2009 byl publikován článek, ve kterém použití diferenciální analýzy chyb ( angl.  Differential Fault Analysis ), uměle vytvořené ve stavové matici v 8. kole šifrování, umožnilo obnovit klíč ve 2 32 operacích [18 ] .

Viz také

Poznámky

  1. Čekanovova laboratoř. Intel Core i5 (Clarkdale): Analýza hardwarové akcelerace šifrování AES . THG (19. ledna 2010). - "nejoblíbenější standard pro symetrické šifrování ve světě IT." Získáno 14. listopadu 2010. Archivováno z originálu 26. února 2012.
  2. Birjukov, Alex a Chovratovič, Dmitrij. Related-key Cryptanalysis of the Full AES-192 and AES-256  (anglicky)  // Advances in Cryptology - ASIACRYPT 2009. - Springer Berlin / Heidelberg, 2009. - Vol. 5912 . - str. 1-18 . - doi : 10.1007/978-3-642-10366-7_1 . Archivováno z originálu 18. prosince 2010.
  3. Archivovaná kopie (odkaz není dostupný) . Získáno 7. prosince 2006. Archivováno z originálu 6. listopadu 2006. 
  4. Chybová stránka NIST archivována 28. září 2010.
  5. Bounce to index.html Archivováno 17. července 2014.
  6. http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf Archivováno 7. dubna 2015 na Wayback Machine "5.1.3 MixColumns() Transformation .. Sloupce jsou považovány za polynomy nad GF( 2^8) a vynásobený modulo x^4 + 1 pevným polynomem a(x), daným vztahem a(x) = {03}x³ + {01}x² + {01}x + {02}."
  7. ↑ Národní politika pro používání pokročilého šifrovacího standardu (AES) k ochraně národních bezpečnostních systémů a informací o národní bezpečnosti  . Výbor pro národní bezpečnostní systémy (červen 2003). Datum přístupu: 27. října 2010. Archivováno z originálu 19. února 2012.
  8. James McLaughlin. Kontroverze XSL // Přehled technik šifrování blokových šifer . - tisk. - York: University of York, 2009.  (nepřístupný odkaz)
  9. Niels Ferguson, Richard Schroeppel a Doug Whiting. Jednoduchá algebraická reprezentace Rijndaela  //  Selected Areas in Cryptography, Proc. SAC 2001, Poznámky k přednáškám z informatiky #2259. - Springer Verlag, 2001. - S. 103-111 . Archivováno z originálu 16. ledna 2016.
  10. Bruce Schneier. Crypto-Gram  Newsletter . Schneier o bezpečnosti (15. září 2002). Datum přístupu: 27. října 2010. Archivováno z originálu 19. února 2012.
  11. Nicolas Courtois, Josef Pieprzyk. Kryptoanalýza blokových šifer s předefinovanými systémy rovnic  //  Pokroky v kryptologii - ASIACRYPT 2002 8. mezinárodní konference o teoretické aplikaci kryptologie a informační bezpečnosti Queenstown, Nový Zéland, 1.–5. prosince 2002 Proceedings. Poznámky k přednáškám z informatiky (2501). - Springer, 2002. - S. 267-287 . - doi : 10.1007/3-540-36178-2 . Archivováno 26. října 2020.
  12. Diskusní fórum NESSIE
  13. Ilia Toli, Alberto Zanoni. Algebraická interpretace AES-128   // Proc . konference AES. - 2005. - Sv. 2005 . - str. 84-97 . - doi : 10.1007/11506447_8 .  (nedostupný odkaz)
  14. Chu-wee Lim, Khoongming Khoo. Analýza XSL aplikovaná na BES  //  Rychlé softwarové šifrování. - Heidelberg: Springer Berlin / Heidelberg, 2007. - Sv. 4593 . - str. 242-253 . - doi : 10.1007/978-3-540-74619-5_16 .  (nedostupný odkaz)
  15. Daniel J. Bernstein. Útoky na časování mezipaměti na  AES . - 2004. Archivováno 17. září 2008.
  16. Bruce Schneier. AES Timeing  Attack . Schneier o bezpečnosti (17. května 2005). Datum přístupu: 27. října 2010. Archivováno z originálu 19. února 2012.
  17. Dag Arne Osvik; Adi Shamir a Eran Tromer. Útoky do mezipaměti a protiopatření: případ AES  // Témata v kryptologii - CT-RSA 2006, The Cryptografers' Track na konferenci RSA. - Springer-Verlag, 2005. - S. 1-20. Archivováno 25. listopadu 2020.
  18. Dhiman Saha, Debdeep Mukhopadhyay, Dipanwita Roy Chowdhury. Diagonální chybový útok na Advanced Encryption Standard   // Cryptology ePrint Archive . - 2009. Archivováno 6. srpna 2020.

Literatura

Odkazy