Come funziona la crittografia AES?

AES è un codice di crittografia a chiave simmetrica ed è generalmente considerato lo "standard di riferimento" per la crittografia dei dati.

AES è certificato NIST ed è utilizzato dal governo degli Stati Uniti per proteggere i dati "sicuri", il che ha portato ad un'adozione più generale di AES come cifra chiave simmetrica standard scelta da quasi tutti. È uno standard aperto che può essere utilizzato gratuitamente per qualsiasi uso pubblico, privato, commerciale o non commerciale.

Un'introduzione alla crittografia AES

AES è un codice di crittografia a chiave simmetrica. Ciò significa che la stessa chiave utilizzata per crittografare i dati viene utilizzata per decrittografarli. Questo crea un problema: come si invia la chiave in modo sicuro?

I sistemi di crittografia asimmetrica risolvono questo problema proteggendo i dati utilizzando una chiave pubblica che è resa disponibile a tutti. Può essere decrittografato solo da un destinatario previsto che detiene la chiave privata corretta.

Ciò rende la crittografia asimmetrica molto migliore nel proteggere i dati in transito poiché il mittente non deve conoscere la chiave privata del destinatario. Un buon esempio è la crittografia RSA, utilizzata per proteggere gli scambi di chiavi TLS richiesti durante la connessione a un sito Web HTTPS sicuro.

Cifre simmetriche come AES sono quindi molto più efficaci nel proteggere i dati a riposo, come quando sono memorizzati sul disco rigido. A tale scopo, sono superiori alle cifre asimmetriche perché:

  • Richiedono una potenza di calcolo molto inferiore. Ciò rende la crittografia e il trasferimento dei dati con la crittografia simmetrica molto più veloce rispetto alla crittografia asimmetrica. Per la prospettiva, le cifre simmetriche sono generalmente indicate come "1000 volte più veloci" di quelle asimmetriche.
  • E poiché sono più veloci, le cifre simmetriche sono molto più utili per la crittografia di massa di grandi quantità di dati. Cifre asimmetriche come RSA sono utilizzate solo per crittografare piccole quantità di dati, come le chiavi utilizzate per proteggere la crittografia simmetrica delle chiavi.

Naturalmente, nel mondo connesso di oggi, i dati che si trovano sul tuo disco rigido sono di utilità limitata. Fortunatamente, può essere trasferito in modo sicuro su Internet insieme alla crittografia asimmetrica, che ha usato per gestire gli scambi di chiavi remote necessari per connettersi in modo sicuro a un server remoto.

OpenVPN, ad esempio, protegge i dati grezzi con una cifra asimmetrica, di solito AES in questi giorni. Al fine di trasferire i dati crittografati in modo sicuro tra il PC e il server VPN, utilizza uno scambio di chiavi TLS asimmetrico per negoziare una connessione sicura al server.

La crittografia AES è il miglior tipo di crittografia?

AES è ampiamente considerato come il codice di crittografia a chiave simmetrica più sicuro mai inventato. Esistono anche altri codici chiave simmetrici considerati altamente sicuri, come Twofish, che è stato co-inventato dal famoso crittografo Bruce Schneier.

Tuttavia, tali cifre non sono state testate in battaglia come ha fatto AES. Ehi, se il governo degli Stati Uniti pensa che AES sia la migliore cifra per proteggere i suoi dati "sicuri", chi sta discutendo? Ci sono alcuni, tuttavia, che vedono questo come un problema. Si prega di consultare la sezione sul NIST di seguito.

L'adozione diffusa ha giovato all'AES in altri modi. La maggior parte dei produttori di CPU ha ora integrato le istruzioni AES nei loro processori. Il potenziamento hardware migliora le prestazioni AES su molti dispositivi e migliora la loro resistenza agli attacchi del canale laterale.

È possibile interrompere la crittografia AES a 128 bit?

AES stesso è infrangibile se implementato correttamente.

Nel 2011 il supercomputer più veloce del mondo era il Fujitsu K. Questo era in grado di raggiungere una velocità di picco Rmax di 10,51 petaflop. Sulla base di questa cifra, Fujitsu K impiegherebbe 1,02 x 10 ^ 18 - circa un miliardo di miliardi (un quintilione) - anni per forzare una chiave AES a 128 bit con la forza. Questo è più vecchio dell'età dell'universo (13,75 miliardi di anni).

Il supercomputer più potente al mondo nel 2017 è stato il Sunway TaihuLight in Cina. Questa bestia è in grado di raggiungere una velocità di picco di 93,02 petaflop. Ciò significa che il computer più potente al mondo impiegherebbe ancora circa 885 quadrilioni di anni per forzare una chiave AES a 128 bit.

