Chiavi crittografiche RSA deboli recuperate con un algoritmo di 380 anni fa

Il lavoro svolto nel '600 dal matematico Pierre de Fermat torna utile oggi per decodificare niente meno che alcuni messaggi scambiati usando l'algoritmo RSA. Come può essere possibile?

Gli algoritmi crittografici sono essenziali per proteggere i dati scambiati attraverso un mezzo di comunicazione intrinsecamente insicuro qual è la rete Internet.
La crittografia asimmetrica in particolare permette a due soggetti o due entità di comunicare a distanza in modo sicuro senza bisogno di essersi prima scambiati reciprocamente “un segreto” (come può essere una password di decodifica dei dati).

Gli sviluppatori, quando realizzano un software o implementano qualunque funzione in hardware che deve gestire dati riservati, sono soliti ricorrere all’utilizzo di algoritmi crittografici oggi considerati affidabili e robusti.
In un altro articolo abbiamo visto quanto è davvero sicuro un algoritmo crittografico come RSA e abbiamo chiarito qual è il ruolo dell’operazione di fattorizzazione quando si parla di cifratura dei dati.
La sicurezza di RSA non dipende dall’algoritmo in sé quanto dalle modalità con cui esso viene implementato e utilizzato.

A marzo 2022 il giornalista freelance e ricercatore di sicurezza Hanno Böck ha verificato l’utilizzo di chiavi deboli in alcuni certificati TLS (Transport Layer Security), protocollo che è ampiamente utilizzato anche per proteggere gli scambi di dati da e verso pagine Web HTTPS.
Con sua sorpresa, Böck si è imbattuto in alcune chiavi RSA vulnerabili agli attacchi: il loro utilizzo è stato rinvenuto in alcune stampanti Canon e Fujifilm precedentemente note come Fuji Xerox.

Ben 380 anni fa, il matematico francese Pierre de Fermat, che visse tra il 1607 e il 1665, presentò il suo algoritmo di fattorizzazione che Böck ha oggi usato per risalire in pochi secondi alla chiave privata utile per la decodifica dei messaggi cifrati RSA.
Con la chiave privata un malintenzionato potrebbe verosimilmente accedere ai pacchetti dati cifrati dalle stampanti Canon e Fujifilm per raccogliere dati riservati o impossessarsi delle credenziali altrui.

Böck ha dimostrato che il problema derivava dall’utilizzo di una libreria proprietaria sviluppata da Rambus mostrando ancora una volta che la corretta implementazione dell’algoritmo RSA è cruciale per garantire la sicurezza dei dati. All’errore nella libreria è stato assegnato l’identificativo CVE-2022-26320 con Rambus che ha poi corretto il problema attraverso il rilascio di una patch.

Come abbiamo visto nell’articolo sulla sicurezza di RSA, dato un numero naturale N molto grande non esiste un metodo veloce per risalire ai due numeri primi P e Q che moltiplicati diano per risultato proprio N. Quindi se la moltiplicazione è un’operazione che si può eseguire molto facilmente e velocemente con un computer, la fattorizzazione di numeri molto grandi è un’operazione computazionalmente impegnativa (anche per i supercomputer).
Il prodotto dei due numeri primi si chiama “modulo RSA” e fa parte della chiave pubblica e che poi diventa anche parte integrante del certificato TLS. Per l’attuale standard a 2048 bit, RSA richiede numeri primi con più di 300 cifre decimali.

Come ha messo in evidenza il concorso RSA Factoring Challenge, è molto complesso fattorizzare numeri composto da tante cifre: ad esempio RSA-260, con 260 cifre decimali, non è stato ancora fattorizzato.

Il problema non sta quindi ancora una volta nell’algoritmo ma nella libreria crittografia che lo supporta: se vengono scelti due numeri P e Q vicini tra loro, le probabilità di invertire la cifratura e risalire alla chiave privata sono elevate.

Nel caso della versione vulnerabile della libreria Rambus il problema era che dapprima veniva cercato un numero primo sufficientemente grande e poi veniva selezionato il successivo. Un difetto fatale che ha reso la chiave direttamente vulnerabile all’algoritmo di fattorizzazione di Fermat.
Con le comuni chiavi RSA-2048 (lunghezza pari a 2048 bit) utilizzate oggi, l’algoritmo di Fermat fattorizza in modo affidabile in 100 round i numeri in cui P e QR differiscono fino a 2517.

La morale è che non tutto ciò che sembra sicuro è davvero sicuro. Troppo spesso si dà per scontato che un prodotto sia affidabile e sicuro semplicemente perché usa l’algoritmo RSA quando in realtà, come dimostra il lavoro svolto da Böck, talvolta basta andare un po’ in profondità per scoprire falle gigantesche che possono portare alla decodifica di messaggi che per la loro natura si consideravano non decifrabili.

Ti consigliamo anche

Link copiato negli appunti