vuoi
o PayPal
tutte le volte che vuoi
AES Advanced Encryption Standard
Nel 1997 NIST richiede la sostituzione di DES. La gara richiedeva un algoritmo operante su blocchi da
128bit, e con chiavi da 128, 192 e 256bit, inoltre l’algoritmo doveva essere sicuro, occupare poca memoria,
efficienza ed essere idoneo per implementazioni sia hardware che software.
Tale gara, denominata AES, nel 98 ottenne 15 algoritmi finalisti e nel 99 solo 5 di essi vennero selezionati,
nel 2000 venne scelto Rijndael (realizzato da 2 ingegneri belgi, Joan Daemen e Vincent Rijmen) che divenne
standard NIST nel 2001.
Qualità di AES
- efficienza hardware e software su diverse piattaforme;
- schedula chiavi molto velocemente;
- opera in ambienti con memoria ridotta;
- dimensioni dei messaggi in chiaro e della chiave molto flessibili;
- consente di specificare il numero di round (9, 11 o 13);
- è resistente agli attacchi di crittoanalisi;
Caratteristiche di Rijndael
Rijndael non è basato sulla struttura del cifrario di Feistel, anch’esso utilizza una sottochiave per ogni fase,
ma il blocco non viene suddiviso in 2 metà, esso viene elaborato interamente, l’elaborazione prevede tre
sostituzioni ed una permutazione.
Differenze tra Rijndael e AES
dimensione messaggio:
- Rijndael consente l’utilizzo di blocchi da 128, 192 e 256bit, rappresentati con una matrice di byte di 4
righe e n colonne (a seconda del blocco 128/32=4, 192/32=6, 256/32=8);
- AES accetta solo blocchi da 128bit (matrice di byte 4x4);
Sia Rijndael che AES ammettono chiavi da 128, 192 e 256bit, anche le chiavi vengono inseriti in matrici di
byte di 4 righe e colonne variabili.
Passaggi dell’algoritmo Rijndael
1. Il blocco di testo in chiaro viene subito “xorato” con la sottochiave
2. L’output di quella fase attraversa poi 9/11/13 fasi uguali, in cui ognuna di esse prevede 3 sostituzioni e 1
permutazione, nell’ordine:
- SubstituteByte (sostituzione sui byte, funzione inversa nella decifratura)
- ShiftRow (scorrimento delle righe del blocco, funzione inversa nella decifratura)
- MixColumn (trasformazione sulle colonne, funzione inversa nella decifratura)
- AddRoundKey (XOR con la sottochiave di quella fase, il processo inverso si ottiene attraverso un
doppio XOR tra la chiave e il blocco)
3. La fase finale prevede le medesime operazioni delle fasi precedenti, escludendo la MixColumn
Come funzionano le singole funzioni
SubstituteByte: ogni byte del blocco viene sostituito da un byte presente nella S-box (dimensioni 16x16
bytes), ogni cella del blocco contiene 8bit (1byte) la prima metà di essi individua la riga della S-box, la
seconda metà la colonna (con quattro bit è possibile indicizzare da 0 a 15 posizioni).
Per eseguire l’operazione inversa vi è un’apposita S-box che opera in modo opposto, recupera la codifica
degli 8bit originari.
ShitRows: avviene uno scorrimento circolare verso sinistra, in cui:
- la prima riga del blocco non cambia;
- la seconda scala circolarmente di 1 byte verso sx (il 2° byte diventa il primo, il 1° diventa il quarto…)
- la terza scala circ. di 2 byte verso sx (il 3°byte diventa il primo, il 4° diventa il secondo, il 1° diventa il
terzo…)
- la quarta scala circ. di 3 byte verso sx (il 4°byte diventa il primo, il 1° diventa secondo, il 3° diventa
quarto…)
In questo modo i 4byte di ogni colonna di partenza sono distribuiti ognuno su una colonna differente, nella