Il numero di operazioni richieste per forzare una cifra a 256 bit è di 3,31 x 10 ^ 56. Questo è all'incirca uguale al numero di atomi nell'universo!

Nel 2011, i ricercatori di crittografia hanno identificato una debolezza di AES che ha permesso loro di decifrare l'algoritmo quattro volte più velocemente di quanto fosse possibile in precedenza. Ma come notò uno dei ricercatori all'epoca:

"Per mettere questo in prospettiva: su un trilione di macchine, che ciascuna potrebbe testare un miliardo di chiavi al secondo, occorrerebbero più di due miliardi di anni per recuperare una chiave AES-128".

In risposta a questo attacco, sono stati aggiunti altri quattro round (vedi più avanti) al processo di crittografia AES-128 per aumentare il suo margine di sicurezza.

Attacchi di canale laterale

Quindi, a tutti gli effetti, AES stesso è indistruttibile se implementato correttamente. Ma non sempre implementato correttamente.

Gli attacchi del canale laterale cercano indizi dal sistema informatico che implementa la crittografia AES al fine di trovare informazioni aggiuntive. Ciò può essere utile nel ridurre il numero di possibili combinazioni richieste per la forza bruta AES.

Questi attacchi utilizzano informazioni di temporizzazione (quanto tempo impiega il computer per eseguire i calcoli), perdite elettromagnetiche, indizi audio e persino indizi ottici rilevati utilizzando una videocamera ad alta risoluzione per scoprire informazioni aggiuntive su come il sistema sta elaborando la crittografia AES.

Un noto attacco del canale laterale contro AES ha dedotto con successo le chiavi di crittografia AES-128 monitorando attentamente l'uso condiviso delle cifre delle tabelle della cache dei processori.

L'AES correttamente implementato mitiga gli attacchi del canale laterale prevenendo possibili modi in cui i dati possono fuoriuscire (che è dove l'uso del set di istruzioni AES basato sull'hardware aiuta) e utilizzando tecniche di randomizzazione per eliminare la relazione tra i dati protetti dal codice e tutti i dati trapelati che potrebbero essere raccolti usando un attacco del canale laterale.

Password non sicure

La crittografia AES è sicura solo quanto la sua chiave. Queste chiavi sono invariabili a loro volta protette tramite password e sappiamo tutti quanto terribili noi umani utilizziamo password sicure. I keylogger introdotti da virus, attacchi di social engineering e simili possono anche essere modi efficaci per compromettere le password che proteggono le chiavi AES.

L'uso di gestori di password mitiga notevolmente questo problema, così come l'uso di firewall a due vie, un buon software antivirus e una maggiore istruzione sui problemi di sicurezza.

Una breve storia della crittografia AES

Quando eri un bambino, hai giocato al gioco in cui hai creato un "messaggio segreto" sostituendo una lettera del messaggio con un'altra? La sostituzione è stata effettuata secondo una formula scelta da te.

Ad esempio, potresti aver sostituito ogni lettera del messaggio originale con una tre lettere dietro l'alfabeto. Se qualcun altro sapesse quale fosse questa formula, o fosse in grado di elaborarla, sarebbe in grado di leggere il tuo "messaggio segreto".

Nel gergo della crittografia, quello che stavi facendo era "crittografare" il messaggio (dati) secondo un algoritmo matematico molto semplice.

La crittografia è stata utilizzata per nascondere dati sensibili fin dai tempi antichi, ma è arrivata davvero al suo interno durante il ventesimo secolo. Durante la Seconda Guerra Mondiale, i tedeschi notoriamente assicurarono le loro comunicazioni usando la macchina Enigma, il cui codice fu altrettanto famoso da Alan Turing a Bletchley Park.

Cos'è la crittografia DES

Il Data Encryption Standard (DES) è stato creato a metà degli anni '70 per proteggere le comunicazioni del governo degli Stati Uniti. È diventato il primo algoritmo di crittografia moderno, pubblico e disponibile gratuitamente e come tale ha creato quasi da solo la moderna disciplina della crittografia.

Sebbene sviluppato da IBM, DES è stato ideato dal National Bureau of Standards (NBS, che in seguito divenne NIST).

Nonostante le preoccupazioni sulla ingerenza da parte della NSA, DES è stato adottato dal governo degli Stati Uniti nel 1976 per "sensibile ma non classificato" traffico. Ciò includeva informazioni personali, finanziarie e logistiche.

