Come funziona AES?
Operazione di base
L'AES può essere descritto come un blocco crittografato iterativo e simmetrico. L'AES utilizza una struttura ad anello per eseguire ripetutamente riarrangiamenti di dati o permutazioni. Il loop sostituisce un'unità dati con un'altra per i dati di input. La routine di crittografia utilizza la stessa chiave per crittografare e decodificare i dati e applica tale chiave ai blocchi di dati a lunghezza fissa.
Programma chiave
La routine di crittografia AES memorizza la chiave di crittografia primaria in una matrice. Una matrice è un gruppo di oggetti con gli stessi attributi che possono essere indirizzati individualmente. La matrice è composta da quattro righe, ciascuna contenente quattro, sei o otto byte, a seconda della dimensione della chiave. Dietro le quinte, la routine di crittografia utilizza questa matrice per generare una tabella, nota come programma chiave, che contiene diverse chiavi. Questi tasti sono chiamati tasti rotondi per distinguerli dalla chiave principale originale.
Matrice di stato
AES utilizza una chiave di crittografia che può avere una lunghezza di 128, 192 o 256 bit e viene applicata in unità di dati, chiamate blocchi, ciascuno dei quali è lungo 128 bit. L'algoritmo AES inizia copiando ciascun blocco da 16 bit in un array bidimensionale chiamato Stato, per creare un array di 4x4 byte. L'algoritmo esegue un'operazione esclusiva "O" che restituisce "true" se uno o l'altro dei suoi operandi è vero. Questo è noto come "AddRoundKey" e si trova tra le prime quattro righe del programma chiave e la matrice di stato.
Operazioni matematiche
Dopo l'operazione iniziale esclusiva "O", l'algoritmo di crittografia AES entra nel suo ciclo principale, dove esegue ripetutamente quattro diverse operazioni matematiche nella matrice di stato: "SubBytes", "ShiftRows", "MixColumns" e "AddRoundKey" . Queste operazioni impiegano una combinazione di addizione, moltiplicazione, rotazione e sostituzione per crittografare ogni byte nella matrice di stato. Il ciclo principale viene eseguito 10, 12 o 14 volte in base alle dimensioni della chiave di crittografia. Una volta completata l'esecuzione, l'algoritmo copia la matrice di stato sul suo output sotto forma di testo crittografato.