Advanced Encryption Standard

Incrittografia, l'Advanced Encryption Standard(AES), conosciuto anche comeRijndael([ˈrɛindaːl]),di cui più propriamente è una specificaimplementazione,è unalgoritmodicifratura a blocchiachiave simmetrica, utilizzato comestandarddal governo degliStati Uniti d'America.
Data la sua sicurezza e le sue specifiche pubbliche si presume che in un prossimo futuro venga utilizzato in tutto il mondo come è successo al suo predecessore, ilData Encryption Standard(DES) che ha perso poi efficacia per vulnerabilità intrinseche. AES è stato adottato dallaNational Institute of Standards and Technology(NIST) e dalla USFIPSPUB nel novembre del 2001dopo cinque anni di studi, standardizzazioni e selezione finale tra i vari algoritmi proposti.
L'algoritmo scelto è stato sviluppato da due crittografibelgi,Joan DaemeneVincent Rijmen, che lo hanno presentato al processo di selezione per l'AES con il nome di "Rijndael", derivato dai nomi degli inventori.
Rijndael è un'evoluzione del primo algoritmo sviluppato da Daemen e Rijmen,Square, che era stato sviluppato perSHARK.
A differenza del DES, Rijndael è unarete a sostituzione e permutazione, non unarete di Feistel, che implementa comunque il principio crittografico di Shannon di "confusione e diffusione". AES è veloce sia se sviluppato insoftwaresia se sviluppato inhardware,è relativamente semplice da implementare, richiede pocamemoriae offre un buon livello di protezione, motivi che complessivamente l'hanno reso il preferito rispetto agli altri algoritmi proposti.
Il nuovo standard di cifratura sta sostituendo i precedenti standard e la sua diffusione continua ad aumentare. Formalmente, AES non è equivalente al Rijndael (sebbene nella pratica siano intercambiabili) dato che il Rijndael gestisce differentidimensioni di blocchie dichiavi. Nell'AES il blocco è invece di dimensione fissa (128bit) e la chiave può essere di 128, 192 o256 bitmentre il Rijndael specifica solo che il blocco e la chiave devono essere un multiplo di32 bitcon128 bitcome minimo e256 bitcome massimo.
AES opera utilizzandomatricidi4×4{\displaystyle 4\times 4}bytechiamate stati (states). Quando l'algoritmo ha blocchi di128 bitin input, la matrice State ha 4 righe e 4 colonne; se il numero di blocchi ininputdiventa di32 bitpiù lungo, viene aggiunta una colonna allo State, e così via fino a256 bit.
In pratica, si divide il numero di bit del blocco in input per 32 e il quoziente specifica il numero di colonne.
C'è un passaggio iniziale:
Successivamente per cifrare sono previsti diversi round o cicli di processamento: ogni round (fase) dell'AES (eccetto l'ultimo) consiste dei seguenti quattro passaggi fondamentali che vengono denominati LAYERS:
Il numero di round o cicli di processamento/elaborazione crittografica dei quattro passaggi precedenti è 10 con l'ultimo round che salta il passaggioMixColumns. A seguito la descrizione di ogni singolo passaggio.
La fase di decifratura non è identica a quella di cifratura dal momento che i passaggi sono eseguiti in ordine inverso. Tuttavia, si può definire un cifrario inverso equivalente ai passi dell'algoritmo usato per la cifratura, usando lafunzione inversaa ogni step e un differente gestore delle chiavi. Funziona siccome il risultato non cambia quando si scambiano la fase diSubBytescon quella diShiftRows, e quella diMixColumnscon una fase aggiuntiva diAddRoundKey.
Nel passaggioSubBytesogni byte della matrice viene modificato tramite laS-boxa8 bit. Questa operazione provvede a fornire lanon linearitàall'algoritmo.
La S-box utilizzata è derivata da una funzione inversa nelcampo finitoGF(28{\displaystyle 2^{8}}), conosciuta per avere delle ottime proprietà di non linearità.
Per evitare un potenziale attacco basato sulle proprietà algebriche la S-box è costruita combinando la funzione inversa con unatrasformazione affineinvertibile.
La S-box è stata scelta con cura per non possedere népunti fissiné punti fissi opposti.
Il passaggioShiftRowsprovvede a spostare le righe della matrice di un parametro, e dipende dal numero di riga.
Nell'AES la prima riga resta invariata, la seconda viene spostata di un posto verso sinistra, la terza di due posti e la quarta di tre.
In questo modo l'ultima colonna dei dati in ingresso andrà a formare ladiagonaledella matrice in uscita (Rijndael utilizza invece un disegno leggermente diverso per via delle matrici di lunghezza non fissa).
Tutte le operazioni sono effettuate utilizzando l'indice della colonnamoduloil numero di colonne.
Il passaggioMixColumnsprende i quattro byte di ogni colonna e li combina utilizzando unatrasformazione lineareinvertibile.
Utilizzati in congiunzione,ShiftRowseMixColumnsprovvedono a far rispettare il criterio diconfusione e diffusionenell'algoritmo (teoria di Shannon).
Ogni colonna è trattata come un polinomio in GF(2) e viene moltiplicata modulox4+1{\displaystyle x^{4}+1}per un polinomio fissoc(x)=3x3+x2+x+2{\displaystyle c(x)=3x^{3}+x^{2}+x+2}.
Il passaggioAddRoundKeycombina con unoXORlachiave di sessionecon la matrice ottenuta dai passaggi precedenti (State). Una chiave di sessione viene ricavata dalla chiave primaria ad ogni round (con dei passaggi più o meno semplici, per esempio unoshiftdi posizione dei bit) grazie al gestore della chiave.
LaNational Security Agency(NSA) segnalava che tutti i finalisti del processo di standardizzazione erano dotati di una sicurezza sufficiente per diventare l'AES, ma che fu scelto il Rijndael per via della sua flessibilità nel trattare chiavi di lunghezza diversa, per la sua semplicità di implementazione inhardwaree insoftwaree per le sue basse richieste di memoria, che ne consentono un'implementazione anche in dispositivi con scarse risorse come lesmart card.
L'AES può essere utilizzato per proteggere leinformazioni classificate: Per il livello SECRET è sufficiente una chiave a128 bit, mentre per il livello TOP SECRET si consigliano chiavi a 192 o256 bit. Questo significa che per la prima volta il pubblico ha accesso a una tecnologia crittografica che la NSA ritiene adeguata per proteggere i documenti TOP SECRET. Si è discusso sulla necessità di utilizzare chiavi lunghe (192 o256 bit) per i documenti TOP SECRET. Alcuni ritengono che questo indichi che l'NSA ha individuato un potenziale attacco che potrebbe forzare una chiave relativamente corta (128 bit), mentre la maggior parte degli esperti ritiene che le raccomandazioni dell'NSA siano basate principalmente sul volersi garantire un elevato margine di sicurezza per i prossimi decenni contro un potenziale attacco esaustivo.
La maggior parte degli algoritmi crittografici viene forzata riducendo il numero di round.
L'AES effettua dieci round per la chiave a128 bit, dodici round per la chiave a192 bite quattordici round per la chiave a256 bit.
Al 2006, i migliori attacchi sono riusciti a forzare l'AES con sette round e chiave di128 bit, otto round e chiave di192 bite nove round e chiave di256 bit.
Alcuni crittografi hanno fatto notare che la differenza tra i round effettuati dall'AES e quelli massimi prima che l'algoritmo non sia più forzabile è ridotta (specialmente con chiavi corte).
Questi temono che miglioramenti nelle tecniche di analisi possano permettere di forzare l'algoritmo senza verificare tutte le chiavi.
Attualmente unaricerca esaustivaè impraticabile: la chiave a128 bitproduce3,4×10combinazionidiverse.
Uno dei migliori attacchi a forza bruta è stato svolto dal progettodistributed.netsu una chiave a64 bitper l'algoritmoRC5; l'attacco ha impiegato quasi cinque anni, utilizzando il tempo libero di migliaia diCPUdi volontari. Anche considerando che la potenza deicomputeraumenta nel tempo, servirà ancora molto tempo prima che una chiave da128 bitsia attaccabile con il metodo forza bruta. Molte banche mettono a disposizione per l'home bankingdei propri clienti chiavi a256 bit, con il risultato che si ottiene una cifratura ben2128{\displaystyle 2^{128}}volte più sicura di quella a128 bit, sebbene quest'ultima possa considerarsi altamente sicura e invalicabile dai moderni PC.
Un altro dubbio riguardante l'AES deriva dalla sua struttura matematica. A differenza della maggior parte degli algoritmi a blocchi, per l'AES esiste un'approfondita descrizione matematica. Sebbene non sia mai stata utilizzata per condurre un attacco su misura, questo non esclude che in futuro questa descrizione non venga utilizzata per condurre un attacco basato sulle sue proprietà matematiche.
Nel 2002 l'attacco teorico chiamatoattacco XSL,annunciato daNicolas CourtoiseJosef Pieprzyk, ha mostrato un potenziale punto debole dell'AES (e di altri cifrari).
Sebbene l'attacco sia matematicamente corretto, è impraticabile nella realtà per via dell'enorme tempo macchina richiesto per metterlo in pratica.
Miglioramenti nell'attacco hanno ridotto il tempo macchina richiesto e quindi, in un futuro, questo attacco potrebbe diventare attuabile.Ultimamente, alcuni esperti hanno fatto delle osservazioni agli autori dell'attacco.
Sembra che abbiano commesso degli errori teorici e che, in realtà, le loro stime siano ottimistiche.
Allo stato attuale, la reale pericolosità dell'attacco XSL è un punto interrogativo.
Comunque, attualmente, l'AES è considerato un algoritmo veloce e sicuro e gli attacchi fino a ora presentati si sono rivelati degli interessanti studi teorici, ma di scarsa utilità nella pratica.
In data 1º luglio 2009 è stato pubblicatounattacco correlato alla chiavemigliore delmetodo forza brutasu tutti i round di AES-256 e AES-192. L'attacco in questione risulta comunque, per stessa ammissione degli autori (come chiarito nelle conclusioni dello studio), essere ancora solo teoricamente realizzabile e non dovrebbe influire in alcun modo sulla sicurezza delle odierne applicazioni che fanno uso di questocifrario. A luglio del 2009,Bruce Schneieraffermò, con un articolo sul suo blog, che questa scoperta avrebbe potuto influire negativamente sulla scelta di AES come blocco costitutivo dell'algoritmo di hashSHA-3, al tempo ancora in fase di definizione.