RSA (cryptosystem) (Italiano)
Utilizzando il cinese resto algorithmEdit
Per efficienza molte librerie crittografiche popolari (come OpenSSL, Java e.NET) utilizzano la seguente ottimizzazione per la decrittografia e la firma in base al teorema cinese resto. I seguenti valori sono precalcolati e memorizzati come parte della chiave privata:
Questi valori consentono al destinatario di calcolare l’esponenziazione m = cd (mod pq) in modo più efficiente come segue:
Questo è più efficiente del calcolo dell’esponenziazione mediante quadratura anche se è necessario calcolare due esponenziazioni modulari., Il motivo è che queste due esponenziazioni modulari utilizzano entrambi un esponente più piccolo e un modulo più piccolo.
Fattorizzazione di interi e problema RSA
La sicurezza del crittosistema RSA si basa su due problemi matematici: il problema del factoring di grandi numeri e il problema RSA. Si ritiene che la decrittografia completa di un testo cifrato RSA non sia fattibile supponendo che entrambi questi problemi siano difficili, cioè che non esista un algoritmo efficiente per risolverli., Fornire protezione contro la decrittografia parziale può richiedere l’aggiunta di uno schema di riempimento sicuro.
Il problema RSA è definito come il compito di prendere le radici eth modulo a composite n: recuperare un valore m tale che c me me (mod n), dove (n, e) è una chiave pubblica RSA e c è un testo cifrato RSA. Attualmente l’approccio più promettente per risolvere il problema RSA è quello di fatturare il modulo n. Con la capacità di recuperare i fattori primi, un utente malintenzionato può calcolare l’esponente segreto d da una chiave pubblica (n, e), quindi decrittografare c utilizzando la procedura standard., Per fare ciò, un attaccante fattori n in p e q, e calcola lcm(p − 1, q − 1) che consente la determinazione di d da e. Nessun metodo in tempo polinomiale per il factoring di interi di grandi dimensioni su un computer classico è stato ancora trovato, ma non è stato dimostrato che nessuno esiste. Vedere la fattorizzazione intera per una discussione su questo problema.
Il setaccio quadratico polinomiale multiplo (MPQS) può essere usato per calcolare il modulo pubblico n.,
La prima fattorizzazione RSA-512 nel 1999 utilizzava centinaia di computer e richiedeva l’equivalente di 8.400 MIPS anni, in un tempo trascorso di circa sette mesi. Entro il 2009, Benjamin Moody potrebbe fattore una chiave RSA-512 bit in 73 giorni utilizzando solo software pubblico (GGNFS) e il suo computer desktop (un dual-core Athlon64 con una cpu 1.900 MHz). Erano necessari poco meno di cinque gigabyte di memoria su disco e circa 2,5 gigabyte di RAM per il processo di setacciatura.,
Rivest, Shamir e Adleman hanno notato che Miller ha dimostrato che – assumendo la verità dell’ipotesi estesa di Riemann – trovare d da n ed e è difficile come il factoring di n in p e q (fino a una differenza di tempo polinomiale). Tuttavia, Rivest, Shamir e Adleman hanno notato, nella sezione IX/D del loro documento, che non avevano trovato una prova che invertire RSA sia difficile come il factoring.
A partire dal 2020, il più grande numero RSA fattorizzato pubblicamente noto era di 829 bit (250 cifre decimali, RSA-250). La sua fattorizzazione, mediante un’implementazione distribuita all’avanguardia, ha richiesto circa 2700 anni di CPU., In pratica, le chiavi RSA sono in genere lunghe da 1024 a 4096 bit. Nel 2003, RSA Security ha stimato che le chiavi a 1024 bit sarebbero probabilmente diventate crackabili entro il 2010. A partire dal 2020, non è noto se tali chiavi possano essere incrinate, ma le raccomandazioni minime sono passate ad almeno 2048 bit. Si presume generalmente che RSA sia sicuro se n è sufficientemente grande, al di fuori del calcolo quantistico.
Se n è di 300 bit o più breve, può essere fattorizzato in poche ore in un personal computer, utilizzando software già liberamente disponibili., Chiavi di 512 bit hanno dimostrato di essere praticamente fragili nel 1999 quando RSA-155 è stato preso in considerazione utilizzando diverse centinaia di computer, e questi sono ora presi in considerazione in poche settimane utilizzando hardware comune. Gli exploit che utilizzano certificati di firma del codice a 512 bit che potrebbero essere stati presi in considerazione sono stati segnalati nel 2011. Un dispositivo hardware teorico chiamato TWIRL, descritto da Shamir e Tromer nel 2003, metteva in discussione la sicurezza delle chiavi a 1024 bit.,
Nel 1994, Peter Shor ha dimostrato che un computer quantistico – se si potesse mai essere praticamente creato per lo scopo – sarebbe in grado di fattore in tempo polinomiale, rompendo RSA; vedi algoritmo di Shor.
Generazione chiave difettosamodifica
Trova fonti: “RSA” cryptosystem – news · newspapers · books · scholar · JSTOR (ottobre 2017) (Scopri come e quando rimuovere questo messaggio modello)
Trovare i grandi numeri primi p e q è di solito fatto testando numeri casuali della dimensione corretta con test probabilistici di primalità che eliminano rapidamente praticamente tutti i nonprimes.
I numeri p e q non dovrebbero essere “troppo vicini”, per timore che la fattorizzazione di Fermat per n abbia successo., Se p-q è inferiore a 2n1 / 4 (n = p * q, che anche per piccoli valori a 1024 bit di n è 3×1077) risolvere per p e q è banale. Inoltre, se p – 1 o q-1 ha solo piccoli fattori primi, n può essere fattorizzato rapidamente dall’algoritmo p-1 di Pollard, e quindi tali valori di p o q dovrebbero essere scartati.
È importante che l’esponente privato d sia abbastanza grande. Michael J. Wiener ha mostrato che se p è tra q e 2q (che è abbastanza tipico) e d < n1/4/3, allora d può essere calcolato in modo efficiente da n ed e.,
Non esiste un attacco noto contro piccoli esponenti pubblici come e = 3, a condizione che venga utilizzato il padding corretto. Attacco di Coppermith ha molte applicazioni in attacco RSA in particolare se l ” esponente pubblico e è piccolo e se il messaggio crittografato è breve e non imbottito. 65537 è un valore comunemente usato per e; questo valore può essere considerato come un compromesso tra evitare potenziali attacchi a esponenti di piccole dimensioni e consentire comunque crittografia efficienti (o verifica della firma)., La Pubblicazione speciale del NIST sulla sicurezza informatica (SP 800-78 Rev 1 di agosto 2007) non consente esponenti pubblici e minori di 65537, ma non indica una ragione per questa restrizione.
Nell’ottobre 2017, un team di ricercatori della Masaryk University ha annunciato la vulnerabilità ROCA, che colpisce le chiavi RSA generate da un algoritmo incorporato in una libreria di Infineon nota come RSALib. È stato dimostrato che un gran numero di smart card e moduli trusted Platform (TPM) sono stati interessati. Le chiavi RSA vulnerabili sono facilmente identificabili utilizzando un programma di test rilasciato dal team.,
l’Importanza di un forte numero casuale generationEdit
Un crittograficamente forte generatore di numeri casuali, che è stato correttamente inizializzato con adeguata entropia, deve essere utilizzato per generare i numeri primi p e q. Un confronto tra milioni di chiavi pubbliche raccolte da Internet è stata effettuata nei primi mesi del 2012 da Arjen K. Lenstra, James P. Hughes, Maxime Augier, Joppe W. Bos, Thorsten Kleinjung e Christophe Wachter. Sono stati in grado di calcolare lo 0,2% delle chiavi usando solo l’algoritmo di Euclide.
Hanno sfruttato una debolezza unica per i crittosistemi basati sulla fattorizzazione degli interi., Se n = pq è una chiave pubblica e n ‘= p’q ‘è un’altra, allora se per caso p = p’ (ma q non è uguale a q’), allora un semplice calcolo di gcd (n,n’) = p fattori sia n che n’, compromettendo totalmente entrambe le chiavi. Lenstra et al. si noti che questo problema può essere ridotto al minimo utilizzando un seme casuale forte di lunghezza di bit due volte il livello di sicurezza previsto, o impiegando una funzione deterministica per scegliere q dato p, invece di scegliere p e q in modo indipendente.
Nadia Heninger faceva parte di un gruppo che ha fatto un esperimento simile. Hanno usato un’idea di Daniel J., Bernstein per calcolare il GCD di ogni chiave RSA n rispetto al prodotto di tutte le altre chiavi n ‘che avevano trovato(un numero di 729 milioni di cifre), invece di calcolare ogni GCD (n,n’) separatamente, ottenendo così un aumento di velocità molto significativo poiché dopo una grande divisione, il problema GCD è di dimensioni normali.
Heninger dice nel suo blog che le chiavi difettose si sono verificati quasi interamente in applicazioni embedded, tra cui “firewall, router, dispositivi VPN, dispositivi di amministrazione server remoto, stampanti, proiettori, e telefoni VOIP” da più di 30 produttori., Heninger spiega che il problema di un primo condiviso scoperto dai due gruppi deriva da situazioni in cui il generatore di numeri pseudorandom è inizialmente scarsamente seminato, e quindi viene riseminato tra la generazione del primo e del secondo numero primo. L’uso di semi di entropia sufficientemente elevata ottenuti da tempi di corsa chiave o rumore di diodi elettronici o rumore atmosferico da un ricevitore radio sintonizzato tra le stazioni dovrebbe risolvere il problema.
La forte generazione di numeri casuali è importante in ogni fase della crittografia a chiave pubblica., Ad esempio, se viene utilizzato un generatore debole per le chiavi simmetriche che vengono distribuite da RSA, un intercettatore potrebbe bypassare RSA e indovinare direttamente le chiavi simmetriche.
Timing attacksEdit
Kocher ha descritto un nuovo attacco a RSA nel 1995: se l’attaccante Eve conosce l’hardware di Alice in modo sufficientemente dettagliato ed è in grado di misurare i tempi di decrittazione per diversi testi cifrati noti, Eve può dedurre rapidamente la chiave di decrittazione D. Questo attacco può essere applicato anche contro lo schema di firma RSA., Nel 2003, Boneh e Brumley hanno dimostrato un attacco più pratico in grado di recuperare fattorizzazioni RSA su una connessione di rete (ad esempio, da un server Web abilitato Secure Sockets Layer (SSL)) Questo attacco sfrutta le informazioni trapelate dall’ottimizzazione del teorema del resto cinese utilizzata da molte implementazioni RSA.
Un modo per contrastare questi attacchi è quello di garantire che l’operazione di decrittazione richiede una quantità costante di tempo per ogni testo cifrato. Tuttavia, questo approccio può ridurre significativamente le prestazioni., Invece, la maggior parte delle implementazioni RSA utilizza una tecnica alternativa nota come accecamento crittografico. RSA accecante fa uso della proprietà moltiplicativa di RSA. Invece di calcolare cd (mod n), Alice sceglie prima un valore casuale segreto r e calcola (rec)d (mod n). Il risultato di questo calcolo, dopo aver applicato il teorema di Eulero, è rcd (mod n) e quindi l’effetto di r può essere rimosso moltiplicando per la sua inversa. Per ogni testo cifrato viene scelto un nuovo valore di R. Con l’accecamento applicato, il tempo di decrittazione non è più correlato al valore del testo cifrato di input e quindi l’attacco di temporizzazione non riesce.,
Adaptive chosen ciphertext attacksEdit
Nel 1998, Daniel Bleichenbacher descrisse il primo attacco pratico adaptive chosen ciphertext, contro i messaggi cifrati RSA usando lo schema di padding PKCS #1 v1 (uno schema di padding randomizza e aggiunge struttura a un messaggio cifrato RSA, quindi è possibile determinare se un messaggio decifrato è valido). A causa di difetti con lo schema PKCS #1, Bleichenbacher è stato in grado di montare un attacco pratico contro le implementazioni RSA del protocollo Secure Socket Layer e di recuperare le chiavi di sessione., Come risultato di questo lavoro, i crittografi ora raccomandano l’uso di schemi di padding provably secure come Optimal Asymmetric Encryption Padding e RSA Laboratories ha rilasciato nuove versioni di PKCS #1 che non sono vulnerabili a questi attacchi.
Attacchi di analisi a canale laterale
È stato descritto un attacco a canale laterale che utilizza Branch Prediction analysis (BPA). Molti processori utilizzano un predittore di ramo per determinare se un ramo condizionale nel flusso di istruzioni di un programma è probabile che venga preso o meno. Spesso questi processori implementano anche il multithreading simultaneo (SMT)., Gli attacchi Branch prediction analysis utilizzano un processo spia per scoprire (statisticamente) la chiave privata quando vengono elaborati con questi processori.
Simple Branch Prediction Analysis (SBPA) afferma di migliorare il BPA in modo non statistico. Nel loro articolo, “On the Power of Simple Branch Prediction Analysis”, gli autori di SBPA (Onur Aciicmez e Cetin Kaya Koc) affermano di aver scoperto 508 su 512 bit di una chiave RSA in 10 iterazioni.
Un attacco power fault sulle implementazioni RSA è stato descritto nel 2010., L’autore ha recuperato la chiave variando la tensione di alimentazione della CPU al di fuori dei limiti; questo ha causato più guasti di alimentazione sul server.