Advanced Encryption Standard: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Sicurezza: chiedo chiarimento
Descrizione: Aggiunto il template "Immagine multipla" e spostato in esso le immagini relative ai passi dell'algoritmo e le relative descrizioni
Riga 43:
 
=== SubBytes ===
{{Immagine multipla
Nel passaggio <code>SubBytes</code> ogni byte della matrice viene modificato tramite la [[S-box]] a 8 bit. Questa operazione provvede a fornire la non linearità all'algoritmo.
|titolo = I quattro passi dell'algoritmo
|larghezza totale = 500
|immagine1 = AES-SubBytes.svg
[[File:AES-SubBytes.svg|center|uprightdidascalia1 =1.5|thumb| Nel passaggio <code>SubBytes</code>, ogni byte della matrice è sostituito con i dati contenuti nella trasformazione ''S''; ''b<sub>ij</sub>'' = ''S(a<sub>ij</sub>)''.]]
|immagine2 = AES-ShiftRows.svg
[[File:AES-ShiftRows.svg|center|uprightdidascalia2 =1.5|thumb| Nel passaggio <code>ShiftRows</code>, i byte di ogni riga vengono spostati verso sinistra dell'ordine della riga. Vedi figura per i singoli spostamenti.]]
|immagine3 = AES-MixColumns.svg
[[File:AES-MixColumns.svg|center|uprightdidascalia3 =1.5|thumb| Nel passaggio <code>MixColumns</code> ogni colonna di byte viene moltiplicata per un polinomio fisso ''c(x)''.]]
|immagine4 = AES-AddRoundKey.svg
[[File:AES-AddRoundKey.svg|center|uprightdidascalia4 =1.5|thumb| Nel passaggio <code>AddRoundKeys</code> ogni byte della matrice viene combinato con la sua sottochiave tramite un'operazione di [[XOR]].]]
|per riga = 2
}}Nel passaggio <code>SubBytes</code> ogni byte della matrice viene modificato tramite la [[S-box]] a 8 bit. Questa operazione provvede a fornire la non linearità all'algoritmo.
La S-box utilizzata è derivata da una funzione inversa nel [[campo finito]] [[Campo di Galois|GF]](''2<sup>8</sup>''), 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 una [[trasformazione affine]] invertibile.
La S-box è stata scelta con cura per non possedere né [[punto fisso|punti fissi]] né punti fissi opposti.
 
[[File:AES-SubBytes.svg|center|upright=1.5|thumb|Nel passaggio <code>SubBytes</code>, ogni byte della matrice è sostituito con i dati contenuti nella trasformazione ''S''; ''b<sub>ij</sub>'' = ''S(a<sub>ij</sub>)''.]]
 
=== ShiftRows ===
Riga 57 ⟶ 67:
 
Tutte le operazioni sono effettuate utilizzando l'indice della colonna “[[aritmetica modulare|modulo]]” il numero di colonne.
 
[[File:AES-ShiftRows.svg|center|upright=1.5|thumb|Nel passaggio <code>ShiftRows</code>, i byte di ogni riga vengono spostati verso sinistra dell'ordine della riga. Vedi figura per i singoli spostamenti.]]
 
=== MixColumns ===
Riga 64 ⟶ 72:
Utilizzati in congiunzione, <code>ShiftRows</code> e <code>MixColumns</code> provvedono a far rispettare il criterio di [[confusione e diffusione]] nell'algoritmo ([[Confusione e diffusione|teoria di Shannon]]).
Ogni colonna è trattata come un polinomio in [[Campo di Galois|GF(2<sup>8</sup>)]] e viene moltiplicata modulo <math>x^4+1</math> per un polinomio fisso <math>c(x)=3x^3+x^2+x+2</math>.
 
[[File:AES-MixColumns.svg|center|upright=1.5|thumb|Nel passaggio <code>MixColumns</code> ogni colonna di byte viene moltiplicata per un polinomio fisso ''c(x)''.]]
 
=== AddRoundKey ===
Il passaggio <code>AddRoundKey</code> combina con uno [[XOR]] la chiave di sessione con 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, ad esempio uno shift di posizione dei bit) grazie al [[Rijndael key schedule|Key Scheduler]].
 
[[File:AES-AddRoundKey.svg|center|upright=1.5|thumb|Nel passaggio <code>AddRoundKeys</code> ogni byte della matrice viene combinato con la sua sottochiave tramite un'operazione di [[XOR]].]]
 
== Sicurezza ==