Se ti sei mai chiesto come vengono mantenute le cose al sicuro su Internet, soprattutto considerando che ci sono diversi agenti malevoli che tentano costantemente di violare i depositi di dati, la crittografia è una delle risposte che meglio si adatta alla domanda.
Come forse saprai, la crittografia è semplicemente uno dei metodi utilizzati per proteggere le informazioni e le comunicazioni, ma ciò non significa che sia semplice in alcun modo. Si tratta infatti di una tecnologia in costante sviluppo per garantire che gli standard su cui si basa siano sempre al top della gamma.
Un esempio di tale standard è AES, un acronimo che probabilmente hai incontrato prima, specialmente se utilizzi costantemente app di comunicazione come WhatsApp, Signal o Telegram o software VPN. In questo articolo, ci concentreremo su AES e ti aiuteremo a capirlo meglio.
Cos’è AES?
AES, che sta per Advanced Encryption Standard è una forma popolare di crittografia che è stata utilizzata per un po’di tempo ormai per garantire che i dati siano tenuti al sicuro, lontano da occhi indiscreti.
Ciò che distingue la crittografia AES tra la folla è il fatto che è un metodo di crittografia veloce e sicuro e la sua flessibilità consente di utilizzarlo su un’ampia varietà di prodotti, che vanno dalle app quotidiane come WhatsApp o Segnale ai sistemi di sicurezza militare e persino all’hardware.
Come funziona la crittografia
Probabilmente sai come funziona la crittografia. Se non lo fai, ecco un rapido promemoria: la crittografia prende il testo normale e lo converte in una forma cifrata, il che fa sembrare che sia composto da caratteri casuali. È sicuro affermare che AES è un tipo di crittografia simmetrica, poiché utilizza la stessa chiave per crittografare e decrittografare i dati.
Questo standard di crittografia utilizza l’algoritmo di rete di sostituzione permutazione (algoritmo SPN) per applicare diversi cicli di crittografia per proteggere i dati. Il fatto che utilizzi così tanti round rende AES virtualmente impenetrabile.
AES non è solo il primo, ma anche l’unico cifrario pubblicamente accessibile approvato dalla NSA (National Security Agency) per proteggere i dati top-secret. Inizialmente, questo standard di crittografia era chiamato Rijndael in base ai nomi dei suoi due sviluppatori, Vincent Rijmen e Joan Daemen (entrambi dal Belgio).
Lunghezze chiavi multiple AES
L’AES include tre cifrari a blocchi e ciascuno di questi cifrari a blocchi ha un numero diverso di possibili combinazioni di tasti, come segue:
- AES-128: lunghezza chiave a 128 bit=3,4 * 1038
- AES-192: lunghezza chiave a 192 bit=6,2 * 1057
- AES-256: lunghezza chiave a 256 bit=1,1 * 1077
Anche se esistono tre cifrari a blocchi, ognuno di essi crittografa e decrittografa i dati in 128 blocchi bit utilizzando chiavi di lunghezza diversa (ad esempio 128, 192 e 256, come specificato sopra). Quindi è sicuro dire che anche se la lunghezza delle chiavi può essere diversa, la dimensione del blocco è sempre la stessa (128 bit o 16 byte, sono la stessa cosa).
Il fatto che AES utilizzi lunghezze di chiave diverse ha sicuramente sollevato alcune domande tra gli utenti, ad esempio perché abbiamo bisogno di diverse lunghezze di chiave, in primo luogo? Altri potrebbero persino mettere in dubbio la necessità di avere chiavi di diverse lunghezze, a maggior ragione considerando che la chiave a 256 bit è presumibilmente la più sicura.
Nonostante il fatto che la chiave AES a 256 bit sia semplicemente la più forte nel gruppo, spesso viene definita”di livello militare”, non è sempre implementata per impostazione predefinita e il motivo il motivo per cui ciò accade è a causa delle risorse disponibili o, meglio ancora, non disponibili.
AES-128 contro AES-256
Più grande è la dimensione di una chiave, più risorse consumerà, quindi è sicuro dire che un sistema meno capace è più probabile che utilizzi chiavi AES a 128 bit invece delle sue controparte a 256 bit. Ad esempio, se utilizzi la crittografia AES a 256 bit sul telefono, potrebbe scaricare la batteria più velocemente rispetto alla versione a 128 bit dello stesso standard di crittografia.
Le chiavi AES a 256 bit sono molto più difficili da forzare rispetto a quelle a 128 bit. Tuttavia, anche con enormi quantità di potenza di calcolo, le chiavi AES a 128 bit sono ancora quasi impossibili da decifrare, quindi utilizzare questa versione invece delle chiavi a 256 bit potrebbe essere una scelta migliore se sei preoccupato per la potenza o la latenza, specialmente su dispositivi portatili (smartphone, per esempio).
Il lato positivo è che i progressi tecnologici hanno fatto sì che le differenze in termini di potenza di calcolo e durata della batteria tra l’utilizzo di AES-256 e AES-128 siano trascurabili, rendendo l’AES a 256 bit il più popolare scelta, poiché la maggior parte degli utenti preferisce la tranquillità.
I vantaggi dell’utilizzo di AES
Il fatto che i metodi di crittografia applicati da AES siano veloci e facili da comprendere rende AES una scelta popolare in un’ampia varietà di campi. AES non è solo veloce e sicuro, ma anche facile da implementare, il che aumenta ulteriormente la sua innata popolarità.
Inoltre, è in grado di decifrare i dati protetti con la stessa velocità con cui può crittografarli e utilizza meno memoria e potenza di calcolo rispetto ad altri standard di crittografia popolari (come DES), il che gli conferisce un vantaggio.
Ultimo, ma non meno importante, se la situazione lo richiede, AES è abbastanza flessibile da consentirti di combinarlo con molti altri protocolli di sicurezza come TKIP, WPA2, WEP, ma anche altri tipi di crittografia, come SSL.
/p>
Ecco alcuni vantaggi chiave della scelta di AES rispetto ad altri standard di crittografia:
- Supporta l’implementazione sia nell’hardware che nel software
- Il fatto che supporti tre lunghezze chiave ti offre una certa flessibilità in termini di sicurezza e velocità (prestazioni)
- Tutti e tre i tipi di chiavi sono abbastanza lunghi, il che rende AES un obiettivo impossibile per la forza bruta
- Finora, nessun attacco crittografico ha dimostrato di funzionare contro AES
- Puoi trovarlo praticamente ovunque, dato che il governo degli Stati Uniti lo ha definito uno standard
- Facile da implementare indipendentemente dalla destinazione (secondo quanto riferito, l’implementazione dell’hardware è più semplice del software)
- Non occupa la stessa quantità di memoria di altri tipi di crittografia (ad esempio DES)
- Facile da combinare con altri protocolli di sicurezza e tipi di crittografia
Usi comuni di AES
Nonostante il fatto che abbiamo già detto che AES è generalmente utilizzato ovunque sia supportato, ci sono alcuni esempi in cui ci sono maggiori probabilità di incontrarlo. Vale a dire:
- VPN
- Il modo in cui funzionano le VPN ruota attorno al reindirizzamento del tuo traffico, ma non prima di crittografarlo in modo che altri non possano vederlo nel caso in cui stiano monitorando la tua connessione. Inoltre, il traffico deve essere decifrato nel punto di uscita, il che comporta la necessità di uno standard di crittografia. AES-256 è utilizzato per impostazione predefinita da diversi provider VPN, tra cui NordVPN, Surfshark e ExpressVPN.
- Gestori di password
- I gestori di password funzionano permettendoti di inserire tutte le tue password e proteggendole con un’unica password tramite mezzi di crittografia. Diverse soluzioni software per la gestione delle password presenti sul mercato hanno scelto AES come standard di crittografia operativa, ritenendolo facile da implementare, veloce e sicuro.
- Reti Wi-Fi
- Senza la crittografia del traffico, gli aggressori potrebbero semplicemente sedersi al di fuori della tua rete wireless, acquisire pacchetti non crittografati utilizzando un adattatore WiFi appropriato e monitorare l’intera posizione online senza preoccuparti del mondo. Per fortuna, la crittografia AES, di solito insieme a standard di sicurezza aggiuntivi (WPA2 è il più popolare al momento), può impedire che ciò accada.
- Browser web
- Probabilmente saprai già che da un po’di tempo i browser Web hanno crittografato le connessioni dei loro utenti, per proteggerli da varie minacce informatiche come attacchi MITM (Man-In-The-Middle), spoofing o monitoraggio del traffico.
- Crittografia del disco
- Sebbene questa funzione sia utilizzata principalmente su dispositivi portatili come smartphone e tablet, la crittografia del disco non è inaudita se si desidera aumentare la privacy e la sicurezza. AES è attualmente uno dei metodi più popolari utilizzati per crittografare e decrittografare il contenuto del disco.
- Software di compressione file
- Che si tratti di WinRar, WinZip o 7z, tutte queste utility di archiviazione e compressione/decompressione dei file sul mercato utilizzano AES come standard di crittografia di riferimento per prevenire perdite accidentali di dati durante la gestione dei file.
- App di comunicazione
- WhatsApp, Signal, Telegram, Snapchat, Messenger, ma anche altri che non abbiamo menzionato, utilizzano la crittografia AES per assicurarti di beneficiare di una privacy completa, sia che tu stia inviando foto, video, documenti o semplici messaggi di testo tramite queste app.
- Librerie di linguaggi di programmazione
- Se sei un programmatore, dovresti probabilmente sapere che le librerie di alcuni linguaggi di programmazione, inclusi ma non limitati a C++, Java e Python, utilizzano la crittografia AES per aiutarti a proteggere i tuoi dati e progetti da accessi non autorizzati.
- Componenti del sistema operativo
- Al fine di aggiungere un ulteriore livello di sicurezza, alcuni sistemi operativi hanno aggiunto la crittografia AES ad alcuni dei loro componenti.
Come funziona AES?
In generale, è necessario conoscere o apprendere come funziona una tecnologia specifica per trarre vantaggio dalle sue capacità al massimo delle sue potenzialità. In questo caso, dovresti sapere un paio di cose su come funziona AES prima di implementarlo o usarlo a casaccio nei tuoi progetti o nel tuo ambiente.
1. I dati vengono divisi in blocchi
Come probabilmente ricorderai dalle nostre menzioni sopra, AES è un cifraro a blocchi, il che significa che crittografa i dati che riceve in blocchi di bit, invece di crittografarli bit per bit.
Pertanto, il primo passaggio della crittografia AES consiste nel separare i dati in blocchi. Ciascuno di questi blocchi contiene una colonna4 per 4 di 128 bit o 16 byte. Considerando che un byte è costituito da 8 bit , abbiamo 16 x 8=128 bit , che è la dimensione del blocco.
Supponiamo, ad esempio, che desideri crittografare “addictivetips.com” utilizzando AES, la prima cosa che fa il processo di crittografia è separare i dati in blocchi. Tuttavia, un blocco può contenere solo 16 caratteri , quindi il primo blocco non includerà la”m”alla fine del testo. La’m’verrà inviata al blocco successivo.
Pertanto, dopo aver applicato AES a”addictivetips.com“, la prima parte di questo testo avrà l’aspetto del blocco seguente:
a | c | e | s |
---|---|---|---|
d | t | t | . |
d | i | i | c |
i | v | p | o |
2. Espansione chiave
La procedura di espansione della chiave è un po’più complicata del passaggio che abbiamo descritto sopra. Si tratta di prendere una chiave iniziale e utilizzare la pianificazione delle chiavi di Rijndael per generare una serie di chiavi aggiuntive che verranno utilizzate per ogni singolo ciclo del processo di crittografia.
Quindi, ad esempio, se usi la chiave”AESencryption12“sul nostro testo in chiaro sopra (addictivetips.com), otterrai una stringa apparentemente casuale numeri.
A | e | y | o |
---|---|---|---|
E | n | p | n |
S | c | t | 1 |
r | i | 2 |
Tuttavia, la pianificazione delle chiavi Rijndael utilizza processi molto specifici per crittografare ogni singolo simbolo nella frase iniziale.
Il risultato sarà simile al blocco seguente:
7e | 04 | 0b | 20 |
52 | 6c | 1c | 56 |
a7 | bf | 8e | 84 |
30 | 03 | 3d | 20 |
Anche se sembrano numeri incomprensibili e casuali, questo è il punto esatto di tutta questa procedura di crittografia: nascondere i dati dietro un codice, rendendolo inaccessibile agli utenti che non sanno cosa sia il codice e lo rendono impossibile decifrarlo.
Inoltre, questo è lungi dall’essere finito, poiché il processo di crittografia dovrà utilizzare le chiavi che abbiamo generato di recente per ogni ciclo di crittografia. Ma ne parleremo più avanti.
3. Aggiunta di una chiave rotonda
Questo è in realtà il primo ciclo di crittografia, poiché aggiungeremo la chiave iniziale (‘Crittografia AES12‘) al nostro blocco di messaggi (‘addictivetips.com‘), come nell’esempio seguente, che all’inizio potrebbe non avere senso.
a | c | e | s |
---|---|---|---|
d | t | t | . |
d | i | i | c |
i | v | p | o |
E
A | e | y | o |
---|---|---|---|
E | n | p | n |
S | c | t | 1 |
r | i | 2 |
Anche se potrebbe sembrare impossibile aggiungere due blocchi di testo insieme, ricorda che questa è solo una rappresentazione grafica del processo di crittografia in modo che tu possa capirlo meglio. In realtà, AES utilizza il codice binario, rendendo il nostro tentativo di aggiungere due blocchi di testo non solo del tutto plausibile ma anche del tutto possibile.
Questa operazione (di sommare i due blocchi di testo insieme) viene eseguita utilizzando un cifraro XOR e il risultato può essere visualizzato di seguito:
32 | d5 | 5c | d9 |
f3 | 24 | a8 | 46 |
7e | 1c | 37 | f3 |
82 | 5e | 3f | 03 |
4. Sostituzione di byte
Per migliorare ulteriormente la protezione dei tuoi dati (nel nostro caso il testo in chiaro che stiamo cercando di crittografare), questo passaggio del processo sostituirà ogni byte del blocco con un valore predeterminato secondo una tabella, chiamata Rijndael S-box. Puoi vedere la tabella appena sotto:
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0a | 0b | 0c | 0d | 0e | 0f | |
00 | 63 | 7c | 77 | 7b | f2 | 6b | 6f | c5 | 30 | 01 | 67 | 2b | fe | d7 | ab | 76 |
10 | ca | 82 | c9 | 7d | fa | 59 | 47 | f0 | annuncio | d4 | a2 | af | 9c | a4 | 72 | c0 |
20 | b7 | fd | 93 | 26 | 36 | 3f | f7 | cc | 34 | a5 | e5 | f1 | 71 | d8 | 31 | 15 |
30 | 04 | c7 | 23 | c3 | 18 | 96 | 05 | 9a | 07 | 12 | 80 | e2 | eb | 27 | b2 | 75 |
40 | 09 | 83 | 2c | 1a | 1b | 6e | 5a | a0 | 52 | 3b | d6 | b3 | 29 | e3 | 2f | 84 |
50 | 53 | d1 | 00 | ed | 20 | fc | b1 | 5b | 6a | cb | essere | 39 | 4a | 4c | 58 | cf |
60 | d0 | ef | aa | fb | 43 | 4d | 33 | 85 | 45 | f9 | 02 | 7f | 50 | 3c | 9f | a8 |
70 | 51 | a3 | 40 | 8f | 92 | 9d | 38 | f5 | bc | b6 | da | 21 | 10 | ff | f3 | d2 |
80 | cd | 0c | 13 | ec | 5f | 97 | 44 | 17 | c4 | a7 | 7e | 3d | 64 | 5d | 19 | 73 |
90 | 60 | 81 | 4f | dc | 22 | 2a | 90 | 88 | 46 | ee | b8 | 14 | de | 5e | 0b | db |
a0 | e0 | 32 | 3a | 0a | 49 | 06 | 24 | 5c | c2 | d3 | ac | 62 | 91 | 95 | e4 | 79 |
b0 | e7 | c8 | 37 | 6d | 8d | d5 | 4e | a9 | 6c | 56 | f4 | ea | 65 | 7a | ae | 08 |
c0 | ba | 78 | 25 | 2e | 1c | a6 | b4 | c6 | e8 | dd | 74 | 1f | 4b | bd | 8b | 8a |
d0 | 70 | 3e | b5 | 66 | 48 | 03 | f6 | 0e | 61 | 35 | 57 | b9 | 86 | c1 | 1d | 9e |
e0 | e1 | f8 | 98 | 11 | 69 | d9 | 8e | 94 | 9b | 1e | 87 | e9 | ce | 55 | 28 | df |
f0 | 8c | a1 | 89 | 0d | bf | e6 | 42 | 68 | 41 | 99 | 2d | 0f | b0 | 54 | bb | 16 |
Sebbene questa tabella assomigli anche a una serie di caratteri casuali, puoi usarla per verificare quale valore avranno i byte sostituiti. Ad esempio, c9 diventerà dd, 26 diventerà f7, ff diventerà diventa 16 e presto. Non è così difficile da usare una volta che ci hai preso la mano.
Ora che abbiamo visto la tabella, vediamo come cambierà il nuovo blocco che abbiamo generato sopra dal primo ciclo di crittografia dopo la sostituzione di byte basata su Rijndael S-box:
23 | 03 | 4a | 35 |
---|---|---|---|
0d | 36 | c2 | 5a |
f3 | 9c | 9a | 0d |
13 | 58 | 75 | 7b |
Nota che in realtà abbiamo sostituito i blocchi utilizzando la tabella Rijndael S-box manualmente, quindi puoi ricontrollare e provare a replicare i risultati se sei interessato. In questo modo, è più facile da seguire, soprattutto se sei appassionato di saperne di più sulla crittografia.
5. Cambio di riga
In questa fase del processo di crittografia AES, le righe vengono spostate per mettere i tuoi dati dietro un muro di protezione aggiuntivo. Mentre la prima riga rimane intatta, le tre successive vengono spostate in modi diversi, come segue:
- La seconda riga viene spostata a sinistra di un byte (cella)
- La terza riga viene spostata a sinistra di due byte (celle)
- La quarta e ultima riga viene spostata a sinistra di tre byte (celle)
23 | 03 | 4a | 35 |
---|---|---|---|
36 | c2 | 5a | 0d |
9a | 0d | f3 | 9c |
7b | 13 | 58 | 75 |
6. Miscelazione a colonna
Anche se ci piacerebbe essere il più precisi possibile, questo passaggio prevede l’applicazione di una serie di formule matematiche complesse al blocco, che ci fornisce un blocco completamente diverso alla fine della procedura.
Per essere un po’più specifici, ogni colonna viene moltiplicata per una matrice predefinita durante questo passaggio. Il risultato sarà un nuovo blocco di codice, che verrà ulteriormente utilizzato per aumentare la forza del codice e ridurre le probabilità che venga violato.
Al termine del processo di miscelazione delle colonne, otterremo un blocco di codice simile a questo:
43 | 4d | 33 | 85 |
---|---|---|---|
c8 | 37 | 6gg | 8d |
9a | 33 | 85 | 9c |
42 | 68 | 41 | 99 |
7. Aggiungi una chiave rotonda extra
Ricordi che tempo fa ti abbiamo detto che avremo sicuramente bisogno della chiave che abbiamo creato durante la fase di espansione della chiave? Bene, l’abbiamo usato una volta per mischiare tutto una volta, ora dovremo fare un altro rimescolamento ai dati che abbiamo appena ottenuto.
Quindi prendiamo il blocco di dati che abbiamo ottenuto dopo aver eseguito il passaggio di miscelazione delle colonne e aggiungiamo un’altra chiave rotonda, proprio come abbiamo fatto al passaggio 3 della nostra guida, in questo modo:
43 | 4d | 33 | 85 |
---|---|---|---|
c8 | 37 | 6d | 8d |
9a | 33 | 85 | 9c |
42 | 68 | 41 | 99 |
E
32 | d5 | 5c | d9 |
f3 | 24 | a8 | 46 |
7e | 1c | 37 | f3 |
82 | 5e | 3f | 03 |
As you’d expect, this step will generate yet another block of data for us to process, but we’ll stop here. We have a feeling that you got the point. However, the encryption process is still far from being over, as the block of data we just generated will undergo several more modifications.
8. More steps
These modifications that we’ve mentioned above include everything we’ve done so far: shifting rows, byte substitution, adding round keys, and mixing columns, so it’s easy to understand why we had to stop here as far as exemplifying goes.
These rounds are identical and the number of times these rounds are repeated depend on the AES key length, as follows:
- AES-128 uses 9 rounds
- AES-192 uses 11 rounds
- AES-256 uses 13 rounds
So if you’re planning to use AES-256, the steps we’ve previously mentioned and explained will be repeated 13 times in a row, which you can agree is a tremendous amount. It’s also easy to understand why AES is so difficult to crack and is a go-to encryption standard in a lot of environments.
However, we’re not done yet. After the 9, 11, or 13 rounds of encryption we’ve briefly talked about above, there’s an additional round, during which the algorithm only substitutes bytes, shifts rows, and adds a round key (it skips mixing columns).
It may sound ridiculous that after 9, 11, or 13 rounds of running all the steps above the mixing columns step gets dropped. The reason is that at this point it’s somewhat redundant, and this step is skipped only to preserve some processing power.
So actually, after running all the steps of the encryption process, the input data (our plaintext we’ve used in the beginning in this case) will have gone through 10, 12, or 14 rounds, depending on the key length you chose and will look like a set of random characters. Not that it didn’t look like that for a long time now, since we started the encryption process and all.
So, to recap, while undergoing encryption, the data you feed to the AES encryption tools undergoes the following processes, in this order:
- Block division
- Key expansion
- Adding a round key
- Byte substitution
- Row shifting
- Column mixing
- Adding a round key
- Steps 4-7 are repeated for 9, 11, or 13 times depending on the key length
- Byte substitution
- Row shifting
- Adding a round key
At the end of this complex and seemingly endless process, addictivetips.com, the text we’ve attempted to encrypt, will look like the code below if encrypted using a 128-bit key and ‘AESencryption12‘ as our secret key:
RcadDaLDuP5fHtor3/Rfnq5EijEfhP02pvrlGkGr1Gc=
Although it may look like complete gibberish, once again, that’s the point of using encryption: making data as simple as plain text look like something went horribly wrong during its transmission and now it looks like gibberish.
How to decrypt AES
We understand that AES and the whole encryption process can be a bit of a handful, as the multitude of steps, as well as the fact that they’re repeated for an ungodly amount of time, can be a bit intimidating.
However, if you take a step back and look at the big picture, the whole thing actually starts to make sense, even for someone who didn’t spend their whole life studying cryptography and designing the perfect way to encrypt or decrypt information.
That’s precisely why we’re pretty confident you’ll have no trouble understanding AES decryption if the encryption process along with all of its steps made sense to you. To put it shortly, AES decryption follows the exact same steps as the encryption process, only they’re reversed.
So, in our case, if we want to go back to ‘addictivetips.com’ from RcadDaLDuP5fHtor3/Rfnq5EijEfhP02pvrlGkGr1Gc=
, all we have to do is trace our steps back up until we reach the initial one, like so:
- Inverse adding round key
- Inverse row shifting
- Inverse byte substitution
- Inverse adding round key
- Inverse column mixing
- Inverse row shifting
- Inverse byte substitution
- Repeat steps 4-7 for 9, 11, or 13 times depending on key length
- Inverse add round key
After performing all the steps above, we should end up with our original text fragment, ‘addictivetips.com’.
Is AES encryption secure?
One of the most pressing questions when it comes to all encryption standards (not only AES) is if it can provide you with an optimum level of security. In this case, the question would be: is AES encryption secure?
Although you could see for yourself that this encryption standard deploys a huge number of steps, each of which scrambles the original text and twists it beyond recognition, this didn’t seem to stop attackers from designing potential ways to circumvent these means of protection.
Note that in a real-life situation, an attacker (commonly known as a hacker or cracker) won’t go after the tallest, thickest wall in its attempt to invade the virtual fortress that is your PC, database, archive, or whatever you’re trying to protect.
Instead, they will circle the proverbial walls several times trying to find any cracks worth exploiting, and then start drilling there. In our situation, attackers may want to spot any vulnerabilities in the AES encryption process and start working their way up from there.
Thankfully, cryptography researchers constantly try to find vulnerabilities with the AES encryption process, so as to be able to prevent a potential attack from someone who discovers the flaws first and (obviously) doesn’t share them with the whole world.
Up until now, the researchers have been able to identify a series of attacks that could compromise AES, but these are either purely theoretical, side-channel attacks, or cracking attempts with a known security key, as you’ll soon learn from the following sections.
1. Known-key distinguishing attack
An attack that used a known key was designed by cryptography researchers and observed in action, and it showed some promising results. The attack was introduced in 2007 by Vincent Rijmen and Lars Knudsen.
While that’s not exactly great for the AES encryption method, this attack had two flaws that make it unlikely to be used in a real-life scenario: the fact that it used a known key, and that it was tested against a seven-round version of AES-128.
Considering that most of the time the key is not known to the attacker (unless they happen to just stumble upon it with precise instructions regarding its purpose) and that AES-128 has 10 rounds of encryption, everyday AES-128 can rest assured that the attack is not likely to occur.
The fact that most services that offer AES-128 also feature native support for AES-256 means that boosting your encryption couldn’t be easier in case you’re worried about being targeted by a known-key distinguishing attack.
2. Related key attack
Related key attacks are more of a category, as they represent all forms of cryptanalysis where attackers can analyze the way a cipher works under multiple keys. In this type of attack, the attacker doesn’t know the values of the keys used in the cipher.
However, although unknown, the keys also have some sort of mathematical relation one to another, which the attacker does know. One of the simplest examples would be that the attacker knows that the first 16 bits of the keys are always the same, but has no idea what the bits actually are.
Although related key attacks could be successful if applied correctly, they are of no real concern in the real world. In order for such an attack to work, an attacker would need to successfully persuade a cryptographer to encrypt data using various secret keys that are connected to each other mathematically, then share the secret with the attacker.
Thus, this type of attack servers merely as a reminder that human error could contribute to putting some kinks in the AES armor by being subject to poor implementation of this encryption standard.
3. Side-channel attack
Although AES is, at the time being, virtually uncrackable, there have been many attempts to design theoretical attacks that could demonstrate some of this encryption standard’s vulnerabilities.
Even if it’s been 20 years since AES has been introduced, and technology has made some huge advancements over these past 20 years, the amount of computing power needed to brute-force AES is still not enough, and we’d still need billions of years to be able to crack it.
However, a different breed of attempts to break the security of AES encryption is the side-channel attack. This type of attack combines multiple types of data leaks to extract enough data from an algorithm that it can be cracked.
For instance, attackers could focus on power consumption, electromagnetic radiation, the time it takes various computations to be performed, and even the sounds produced during computation to extract more information about the algorithm.
There are several classes of side-channel, including:
- Timing attacks
- Timing attacks revolve around measuring the time it takes for certain computations to be performed (for instance comparing a known password against an unknown one).
- Cache attacks
- These attacks are only viable if the attacker can access some of the victim’s caches in various environments, whether it’s virtualization environments (virtual machines), shared physical systems, or cloud services we’re talking about.
- Electromagnetic attacks
- Electromagnetic attacks are based on electromagnetic radiation leaks, which can be used to extract various bits of information. Measuring electromagnetic radiation leaks can sometimes lead to discovering cryptographic keys.
- Power-monitoring attacks
- Attackers monitor the power consumption of the hardware during certain computation steps in order to extract information about the algorithm.
- Acoustic cryptanalisis
- Similar to the power-monitoring attacks, but attackers listen to and analyze the sounds that hardware makes when performing certain computation steps and extract information from these findings.
- Data remanence
- This type of attack revolves around sensitive data that can still be accessed and read even after being deleted.
- Optical analysis
- In this complex type of attack, high-resolution cameras are used to capture secrets or sensitive data (such as analyzing hard disk activity indicators or transistors switching states).
- Differential fault analysis
- This type of attack is based on discovering secrets by inputting faults in computation in order to trigger an error.
Although you can agree that these side-channels are nothing short of creative and their authors can use them to turn even the most seemingly insignificant detail into a veritable piece of information, they only work if the system being audited is leaking information.
For that reason, avoiding side-channel attacks can be easily achieved either by making sure that the systems that could be attacked don’t leak any data or by ensuring that there’s no association between the algorithmic processes and leaked data, regardless of its nature.
4. Key recovery attacks
Last, but not least, the key recovery attacks are a tough contestant when it comes to efficient ways to crack AES encryption. In 2011, such an attack was attempted to prove its efficacy against the AES encryption mechanism.
This type of attack is not exactly likely to occur, seeing as it involves the attacker getting its hands on at least a pair of encrypted and decrypted messages from the soon-to-be-compromised system.
The attack showed promising results, as it was approximately four times as fast as brute-forcing. However, considering that a brute-force attack would take literally billions of years to complete, key recovery attacks are still far from being ideal, which makes them unlikely to be used in an attack.
Furthermore, even if it took a shorter amount of time to complete, changing the security key often could render the pair of encrypted and decrypted messages useless.
Is AES secure?
Considering everything you’ve learned by going through this guide, we think that you can be the judge of whether or not AES is a safe encryption standard.
AES has been around since 2001, and since its introduction, there were numerous attempts to break it, which makes it safe to say that it stood the test of time, and it’s still a solid choice when it comes to encryption algorithms.
The sheer amount of steps the algorithmic process goes through in order to make the data unreadable is tremendous, and it would take literally billions of years to crack AES, even with today’s computation power and technology advancements.
So, to answer your question considering all of the above: yes, AES is secure. Even AES-128 proved to be downright impossible to crack, not to mention its more powerful counterparts, AES-192, and AES-256.
AES Encryption – CONCLUSION
All things considered, after reading our extensive guide we hope you learned more about AES, including how it works, what processes it goes through during the encryption process, where it can be used, and how it could be (at a theoretical level) compromised.
The fact that 20 years after its introduction it’s still fast, secure, and can be implemented on a huge variety of hardware and software environments makes it truly deserve its title of being the “gold standard” of encryption techniques.