¿Cuál es la diferencia entre id_rsa.pub e id_dsa.pub?

Respuestas:

64

id_rsa.puby id_dsa.pubson las claves públicas de id_rsay id_dsa.

Si está preguntando en relación con SSH, id_rsaes una clave RSA y se puede usar con el protocolo SSH 1 o 2, mientras que id_dsaes una clave DSA y solo se puede usar con el protocolo SSH 2. Ambas son muy seguras, pero DSA parece ser el estándar en estos días (asumiendo que todos sus clientes / servidores soportan SSH 2).

Actualización: desde que se escribió esto, se ha demostrado que DSA es inseguro. Más información disponible en la respuesta a continuación.

Mike Pelley
fuente
Debo no estar de acuerdo con esto. Hoy (y, aunque en menor medida, también en 2010, cuando se publicó), 1024 bits (el tamaño de clave más grande disponible para DSA) se considera demasiado débil. Por tanto, RSA es la mejor opción. En cuanto a SSH v1: no lo consideraba seguro hace diez años.
Adam Katz
3
@AdamKatz DSA ha admitido claves de 2048 bits y 3072 bits desde 2009 (según FIPS 186-3 ). La mayoría de los clientes / servidores ssh admiten claves DSA más grandes, incluidas OpenSSH y PuTTY. La mayoría de los generadores de claves también admiten claves DSA más grandes, pero ssh-keygen de OpenSSH aún no lo hace (aunque tanto ssh como sshd sí). Para Linux, puede generar claves DSA más grandes utilizando OpenSSL como se describe en esta publicación de blog .
Mike Pelley
1
¡Interesante! No lo sabía, y eso ciertamente ayuda a nivelar el campo entre los dos (aunque la falta de compatibilidad con OpenSSH es bastante condenatoria). Aún así, no diría que DSA es el estándar (ya sea ahora o en 2010), mientras que RSA absolutamente lo es (y estamos en transición a sistemas de curvas elípticas como Ed25519).
Adam Katz
46

SSH usa pares de claves públicas / privadas , también lo id_rsaes su clave privada RSA (basada en números primos), que es más segura que su clave privada id_dsa DSA (basada en exponentes). Mantenga sus claves privadas seguras y comparta sus claves públicas id_rsa.puby id_dsa.pubsuyas ampliamente.

DSA es inseguro

DSA tiene un parámetro que se puede adivinar si el generador de números aleatorios de su computadora es inferior a la media, lo que revelará su clave secreta. ECDSA (actualización de curva elíptica de DSA) es igualmente vulnerable . Incluso con buenos números aleatorios, DSA tiene otros problemas de fuerzaPDF (estos también se encuentran en Diffie-Hellman ).

OpenSSH crea claves inseguras de 1024 bits ( solución alternativa ) y ahora desactiva DSA de forma predeterminada .

Utilice Ed25519 cuando sea posible

La criptografía de curva elíptica ofrece una mayor complejidad con tamaños de clave más pequeños. Ed25519 (basado en la complejidad de las curvas elípticas modeladas en plano ) es la implementación preferida debido a su supuesta falta de intromisión (los documentos filtrados muestran que la NSA de EE. UU. Debilita los estándares de cifrado ).

Desafortunadamente, Ed25519 todavía es bastante nuevo y requiere OpenSSH 6.5 o GnuPG 2.1 (consulte la lista completa ).

Utilice RSA con 4096 bits cuando Ed25519 no esté disponible

Los tamaños de clave RSA de 4096 bits deberían tener una complejidad comparable a la de Ed25519.

Aún se prefiere Ed25519 a RSA debido a la preocupación de que RSA pueda ser vulnerable a los mismos problemas de fuerza que DSA, aunque se espera que aplicar ese exploit a RSA sea considerablemente más difícil.

Adam Katz
fuente
2
Solo una corrección: DSA ha admitido claves de 2048 bits y 3072 bits desde 2009 (según FIPS 186-3 ). Más información en mi comentario anterior.
Mike Pelley
2
Infosec SE tiene una buena respuesta a esta pregunta que profundiza más. Cita una charla de Black Hat 2013 que sugiere que DSA ya no es seguro, incluso en tamaños de clave más grandes.
Adam Katz
2
Actualicé esta respuesta para que sea más completa sobre los problemas con DSA. Ahora es más detallado que la respuesta de Infosec SE (igualmente válida). Hay incluso más detalles cuando pasa el mouse sobre algunos de los enlaces.
Adam Katz
1
Esta publicación me enseñó mucho, necesita muchos más votos a favor.
liljoshu
1

rsa se considera más seguro.

Ya no es así (2020 mayo, diez años más tarde), con OpenSSH 8.2 , como se informó por Julio

Aviso de baja futura

Ahora es posible 1 realizar ataques de prefijo elegido contra el algoritmo hash SHA-1 por menos de USD $ 50K.
Por esta razón, deshabilitaremos el algoritmo de firma de clave pública "ssh-rsa" que depende de SHA-1 de forma predeterminada en una versión futura .

(Consulte " SHA-1 es un desastre: primera colisión de prefijo elegido en SHA-1 y aplicación a PGP Web of Trust " Leurent, G y Peyrin, T (2020))

Desafortunadamente, este algoritmo todavía se usa ampliamente a pesar de la existencia de mejores alternativas, siendo el único algoritmo de firma de clave pública que queda especificado por las RFC SSH originales.

Las mejores alternativas incluyen:

  • Los algoritmos de firma RFC8332 RSA SHA-2 rsa-sha2-256 / 512.
    Estos algoritmos tienen la ventaja de utilizar el mismo tipo de clave que " ssh-rsa", pero utilizan los algoritmos hash SHA-2 seguros.
    Estos han sido compatibles desde OpenSSH 7.2 y ya se utilizan de forma predeterminada si el cliente y el servidor los admiten.

  • El algoritmo de firma ssh-ed25519.
    Ha sido compatible con OpenSSH desde la versión 6.5.

  • Los algoritmos RFC5656 ECDSA: ecdsa-sha2-nistp256 / 384/521.
    Estos han sido compatibles con OpenSSH desde la versión 5.7.

Para comprobar si un servidor está utilizando el algoritmo de clave pública débil ssh-rsa para la autenticación de host, intente conectarse a él después de eliminar el ssh-rsaalgoritmo de la lista de permitidos de ssh (1):

ssh -oHostKeyAlgorithms=-ssh-rsa user@host

Si la verificación de la clave de host falla y no hay otros tipos de clave de host admitidos disponibles, el software del servidor en ese host debe actualizarse.

Una versión futura de OpenSSH habilitará UpdateHostKeysde forma predeterminada para permitir que el cliente migre automáticamente a mejores algoritmos.
Los usuarios pueden considerar habilitar esta opción manualmente .

VonC
fuente
-8

Uno usa DSA y otro usa RSA .

Yann Ramin
fuente
asumiendo que solo está usando los nombres predeterminados (que lógicamente se ve así), theatrus lo golpeó directamente en la cabeza.
David Larrabee
No respondió la parte real de la pregunta: cuál es más seguro. Votar en contra ya que esta fue la respuesta más alta. No necesita serlo.
akauppi