RSA si rompe anche senza fattorizzare: scoperto un nuovo modo per falsificare le firme

Una nuova ricerca mette alla prova una delle certezze su cui si basa la sicurezza di #RSA: in alcuni casi è possibile falsificare una firma digitale senza riuscire a “rompere” la chiave. Il problema riguarda una particolare tecnologia di #Crittografia usata per proteggere la #Privacy, le #BlindSignature, e può interessare protocolli come #PrivacyPass. Fortunatamente, le…

Per decenni la sicurezza di RSA si è basata su un presupposto considerato praticamente invalicabile, tanto da rappresentare uno dei principi fondamentali su cui si basa ancora oggi l’utilizzo dell’algoritmo per le firme digitali. Per produrre una firma valida è necessario prima calcolare la chiave privata, operazione che richiede la fattorizzazione di un numero enorme e che, con le dimensioni delle chiavi utilizzate oggi, è considerata computazionalmente proibitiva. Un gruppo di ricerca guidato da Nadia Heninger, dell’Università della California a San Diego, ha però dimostrato che questo presupposto non è sempre valido. In un caso specifico è infatti possibile forgiare firme RSA valide senza calcolare la chiave privata e senza fattorizzare il modulo RSA.

Cosa significa firmare con RSA?

Firmare un messaggio con RSA significa applicare l’esponente privato a un hash del messaggio, un’operazione che solo chi possiede la chiave privata può eseguire. Verificare significa fare il percorso inverso con l’esponente pubblico e controllare che il risultato coincida con l’hash atteso. È un meccanismo che lega un contenuto a un’identità: se la verifica passa, il messaggio è stato prodotto da chi detiene quella chiave privata. Prima dello scambio dei messaggi avviene sempre lo scambio delle chiavi, problema risolto con l’algoritmo Diffie-Hellman nel ’76. L’immagine seguente spiega passo per passo come avviene uno scambio di messaggi tramite cifratura RSA.

La sicurezza di questo schema dipende però da come il messaggio viene preparato prima di essere firmato. Gli schemi con padding, PKCS#1 o PSS, aggiungono dati randomizzati all’hash prima dell’operazione crittografica, e sono lo standard su cui gira praticamente tutto ciò che usa RSA oggi. Esiste però una variante più antica, la blind signature o textbook RSA, pensata per protocolli in cui chi chiede la firma non vuole rivelare il contenuto a chi firma: il messaggio viene mascherato prima dell’invio, firmato, e poi smascherato dal client. È proprio l’assenza del padding robusto in questa variante ad aprire la porta sfruttata dal nuovo attacco.

La tecnica implementa una variante dell’algoritmo number field sieve speciale, applicata contro un “oracolo“: una tecnica che sfrutta ripetutamente query mirate all’algoritmo che restituisce risposte binarie sfruttabili per accumulare informazione sulla struttura della firma, senza mai passare per il calcolo della chiave privata. Questo tipo di attacco è stato molto spesso utilizzato su algoritmi della crittografia classica ormai datati ed ha causato nel corso degli anni un bel po’di problemi. RSA con padding elimina questa vulnerabilità alla radice, motivo per cui l’attacco non lo tocca.

I numeri raccontano perché la comunità crittografica ha reagito con sorpresa. Fattorizzare una chiave RSA a 1024 bit richiede circa 2^80 operazioni, stimate in 500.000-1.000.000 di core-year di calcolo. Forgiare una firma con la nuova tecnica ne richiede invece 2^65, pari a circa 1.380 core-year, un salto di più ordini di grandezza verso il basso. Gli standard di sicurezza fissati da enti come NIST richiedono un livello minimo di 2^128 operazioni per considerare un sistema crittografico sicuro. L’attacco porta questo livello a 2^65 per chiavi a 1024 bit, 2^90 per 2048 bit, 2^119 per 4096 bit, tutti sotto soglia. I ricercatori hanno inoltre precisato di aver implementato l’intera tecnica a mano, senza GPU né supporto di strumenti di ottimizzazione automatica: con quel tipo di accelerazione i numeri probabilmente peggiorerebbero ulteriormente.

Chi usa davvero le blind signature RSA?

Qui sta il punto che ridimensiona l’allarme: la maggior parte delle implementazioni RSA utilizza schemi standard come PKCS#1 o RSA-PSS, quindi resta fuori dalla portata dell’attacco. La superficie esposta riguarda soprattutto protocolli progettati per utilizzare blind signature. Il caso più noto è Privacy Pass, standard IETF che permette di ottenere token verificabili senza collegarne l’utilizzo all’utente che li ha richiesti, ad esempio dopo aver superato un CAPTCHA o un controllo anti-abuso. Blind RSA nasce inoltre nell’ambito dell’e-cash di David Chaum e può essere impiegata in sistemi di credenziali anonime, voto elettronico e altri meccanismi di autorizzazione privacy-preserving. La superficie d’attacco rimane quindi limitata rispetto all’intero ecosistema RSA, ma non è puramente teorica e riguarda una nicchia di protocolli in cui anonimato e non tracciabilità sono proprietà fondamentali.

Cosa cambia davvero:

La scoperta non mette in discussione RSA nel suo complesso. Le normali implementazioni utilizzate per TLS, code signing e autenticazione adottano schemi con padding non vulnerabili, mentre il problema riguarda il particolare scenario delle blind signature. Va inoltre ricordato che lo schema moderno RSABSSA incorpora RSA-PSS e specifiche protezioni, quindi è importante verificare la variante effettivamente utilizzata prima di considerare un sistema vulnerabile. Il risultato è però interessante dal punto di vista crittografico perché mostra come, in uno scenario specifico, sia possibile attaccare una costruzione basata su RSA senza passare direttamente dalla fattorizzazione del modulo. Per chi utilizza blind signature, questo significa soprattutto controllare implementazione, parametri e protocollo, oltre a seguire eventuali aggiornamenti derivati dalla ricerca.

Questo non cambia però il motivo principale della migrazione oltre RSA. Un computer quantistico sufficientemente potente potrebbe compromettere RSA attraverso la fattorizzazione, ed è per questo che NIST raccomanda di iniziare la migrazione verso la crittografia post-quantum, con standard come ML-KEM, ML-DSA e SLH-DSA già disponibili.

Red Team & Offensive Security Engineer
Parlo di sicurezza informatica offensive, Linux e Open Source

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *