L’algoritmo RSA, basato sulle regole viste nel precedente articolo, non è sicuro da un punto di vista matematico-teorico, in quanto esiste la possibilità che tramite la conoscenza della chiave pubblica si possa decriptare un messaggio, ma l'enorme mole di calcoli e l'enorme dispendio in termini di tempo necessario per trovare la soluzione fa di questo un sistema ad alta affidabilità.
I ricercatori però affermano che utilizzando un dispositivo di semplice realizzazione per variare la corrente al computer, che produce la "C" dell’esempio riportato, sono stati in grado di decifrare le
chiavi private a 1.024 bit in circa 100 ore, il tutto senza lasciare traccia.
L’attacco richiede solo minime conoscenze dell’hardware del sistema scelto per attuarlo; inoltre non richiede di avere l’accesso alle parti interne del sistema: semplicemente occorre prelevare le chiavi pubbliche corrotte con l’attacco, scambiate nella comunicazione. Una volta raccolte un numero sufficiente di chiavi corrotte, la chiave privata può essere estratta in un tempo ragionevole con una
analisi offline.
L’attacco è stato portato con successo su un sistema
SPARC con Linux come sistema operativo, producendo dei fallimenti occasionali nell’unità aritmetica del processore, manipolando il sistema di alimentazione. I fallimenti prodotti, consistenti in un risultato errato della moltiplicazione per la sola posizione di un bit, creano variazioni computazionali nella routine di autenticazione del sistema RSA, consentendo così l’estrazione della chiave privata.
L’attacco è stato eseguito con successo durante l’utilizzo di una sessione di comunicazione basata su una versione non modificata di
OpenSSL, che utilizza l’algoritmo RSA implementato mediante
l’elevamento a potenza a finestra fissa denominato
FWE. Dall'insieme dei due fattori — tipologia dell’implementazione usata nell’OpenSSL e unità aritmetica realizzata nel processore — la posizione dei bit che vengono corrotti dall’attacco è limitato a sole poche unità.
Ciò ha ridotto significativamente il tempo di calcolo necessario per recuperare la chiave, poiché solo alcune posizioni devono essere testate prima che il risultato corretto sia recuperato. L’
articolo riporta nel dettaglio come i ricercatori siano riusciti nel loro intento.