Crittografia > Tipi di crittografia > Crittografia AES
Cos'è la crittografia AES?
In crittografia, AES si riferisce ad Advanced Encryption Standard, un algoritmo di crittografia rapido, efficiente e sicuro certificato dal National Institute of Standards and Technology (NIST) degli Stati Uniti. Si tratta di un cifrario a chiave simmetrica che utilizza la stessa chiave sia per crittografare sia per decriptare i dati. Questo processo è relativamente rapido, il che lo rende ideale per crittografare grandi quantità di dati a riposo.
Per via della sua robustezza e affidabilità, l'AES è uno dei tipi di crittografia più diffusi e comuni utilizzati nella sicurezza delle reti wireless, nella crittografia dei dati e nella crittografia del disco, nei sistemi di pagamento online, nell'archiviazione cloud, nella gestione delle password e persino nelle applicazioni governative e militari. Il governo degli Stati Uniti utilizza la crittografia AES per proteggere le proprie informazioni classificate, il che ha contribuito alla sua popolarità.

L'algoritmo AES è sicuro?
Sì, Nel 2000, dopo un processo di selezione molto approfondito(nuova finestra) e aperto, il NIST ha annunciato che l'AES (noto fino ad allora come algoritmo Rijndael, creato da Vincent Rijmen e Joan Daemen) avrebbe sostituito il DES come algoritmo di crittografia raccomandato(nuova finestra) "non classificato, divulgato pubblicamente e in grado di proteggere le informazioni governative sensibili fino al secolo successivo inoltrato".
Secondo il NIST, tutte le lunghezze delle chiavi dell'algoritmo AES sono ritenute "sufficienti" per proteggere le informazioni classificate fino al livello "Segreto". Per le informazioni "Top Secret", è richiesto l'AES-192 o l'AES-256.

Attacchi a forza bruta
La forma più elementare di attacco possibile su qualsiasi cifrario di crittografia è un attacco brute force, che comporta il tentativo di provare ogni combinazione di chiavi possibile fino a trovare quella corretta.
Frontier(nuova finestra) è il supercomputer pubblicamente noto più potente al mondo. Se dedicasse tutta la sua potenza di calcolo a forzare l'AES-128 tramite brute force, richiederebbe comunque nell'ordine di 10-12 bilioni di anni per esaurire tutte le combinazioni possibili per l'AES-128. Si tratta di un tempo di gran lunga superiore all'età dell'universo. Quindi, anche con dimensioni di bit inferiori, l'AES è altamente resistente agli attacchi brute force dei computer convenzionali.
L'AES-256 è 340 miliardi di miliardi di miliardi di miliardi (2¹²⁸) di volte più difficile da forzare tramite brute force rispetto all'AES-128.
Sebbene l'algoritmo di Grover(nuova finestra) riduca teoricamente della metà la sicurezza delle chiavi simmetriche contro le minacce quantistiche, queste sono ancora relativamente resistenti a livello quantistico, soprattutto quando si utilizza una chiave a 256 bit.
Attacchi alle chiavi
Nel corso degli anni, i crittografi hanno pubblicato numerosi attacchi teorici alle chiavi AES, ma tutti sono o impraticabili nella pratica oppure efficaci solo su implementazioni AES che usano un numero ridotto di round (vedi sotto).
Il tentativo di maggior successo è stato il teorico attacco biclique(nuova finestra) pubblicato nel 2011, che può ridurre di un fattore quattro il tempo necessario per forzare AES con la forza bruta. Tuttavia, servirebbero comunque miliardi di anni per forzare AES con la forza bruta su qualsiasi hardware Computer attuale o prevedibile.
Nessun attacco noto alle chiavi è pratico contro AES-128 o versioni superiori se implementati correttamente.
Attacchi side-channel
Un attacco side-channel cerca di ridurre il numero di combinazioni necessarie per effettuare con successo un attacco a forza bruta cercando indizi nel Computer che esegue i calcoli di crittografia. Gli indizi possono essere ricavati esaminando:
- Tempi di esecuzione - quanto tempo impiega un Computer per eseguire un'operazione
- Perdite elettromagnetiche
- Indizi audio
- Indizi visivi (rilevati usando una fotocamera ad alta risoluzione).
Gli attacchi cache-timing, in particolare, si sono dimostrati piuttosto efficaci nel violare con successo AES. Nell'esempio più noto, nel 2016 i ricercatori sono riusciti a recuperare(nuova finestra) una chiave AES-128 usando "solo circa 6 - 7 blocchi di testo in chiaro o di testo cifrato (teoricamente basterebbe anche un solo blocco)".
Tuttavia, si possono fare diverse cose per mitigare la minaccia degli attacchi side-channel:
- AES implementato correttamente può impedire i modi in cui i dati possono essere soggetti a perdita.
- L'hardware che integra il set di istruzioni AES riduce ulteriormente la superficie di attacco side-channel di AES.
- Si possono usare tecniche di randomizzazione per interrompere la relazione tra i dati protetti da AES e qualsiasi dato soggetto a perdita che potrebbe essere raccolto usando un attacco side-channel.
In molti casi, gli attacchi side-channel richiedono che l'attaccante si trovi nelle vicinanze o abbia accesso fisico al dispositivo mentre decripta i dati, anche se gli attacchi remoti sono possibili se su un dispositivo viene installato software dannoso, in particolare nel caso degli attacchi basati sul tempo.
Come funziona AES
AES è un cifrario a blocchi che crittografa e decripta i dati in blocchi da 128 bit usando chiavi a 128 bit, 192 bit o 256 bit. Come indicato in precedenza, la stessa chiave viene usata per crittografare e decriptare i dati. AES che usa una chiave a 128 bit viene spesso chiamato AES-128, e allo stesso modo AES-192 e AES-256.