Dal momento che non esisteva nient'altro del genere in quel momento, divenne rapidamente ampiamente adottato dalle società commerciali che richiedevano la crittografia per proteggere i propri dati. Pertanto, DES (che utilizzava chiavi a 56 bit) è diventato lo standard di crittografia del cavallo di lavoro predefinito per quasi due decenni.

Questa adozione quasi onnipresente è stata notevolmente aiutata dal conferimento a DES dello status di standard federale di elaborazione delle informazioni (FIPS). Tutte le agenzie governative non militari statunitensi e gli appaltatori del governo civile sono tenuti a utilizzare solo gli standard FIPS.

A metà degli anni '90, tuttavia, DES inizia a mostrare la sua età. In quel momento si credeva ampiamente che l'NSA potesse rompere il DES con la forza bruta, un punto provato nel 1998 quando una macchina da 220.000 dollari costruita dalla Electronic Frontier Foundation (EFF) riuscì a forzare il DES con la forza bruta in soli due giorni. Era chiaramente tempo per un nuovo standard.

Come è nato AES

Nel 1997 il National Institute of Standards and Technology of the United States (NIST) annunciò che stava cercando un sostituto del DES. Nel novembre 2001 ha annunciato che il vincitore: AES, precedentemente noto come Rijndael dopo uno dei suoi co-creatori.

Su raccomandazione del NIST, il nuovo codice è stato formalmente adottato dal governo federale degli Stati Uniti ed è entrato in uso efficace nel maggio 2002. Come DES prima, AES ha ottenuto lo status FIPS. Il governo degli Stati Uniti ritiene che tutte le dimensioni delle chiavi AES siano sufficienti per informazioni classificate fino al "Segreto" livello, con "Segretissimo" informazioni che richiedono AES-192 o AES-256.

AES ora ha completamente sostituito DES in tutto il mondo come standard predefinito di crittografia simmetrica del cavallo di battaglia.

Come funziona la crittografia AES?

L'algoritmo di crittografia AES crittografa e decodifica i dati in blocchi di 128 bit. Può farlo utilizzando chiavi a 128 bit, 192-bit o 256-bit. AES che utilizza chiavi a 128 bit viene spesso definito AES-128 e così via.

Il diagramma seguente fornisce una panoramica semplificata del processo AES ...

come funziona la crittografia AES

Testo semplice

Questi sono i dati sensibili che desideri crittografare.

Chiave segreta

Questa è una variabile a 128 bit, 192-bit o 256-bit creata da un algoritmo.

Cifra

Il codice AES effettivo esegue quindi una serie di trasformazioni matematiche utilizzando il testo normale e la chiave segreta come punto di partenza. In ordine, questi sono:

  1. Espansione chiave. Questo utilizza la chiave segreta originale per derivare una serie di nuove "chiavi rotonde" utilizzando l'algoritmo di pianificazione delle chiavi di Rijndael.
  2. Miscelazione. Ogni tasto tondo è combinato con il testo in chiaro usando l'algoritmo XOR additivo.

    Chiave circolare di crittografia AES

  3. Sostituzione dei dati risultanti utilizzando una tabella di sostituzione. Questo passaggio è molto simile in linea di principio (se in pratica molto più complesso) alle cifre di sostituzione che hai creato da bambino.Crittografia AES di SubBytes

  4. Sposta le righe. In cui ogni byte nella colonna 4 x 4 di sedici byte che costituisce un blocco di 128 bit viene spostato a destra.Righe di crittografia AES

5. Mescolare le colonne. Un ulteriore algoritmo viene applicato a ciascuna colonna.

Alzati e ripeti. Il processo viene ripetuto più volte, con ciascuna ripetizione nota come round. Ogni round viene nuovamente crittografato utilizzando una delle chiavi round generate durante l'espansione della chiave (passaggio 1).

Il numero di round eseguiti dipende dalla lunghezza della chiave utilizzata. AES-128 utilizza dieci round, AES-192 utilizza dodici round e AES-256 utilizza quattordici round.

Ogni round aggiunto riduce la possibilità di un attacco di tipo scorciatoia del tipo utilizzato per attaccare AES-128 nel 2011. Come già notato come conseguenza di questo attacco, sono stati aggiunti altri quattro round a AES-128 per migliorare i suoi margini di sicurezza.

Testo cifrato

Questo è l'output crittografato dal codice dopo che è passato attraverso il numero specificato di round.

Come decrittografare la crittografia AES

Decifrare AES è semplice: basta invertire tutti i passaggi precedenti, iniziando con il tasto rotondo inverso. Naturalmente, è necessario disporre della chiave segreta originale per invertire il processo utilizzando ciascuna chiave rotonda inversa.

