Advanced Encryption Standard (AES) è una specifica per la crittografia dei dati elettronici stabilita dal National Institute of Standards and Technology (NIST) degli Stati Uniti nel 2001. AES è ampiamente utilizzato oggi poiché è molto più potente del DES e del triplo DES nonostante sia più difficile implementare.
Punti da ricordare
- AES è un codice a blocchi.
- La dimensione della chiave può essere 128/192/256 bit.
- Crittografa i dati in blocchi di 128 bit ciascuno.
Ciò significa che richiede 128 bit come input e restituisce 128 bit di testo cifrato crittografato come output. AES si basa sul principio della rete di sostituzione-permutazione, il che significa che viene eseguito utilizzando una serie di operazioni collegate che comportano la sostituzione e il mescolamento dei dati di input.
stringa da scrivere in Java
Funzionamento della cifra:
AES esegue operazioni su byte di dati anziché su bit. Poiché la dimensione del blocco è di 128 bit, la cifratura elabora 128 bit (o 16 byte) dei dati di input alla volta.
Il numero di cicli dipende dalla lunghezza della chiave come segue:
- Chiave a 128 bit – 10 giri
- Chiave a 192 bit – 12 giri
- Chiave a 256 bit – 14 giri
Creazione di chiavi rotonde:
Un algoritmo Key Schedule viene utilizzato per calcolare tutte le chiavi rotonde dalla chiave. Quindi la chiave iniziale viene utilizzata per creare molte chiavi tonde diverse che verranno utilizzate nel ciclo corrispondente della crittografia.

Crittografia:
AES considera ciascun blocco come una griglia di 16 byte (4 byte x 4 byte = 128) in una disposizione a colonne principali.
[ b0 | b4 | b8 | b12 | | b1 | b5 | b9 | b13 | | b2 | b6 | b10| b14 | | b3 | b7 | b11| b15 ]>
Ogni round è composto da 4 passaggi:
- Sottobyte
- ShiftRows
- MixColumns
- Aggiungi chiave rotonda
L'ultimo round non ha il round MixColumns.
SubBytes esegue la sostituzione e ShiftRows e MixColumns eseguono la permutazione nell'algoritmo.
Sottobyte:
Questo passaggio implementa la sostituzione.
In questo passo ogni byte viene sostituito da un altro byte. Viene eseguito utilizzando una tabella di ricerca chiamata anche S-box. Questa sostituzione viene eseguita in modo tale che un byte non venga mai sostituito da solo e nemmeno sostituito da un altro byte che sia un complemento del byte corrente. Il risultato di questo passaggio è una matrice da 16 byte (4 x 4) come prima.
I due passaggi successivi implementano la permutazione.
ShiftRows:
Questo passaggio è proprio come sembra. Ogni riga viene spostata un determinato numero di volte.
- La prima riga non viene spostata
- La seconda riga viene spostata una volta a sinistra.
- La terza riga viene spostata due volte a sinistra.
- La quarta riga viene spostata tre volte a sinistra.
(Viene eseguito uno spostamento circolare a sinistra.)
[ b0 | b1 | b2 | b3 ] [ b0 | b1 | b2 | b3 ] | b4 | b5 | b6 | b7 | ->| b5 | b6 | b7 | b4 | | b8 | b9 | b10 | b11 | | b10 | b11 | b8 | b9 | [ b12 | b13 | b14 | b15] [ b15 | b12 | b13 | b14]>
Colonne miste:
Questo passaggio è fondamentalmente una moltiplicazione di matrici. Ogni colonna viene moltiplicata con una matrice specifica e quindi la posizione di ciascun byte nella colonna viene modificata di conseguenza.
Questo passaggio viene saltato nell'ultimo round.
[ c0 ] [ 2 3 1 1 ] [ b0 ] | c1 | = | 1 2 3 1 | | b1 | | c2 | | 1 1 2 3 | | b2 | [ c3 ] [ 3 1 1 2 ] [ b3 ]>
Aggiungi chiavi rotonde:
Ora l'output risultante della fase precedente viene XOR-ed con la chiave rotonda corrispondente. Qui i 16 byte non sono considerati come una griglia ma solo come 128 bit di dati.

