DHE a 1024 bit vs RSA a 2048 bit

10

Attualmente con apache / mod_ssl, se DHE è abilitato, verrà utilizzata una chiave temporanea a 1024 bit. Ho trovato la seguente citazione in blog di Adam Langley :

Ideally the DH group would match or exceed the RSA key size but 1024-bit DHE is arguably better than straight 2048-bit RSA so you can get away with that if you want to.

Quindi sembra che stia sostenendo qualcosa come DHE-RSA-AES256-SHA con le chiavi effimere temporali da 1024 bit su AES256-SHA con una chiave RSA a 2048 bit. La mia comprensione è che il DH da 1024 bit (effimero o meno) è di sicurezza paragonabile a RSA a 1024 bit. Perché dovrebbe fare una tale raccomandazione? Apprezza molto la segretezza avanzata offerta da DHE?

    
posta safsaf32 23.09.2013 - 14:03
fonte

2 risposte

17

Ci sono due lati della domanda:

  • Perfect Forward Secrecy : utilizzando una suite di crittografia "DHE", in realtà crittografate i dati relativi a una chiave privata DH che non viene mai memorizzata su alcun disco . Per qualsiasi sessione SSL, la crittografia può essere violata se l'hacker riesce a crittografare la chiave pubblica utilizzata per la crittografia (DH per una suite di crittografia DHE, RSA per una suite di crittografia RSA), o se l'utente malintenzionato ruba una copia della chiave privata. Quest'ultima occorrenza è in realtà molto più probabile nella pratica per una suite di crittografia basata su RSA; e il punto di PFS è quello di rimuovere quella minaccia.

  • RSA vs Diffie-Hellman: per il momento, i metodi più conosciuti per rompere RSA e DH comportano la risoluzione di due problemi difficili, integer factorization e discreto logaritmo rispettivamente. Accade così che per entrambi i problemi, l'algoritmo più veloce conosciuto sia il Setaccio di campo numero generale (sebbene inizialmente un algoritmo di fattorizzazione, un la variante di GNFS può essere applicata al logaritmo discreto). Per complessità asintotica , RSA e DH sono quindi di durezza equivalente quando il modulo DH ha le stesse dimensioni del modulo RSA.

    Tuttavia, nel termine pratico, la DH è un po 'più difficile. GNFS include diverse fasi, le due principali sono il setaccio e quindi la riduzione lineare . Per un grande modulo, la riduzione lineare diventa il collo di bottiglia a causa della dimensione pura della matrice. Per una data dimensione del modulo, si otterrà lo stesso numero di elementi nelle due matrici (quella per RSA e quella per DH), ma gli elementi della matrice sono semplici bit nel caso RSA, rispetto agli interi modulo p nel caso DH. Quindi, la matrice DH è più grande.

    Non renderà n -bit DH come "difficile" come 2n -bit RSA, comunque. Se guardiamo i record, vediamo 768-bit per RSA, 530-bit per DH; e il caso DH usato meno energia grezza. Inoltre, non è del tutto giustificato confrontare la durezza di 1024-bit DH con la durezza di RSA a 2048 bit, poiché entrambi si trovano nella zona "non possono romperlo".

Un riassunto di tutto ciò va così: mentre il DH a 1024 bit è un po 'più strong (in teoria) di RSA a 1024 bit, la differenza è lieve (ad esempio, il DH a 1024 bit è al massimo RSA a 1200 bit). Ma in termini pratici il rischio di furto di chiavi private, per una chiave non effimera, minimizza qualsiasi rischio crittanalitico per qualsiasi RSA o DH di 1024 bit o più; in questo senso, PFS è un must-have e DHE con una chiave DH a 1024 bit è molto più sicuro di suite di crittografia basate su RSA, indipendentemente dalle dimensioni della chiave RSA.

    
risposta data 23.09.2013 - 15:08
fonte
5

Concordo con tutto ciò che ha detto Tom Leek, ma alcuni altri punti da considerare:

  • il mod_ssl recente supporta i parametri DH superiori a 1024 e quelli precedenti possono essere riparati: link (aggiornato)

  • se hai bisogno (o vuoi) di seguire i requisiti del governo degli Stati Uniti, il NIST Special Pub 800-57 (all'indirizzo csrc.nist.gov) a partire dal mese scorso richiede un minimo di 2048 per gli algoritmi basati su interi RSA, DSA e DH (contro 224 ECC e hash e 112 simmetrici).

  • se tu (potresti) hai client Java, il (molto comune) Suncle Java, e credo che anche (strettamente collegato) OpenJDK, attraverso l'attuale 7, non gestisca DH su 1024 bit. Per essere precisi, implementa le dimensioni originali DSA (FIPS 186-0) da P 512 a 1024 per 64 e Q 160, non i miglioramenti FIPS 186-3 2048 / 224,256 e 3072/256, e per nessuna buona ragione impone gli stessi limiti su DH. Ho visto una voce bugs.java.com che dice che verrà risolto in Java 8, ma Google non lo trova. Vedi anche link OTOH Suncle Java 7 (e 6 se si aggiunge un provider ECC) implementa correttamente ECDH e, per impostazione predefinita, offre la preferenza delle suite ECDHE rispetto a DHE, quindi se il server supporta sia DH-2048 che ECDH-ragionevole, va bene. (Per i client Web in generale, ECDH P-256 sembra il migliore.)

risposta data 06.02.2014 - 08:34
fonte

Leggi altre domande sui tag