La crittografia di un file lo rende più grande?

Sì. Generalmente. AES utilizza una dimensione di blocco fissa di 16 byte. Se un file non è un multiplo della dimensione di un blocco, AES utilizza il riempimento per completare il blocco.

In teoria, ciò non significa necessariamente un aumento delle dimensioni dei dati crittografati (vedi rubare il testo cifrato), ma semplicemente aggiungere dati per riempire il blocco è di solito molto più semplice. Ciò aumenta la quantità di dati crittografati.

Prove aneddotiche suggeriscono che i file di dimensioni superiori a 1 MB crittografati con AES tendono ad essere circa il 35% più grandi rispetto a prima della crittografia.

Quanto sono importanti le dimensioni delle chiavi nella crittografia AES?

Il modo più grossolano per misurare la forza di un codice è la dimensione della sua chiave. Maggiore è la chiave, più combinazioni possibili ci sono.

AES può essere utilizzato con dimensioni di chiave 126-bit, 192-bit o 256-bit. La cifra originale di Rijndael è stata progettata per accettare lunghezze di chiave aggiuntive, ma queste non sono state adottate in AES.

Attacchi di forza bruta

Più complesso è l'algoritmo, più difficile è la cifra da decifrare usando un attacco di forza bruta. Questo attacco di forma molto primitivo è anche noto come una ricerca chiave esaustiva. Fondamentalmente implica provare ogni combinazione di numeri possibile fino a quando non viene trovata la chiave corretta.

Come sappiamo, i computer eseguono tutti i calcoli utilizzando numeri binari: zero e uno. E come abbiamo visto, la complessità di un codice dipende dalla sua dimensione chiave in bit - il numero grezzo di uno e zeri necessari per esprimere il suo algoritmo, dove ogni zero o uno è rappresentato da un singolo bit.

Questa è nota come lunghezza della chiave e rappresenta anche la fattibilità pratica di eseguire con successo un attacco di forza bruta su un dato codice.

Il numero di combinazioni possibili (e quindi la difficoltà della forza bruta) aumenta esponenzialmente con la dimensione della chiave. Per AES:

Come abbiamo già discusso, il supercomputer più veloce del mondo impiegherebbe più tempo dell'era dell'universo a forzare persino una chiave AES-128 con la forza!

Round di crittografia

Come abbiamo anche discusso, più lunga è la chiave utilizzata da AES, più passa la crittografia. Questo serve principalmente a prevenire attacchi di scelta rapida che possono ridurre la complessità computazionale delle cifre e che quindi rendono più semplice forzare la crittografia.

Come ha affermato il criptografo Bruce Schneier a proposito dell'attacco scorciatoia del 2011 su AES-128,

“La crittografia riguarda i margini di sicurezza. Se riesci a rompere un round di un codice, lo progetti con 2n o 3n round. "

Ha raccomandato di introdurre più round per ogni dimensione chiave in AES, ma il NIST ritiene sufficienti i livelli attuali.

Quindi perché usare più di AES-128?

Tutto ciò pone la domanda: se impiegare più tempo dell'Universo a craccare anche AES-128, perché preoccuparsi di usare AES-192 o AES-256? Come ha osservato Schneier:

“Suggerisco alle persone di non usare AES-256. AES-128 fornisce un margine di sicurezza più che sufficiente per il prossimo futuro. Ma se stai già utilizzando AES-256, non c'è motivo di cambiare. ”

In effetti, Schneier ha sostenuto in passato che l'AE-128 è, in effetti, più sicuro dell'AES, perché ha un programma chiave più forte dell'AES-256.

Quindi perché AES-256 è considerato lo standard di riferimento per la crittografia a chiave simmetrica?

Margini di sicurezza

L'attacco di scorciatoia del 2011 dimostra che, non importa quanto gli esperti pensino che sia un algoritmo di crittografia, le persone inventive troveranno sempre modi in cui nessuno ha mai pensato di indebolirli.

Come per il numero di round utilizzati, una dimensione della chiave maggiore offre un margine di sicurezza più elevato rispetto al crack.

bling

L'effetto del marketing non deve essere ignorato se si considera l'onnipresenza della crittografia AES-256. Il semplice fatto che AES-256 sia ampiamente considerato come il codice di crittografia simmetrica più sicuro al mondo lo rende la scelta numero uno per molti.

Voglio dire, se AES-128 è buono, allora è logico che AES-256 debba essere migliore, giusto?

