Advanced Encryption Standard
L’algoritmo di crittografia simmetrica più popolare e ampiamente adottato che si possa incontrare oggigiorno è l’Advanced Encryption Standard (AES). È trovato almeno sei volte più veloce del triplo DES.
Un sostituto del DES era necessario perché la sua dimensione della chiave era troppo piccola. Con l’aumento della potenza di calcolo, era considerato vulnerabile all’attacco di ricerca esaustiva delle chiavi. Il triplo DES è stato progettato per superare questo inconveniente, ma è stato trovato lento.
Le caratteristiche di AES sono le seguenti –
- Cifra a blocchi a chiave simmetrica
- Dati a 128 bit, chiavi a 128/192/256-bit
- Più forte e veloce di Triple-DES
- Fornisce specifiche complete e dettagli di progettazione
- Software implementabile in C e Java
Funzionamento di AES
AES è un cifratore iterativo piuttosto che Feistel. Si basa sulla “rete di sostituzione-permutazione”. Comprende una serie di operazioni collegate, alcune delle quali comportano la sostituzione degli input con output specifici (sostituzioni) e altre comportano il rimescolamento dei bit (permutazioni).
Interessante, AES esegue tutti i suoi calcoli sui byte piuttosto che sui bit. Quindi, AES tratta i 128 bit di un blocco di testo in chiaro come 16 byte. Questi 16 byte sono disposti in quattro colonne e quattro righe per essere processati come una matrice –
A differenza del DES, il numero di giri in AES è variabile e dipende dalla lunghezza della chiave. AES usa 10 giri per chiavi a 128 bit, 12 giri per chiavi a 192 bit e 14 giri per chiavi a 256 bit. Ognuno di questi round usa una diversa chiave a 128 bit, che è calcolata dalla chiave AES originale.
Lo schema della struttura AES è dato nella seguente illustrazione –
Processo di crittografia
Qui, ci limitiamo a descrivere un tipico round di crittografia AES. Ogni round comprende quattro sotto-processi. Il processo del primo round è raffigurato qui sotto –
Sostituzione del byte (SubBytes)
I 16 byte in ingresso sono sostituiti cercando una tabella fissa (S-box) data in progetto. Il risultato è in una matrice di quattro righe e quattro colonne.
Shiftrows
Ognuna delle quattro righe della matrice è spostata a sinistra. Tutte le voci che “cadono” sono reinserite sul lato destro della riga. Lo spostamento viene effettuato come segue –
-
La prima riga non viene spostata.
-
La seconda riga viene spostata di una posizione (byte) a sinistra.
-
La terza riga viene spostata di due posizioni a sinistra.
-
La quarta riga viene spostata di tre posizioni a sinistra.
-
Il risultato è una nuova matrice che consiste degli stessi 16 byte ma spostati l’uno rispetto all’altro.
MixColumns
Ogni colonna di quattro byte è ora trasformata usando una speciale funzione matematica. Questa funzione prende come input i quattro byte di una colonna e produce quattro byte completamente nuovi, che sostituiscono la colonna originale. Il risultato è un’altra nuova matrice composta da 16 nuovi byte. Va notato che questo passo non viene eseguito nell’ultimo round.
Addroundkey
I 16 byte della matrice sono ora considerati come 128 bit e sono XORed ai 128 bit della chiave del round. Se questo è l’ultimo round, l’output è il testo cifrato. Altrimenti, i 128 bit risultanti sono interpretati come 16 byte e si inizia un altro round simile.
Processo di decrittazione
Il processo di decrittazione di un testo cifrato AES è simile al processo di cifratura nell’ordine inverso. Ogni round consiste dei quattro processi condotti in ordine inverso –
- Aggiungi la chiave del round
- Mischia le colonne
- Sposta le righe
- Sostituzione dei byte
Poiché i sottoprocessi in ogni round sono in modo inverso, a differenza di un cifrario Feistel, gli algoritmi di crittografia e decrittografia devono essere implementati separatamente, sebbene siano strettamente correlati.
AES Analisi
Nella crittografia attuale, AES è ampiamente adottato e supportato sia nell’hardware che nel software. Fino ad oggi, non è stato scoperto nessun attacco crittografico pratico contro AES. Inoltre, AES ha una flessibilità incorporata nella lunghezza della chiave, che permette un certo grado di ‘protezione futura’ contro i progressi nella capacità di eseguire ricerche esaustive delle chiavi.
Tuttavia, proprio come per DES, la sicurezza di AES è assicurata solo se è implementata correttamente e se viene impiegata una buona gestione delle chiavi.