Dopo tutti questi giri vengono restituiti come output 128 bit di dati crittografati. Questo processo viene ripetuto finché tutti i dati da crittografare non vengono sottoposti a questo processo.
Decifrazione:
Le fasi dei round possono essere facilmente annullate poiché queste fasi hanno un opposto che, una volta eseguito, ripristina le modifiche. Ogni 128 blocchi passa attraverso 10,12 o 14 round a seconda della dimensione della chiave.
Le fasi di ogni round di decrittazione sono le seguenti:
topologie di rete
- Aggiungi chiave rotonda
- Colonne Mix Inverse
- ShiftRows
- Sottobyte inverso
Il processo di decrittazione è il processo di crittografia eseguito al contrario, quindi spiegherò i passaggi con notevoli differenze.
Colonne Mix Inverse:
Questo passaggio è simile al passaggio MixColumns nella crittografia, ma differisce nella matrice utilizzata per eseguire l'operazione.
[ b0 ] [ 14 11 13 9 ] [ c0 ] | b1 | = | 9 14 11 13 | | c1 | | b2 | | 13 9 14 11 | | c2 | [ b3 ] [ 11 13 9 14 ] [ c3 ]>
Sottobyte inversi:
La S-box inversa viene utilizzata come tabella di ricerca e utilizza la quale i byte vengono sostituiti durante la decrittografia.
Applicazioni:
AES è ampiamente utilizzato in molte applicazioni che richiedono l'archiviazione e la trasmissione sicura dei dati. Alcuni casi d'uso comuni includono:
- Sicurezza wireless: AES viene utilizzato per proteggere le reti wireless, come le reti Wi-Fi, per garantire la riservatezza dei dati e impedire l'accesso non autorizzato. Crittografia del database: AES può essere applicato per crittografare i dati sensibili archiviati nei database. Ciò aiuta a proteggere le informazioni personali, i registri finanziari e altri dati riservati dall'accesso non autorizzato in caso di violazione dei dati. Comunicazioni sicure: AES è ampiamente utilizzato in protocolli come comunicazioni Internet, e-mail, messaggistica istantanea e chiamate vocali/video. Garantisce che i dati rimangano riservati. Archiviazione dei dati: AES viene utilizzato per crittografare i dati sensibili archiviati su dischi rigidi, unità USB e altri supporti di archiviazione, proteggendoli da accessi non autorizzati in caso di smarrimento o furto. Reti private virtuali (VPN): AES è comunemente utilizzato nei protocolli VPN per proteggere la comunicazione tra il dispositivo di un utente e un server remoto. Garantisce che i dati inviati e ricevuti tramite la VPN rimangano privati e non possano essere decifrati da estranei. Archiviazione sicura delle password: la crittografia AES viene comunemente utilizzata per archiviare le password in modo sicuro. Invece di archiviare le password in chiaro, viene archiviata la versione crittografata. Ciò aggiunge un ulteriore livello di sicurezza e protegge le credenziali dell'utente in caso di accesso non autorizzato allo spazio di archiviazione. Crittografia di file e dischi: AES viene utilizzato per crittografare file e cartelle su computer, dispositivi di archiviazione esterni e archiviazione cloud. Protegge i dati sensibili archiviati sui dispositivi o durante il trasferimento dei dati per impedire l'accesso non autorizzato.
Riepilogo :
Il set di istruzioni AES è ora integrato nella CPU (offre un throughput di diversi GB/s) per migliorare la velocità e la sicurezza delle applicazioni che utilizzano AES per la crittografia e la decrittografia. Anche se sono trascorsi 20 anni dalla sua introduzione, non siamo riusciti a violare l'algoritmo AES poiché non è fattibile nemmeno con la tecnologia attuale. Fino ad oggi l’unica vulnerabilità rimane nell’implementazione dell’algoritmo.