RSA e Pseudo Random Number Generator

1

Voglio fare una presentazione a scuola sulla crittografia e decodifica RSA. Capisco la base del calcolo di una chiave pubblica e privata con due piccoli numeri primi. E come usare quelle chiavi per codificare e decodificare un semplice messaggio.

Dopo aver dimostrato quanto sopra, voglio parlare brevemente di sicurezza, poiché è un argomento molto vasto e complesso. Per quanto ne so, 2048 chiavi sono sicure, anche per la NSA. Tutti hanno sentito parlare della notizia che l'NSA può (potrebbe) leggere e-mail, ecc. Io sono rosso che costruiscono una backdoor nel DPR_DB_DBG PRNG (Psuedorandom Number Generator) che è (era?) Usato da tutti i membri della compagnia, come RSA .

Possono prevedere il risultato di quei numeri casuali. Ma che cosa ha a che fare con la crittografia e la decifratura di RSA? Questo si basa sulla moltiplicazione di due numeri primi massicciamente grandi, quali società possono scegliere per se stessi?

Cosa mi manca qui, spero che qualcuno possa indicarmi la strada giusta?

Grazie!

    
posta Justin 10.11.2015 - 17:55
fonte

2 risposte

4

Nessuno usa RSA per crittografare direttamente i dati trasmessi tramite http (web) o SMTP (e-mail). RSA a 2048 bit ti consente solo di crittografare 245 byte alla volta e ciascuna di queste operazioni è costosa.

I protocolli consentono a una delle parti o a entrambe le parti di generare un nuovo numero casuale sufficientemente lungo da risultare non gestibile e unico. 128 bit sono sufficienti, sebbene TLS ne usi di più. Quindi utilizzano questo numero come chiave di crittografia simmetrica (tecnicamente, seed per KDF), che consente loro di crittografare rapidamente molti dati.

Se CSPRNG è backdoor-ed, l'avversario può prevedere la chiave segreta condivisa. Se la chiave condivisa non è segreta, interrompi completamente la sicurezza.

Se una delle parti ha generato la chiave segreta condivisa, deve trasmetterla all'altra parte, in modo che sia immune alle intercettazioni. Un modo semplice è quello di crittografare la chiave segreta condivisa utilizzando la chiave pubblica del destinatario. PGP fa questo, e SSL / TLS precedente ha fatto questo.

Un problema con la trasmissione della chiave segreta casuale condivisa crittografata con la chiave pubblica del destinatario è che se si mette le mani sulla chiave privata del destinatario, magari anni dopo quando non usano più questa coppia di chiavi, è possibile decrittografare i testi cifrati precedentemente registrati. Pertanto, un disco rigido rottamato con la chiave privata per un certificato server TLS scaduto da molto tempo consentirebbe ad es. l'NSA per decrittografare anni di vecchio traffico.

I nuovi protocolli richiedono l'uso di uno schema migliore: Diffie Hellman per stabilire un segreto condiviso anonimo e firme digitali per dimostrare che l'altra parte è chi dicono di essere.

Nei moderni protocolli, RSA viene utilizzato solo per la firma e la verifica delle firme.

Nota: potresti aver letto una spiegazione delle firme RSA come una sorta di crittografia. È una pessima spiegazione, non usarla .

Nota che il manuale RSA non è sicuro e non deve essere utilizzato. È necessario utilizzare schemi di riempimento sicuri per la crittografia RSA e per le firme RSA. Gli schemi di imbottitura per i due casi d'uso hanno obiettivi diversi e sono diversi. Mescolarli non è sicuro.

Nota che il vecchio TLS ha utilizzato pkcs # 1v1.5, ora è considerato non sicuro, usa invece RSASSA-PSS.

Come hai notato l'implementazione sicura di RSA è difficile, la raccomandazione moderna è quella di usare migliori primitive crittografiche, come quelle in libsodium (o meglio ancora, libsodium stesso).

    
risposta data 10.11.2015 - 19:56
fonte
0

PRNG è la chiave qui (rispetto a CSPRNG o True RNG). È un generatore di numeri psudorandom; deve utilizzare un algoritmo per determinare il primo dato per RNG, indipendentemente dalla soglia del pool di entropia minima. Se l'algoritmo ha noti punti deboli o un possibile metodo per decodificare il metodo per RNG, rende il moot della sorgente entropy e consente ai metodi semplici di determinare i primi generati dall'entropia del kernel.

Un PSRNG deve essere in grado di generare numeri casuali anche nel caso in cui un pool di entropia sia inferiore alle soglie di entropia minima (classico / dev / (u) argomento casuale) in modo da poter creare un evento di numeri primi noti o facilmente indovinato primi, è più facile di quanto la maggior parte della gente pensi quando A) utilizza un algoritmo con backdoor. DUAL_EC_DRBG è stato considerato un grande RNG a causa dei fattori di convalida richiesti per rendere sicura la crittografia PRNG, ma l'algoritmo di origine è stato compromesso. Anche se non è stato necessario utilizzarlo, è stato un RNG attraente a causa del suo uso della CE e dei requisiti per le applicazioni DoD. Il pensiero era se fosse abbastanza buono per il DoD, quindi è abbastanza buono per me. Quindi la NSA è riuscita a scappare con una mentalità sulle regole del mob anche se ha compromesso solo 1 su 4 RNG raccomandati.

La backdoor realizzata è stata specificamente la ragione per cui il NIST ha rimosso il supporto per questo come metodo per generare RNG da SP800-90A. Questo è stato il resoconto più veloce per la bozza e la revisione del documento NIST che ho visto da molto tempo. Se non hai letto tutto, è piuttosto interessante.

Ecco un articolo interessante su questo argomento, se non lo hai già letto. link

    
risposta data 10.11.2015 - 19:30
fonte

Leggi altre domande sui tag