Tipo de clave SSH, rsa, dsa, ecdsa, ¿hay respuestas fáciles para elegir cuándo?

149

Como alguien que sabe poco acerca de la criptografía, me pregunto sobre la elección que hago al crear claves ssh.

ssh-keygen -t type , donde el tipo es dsa, rsa y ecdsa.

Google puede dar a algo información sobre las diferencias entre los tipos, pero no a nada concluyente. Entonces, mi pregunta es, ¿hay respuestas "fáciles" para los desarrolladores / administradores de sistemas con poco conocimiento de criptografía, cuándo elegir qué tipo de clave?

Espero una respuesta al estilo de "Usar DSA para X e Y, RSA para Z y ECDSA para todo lo demás", pero también me doy cuenta de que es muy posible que no haya respuestas simples disponibles.

    
pregunta user50849 30.10.2012 - 13:50
fuente

4 respuestas

118

En la práctica, una clave RSA funcionará en todas partes. La compatibilidad con ECDSA es más nueva, por lo que algunos clientes o servidores antiguos pueden tener problemas con las claves ECDSA. Una clave DSA utilizada para trabajar en todas partes, según el estándar SSH ( RFC 4251 y posteriores), pero esto cambió recientemente: OpenSSH 7.0 y superior ya no aceptan claves DSA de forma predeterminada.

ECDSA es computacionalmente más liviano, pero necesitará un cliente o servidor realmente pequeño (por ejemplo, un procesador ARM incorporado de 50 MHz) para notar la diferencia.

Ahora mismo , no hay ninguna razón relacionada con la seguridad para preferir un tipo sobre otro, suponiendo que las claves sean lo suficientemente grandes (2048 bits para RSA o DSA, 256 bits para ECDSA); El tamaño de la clave se especifica con el parámetro -b . Sin embargo, algunas versiones de ssh-keygen pueden rechazar claves DSA de un tamaño diferente a 1024 bits, que actualmente no está roto, pero posiblemente no tan robusto como se podría desear. Por lo tanto, si te permites una ligera paranoia, es posible que prefieras RSA.

Para resumir, haz ssh-keygen -t rsa -b 2048 y estarás contento.

    
respondido por el Thomas Pornin 30.10.2012 - 14:07
fuente
19

Como dice Gilles, DSA es arriesgado porque si realiza firmas (y el uso de su clave con un cliente ssh para iniciar sesión es hacer firmas) en una casilla con un RNG incorrecto, su clave puede verse comprometida. AIUI esto hizo que Debian básicamente abandone DSA para las claves utilizadas en su infraestructura a la luz de El fiasco del generador de números aleatorios de Debian OpenSSL.

enlace

ECDSA es relativamente nuevo, de algunas búsquedas rápidas parece que se introdujo en 5.7. Afaict, la mayoría de estos sistemas están fuera de soporte y probablemente deberían migrarse, pero todos sabemos que eso no sucede a veces. Por ejemplo, Debian squeeze y ubuntu lucid. ECDSA tiene ventajas en que una clave puede ser mucho más pequeña que una clave RSA o DSA para el mismo nivel de seguridad (presumiblemente). Desafortunadamente, comparte la desventaja del DSA de ser sensible a los generadores de números aleatorios incorrectos. También existe la preocupación de que las curvas elípticas utilizadas tradicionalmente pueden haber sido aisladas.

ED25519 es una opción aún más nueva, introducida por openssh 6.5. Es una variante del algoritmo ECDSA, pero resuelve el problema del generador de números aleatorios y utiliza una curva de "nada en la manga". Probablemente será la mejor opción a largo plazo, pero en este momento todavía hay sistemas compatibles que no tienen suficientes openssh nuevos.

Por lo tanto, IMO que hace que RSA (con una clave de 2048 o 4096 bits dependiendo de qué tan paranoico sea) sigue siendo la opción más razonable para el uso general.

Editar: actualizar a la situación actual a partir de marzo de 2017.

    
respondido por el Peter Green 10.08.2013 - 01:06
fuente
10

DSA y ECDSA tienen claves de longitud fija, y son estándares del gobierno de EE. UU., lo que significa que saben más sobre los estándares que el público en general. RSA es más conocido y puede generar claves más largas con él (el valor predeterminado es 2048 en oposición a la longitud fija de 1024 bits de DSA), por lo que es (posiblemente) mejor usarlo.

    
respondido por el GdD 30.10.2012 - 14:07
fuente
7

Utilice RSA. No por razones de seguridad, sino por razones de compatibilidad.

No recomiendo usar claves DSA. A partir de OpenSSH 7.0, SSH ya no admite claves DSA de forma predeterminada. Como las notas de la versión de OpenSSH 7.0 dicen , "el soporte para el host ssh-dss y las claves de usuario está deshabilitado de forma predeterminada en tiempo de ejecución ". Por lo tanto, el uso de claves DSA (ssh-dss) solo causará dolores de cabeza.

Las claves ECDSA podrían ser mejores, pero lamentablemente, las claves ECDSA también pueden causar problemas de compatibilidad en algunas plataformas. En Fedora, gnome-keyring-daemon no recoge las claves SSH de ECDSA, por lo que no se le solicitará automáticamente una contraseña para desbloquear su clave SSH cuando intente utilizarla en Fedora.

Las claves RSA están completamente libres de estos dolores de cabeza de compatibilidad. Son los más utilizados y, por lo tanto, parecen ser los mejor soportados. Por lo tanto, le recomiendo que genere claves RSA, para evitar molestias en el futuro.

Como nota editorial, la decisión de OpenSSH de deshabilitar la compatibilidad con DSA es un tanto desconcertante: las claves DSA de 1024 bits tienen aproximadamente lo mismo seguridad como claves RSA de 1024 bits, por lo que no está claro por qué OpenSSH deshabilitó la compatibilidad con las claves DSA de 1024 bits, pero mantiene la compatibilidad con las claves RSA de 1024 bits. (OpenSSH aún es compatible con RSA; tiene una verificación especial para deshabilitar claves RSA de 768 bits o menos, pero para DSA, solo desactiva todas las claves DSA, independientemente de la longitud). Además, OpenSSH se usa para admitir claves DSA que son más largas 1024 bits de longitud; no está claro por qué el soporte para ellos ha sido desactivado. Oh bueno, así va.

    
respondido por el D.W. 23.12.2015 - 02:17
fuente

Lea otras preguntas en las etiquetas