A veces, cuando explico cómo configurar el sistema de autentificación de la clave pública de SSH, me preguntan qué es mejor, las claves RSA o DSA. En los próximos párrafos intentaré responder a esa pregunta. Precederé mi discusión con la revelación de que aunque tengo alguna experiencia en redes LAN Ethernet y TCP/IP, en el mejor de los casos tengo un entendimiento amateur de la criptografía. La siguiente discusión se basa en la investigación de Internet, algunas de las cuales son contradictorias y como todas las cosas de Internet, algunos enlaces son más fiables que otros.
Primero, ¿qué son las claves RSA y DSA?
DSA o Algoritmo de Firma Digital, es un estándar del Gobierno de los EE.UU. diseñado por la NSA para las firmas digitales. Se deriva del algoritmo de firma de ElGamal. La seguridad se basa en la dificultad de resolver ciertos tipos de funciones logarítmicas. Sólo puede ser usado para firmas digitales.
RSA se nombra a partir de las iniciales de los autores, Ron Rivest, Adi Shamir, y Leonard Adleman, quien publicó por primera vez el algoritmo. Se basa en la dificultad de factorizar grandes números. A diferencia del DSA, el RSA puede ser usado para encriptar un mensaje entero.
Entiendo que resolver los problemas logarítmicos y de factorización es igual de difícil, pero he encontrado algunas referencias que dicen que el problema logarítmico es más difícil (también he encontrado referencias que dicen que son igual de difíciles).
Cosas que no creo que importen, pero que puede que hayas oído o puedas oír en el futuro:
- El DSA es más rápido en la firma que el RSA, pero el RSA es más rápido durante la fase de verificación, ya que la autenticación requiere ambas fases la diferencia no importa.
- Como dije anteriormente, el DSA sólo puede utilizarse para la autenticación, mientras que el RSA puede utilizarse tanto para la autenticación como para el cifrado de un mensaje. Sin embargo, SSH sólo usa las claves para la autenticación, así que de nuevo la diferencia no importa.
- Para la misma longitud de clave, la DSA generará un archivo de firma más pequeño. Sin embargo, como cada clave va a tomar un bloque de disco, esto no importa.
- Las claves de la DSA estaban originalmente limitadas a 1024 bits, pero ya no es así.
- Busqué en la "National Vulnerability Database" "clave y DSA" y "clave y RSA" y encontré 2 vulnerabilidades relacionadas con claves DSA y 5 vulnerabilidades relacionadas con claves RSA. Hasta donde puedo decir, todas estas vulnerabilidades han sido tratadas en las últimas versiones de OpenSSL/OpenSSH, ahora parte del Paquete de Seguridad de Internet para OpenVOS.
Cosas a favor de la DSA:
- El DSA sólo puede utilizarse con el protocolo 2 de SSH mientras que el RSA puede utilizarse con los protocolos 1 y 2 (Véase "SSH 2″ Versus "OpenSSL y OpenSSH Release 2"). El protocolo 1 tiene algunos defectos de diseño significativos y ha sido reemplazado por la versión 2 del protocolo. Veo esto como una razón para favorecer ligeramente el uso de claves DSA, una especie de protección incorporada contra el uso del antiguo protocolo obsoleto.
Cosas a favor de la RSA:
- Un mal generador de números aleatorios filtrará bits de claves DSA (no me preguntes cómo).
- El sitio web openssh.org parece estar mudo sobre el tema de lo cual es mejor, pero las versiones más recientes de ssh-keygen crean una clave RSA si no se especifica el tipo.
- Parece que hay más (y más nuevos) RFCs que hacen referencia a las claves RSA que a las claves DSA.
Algunas comparaciones (los tamaños de los archivos incluyen texto que no es parte de la clave):
Hora de creación del ASD | Hora de creación de la RSA | Bytes DSA | Bytes RSA | DSA.pub bytes | RSA.pub bytes | |
1024 bits | 1 segundo | 1 segundo | 736 | 951 | 610 | 230 |
2048 bits | 8 segundos | 2 segundos | 1264 | 1743 | 1122 | 402 |
4096 bits | 50 segundos | 25 segundos | 2304 | 3311 | 2146 | 742 |
Independientemente de la llave que uses, lo realmente importante es la longitud de la llave. Dado el entorno actual, recomendaría una longitud de llave de 2048. Puede parecer exagerado hoy, pero no estoy seguro de que se vea así en 5 años.
En cuanto al tipo de llave a usar, tengo que inclinarme hacia las llaves RSA.