¿Odias los anuncios? Ir Sin publicidad Hoy

Claves SSH explicadas Ed25519 vs ECDSA vs RSA (Detengase de presionar Enter)

Actualizado en

Usted escribió ssh-keygen, presionó Enter cuatro veces y terminó con RSA. Aquí se explica por qué Ed25519 es la opción correcta, qué malos trucos comete ECDSA y en qué escenarios realmente se requiere RSA.

Claves SSH explicadas: Ed25519 vs ECDSA vs RSA (Detén el pulsado de Enter) 1
ANUNCIO · ¿ELIMINAR?

Cada desarrollador ha hecho esto. Escribe ssh-keygen, aparece un asistente que te pregunta sobre el tipo de clave, la longitud en bits, la frase de paso, la ruta de salida — y simplemente pulsas Enter hasta que aparezca el huella de artefacto aleatorio. ¡Felicidades! Ahora tienes una clave RSA-2048 y no sabes por qué ese número.

Respuesta breve: usa Ed25519. Ejecuta ssh-keygen -t ed25519 -C "you@example.com" y deja de leer las respuestas de StackOverflow de 2012. El resto de este guía explica por qué — y cubre los casos legítimos en los que se requiere realmente RSA.

Los tres algoritmos

RSA

RSA (Rivest–Shamir–Adleman, 1977) ha sido el algoritmo por defecto de clave pública de internet durante décadas. Su seguridad se basa en la dificultad de factorizar números grandes, lo que significa que necesitas claves grandes para mantener la seguridad — al menos 2048 bits, preferiblemente 4096. Una clave pública RSA de 4096 bits es aproximadamente de 800 bytes. Cada conexión implica operaciones aritméticas sobre esos números grandes, lo que es más lento que las alternativas modernas.

La única argumentación real en favor de RSA es la compatibilidad. Servidores SSH antiguos, hardware heredado, dispositivos de red propietarios de principios de los años 2010 — todos hablan RSA. Si estás conectando a algo que fue configurado durante la administración de Obama y nunca ha sido tocado desde entonces, RSA podría ser tu única opción.

ECDSA

ECDSA (Algoritmo de firma digital en curvas elípticas) llegó como una alternativa más rápida y pequeña al RSA. Una clave ECDSA de 256 bits ofrece aproximadamente la misma seguridad que una clave RSA de 3072 bits. Mejor matemática, clave más pequeña, operaciones más rápidas — suena como una victoria.

El problema es que OpenSSH utiliza por defecto curvas NIST (P-256, P-384, P-521). Estas curvas tienen una preocupación legítima. La participación de NIST en las normas de curvas elípticas tiene un pasado tachado — la agencia ayudó a estandarizar Dual_EC_DRBG, un generador de números aleatorios influenciado por la NSA, posteriormente encontrado con una puerta trasera. El algoritmo ECDSA no está roto, pero los parámetros de las curvas NIST tienen criterios de diseño opacos. Nadie puede probar que no fueron elegidos para dar ventaja asimétrica. La mayoría de los desarrolladores no son objetivos de la NSA, pero no hay razón para aceptar "probablemente bien" cuando existe una opción que se puede probar mejor.

Ed25519

Ed25519 (EdDSA en la curva Curve25519) es el que deberías usar. Fue diseñado por Daniel J. Bernstein con criterios de diseño completamente públicos — los parámetros de la curva se derivan de números "sin nada en mis mangas", no de un proceso opaco de un comité.

Los números prácticos: una clave pública Ed25519 es de 68 bytes. La firma y la verificación son más rápidas que tanto RSA como ECDSA. El algoritmo es inmune a ataques por canal de tiempo por construcción — no hay ramificaciones dependientes de secretos, no hay operaciones de tiempo variable. El soporte llegó a OpenSSH 6.5 en 2014. GitHub, GitLab y Bitbucket lo han soportado durante años. No hay inconvenientes en comparación con ECDSA y todos los beneficios en comparación con RSA.