I dati vengono crittografati utilizzando più cicli, ognuno dei quali consiste in una serie di operazioni matematiche.
Il processo inizia utilizzando l'algoritmo key schedule di Rijndael per derivare una serie di nuove chiavi di ciclo dalla chiave segreta originale. Questo processo è noto come espansione della chiave.
Ogni ciclo consiste quindi in una o più (o in una combinazione delle) seguenti operazioni:
1. Aggiunta della chiave di ciclo (Add Round Key): viene eseguita un'operazione XOR(nuova finestra) per combinare i dati da crittografare (il testo cifrato) con ciascuna chiave di ciclo.

2. Sub Bytes: viene usata una tabella di sostituzione per mescolare ulteriormente i dati. Pensa, in linea di principio, ai semplici cifrari a sostituzione che usavi da bambino, in cui sostituivi ogni lettera di un messaggio con una che si trovava un certo numero di posizioni più avanti nell'alfabeto.

3. Shift Rows: ogni blocco di dati da 128 bit consiste in un blocco 4x4 da 16 bit. Questa operazione sposta ogni byte in una riga del blocco di un determinato offset verso sinistra.

4. Mescolamento delle colonne (Mix Columns): viene eseguita un'ulteriore trasformazione lineare invertibile su ciascuna colonna del blocco.