Il fatto che il governo degli Stati Uniti utilizzi AES-256 per proteggere i suoi dati più sensibili non fa che aumentare il suo valore di "bling" e consente alle società VPN e simili di dichiarare di utilizzare la crittografia di "livello militare".

Dato che questa "percezione bling" è (in gran parte) accurata, ci sono pochi danni nella popolarità di AES-256 (anche se vedi le note sul NIST di seguito).

AES e OpenVPN

Gli utenti VPN, in particolare, tuttavia, dovrebbero fare attenzione. La maggior parte dei servizi VPN utilizza AES-256 per proteggere i dati trasmessi dal protocollo OpenVPN, ma questo è uno dei vari meccanismi utilizzati da OpenVPN per proteggere i dati.

Una connessione TLS protegge il trasferimento delle chiavi di crittografia utilizzate da AES per proteggere i dati quando si utilizza OpenVPN. Quindi, se le impostazioni OpenVPN TLS (canale di controllo) sono deboli, i dati possono essere compromessi nonostante siano crittografati con AES-256. Per ulteriori dettagli, consultare la nostra guida definitiva alla crittografia VPN.

AES-CBC vs AES-GCM

Fino a poco tempo fa l'unica cifra AES che probabilmente avresti incontrato nel mondo VPN era AES-CBC (Cipher Block Chaining). Questo si riferisce alla modalità di cifratura a blocchi, un argomento complesso che non vale davvero la pena approfondire qui.

Sebbene CBC possa teoricamente presentare alcune vulnerabilità, il consenso è che CBC è sicuro. CBC è, infatti, raccomandato nel manuale OpenVPN.

OpenVPN ora supporta anche AES-GCM (Galios / Counter Mode). GCM fornisce l'autenticazione, eliminando la necessità di una funzione di hashing HMAC SHA. È anche leggermente più veloce di CBC perché utilizza l'accelerazione hardware (eseguendo il threading su più core del processore).

AES-CBC rimane la modalità più comune in uso generale, ma AES-GCM sta crescendo in popolarità. Dati i vantaggi di GCM, è probabile che questa tendenza continui. Dal punto di vista crittografico, tuttavia, sia AES-CBC che AES-GCM sono altamente sicuri.

NIST

AES è uno standard certificato NIST. Questo è un organo che per sua stessa ammissione lavora a stretto contatto con l'NSA nello sviluppo delle sue cifre.

Dato ciò che ora sappiamo degli sforzi sistematici dell'NSA per indebolire o integrare backdoor negli standard di crittografia internazionale, ci sono tutte le ragioni per mettere in dubbio l'integrità degli algoritmi NIST. Il NIST, ovviamente, respinge fortemente tali accuse:

"Il NIST non indebolirebbe deliberatamente uno standard crittografico."

Ha anche invitato la partecipazione del pubblico a una serie di imminenti standard di crittografia proposti, in una mossa progettata per rafforzare la fiducia del pubblico.

Il New York Times, tuttavia, ha accusato la NSA di eludere gli standard di crittografia approvati dal NIST introducendo backdoor non rilevabili o sovvertendo il processo di sviluppo pubblico per indebolire gli algoritmi.

Questa sfiducia è stata ulteriormente rafforzata quando RSA Security (una divisione di EMC) ha detto privatamente ai clienti di smettere di usare un algoritmo di crittografia che secondo come riferito contiene un difetto progettato dalla NSA. Anche questo algoritmo è stato approvato dal NIST.

Inoltre, Dual_EC_DRBG (generatore di bit casuale deterministico a doppia curva ellittica) è uno standard di crittografia progettato da NIST. È stato conosciuto per essere insicuro per anni.

Nel 2006 l'Università della tecnologia di Eindhoven nei Paesi Bassi ha notato che un attacco contro di essa era abbastanza facile da lanciare su "un normale PC". Gli ingegneri Microsoft hanno anche segnalato un sospetto backdoor nell'algoritmo.

Nonostante queste preoccupazioni, dove conduce il NIST, l'industria segue. Ciò è in gran parte dovuto al fatto che la conformità agli standard NIST è un prerequisito per ottenere contratti governativi statunitensi (FIPS).

Gli standard crittografici certificati NIST come AES sono praticamente onnipresenti in tutto il mondo, in tutti i settori dell'industria e delle imprese che si affidano alla privacy. Questo rende l'intera situazione piuttosto agghiacciante.

Forse proprio perché si basano così tanto su questi standard, gli esperti di crittografia non sono stati disposti ad affrontare il problema.

Credito immagine: xkcd.com/538.

Brayan Jackson
Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me