Cosa c'è di meglio per le chiavi GPG - RSA o DSA?


58

ssh-keygenper impostazione predefinita, crea chiavi RSA, ma gpg --gen-keypreferisce DSA / ElGamal.

Quale - RSA o DSA - è meglio per GPG?


1
Vedi anche questa domanda StackOverflow e la mia risposta a un duplicato di quella domanda, che discute perché RSA è significativamente più sicuro di DSA, sia nel 2010 che con le vulnerabilità conosciute di oggi (tutte per DSA).
Adam Katz,

Risposte:



25

RSA e DSA: idee sbagliate e informazioni utili
hanno un paio diriferimenti RSA precedentie ilriferimento DSA recente,


Nel 2003, RSA vs DSA Signatures - The Winner is ... - RSA .

Quindi, in sostanza, la generazione delle chiavi è incredibilmente più veloce per DSA, il che ha senso se capisci gli algoritmi. La firma è anche più veloce per DSA, ma non per un fattore altrettanto grande. La grande forza di RSA sta verificando quale è molto più veloce di DSA .

Bozza IETF recente : DSA con SHA-2 per DNSSEC , in scadenza il 7 gennaio 2010.
Ha alcuni motivi per promuovere DSA su RSA oggi.

L'uso di DSA con SHA-256 in DNSSEC presenta alcuni vantaggi e svantaggi rispetto all'uso di RSA con SHA-256 quando si utilizzano chiavi a 2048 bit. Le firme DSA sono molto più brevi delle firme RSA ; a questa dimensione, la differenza è di 512 bit rispetto a 2048 bit. Su piattaforme tipiche che utilizzano chiavi a 2048 bit, la firma DSA è circa tre volte più veloce rispetto a RSA, ma la verifica delle firme RSA è più di dieci volte più rapida rispetto a DSA .

La forza crittografica di DSA è generalmente considerata equivalente a RSA quando la chiave pubblica DSA e le chiavi pubbliche RSA hanno le stesse dimensioni. Una simile valutazione potrebbe ovviamente cambiare in futuro se venissero individuati nuovi attacchi che funzionano meglio con l'uno o l'altro algoritmo.

Al momento non sono noti attacchi al set specifico di parametri DSA scelti per questo documento. Tale valutazione potrebbe ovviamente cambiare in futuro.

Ma questa è solo una bozza al momento.

Tutti adorano la velocità di verifica di RSA (!).



6

Citando una discussione sul forum :

Il mio consiglio sarebbe di usare una chiave di firma RSA (la chiave "primaria" o "master") e una sottochiave RSA per la crittografia. Il motivo per utilizzare RSA per la firma è principalmente perché RSA ti consente di utilizzare hash più grandi rispetto a DSA. DSA2 ti consente anche di utilizzare hash più grandi, ma RSA è stato supportato per molti anni più a lungo di DSA2.

Penso che se lo si utilizza in modo standard (ovvero non si crittografa una grande quantità di dati), entrambi faranno bene.

Personalmente sceglierei RSA perché ho imparato l'algoritmo ed è uno degli algoritmi più belli che abbia mai visto.


4

Anche l'uso degli algoritmi SHA-2 è possibile e consentito dall'attuale revisione di DSS; ma non sono riuscito a scoprire quale revisione segue GPG.

Per quanto riguarda la specifica DSS corrente ( FIPS-186-3 , p. I) qualsiasi funzione hash specificata in SHS (FIPS-180-3, p. Iv) può essere usata:

DSS:

Gli algoritmi di firma digitale approvati dalla FIPS devono essere utilizzati con una funzione hash appropriata specificata nell'SHS.

SHS:

Questo standard specifica cinque algoritmi di hash sicuri - SHA-1, SHA-224, SHA-256, SHA-384 e SHA-512 - per calcolare una rappresentazione condensata di dati elettronici (messaggio).


Alla domanda: entrambi gli algoritmi si basano su problemi matematici che non si sono dimostrati sicuri (RSA utilizza il problema della fattorizzazione dei numeri e DSA utilizza il problema del logaritmo discreto), non si può dire che uno sia più sicuro dell'altro, perché non quello problema né l'altro è mai stato risolto.

Ma usando DSA con SHA-1 potresti avere un problema di sicurezza, come già detto da pgs .


1

Il fatto è che probabilmente non importa molto per te :) Come parte della preparazione per generare una coppia di chiavi e come parte del mantenimento delle coppie di chiavi esistenti - indipendentemente da quale crittografia asimmetrica scegli dovresti essere: 1) verifica la corrente consigliata lunghezze chiave 2) ha scelto una base / modulo da ottimizzare per la firma o la verifica - a seconda di cosa verrà fatto più spesso (le chiavi da utilizzare per l'emissione dei certificati server TLS / SSL devono essere ottimizzate per la verifica poiché ogni browser controlla la firma ... le chiavi usate nel software di firma dovrebbero essere similmente ottimizzate) 3) assicurati di invecchiare le tue chiavi - usando la stessa chiave per ssh-auth da alcuni anni, potrebbe essere il momento di rigenerarsi anche se scegli una chiave dimensione che è ancora ragionevole per l'applicazione oggi.

Sia RSA che DSA sono stati sostanzialmente valutati; se stai usando una base di codice affidabile (RSAREF, RSA commerciale, Mozilla / Netscape, Microsoft, OpenSSL, ...) allora probabilmente non ti interessa quale sistema crittografico usi fintanto che lo usi correttamente e utilizzi le migliori pratiche attuali

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.