Security

SSH y claves RSA explicadas: genera, usa y protege tus pares de claves

Una guía práctica sobre los pares de claves SSH y RSA: cómo funcionan, cómo generarlos en tu navegador y cómo usarlos para el acceso seguro a servidores y el cifrado.

7 min de lectura

Concepto de claves de seguridad

La criptografía de clave pública es la base de la comunicación segura en internet: las conexiones SSH, HTTPS, la firma de JWT y el correo electrónico cifrado dependen de ella. Entender cómo funcionan los pares de claves te convierte en un desarrollador más eficiente y en un usuario con mayor conciencia de seguridad.

El concepto fundamental: claves públicas y privadas

Un par de claves está formado por dos claves matemáticamente vinculadas:

  • Clave privada — Se queda en tu máquina. Nunca la compartas. Piensa en ella como tu identidad.
  • Clave pública — Compártela libremente. La colocas en servidores, en GitHub, en configuraciones de JWT.

Las matemáticas funcionan en una sola dirección: los datos cifrados con una clave pública solo pueden descifrarse con la clave privada correspondiente. Y los datos firmados con una clave privada pueden verificarse con la clave pública, sin revelar la clave privada.

Claves SSH: acceso a servidores sin contraseña

SSH (Secure Shell) es el estándar para el acceso remoto a servidores. La autenticación por contraseña funciona, pero tiene debilidades: las contraseñas pueden adivinarse, robarse mediante phishing o filtrarse. La autenticación con claves SSH es fundamentalmente más sólida:

  1. Tu cliente presenta una prueba criptográfica usando tu clave privada
  2. El servidor verifica la prueba contra la clave pública que instalaste
  3. Ninguna contraseña viaja por la red — no hay nada que interceptar

Configurar la autenticación SSH con claves:

# Generar un par de claves (Ed25519 es el estándar moderno)
ssh-keygen -t ed25519 -C "tu-email@ejemplo.com"

# Copiar la clave pública a un servidor
ssh-copy-id usuario@tuservidor.com

# Conectarse — sin necesidad de contraseña
ssh usuario@tuservidor.com

La clave pública se coloca en ~/.ssh/authorized_keys en el servidor. La clave privada nunca sale de tu máquina.

Ed25519 vs RSA para SSH

Ed25519 es la recomendación actual:

  • Claves más pequeñas (256 bits) con una seguridad equivalente o superior a RSA-4096
  • Generación y verificación de firmas más rápidas
  • Compatible con todos los servidores SSH modernos

RSA sigue siendo muy utilizado, especialmente en entornos empresariales con sistemas más antiguos:

  • 2048 bits es el tamaño mínimo aceptable hoy en día
  • 4096 bits ofrece un margen adicional para claves de larga duración
  • Los tamaños de clave más grandes implican una autenticación ligeramente más lenta

Genera claves SSH en tu navegador con nuestro Generador de claves SSH — Ed25519 y ECDSA, usando la Web Crypto API. Ningún material de clave sale de tu navegador.

Claves RSA: cifrado y firma

Las claves RSA se usan más allá de SSH: para certificados TLS, firma de JWT, correo electrónico cifrado (PGP) y autenticación de APIs.

Casos de uso comunes de RSA:

JWT (JSON Web Tokens) con RS256:

  • Firma los tokens con tu clave privada RSA
  • Los clientes verifican con la clave pública
  • A diferencia de HS256 (simétrico), el verificador nunca necesita el secreto de firma

Firma de código:

  • Firma un artefacto de lanzamiento con tu clave privada
  • Los usuarios verifican la firma con tu clave pública publicada
  • Demuestra que el artefacto proviene de ti y no fue manipulado

Certificados TLS/SSL:

  • Las autoridades certificadoras firman tu clave pública con su clave privada
  • Los navegadores verifican usando la clave pública de la CA (integrada en el navegador)

Genera pares de claves RSA en formato PEM con nuestro Generador de claves RSA — de 2048 o 4096 bits, completamente en tu navegador.

El formato PEM explicado

Las claves RSA y SSH se distribuyen habitualmente en formato PEM (Privacy Enhanced Mail):

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC7o4qne60...
-----END PRIVATE KEY-----

El encabezado y el pie identifican el tipo de clave. El contenido intermedio son los datos de la clave codificados en base64. Los distintos encabezados indican diferentes tipos de clave:

  • BEGIN RSA PRIVATE KEY — Formato tradicional PKCS#1
  • BEGIN PRIVATE KEY — Formato PKCS#8 (más común en herramientas modernas)
  • BEGIN PUBLIC KEY — Clave pública en formato PKCS#8
  • BEGIN OPENSSH PRIVATE KEY — Formato propio de OpenSSH para claves SSH

Cómo proteger tu clave privada

La seguridad de la clave privada es fundamental:

  1. Nunca la subas a git — Añade *.pem, id_rsa e id_ed25519 a tu .gitignore
  2. Usa una frase de contraseña — Cifra la clave en reposo. Aunque alguien obtenga el archivo, no podrá usarlo sin la frase de contraseña.
  3. Restringe los permisos — SSH requiere chmod 600 en los archivos de clave privada; se niega a usar claves legibles por otros
  4. Rótala si se ve comprometida — Genera un nuevo par y elimina la clave pública antigua de todos los servidores
# Establecer los permisos correctos en tu clave privada
chmod 600 ~/.ssh/id_ed25519

Huellas digitales de claves

Una huella digital es un hash corto de una clave pública que se usa para verificar la identidad sin comparar la clave completa:

ssh-keygen -lf ~/.ssh/id_ed25519.pub
# Salida: 256 SHA256:abc123... tu-email@ejemplo.com (ED25519)

Al conectarte a un servidor por primera vez, SSH te muestra la huella digital del host y te pide que la confirmes. Verifica esta huella digital por un canal separado (la documentación del proveedor del servidor) antes de aceptarla.

Resumen

Los pares de claves SSH y RSA proporcionan autenticación y cifrado fundamentalmente más sólidos que las contraseñas. Usa Ed25519 para SSH, RSA-4096 para firma y cifrado, protege siempre las claves privadas con una frase de contraseña y genera las claves localmente — nunca permitas que un servicio de terceros genere tu clave privada por ti.