AES, che cos'è?
Advanced Encryption Standard è l'algoritmo di codifica simmetrica più popolare nel mondo della crittografia. Lo standard lavora su blocchi di dimensione a 128 bit e include scritture cifrate a 128, 192 o 256-bit (segnalate come AES-128, AES-192 e AES-256 rispettivamente). Le chiavi corrispondenti sono ugualmente estese. Molte soluzioni di codifica, come TrueCrypt, hanno abbracciato AES fin dal principio. Forse però il fatto più significativo nel successo dello standard è stata la sua adozione da parte del governo statunitense nel 2002 e il passaggio nel 2003 al formato per la protezione di dati classificati.
Codificare i dati con AES
La codifica AES è basata su una rete a sostituzione e permutazione, il che significa che una serie di operazioni matematiche crea dati altamente modificati (codificati). L'input è sempre del testo semplice e la chiave è usata per pilotare le operazioni. Queste possono essere semplici come una rotazione a livello di singoli bit (bitwise rotation), XOR (exclusive OR) o più complessa. Siccome un singolo passaggio dovrebbe essere semplice da decifrare, tutte le moderne tecnologie di codifica lavorano a più riprese. I cicli AES si ripetono per 10, 12 o 14 volte per AES-128, AES-192 e AES-256. Le chiavi AES sopportano anche lo stesso processo dei dati utente, che vengono rovesciati in una chiave mutevole.
Il processo di codifica AES lavora con indirizzi 4x4 di singoli byte chiamati boxes, S-boxes per la sostituzione e P-boxes per la permutazione (sono stadi separati). La sostituzione lavora all'interno di boxes mentre la permutazione scambia le informazioni tra i boxes. S-box lavora su principi complessi, il che significa che se solo un singolo bit in entrata viene modificato, più bit in uscita saranno influenzati o che la proprietà di ogni singolo bit in uscita dipende da ogni bit in entrata.
La ripetizione dei passaggi rende buona la codifica, poiché criteri di diffusione e confusione devono essere rispettati. La diffusione avviene attraverso la combinazione a cascata di trasformazione S-box e P-box. Cambiando solo un singolo bit nel testo di entrata, S-box modificherà l'uscita di diversi bit, mentre P-box distribuisce semicasualmente l'effetto tra diversi S-boxes. Un minimo cambiamento in entrata ha un impatto massimo in uscita, un vero e proprio valanga.
AES, quanto è sicuro?
Molti dibattiti accademici nel settore della sicurezza ruotano attorno alle cosiddette violazioni: ci riferisce a metodi di violazione diversi dalla ricerca "brute-force" per la ricerca della chiave di accesso. Si è parlato e si parla molto di attacchi XSL e legati alla chiave, ma il successo non è ancora arrivato. L'unica via sfruttabile per far breccia nella codifica AES è un attacco di tipo "side channel". Questo richiede che l'attacco avvenga sullo stesso sistema sul quale la codifica AES è eseguita, e bisogna trovare un modo per ottenere le informazioni di cache timing. In questo caso, è possibile tracciare il numero di cicli macchina fino a che il processo di codifica è completato.
Ovviamente non è possibile farlo facilmente. Dovreste avere l'accesso al sistema, ottenere dati sufficienti per l'analisi e i diritti per eseguire il codice. A questo punto è ovvio perché le falle di sicurezza che permettono a qualcuno d'impossessarsi di questi diritti, non importa quanto assurde potrebbero sembrare, devono essere risolte il più velocemente possibile. La storia in breve: se avete accesso a un dato sistema, l'estrazione della chiave AES è questione di capacità e tempo, non un'operazione laboriosa che dipende dalla potenza di calcolo.
AES dentro Intel
Le istruzioni AES sulla CPU iniziano ad avere senso, senza contare i possibili benefici prestazionali. Da un punto di vista della sicurezza, il processore potrebbe amministrare istruzioni AES in maniera incapsulata. Questo potrebbe alleviare il bisogno di tabelle lookup che potrebbero fornire dati per attacchi side-channel basati sulla memoria cache.