Attacco generatore di numeri casuali - Random number generator attack

La sicurezza dei sistemi crittografici dipende da alcuni dati segreti noti alle persone autorizzate ma sconosciuti e imprevedibili agli altri. Per ottenere questa imprevedibilità, viene tipicamente impiegata una certa randomizzazione . I moderni protocolli crittografici richiedono spesso la generazione frequente di quantità casuali. Gli attacchi crittografici che sovvertono o sfruttano i punti deboli in questo processo sono noti come attacchi al generatore di numeri casuali .

Un processo di generazione di numeri casuali (RNG) di alta qualità è quasi sempre richiesto per la sicurezza, e la mancanza di qualità generalmente fornisce vulnerabilità agli attacchi e quindi porta alla mancanza di sicurezza, anche a una completa compromissione, nei sistemi crittografici. Il processo RNG è particolarmente interessante per gli aggressori perché in genere è un singolo componente hardware o software isolato facile da individuare. Se l'attaccante può sostituire bit pseudo-casuali generati in un modo che può prevedere, la sicurezza è totalmente compromessa, ma generalmente non rilevabile da qualsiasi test a monte dei bit. Inoltre, tali attacchi richiedono un solo accesso al sistema che viene compromesso. Nessun dato deve essere restituito a differenza, ad esempio, di un virus informatico che ruba le chiavi e poi le invia tramite e-mail a un punto di raccolta.

Generazione umana di quantità casuali

Gli esseri umani generalmente non riescono a generare quantità casuali. Maghi, giocatori d'azzardo professionisti e truffatori dipendono dalla prevedibilità del comportamento umano. Nella seconda guerra mondiale gli addetti al codice tedeschi furono incaricati di selezionare tre lettere a caso per essere l'impostazione iniziale del rotore per ogni messaggio della macchina Enigma . Invece alcuni hanno scelto valori prevedibili come le proprie o le iniziali di una ragazza, aiutando notevolmente la violazione di questi sistemi di crittografia da parte degli Alleati. Un altro esempio è il modo spesso prevedibile in cui gli utenti di computer scelgono le password (vedi password cracking ).

Tuttavia, nel caso specifico dei giochi di strategia mista , l'uso dell'entropia del gameplay umano per la generazione di casualità è stato studiato da Ran Halprin e Moni Naor .

Attacchi

RNG software

Proprio come con altri componenti di un sistema crittografico, un generatore di numeri casuali software dovrebbe essere progettato per resistere a determinati attacchi. Alcuni attacchi possibili su un RNG includono (da):

Attacco crittoanalitico diretto
quando un utente malintenzionato ha ottenuto parte del flusso di bit casuali e può utilizzarlo per distinguere l'output RNG da un flusso veramente casuale.
Attacchi basati su input
modificare l'input al RNG per attaccarlo, ad esempio "svuotando" l'entropia esistente dal sistema e mettendola in uno stato noto.
Attacchi di estensione di compromissione dello stato
quando lo stato segreto interno dell'RNG è noto in qualche momento, usalo per prevedere l'output futuro o per recuperare gli output precedenti. Questo può accadere quando un generatore si avvia e ha poca o nessuna entropia (specialmente se il computer è stato appena avviato e ha seguito una sequenza di operazioni molto standard), quindi un utente malintenzionato potrebbe essere in grado di ottenere un'ipotesi iniziale sullo stato.

RNG hardware

Sono possibili numerosi attacchi ai generatori di numeri casuali hardware , incluso il tentativo di catturare le emissioni di radiofrequenza dal computer (ottenendo i tempi di interruzione del disco rigido dal rumore del motore, ad esempio), o il tentativo di inviare segnali controllati a una fonte apparentemente casuale (come come spegnere le luci in una lampada di lava o alimentare un segnale forte e noto in una scheda audio).

sovversione RNG

I numeri casuali sovvertiti possono essere creati utilizzando un generatore di numeri pseudocasuali crittograficamente sicuro con un valore seme noto all'attaccante ma nascosto nel software. Una porzione relativamente breve, diciamo da 24 a 40 bit, del seme può essere veramente casuale per prevenire ripetizioni rivelatrici, ma non abbastanza lunga da impedire all'attaccante di recuperare, ad esempio, una chiave prodotta "casualmente".

I numeri casuali in genere passano attraverso diversi livelli di hardware e software prima di essere utilizzati. I bit possono essere generati in un dispositivo periferico, inviati tramite un cavo seriale, raccolti in un'utilità del sistema operativo e recuperati da una chiamata di sistema. I bit sovvertiti possono essere sostituiti in qualsiasi momento in questo processo con poca probabilità di rilevamento.

