Cos'è la crittografia AES?
In crittografia, AES si riferisce ad Advanced Encryption Standard, un algoritmo di crittografia veloce, efficiente e sicuro certificato dal National Institute of Standards and Technology (NIST) degli Stati Uniti. È un cifrario a chiave simmetrica che usa la stessa chiave sia per crittografare sia per decriptare i dati. Questo è relativamente rapido, rendendolo ideale per crittografare grandi quantità di dati a riposo.
Grazie alla sua robustezza e affidabilità, l'AES è uno dei tipi di crittografia più popolari 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 in applicazioni governative e militari. Il governo degli Stati Uniti usa la crittografia AES per proteggere le proprie informazioni classificate, e questo 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 annunciò che AES (fino ad allora noto come algoritmo Rijndael, creato da Vincent Rijmen e Joan Daemen) avrebbe sostituito DES come suo algoritmo di crittografia raccomandato(nuova finestra) "non classificato, divulgato pubblicamente e in grado di proteggere informazioni governative sensibili anche nel prossimo secolo".
Secondo NIST, tutte le lunghezze delle chiavi dell'algoritmo AES sono considerate "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ù basilare di attacco possibile contro qualsiasi cifrario di crittografia è un attacco a forza bruta, che consiste nel provare ogni possibile combinazione di chiavi finché non viene trovata quella corretta.
Frontier(nuova finestra) è il supercomputer noto pubblicamente più potente al mondo. Se dedicasse tutta la sua potenza di calcolo a forzare AES-128 con la forza bruta, servirebbero comunque circa 10–12 trilioni di anni per esaurire tutte le possibili combinazioni per AES-128. È molto più a lungo dell'età dell'universo. Quindi, anche con dimensioni in bit più basse, AES è altamente resistente agli attacchi a forza bruta effettuati con Computer convenzionali.
AES-256 è 340 miliardi di miliardi di miliardi di miliardi (2¹²⁸) di volte più difficile da forzare con la forza bruta rispetto ad AES-128.
Sebbene l'algoritmo di Grover(nuova finestra) riduca teoricamente della metà la sicurezza delle chiavi simmetriche contro le minacce quantistiche(nuova finestra), queste restano comunque relativamente resistenti al quantum, soprattutto quando si usa 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 usando più round, ognuno dei quali consiste in una serie di operazioni matematiche.
Il processo inizia usando l'algoritmo key schedule di Rijndael per derivare una serie di nuove chiavi di round dalla chiave segreta originale. Questo è noto come espansione della chiave.
Ogni round consiste poi in una o più (o una combinazione) delle seguenti operazioni:
1. Add RoundKey: viene eseguita un'operazione XOR(nuova finestra) per combinare i dati da crittografare (il testo cifrato) con ogni chiave di round.

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. MixColumns: su ogni colonna del blocco viene eseguita un'ulteriore trasformazione lineare invertibile.

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?
Con la tecnologia attuale e prevedibile, ci vorrebbe più tempo dell'età dell'universo per forzare AES-128 con la forza bruta. Il leggendario crittografo Bruce Schneier ha persino sostenuto(nuova finestra) che AES-128 potrebbe essere più forte di AES-256 grazie a un key schedule più robusto, cioè l'algoritmo che calcola tutte le chiavi di round a partire dalla chiave segreta originale.
Eppure AES-256 è diventato di fatto il gold standard per la crittografia a chiave simmetrica. Viene spesso considerato (anche se in modo un po' controverso) la scelta più forte perché la sua maggiore dimensione della chiave indica un margine di sicurezza aggiuntivo, così i dati crittografati resteranno al sicuro anche se si trovasse un modo per indebolire drasticamente l'algoritmo. Questo argomento è diventato più forte man mano che la necessità di resistenza post-quantum diventa più urgente.
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 Advanced Encryption Standard New Instructions (AES-NI(nuova finestra)), un insieme di istruzioni hardware che esegue operazioni AES direttamente sul processore. Questo rende AES molto più veloce e aiuta anche a prevenire gli attacchi side-channel basati sul tempo, perché le operazioni avvengono all'interno delle unità di esecuzione sicure del processore, quindi ci sono meno variazioni temporali osservabili che un attaccante può 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 solo quanto il suo anello più debole, che di solito è la tua password. Questo significa che anche gli schemi di ingegneria sociale, gli attacchi di phishing e i keylogger(nuova finestra) rappresentano una minaccia per i dati crittografati con AES. Quindi, anche quando viene usato AES, dovresti prendere le seguenti precauzioni:
- Usa un gestore di password crittografato
- Usa chiavi di sicurezza hardware (come YubiKey) per un ulteriore livello di protezione
- Se fai parte di un'organizzazione, svolgi regolarmente corsi di formazione 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?


