¿Qué es mejor para las claves GPG: RSA o DSA?

58

ssh-keygenel valor predeterminado es crear claves RSA, pero gpg --gen-keyprefiere DSA / ElGamal.

¿Cuál - RSA o DSA - es mejor para GPG?

Gravedad
fuente
1
Consulte también esta pregunta de StackOverflow , así como mi respuesta a un duplicado de esa pregunta, que analiza por qué RSA es significativamente más seguro que DSA, tanto en 2010 como con las vulnerabilidades conocidas de hoy (todas las cuales son para DSA).
Adam Katz

Respuestas:

25

RSA y DSA: conceptos erróneos e información útil
tiene un par dereferencias RSA más antiguasy lareferencia DSA reciente,


En 2003, RSA vs DSA Signatures - El ganador es ... - RSA .

Básicamente, la generación de claves es increíblemente más rápida para DSA, lo que tiene sentido si comprende los algoritmos. La firma también es más rápida para DSA, pero no por un factor tan grande. La gran fortaleza de RSA es verificar cuál es mucho más rápido que DSA .

Borrador reciente de IETF: DSA con SHA-2 para DNSSEC , que vence el 7 de enero de 2010.
Tiene algunas razones para promover DSA sobre RSA hoy.

Usar DSA con SHA-256 en DNSSEC tiene algunas ventajas y desventajas en relación con el uso de RSA con SHA-256 cuando se usan claves de 2048 bits. Las firmas DSA son mucho más cortas que las firmas RSA ; a este tamaño, la diferencia es de 512 bits frente a 2048 bits. En plataformas típicas que usan claves de 2048 bits, la firma de DSA es aproximadamente tres veces más rápida que para RSA, pero la verificación de firmas de RSA es más de diez veces más rápida que para DSA .

La fuerza criptográfica de DSA generalmente se considera equivalente a RSA cuando la clave pública DSA y las claves públicas RSA son del mismo tamaño. Tal evaluación podría, por supuesto, cambiar en el futuro si se encuentran nuevos ataques que funcionen mejor con uno u otro algoritmo.

Actualmente no hay ataques conocidos en el conjunto específico de parámetros DSA elegidos para este documento. Tal evaluación podría, por supuesto, cambiar en el futuro.

Pero, esto es solo un borrador por el momento.

Todos adoran la velocidad de verificación de RSA (!).

nik
fuente
6

Citando una discusión en el foro :

Mi consejo sería usar una clave de firma RSA (la clave "primaria" o "maestra") y una subclave RSA para el cifrado. La razón para usar RSA para firmar es principalmente porque RSA le permite usar hashes más grandes que DSA. DSA2 también le permite usar hashes más grandes, pero RSA ha sido compatible durante muchos años más que DSA2.

Creo que si lo está utilizando de manera estándar (es decir, no encripta una gran cantidad de datos), a ambos les irá bien.

Yo personalmente elegiría RSA porque aprendí el algoritmo, y es uno de los algoritmos más hermosos que he visto.

Adam Matan
fuente
4

También es posible y permitido el uso de algoritmos SHA-2 desde la revisión actual de DSS; pero no pude averiguar qué revisión GPG sigue.

Con respecto a la especificación DSS actual ( FIPS-186-3 , p. I), se puede utilizar cualquier función hash especificada en el SHS (FIPS-180-3, p. Iv):

DSS:

Los algoritmos de firma digital aprobados por FIPS se utilizarán con una función hash apropiada que se especifica en el SHS.

SHS:

Esta norma especifica cinco algoritmos hash seguros: SHA-1, SHA-224, SHA-256, SHA-384 y SHA-512, para calcular una representación condensada de datos electrónicos (mensaje).


A la pregunta: ambos algoritmos se basan en problemas matemáticos que no se ha demostrado que sean seguros (RSA usa el problema de factorizar números y DSA usa el problema de logaritmo discreto), no se puede decir que uno sea más seguro que el otro, porque no el uno problema ni el otro ha sido resuelto.

Pero al usar DSA con SHA-1 puede tener un problema de seguridad, como ya lo han dicho los pgs .

Manuel Faux
fuente
1

El hecho es que probablemente no le importe mucho :) Como parte de la preparación para generar un par de claves y como parte del mantenimiento de los pares de claves existentes, independientemente de la criptografía asimétrica que elija, debería ser: 1) verificar la corriente recomendada longitudes de clave 2) eligió una base / módulo para optimizar para la firma o la verificación, dependiendo de lo que se haga con más frecuencia (las claves que se utilizarán para emitir certificados de servidor TLS / SSL deben optimizarse para la verificación ya que cada navegador web verificará la firma ... las claves que solían usarse en el software de firma deben optimizarse de manera similar) 3) asegúrese de que envejece sus claves: ha estado utilizando la misma clave para ssh-auth durante algunos años, podría ser el momento de volver a generar incluso si elige una clave tamaño que todavía es razonable para la aplicación de hoy.

Tanto RSA como DSA han sido evaluados sustancialmente; si está utilizando una base de código confiable (RSAREF, RSA commercial, Mozilla / Netscape, Microsoft, OpenSSL, ...), entonces probablemente no le importe qué sistema criptográfico use siempre y cuando lo use correctamente y utilice las mejores prácticas actuales

RAM
fuente