Claves SSH RSA o ed25519: ¿cuál deberías usar?

Usa ed25519 para cada clave nueva. Da más o menos la misma seguridad que RSA 3072 con una clave mucho más corta, y todas las versiones de OpenSSH desde la 6.5, de 2014, la admiten. Usa RSA, con al menos 3072 bits, solo cuando un servidor o dispositivo no acepte ed25519. Una clave RSA existente de 3072 o 4096 bits sigue siendo válida, así que no hay prisa por sustituirla.

Actualizada el . La generación de claves, los tamaños y las opciones heredadas se ejecutaron con OpenSSH 10.0 en Debian 13, en un servidor de pruebas limitado al antiguo algoritmo ssh-rsa.

La comparación

Ed25519RSA 3072RSA 4096
Seguridad estimadaUnos 128 bits128 bitsEntre 128 y 192 bits
Archivo de clave pública92 bytes564 bytes736 bytes
Archivo de clave privada, sin frase de contraseña399 bytes2590 bytes3369 bytes
Elección de tamañoNinguna, siempre 256 bitsSe fija con -bSe fija con -b
Lo que necesita el otro ladoOpenSSH 6.5 o posteriorCasi cualquier servidor SSHCasi cualquier servidor SSH

Los tamaños de archivo salen de claves que generamos con el comentario you@laptop. Las estimaciones de seguridad vienen de la RFC 8032 para ed25519 y de NIST SP 800-57 para RSA.

Lo que de verdad importa

  • Menos decisiones en las que equivocarse. Una clave ed25519 tiene un solo tamaño, así que nadie puede crear una débil por accidente. ssh-keygen ignora -b con este tipo: pedimos 4096 y obtuvimos 256.
  • Claves públicas cortas. Una línea que cabe en un mensaje de chat o en un archivo de configuración sin cortarse.
  • Protección del archivo. Una clave sin frase de contraseña en un portátil robado queda expuesta sea cual sea su tipo. Esto importa mucho más que la diferencia entre los dos algoritmos.

Para guardar cada clave y su frase de contraseña en un solo sitio, consulta el gestor de claves SSH con bóveda cifrada.

Generar cada tipo

ssh-keygen -t ed25519 -C "you@laptop"
ssh-keygen -t rsa -b 4096 -C "you@laptop"

Sin -b, las claves RSA son de 3072 bits, el valor por defecto desde OpenSSH 8.0. Desde OpenSSH 9.5, ssh-keygen sin -t crea una clave ed25519. Consulta cómo generar una clave ed25519 para ver los pasos completos.

Tamaños de clave RSA

  • Menos de 1024 bits: ssh-keygen se niega con Invalid RSA key length: minimum is 1024 bits.
  • 1024 bits: no la uses. Aún se puede generar, pero un servidor con un RequiredRSASize mayor la rechaza. Ese ajuste existe desde OpenSSH 9.1 y su valor por defecto es 1024.
  • 2048 bits: NIST le da 112 bits de seguridad. Funciona, pero es el antiguo mínimo, así que cámbiala la próxima vez que rotes claves.
  • 3072 o 4096 bits: usa una de estas si necesitas RSA.

Cuándo RSA sigue siendo la elección correcta

  • Un servidor ejecuta una versión de OpenSSH anterior a la 6.5.
  • Un dispositivo de red antiguo, un appliance o un sistema embebido solo menciona claves RSA en su documentación.
  • Una norma de cumplimiento o un sistema en modo FIPS limita los tipos de clave que puedes usar. Consulta la lista de tu proveedor.

Puedes tener una clave de cada tipo y usar RSA solo para los hosts que lo necesiten:

Host old-server
    IdentityFile ~/.ssh/id_rsa
    IdentitiesOnly yes

Conectar con sistemas antiguos

Una clave RSA no es lo mismo que la firma que se hace con ella. Desde OpenSSH 8.8, el cliente ya no usa la antigua firma ssh-rsa, que se apoya en SHA-1, a menos que lo pidas. El mismo archivo de clave sigue funcionando con las firmas más nuevas rsa-sha2-256 y rsa-sha2-512, que OpenSSH admite desde la 7.2.

Un servidor que solo conoce el algoritmo antiguo te da este error:

Unable to negotiate with 203.0.113.10 port 22: no matching host key type found. Their offer: ssh-rsa

Para ese host concreto, y solo si no puedes actualizarlo, vuelve a activar el algoritmo antiguo:

ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa user@old-server

Esto debilita la conexión, así que no lo pongas en Host *. Una clave RSA nueva no ayuda aquí, porque el problema es la firma y no la clave. Consulta también no mutual signature supported y no matching key exchange.

DSA y ECDSA

DSA ha desaparecido: OpenSSH 10.0 lo eliminó, y ssh-keygen -t dsa ahora responde unknown key type dsa. Sustituye cualquier clave DSA que aún tengas. ECDSA funciona y tiene amplio soporte, pero no te da ninguna ventaja sobre ed25519 a menos que un sistema la exija.

Comprobar las claves que tienes

for f in ~/.ssh/*.pub; do ssh-keygen -lf "$f"; done

El primer número es el tamaño y la última palabra es el tipo, por ejemplo 3072 SHA256:... you@laptop (RSA).

Preguntas

¿Es RSA 4096 más fuerte que ed25519?

Sobre el papel tiene una estimación de seguridad algo mayor, pero ambas están muy por encima de lo que hoy se puede atacar, así que no es un motivo para elegirla. El riesgo práctico es el robo del archivo de la clave privada, y ahí una frase de contraseña ayuda con cualquiera de los dos tipos.

¿Puedo convertir una clave RSA a ed25519?

No. Son tipos de clave distintos. Genera una clave ed25519 nueva, añade su clave pública a tus servidores, prueba el inicio de sesión y luego elimina la clave pública antigua.

¿Cambia algo un ordenador cuántico?

No, no entre estas dos: un ordenador cuántico lo bastante grande rompería ambas. OpenSSH 10.6 activa un tipo de clave híbrido poscuántico, creado con ssh-keygen -t mldsa44-ed25519, pero hace falta la 10.6 o posterior en ambos lados. Para el intercambio de claves, consulta la guía sobre el aviso poscuántico.

Fuentes

Más en Claves y acceso

Todas las guías