Grazie alla potenza dei computer si è in grado di utilizzare crittografia a livelli che non erano immaginabili poche decine di anni fa. A partire dalle organizzazioni governative e militari, passando per le imprese, per arrivare al mondo consumer, la crittografia è diventata popolare al punto che oggi chiunque può utilizzare file criptati senza sapere nulla di operazioni crittografiche, algoritmi e matematica avanzata. Ma di pari passo con la loro diffusione è aumentato il cybercrime che colpisce questi file, è quindi indispensabile implementare un sistema di crittografia in modalità sicura, e per farlo è necessario conoscere come si muovono i cybercriminali.
Di seguito riportiamo alcuni dei più comuni attacchi a sistemi crittografici estratti dalla Guida Ufficiale ISC2 CISSP CBK (Certified Information Systems Security Professional- Common Body of Knowledge), quarta edizione.
Ma prima di proseguire, ricordiamo che la crittografia, con i relativi tentativi di decifrare le chiavi di cifratura, non è certo una disciplina recente. La necessità di nascondere messaggi strategici è antica quanto la storia dell’uomo: dal codice di atbash degli antichi Ebrei, alla scitala degli Spartani o al codice di Cesare, passando per il disco cifrante di Leon Battista Alberti fino ad arrivare alla famosa macchina elettro-meccanica Enigma (basata proprio sull’idea dell’Alberti) utilizzata dalle forze armate tedesche nella Seconda Guerra Mondiale e resa inutile dalla macchina sviluppata dal matematico Alan Turing considerato il padre dell’informatica. Pertanto, la logica che sta alla base in molte delle tipologie di attacco elencate in questo articolo è la stessa che consentiva di decifrare i messaggi prima dell’era informatica, ma l’utilizzo dei computer e di tecnologie sempre più sofisticate (come quelle cognitive e di intelligenza artificiale) rende oggi possibile sviluppare sistemi di cifratura sempre più complessi e, nel contempo, i sistemi per decifrarli e quindi compiere attacchi ai sistemi informativi.
Figura 1 – Esempio di corrispondenza elettronica utilizzando un sistema di crittografia asimmetrica – Fonte: Wikipedia
Ciphertext-only
L’attaccante ha accesso solo al messaggio cifrato ed è un attacco molto difficile da portare a compimento senza informazioni di base per iniziarlo. L’attacco ha successo se è possibile dedurre parti in chiaro del testo e poi si procede con la decrittazione attraverso un’analisi statistica che richiede una grande potenza elaborativa. Ma dato che la potenza di calcolo delle CPU raddoppia ogni 18 mesi (Legge di Moore), la decrittazione anche dei sistemi più complessi diventa man mano più accessibile e i sistemi di crittografia oggi sicuri potrebbero non esserlo tra pochi anni.
Testo in chiaro
L’attaccante ha accesso sia alla versione cifrata sia a quella in chiaro dello stesso messaggio e questo gli consente di trovare la chiave che è stata usata per crittografare il messaggio. Una volta che la chiave è stata trovata, l’attaccante sarà in grado di decrittare tutti i messaggi che sono stati crittografati con quella stessa chiave. Chi attacca non ha bisogno di una copia esatta, potrebbe servirsi di un formato conosciuto, per esempio desunto dal fatto di sapere il tipo di transazione crittata.
Testo scelto in chiaro
Questo attacco presume che l’attaccante abbia la capacità di scegliere del testo in chiaro arbitrario da fare cifrare per ottenere il corrispondente testo cifrato dopo essere entrato in possesso dell’algoritmo usato per crittografare il documento (oppure avere la possibilità di lavorare sul computer usato per cifrare il messaggio sfruttando questo accesso per risalire alla chiave utilizzata). Un attacco di questo genere diventa estremamente importante nel contesto della crittografia a chiave pubblica, dove la chiave di cifratura è pubblica (altrimenti detta crittografia asimmetrica dove ad ogni attore coinvolto nella comunicazione è associata una coppia di chiavi, quella pubblica che viene distribuita e quella privata personale e segreta, figura 1) e l’attaccante può cifrare qualsiasi testo in chiaro egli voglia.
Testo cifrato scelto
È molto simile all’attacco precedente: il crittanalista raccoglie informazioni su un sistema crittografico scegliendo un testo cifrato ed ottenendo la sua versione decifrata con una chiave non nota. Questa tipologia di attacco può essere ridotta includendo un riempimento casuale nel testo in chiaro prima di crittografare i dati per esempio utilizzando l’Optimal Asymmetric Encription (OAEP) di RSA o altre forme di crittografia a chiave privata (o simmetrica dove la chiave di crittazione è la stessa chiave di decrittazione, rendendo l’algoritmo molto performante e semplice da implementare) con autenticazione.
Criptoanalisi differenziale
Chiamato attacco side-channel, è realizzato misurando gli esatti tempi di esecuzione e la potenza richiesta dai dispositivi crittografici per la decriptazione. Misurando questi parametri è possibile determinare il valore della chiave e gli algoritmi utilizzati.
Criptoanalisi lineare
L’attacco utilizza testo in chiaro e approssimazioni lineari per descrivere il comportamento del sistema di cifratura a blocchi. Con un numero sufficiente di coppie di testi in chiaro e dei corrispondenti risultati della cifratura, si possono ottenere elementi d’informazione sulla chiave. Esistono anche attacchi che uniscono elementi di criptoanalisi differenziale con quelli della criptoanalisi lineare.
Debolezze d’implementazione
Questi attacchi rappresentano alcuni dei più comuni e diffusi contro i sistemi crittografici per via della loro facilità e dipendenza da elementi di sistema esterni all’algoritmo. I principali tipi di attacco sono tre.
- Side-channel si basa su un attributo fisico dell’implementazione come il consumo di potenza/dissipazione; questi attributi sono studiati per determinare la chiave segreta e la funzione dell’algoritmo.
- Fault-analysis prevede di forzare il sistema in stato di errore per ottenere informazioni utili a trovare la chiave segreta e l’algoritmo.
- Probing attack consiste nell’analizzare i circuiti che circondano il modulo crittografico alla ricerca di componenti che rivelino informazioni sulla chiave o sull’algoritmo, spesso con l’aggiunta di hardware sofisticati.
Replay attack
Questo attacco consiste nell’impossessarsi di una credenziale di autenticazione comunicata da un host ad un altro e riproporla successivamente simulando l’identità dell’emittente fino a interrompere e danneggiare l’elaborazione dell’host tramite l’invio di file ripetuti. Se non esistono controlli quali timbratura temporale, token monouso o verifiche di sequenza, il sistema che subisce l’attacco continua a processare i file duplicati. Questo attacco permette operazioni fraudolente come falsa autenticazione e/o transazioni duplicate, senza dover necessariamente decriptare la password.
Algebrico
Riguarda una classe di tecniche basate su blocchi di cifratura che hanno una struttura matematica riconoscibile. Se la crittografia di un messaggio sotto una chiave e la crittografia del risultato sotto un’altra chiave sono equivalenti alla singola crittografia, il sistema è debole e non trae vantaggio da cifrature multiple.
Rainbow table
È una tabella di associazione usata per il recupero delle chiavi di cifratura in chiaro partendo da chiavi in formato hash generate da una funzione crittografica di hash che mappa un messaggio in una stringa di lunghezza prefissata, cercando di far in modo che da questa stringa non si possa risalire al messaggio che l’ha generata. Poiché la funzione di hash è un processo unidirezionale non si dovrebbe poter riportare un testo in chiaro dalla stessa hash, ci sono però almeno due modi per riuscirci:
- Fare l’hash di ciascun testo in chiaro fino a trovare l’hash corrispondente.
- Fare l’hash di ogni testo in chiaro, memorizzando gli hash ottenuti nella rainbow table in modo che gli hash non debbano essere nuovamente generati.
Frequency analysis
Questo attacco si combina solitamente con altri e sfrutta le statistiche di frequenza delle lettere nei testi in chiaro. Poiché le lettere dell’alfabeto hanno una ricorrenza tipica nei testi di ogni lingua, è in molti casi possibile risalire ai caratteri d’origine.
Birthday
Così chiamato perché sfrutta i princìpi matematici del paradosso del compleanno nella teoria delle probabilità (la cui formula matematica deriva dal presupposto che la probabilità che almeno due persone in un gruppo compiano gli anni lo stesso giorno è largamente superiore a quanto potrebbe dire l’intuito): poiché un hash è una breve rappresentazione di un messaggio, date le necessarie risorse e tempo sufficiente, un altro messaggio potrebbe avere lo stesso valore di hash e quindi semplificare l’identificazione della chiave di cifratura. Per evitare questo attacco la lunghezza dell’output di una funzione di hash deve poter essere grande abbastanza in modo che l’attacco del compleanno divenga computazionalmente non fattibile.
Social engineering
È il tipo più comune di attacco e tra i più riusciti perché punta sul fattore umano: attraverso un raggiro psicologico (tipicamente utilizzando il metodo più semplice, ossia una mail particolarmente convincente), l’attaccante riesce a ingannare la vittima convincendola a fare qualcosa che altrimenti non avrebbe fatto.
Attacchi dizionario
L’attacco dizionario viene utilizzato comunemente contro i file di password, sfruttando la cattiva abitudine degli utenti di scegliere parole comuni. L’attacco crittografa tutte le parole in un dizionario e controlla se l’hash risultante corrisponda a una password crittografata memorizzata nel file SAM (Security Acount Manager) o in un altro file di password.
Forza bruta
I metodi di cosiddetta “forza bruta” consistono nel provare tutte le possibili chiavi fino a quando non si trova quella che decritta il testo cifrato. La lunghezza della chiave è determinante per la resistenza di un sistema crittografico: con il DES (Data Encryption Standard) a 56 bit gli attaccanti sono oggi facilmente in grado di scoprire le chiavi e decrittare messaggi, ma lo sono meno con SHA-256 (Secure Hash Algorithm). Le unità di elaborazione grafica (GPU) hanno rivoluzionato i metodi a forza bruta: laddove una CPU standard impiega 48 ore per aprire una password di 8 caratteri, una GPU ci mette 10 minuti.
Reverse engineering
È uno dei più comuni. Il sistema crittografico viene acquistato per studiarlo e individuarne le debolezze ottenendo informazioni su come funziona l’algoritmo.
Attacco ai file temporanei
La maggior parte dei sistemi di crittografia usa file temporanei per eseguire il lavoro. Se questi file non vengono eliminati e sovrascritti, possono aiutare l’attaccante a riprodurre il messaggio in chiaro.