AES Advanced Encryption Standard
Nel 1997 NIST richiede la sostituzione di DES. La gara richiedeva un algoritmo operante su blocchi da 128 bit, e con chiavi da 128, 192 e 256 bit, 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 256 bit, 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 128 bit (matrice di byte 4x4);
Sia Rijndael che AES ammettono chiavi da 128, 192 e 256 bit, anche le chiavi vengono inserite in matrici di byte di 4 righe e colonne variabili.
Passaggi dell’algoritmo Rijndael
- Il blocco di testo in chiaro viene subito “xorato” con la sottochiave.
- 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)
- 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 8 bit (1 byte), 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).
-
Fondamenti cpp
-
Fondamenti di sicurezza - applicazioni della cifratura asimmetrica
-
Fondamenti di sicurezza - autenticatori
-
Appunti teoria Fondamenti di informatica medica