Un circuito hardware per produrre bit sovvertiti può essere costruito su un circuito integrato di pochi millimetri quadrati. Il più sofisticato generatore di numeri casuali hardware può essere sovvertito posizionando un tale chip ovunque a monte del punto in cui è digitalizzata la fonte di casualità, ad esempio in un chip del driver di uscita o persino nel cavo che collega l'RNG al computer. Il chip di sovversione può includere un orologio per limitare l'inizio dell'operazione a un po' di tempo dopo che l'unità è stata accesa e sottoposta a test di accettazione, oppure può contenere un ricevitore radio per il controllo on/off. Potrebbe essere installato dal produttore su richiesta del servizio di intelligence dei segnali nazionale o aggiunto in seguito da chiunque abbia accesso fisico. I chip della CPU con generatori di numeri casuali hardware integrati possono essere sostituiti da chip compatibili con un RNG sovvertito nel firmware dei chip.

difese

  • Mescola (con, ad esempio, xor ) i numeri casuali generati dall'hardware con l'output di un codice a flusso di buona qualità , il più vicino possibile al punto di utilizzo. La chiave di cifratura a flusso o seme dovrebbe essere modificabile in un modo che possa essere verificato e derivato da una fonte affidabile, ad esempio il lancio dei dadi. Il generatore di numeri casuali Fortuna è un esempio di un algoritmo che utilizza questo meccanismo.
  • Genera password e passphrase utilizzando una vera fonte casuale. Alcuni sistemi selezionano password casuali per l'utente piuttosto che lasciare che gli utenti propongano le proprie.
  • Utilizza sistemi di crittografia che documentano il modo in cui generano numeri casuali e forniscono un metodo per controllare il processo di generazione.
  • Costruisci sistemi di sicurezza con hardware pronto all'uso, preferibilmente acquistato in modi che non ne rivelino l'uso previsto, ad esempio dal pavimento di un grande stabilimento di vendita al dettaglio. Da questo punto di vista, le schede audio e le webcam possono essere una migliore fonte di casualità rispetto all'hardware realizzato a tale scopo .
  • Mantieni il controllo fisico completo sull'hardware dopo che è stato acquistato.

La progettazione di un generatore di numeri casuali sicuro richiede un livello di attenzione almeno pari a quello della progettazione di altri elementi di un sistema crittografico.

Esempi importanti

Seme Netscape prevedibile