Comparación lado a lado

PropiedadRSA (4096-bit)ECDSA (P-256)Ed25519
Tamaño de la clave pública~800 bytes~200 bytes68 bytes
Seguridad equivalente~140 bits~128 bits~128 bits
Velocidad de firmaLentoRápidoMuy rápido
Resistente a ataques de tiempoNoNoSí (por diseño)
Preocupaciones sobre la confianza de la curvaNingunoCurvas NIST (controversiales)Ninguna (Curve25519)
Soporte en OpenSSH desdeSiempre5.7 (2011)6.5 (2014)
GitHub / GitLab / Bitbucket

Cómo generar cada tipo

La elección por defecto — usa esto:

ssh-keygen -t ed25519 -C "you@example.com"

Sistema antiguo que requiere RSA? Usa al menos 4096 bits:

ssh-keygen -t rsa -b 4096 -C "you@example.com"

ECDSA, si tienes una razón específica para evitar Ed25519 (probablemente no tienes):

ssh-keygen -t ecdsa -b 521 -C "you@example.com"

Si quieres una interfaz en lugar de memorizar opciones de línea de comandos, el Generador de claves SSH en IO Tools te permite elegir el algoritmo, la longitud en bits y las opciones de frase de paso sin tocar una terminal.

Casos en los que realmente se requiere RSA

Existen casos legítimos en los que Ed25519 no es una opción:

  • Daemon SSH anterior a 2014 — cualquier sistema que ejecute OpenSSH anterior a 6.5 no aceptará Ed25519. Inusual, pero real: sistemas embebidos, dispositivos de red, viejos servidores RHEL 6 que nunca tuvieron OpenSSH actualizado.
  • Entornos FIPS-140-2 — entornos federales y algunos entornos empresariales regulados exigen algoritmos validados por FIPS. Ed25519 no está aprobado por FIPS. Usa RSA-3072+ o ECDSA con P-384 en esos entornos.
  • Política de la CA SSH organizacional — algunas empresas gestionan sus propias autoridades de certificados SSH con requisitos estrictos de tipo de clave. Revisa antes de generar una clave que será rechazada en el proceso de inscripción.

Fuera de estos tres casos, el argumento en favor de RSA es la inercia, no mérito.

La frase de paso que omitiste

Cuando ssh-keygen pide una frase de paso y pulsas Enter para omitirla, tu clave privada queda en el disco en texto plano. Si alguien obtiene tu portátil, obtiene todo lo que puede acceder esa clave — todos los servidores, todos los hosts de Git, todos los entornos de producción. Añade una frase de paso. Usa ssh-agent así que solo la introduces una vez por sesión:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

En macOS, añade --apple-use-keychain a ssh-add así que la frase de paso sobreviva a los reinicios. En Linux, la mayoría de los entornos de escritorio arrancan ssh-agent automáticamente — verifica con echo $SSH_AUTH_SOCK.

Has pulsado Enter cuatro veces sin leer. La solicitud de frase de paso es la que vale la pena volver a considerar.

¿Quieres eliminar publicidad? Adiós publicidad hoy

Instalar extensiones

Agregue herramientas IO a su navegador favorito para obtener acceso instantáneo y búsquedas más rápidas

añadir Extensión de Chrome añadir Extensión de borde añadir Extensión de Firefox añadir Extensión de Opera

¡El marcador ha llegado!

Marcador es una forma divertida de llevar un registro de tus juegos, todos los datos se almacenan en tu navegador. ¡Próximamente habrá más funciones!

ANUNCIO · ¿ELIMINAR?
ANUNCIO · ¿ELIMINAR?
ANUNCIO · ¿ELIMINAR?

Noticias Aspectos técnicos clave

Involucrarse

Ayúdanos a seguir brindando valiosas herramientas gratuitas

Invítame a un café
ANUNCIO · ¿ELIMINAR?