Questa serie di trasformazioni costituisce un round, che viene poi ripetuto sui dati per un numero specifico di round, a seconda della dimensione della chiave:
- AES-128 — 10 round
- AES-192 — 12 round
- AES 256 — 14 round
Per decriptare i dati, tutti i passaggi usati per crittografarli vengono semplicemente eseguiti al contrario. Questo richiede la chiave segreta originale per invertire il processo usando ogni chiave di round inversa.
Perché si preferisce AES-256 ad AES-192 o AES-128?
Considerando la tecnologia attuale e quella prevedibile, per forzare l'AES-128 tramite brute force ci vorrebbe più tempo dell'età dell'universo. Il leggendario crittografo Bruce Schneier ha persino sostenuto(nuova finestra) che l'AES-128 potrebbe essere più sicuro dell'AES-256 grazie a un key schedule più robusto, ovvero l'algoritmo che calcola tutte le chiavi di ciclo a partire dalla chiave segreta originale.
Eppure l'AES-256 è diventato lo standard di riferimento de facto per la crittografia a chiave simmetrica. Spesso viene considerata (anche se con qualche controversia) la scelta più sicura poiché la maggiore dimensione della chiave indica un ulteriore margine di sicurezza, garantendo che i dati crittografati rimangano protetti anche se si trovasse un modo per indebolire drasticamente l'algoritmo. Questa argomentazione è diventata ancora più forte man mano che la necessità di una resistenza post-quantistica diventa più pressante.
AES-CBC vs AES-GCM
Fino a tempi abbastanza recenti, AES veniva di solito usato in modalità cipher block chaining (CBC), in cui ogni blocco di testo in chiaro viene sottoposto a XOR con il blocco precedente di testo cifrato prima di essere crittografato. Quando viene usato in modalità CBC, è richiesto un algoritmo di hashing HMAC(nuova finestra) come HMAC-SHA256 per verificare i dati.
Tuttavia, è sempre più comune che AES venga usato in modalità Galois/counter (GCM), che usa la modalità contatore(nuova finestra) della crittografia. Il vantaggio principale è che usa il campo di Galois(nuova finestra) per verificare i dati senza la necessità di un algoritmo esterno. È quindi più efficiente rispetto all'uso di un algoritmo di autenticazione separato che può avere un elevato overhead computazionale.
Sebbene AES-CBC con autenticazione HMAC sia generalmente considerato sicuro, CBC è potenzialmente vulnerabile agli attacchi di padding(nuova finestra), come POODLE(nuova finestra). GCM no.
AES con accelerazione hardware
La maggior parte delle CPU moderne include le Advanced Encryption Standard New Instructions (AES-NI(nuova finestra)), un set di istruzioni hardware che esegue le operazioni AES direttamente sul processore. Questo rende l'AES molto più veloce e aiuta anche a prevenire gli attacchi side-channel basati sul tempo, poiché le operazioni avvengono all'interno delle unità di esecuzione sicure del processore, riducendo le variazioni temporali osservabili che un malintenzionato potrebbe sfruttare.
Proton e AES
Usiamo ampiamente AES per proteggere i prodotti Proton:
Eventi e contatti sono protetti usando AES-256 combinato con ECC per lo scambio di chiavi, così da garantire la tua privacy tramite la crittografia end-to-end.
Proton VPN si concentra principalmente sul protocollo VPN WireGuard® veloce ed efficiente (che usa ChaCha20), ma le connessioni OpenVPN usano AES-256.
Proton Pass archivia password, note, identità e altri elementi nella tua cassaforte sicura usando AES-256.
Proton Drive crittografa tutti i File caricati end-to-end con AES-256 usando ECC per lo scambio di chiavi. Anche Proton Docs e Proton Sheets usano AES-256 con scambio di chiavi basato su ECC, anche se la loro implementazione della crittografia differisce dallo schema generale di crittografia dei file di Proton Drive.
Proton Mail archivia email e allegati usando AES-256 tramite lo standard OpenPGP. Anche la tua chiave privata, che sblocca le tue email, viene crittografata con AES-256 prima di essere archiviata sul server.
Proton Meet usa Messaging Layer Security (MLS) per crittografare audio, video e messaggi della chat, garantendo la forward secrecy (PFS) e la sicurezza post-compromissione (PCS) per tutte le comunicazioni. Tutti i dati delle riunioni sono crittografati end-to-end usando AES-256-GCM.
Mitigare gli attacchi alla crittografia AES
La sicurezza è forte tanto quanto il suo anello più debole, che di solito è la tua password. Ciò significa che i tentativi di ingegneria sociale, gli attacchi di phishing e i keylogger(nuova finestra) rappresentano una minaccia anche per i dati crittografati con AES. Quindi, anche quando si utilizza l'AES, dovresti prendere le seguenti precauzioni:
- Utilizza un gestore di password crittografato
- Utilizza chiavi di sicurezza hardware (come YubiKey) per un ulteriore livello di protezione
- Se fai parte di un'organizzazione, organizza corsi di formazione regolari sulla sicurezza per il personale per prevenire gli attacchi di phishing
Prendi il controllo dei tuoi dati
Proton è stato creato per proteggere i tuoi dati fin dall'inizio. Con la crittografia end-to-end, app open source e audit indipendenti, le tue informazioni rimangono tue.
Domande frequenti sulla crittografia AES
- Qual è meglio: AES o DES?
- Qual è meglio: AES o RSA?
- Quanto è forte la sicurezza di AES?