Le prime versioni di Netscape 's Secure Sockets Layer (SSL) crittografia quantità pseudo-casuali utilizzati derivati da un PRNG seminati con tre valori delle variabili: l'ora del giorno, l'ID del processo, e l'ID del processo genitore. Queste quantità sono spesso relativamente prevedibili, e quindi hanno poca entropia e sono meno che casuali, e quindi quella versione di SSL è risultata insicura come risultato. Il problema è stato segnalato a Netscape nel 1994 da Phillip Hallam-Baker , allora ricercatore nel team Web del CERN, ma non è stato risolto prima del rilascio. Il problema nel codice in esecuzione è stato scoperto nel 1995 da Ian Goldberg e David Wagner , che hanno dovuto decodificare il codice oggetto perché Netscape si rifiutava di rivelare i dettagli della sua generazione di numeri casuali ( sicurezza attraverso l'oscurità ). Questo RNG è stato corretto nelle versioni successive (versione 2 e successive) mediante seeding più robusti (ovvero, entropia più casuale e quindi più elevata dal punto di vista di un aggressore).

Generatore di numeri casuali di Microsoft Windows 2000/XP

Microsoft utilizza un algoritmo non pubblicato per generare valori casuali per il suo sistema operativo Windows . Queste quantità casuali sono rese disponibili agli utenti tramite l' utilità CryptGenRandom . Nel novembre 2007, Leo Dorrendorf et al. dalla Università Ebraica di Gerusalemme e dell'Università di Haifa pubblicato un documento intitolato Cryptanalysis della Random Number Generator del sistema operativo Windows . Il documento presentava gravi debolezze nell'approccio di Microsoft all'epoca. Le conclusioni del documento si basavano sullo smontaggio del codice in Windows 2000, ma secondo Microsoft si applicava anche a Windows XP. Microsoft ha dichiarato che i problemi descritti nel documento sono stati risolti nelle versioni successive di Windows, che utilizzano un'implementazione RNG diversa.

Possibile backdoor in curva ellittica DRBG

Il National Institute of Standards and Technology degli Stati Uniti ha pubblicato una raccolta di "generatori di bit casuali deterministici" che raccomanda come pubblicazione speciale NIST 800-90. Uno dei generatori, Dual_EC_DRBG , è stato favorito dalla National Security Agency . Dual_EC_DRBG utilizza la tecnologia della curva ellittica e include una serie di costanti consigliate. Nell'agosto 2007, Dan Shumow e Niels Ferguson di Microsoft hanno dimostrato che le costanti possono essere costruite in modo tale da creare una backdoor cleptografica nell'algoritmo. Nel settembre 2013 il New York Times ha scritto che "la NSA aveva inserito una backdoor in uno standard del 2006 adottato dal NIST.. chiamato standard Dual EC DRBG", rivelando così che la NSA ha effettuato un attacco di malware contro il popolo americano. Nel dicembre 2013, Reuters ha riferito che i documenti rilasciati da Edward Snowden indicavano che la NSA aveva pagato a RSA Security $ 10 milioni per rendere Dual_EC_DRBG l'impostazione predefinita nel proprio software di crittografia e sollevava ulteriori preoccupazioni sul fatto che l'algoritmo potesse contenere una backdoor per la NSA. A causa di queste preoccupazioni, nel 2014, il NIST ha ritirato Dual EC DRBG dalla sua bozza di guida sui generatori di numeri casuali, raccomandando "gli attuali utenti di Dual_EC_DRBG di passare a uno dei tre algoritmi approvati rimanenti il ​​più rapidamente possibile".

MIFARE Crypto-1

Crypto-1 è un sistema crittografico sviluppato da NXP per l'uso su chip MIFARE . Il sistema è proprietario e in origine l'algoritmo non è stato pubblicato. Dopo il reverse engineering del chip, i ricercatori dell'Università della Virginia e del Chaos Computer Club hanno scoperto un attacco a Crypto-1 sfruttando un generatore di numeri casuali mal inizializzato.

Debian OpenSSL

Nel maggio 2008, il ricercatore di sicurezza Luciano Bello ha rivelato la sua scoperta che le modifiche apportate nel 2006 al generatore di numeri casuali nella versione del pacchetto OpenSSL distribuito con Debian Linux e altre distribuzioni basate su Debian, come Ubuntu , hanno ridotto drasticamente l'entropia dei valori generati e ha reso una serie di chiavi di sicurezza vulnerabili agli attacchi. La debolezza della sicurezza è stata causata dalle modifiche apportate al codice openssl da uno sviluppatore Debian in risposta agli avvertimenti del compilatore di codice apparentemente ridondante. Ciò ha causato una massiccia rigenerazione delle chiavi in ​​tutto il mondo e, nonostante tutta l'attenzione ricevuta dal problema, si potrebbe presumere che molte di queste vecchie chiavi siano ancora in uso. I tipi di chiavi interessati includono chiavi SSH , chiavi OpenVPN , chiavi DNSSEC , materiale delle chiavi da utilizzare nei certificati X.509 e chiavi di sessione utilizzate nelle connessioni SSL/TLS . Le chiavi generate con GnuPG o GNUTLS non sono interessate poiché questi programmi utilizzavano metodi diversi per generare numeri casuali. Anche le chiavi generate da distribuzioni Linux non basate su Debian non sono interessate. La vulnerabilità della generazione di chiavi deboli è stata prontamente corretta dopo essere stata segnalata, ma tutti i servizi che utilizzano ancora le chiavi generate dal vecchio codice rimangono vulnerabili. Un certo numero di pacchetti software ora contiene controlli su una lista nera di chiavi deboli per tentare di impedire l'uso di una qualsiasi di queste chiavi deboli rimanenti, ma i ricercatori continuano a trovare implementazioni di chiavi deboli.

PlayStation 3

Nel dicembre 2010, un gruppo che si fa chiamare fail0verflow ha annunciato il recupero della chiave privata dell'algoritmo di firma digitale della curva ellittica (ECDSA) utilizzata da Sony per firmare il software per la console di gioco PlayStation 3 . L'attacco è stato reso possibile perché Sony non è riuscita a generare un nuovo nonce casuale per ogni firma.

Fattore a chiave pubblica RSA

Un'analisi che confronta milioni di chiavi pubbliche RSA raccolte da Internet è stata annunciata nel 2012 da Lenstra, Hughes, Augier, Bos, Kleinjung e Wachter. Sono stati in grado di fattorizzare lo 0,2% delle chiavi utilizzando solo l'algoritmo di Euclide . Hanno sfruttato una debolezza unica dei crittosistemi basati sulla fattorizzazione di interi . Se n = pq è una chiave pubblica e n ′ = pq è un'altra, allora se per caso p = p , allora un semplice calcolo di mcd( n , n ′) = p fattorizza sia n che n ′, totalmente compromettere entrambe le chiavi. Nadia Heninger , parte di un gruppo che ha fatto un esperimento simile, ha affermato che le chiavi sbagliate si sono verificate quasi interamente nelle applicazioni incorporate e spiega che il problema del primo condiviso scoperto dai due gruppi deriva da situazioni in cui il generatore di numeri pseudocasuali è scarsamente seminato inizialmente e poi riseminato tra la generazione del primo e del secondo numero primo.

Collisione Java nonce

Nell'agosto 2013, è stato rivelato che i bug nella classe Java SecureRandom potrebbero generare collisioni nei valori k nonce utilizzati per ECDSA nelle implementazioni di Bitcoin su Android . Quando ciò si verificava la chiave privata poteva essere recuperata, permettendo a sua volta di sottrarre Bitcoin dal wallet che lo conteneva .

Guarda anche

Riferimenti

Ulteriori letture