Generador de claves RSA
Crea un nuevo par de claves RSA pública/privada en tu navegador con la API WebCrypto y cópialo o descárgalo en PEM (PKCS#8 / SPKI o PKCS#1), JSON Web Key u OpenSSH. Las claves se generan con el generador aleatorio seguro de tu dispositivo y nunca salen de la página.
Última actualización:
Cómo usar Generador de claves RSA
- Elige el tamaño de la clave. 2048 bits es el mínimo para claves nuevas; 3072 o 4096 bits ofrecen un margen de seguridad mayor.
- Elige el uso: RSA-OAEP para cifrado, RS256 para JWT y la mayoría de las firmas, o PS256 para firmas RSA-PSS.
- Pulsa Generar par de claves. Las claves de 4096 bits pueden tardar unos segundos.
- Elige el formato de salida: PEM PKCS#8, PEM PKCS#1, JWK u OpenSSH.
- Copia o descarga la clave pública para compartirla y la clave privada para guardarla en secreto.
Formatos de clave RSA explicados
| Formato | Encabezado / forma | Uso habitual |
|---|---|---|
| Clave pública SPKI (X.509 SubjectPublicKeyInfo) | -----BEGIN PUBLIC KEY----- | OpenSSL, Java X509EncodedKeySpec, Node.js, Python, verificación de JWT |
| Clave privada PKCS#8 | -----BEGIN PRIVATE KEY----- | Predeterminado en OpenSSL 3, Java PKCS8EncodedKeySpec, Node.js, Go |
| Clave pública PKCS#1 | -----BEGIN RSA PUBLIC KEY----- | OpenSSL antiguo y librerías que solo manejan RSA |
| Clave privada PKCS#1 | -----BEGIN RSA PRIVATE KEY----- | Formato tradicional de OpenSSL, SSH id_rsa, PHP, Ruby |
| JSON Web Key | {"kty":"RSA","n":"…","e":"AQAB"} | Librerías JWT/JOSE, endpoints JWKS, OAuth y OpenID Connect |
| Clave pública OpenSSH | ssh-rsa AAAAB3NzaC1yc2E… comentario | ~/.ssh/authorized_keys, alojamiento Git, servidores en la nube |
Todos los formatos contienen los mismos números: el módulo n = p × q (el producto de dos primos aleatorios de la mitad del tamaño de la clave) y el exponente público e = 65537. La clave privada añade el exponente privado d, donde e × d ≡ 1 (mod λ(n)), además de p, q y tres valores precalculados que aceleran el descifrado y la firma mediante el teorema chino del resto.
Tamaño de clave y seguridad
| Módulo RSA | Seguridad simétrica aprox. | Recomendación (NIST SP 800-57) |
|---|---|---|
| 1024 bits | 80 bits | No permitido, no usar |
| 2048 bits | 112 bits | Aceptable hasta 2030 |
| 3072 bits | 128 bits | Recomendado después de 2030 |
| 4096 bits | ~140 bits | Claves de larga duración; operaciones con clave privada más lentas |
Comandos útiles de OpenSSL
- Inspeccionar una clave privada:
openssl rsa -in rsa-2048-private.pem -text -noout - Obtener la clave pública:
openssl rsa -in rsa-2048-private.pem -pubout -out public.pem - Convertir PKCS#8 a PKCS#1:
openssl rsa -in private.pem -traditional -out private-pkcs1.pem - Cifrar la clave privada con una frase de contraseña:
openssl pkcs8 -topk8 -v2 aes-256-cbc -in private.pem -out private-enc.pem - Mostrar la huella SSH:
ssh-keygen -lf id_rsa.pub
Preguntas frecuentes
¿Es seguro generar una clave RSA en el navegador?
Las claves las crea la implementación WebCrypto integrada en el navegador, el mismo código que protege HTTPS, usando el generador de números aleatorios criptográficamente seguro del sistema operativo. No se envía nada a ningún servidor. Para claves que protegen sistemas de producción de alto valor, las organizaciones suelen preferir generarlas en el servidor o en un módulo de seguridad de hardware donde se vayan a usar.
¿Qué tamaño de clave debo elegir?
El NIST considera aceptable RSA de 2048 bits hasta 2030, lo que equivale aproximadamente a 112 bits de seguridad. 3072 bits ofrecen unos 128 bits de seguridad y se recomiendan para claves que se usen después de 2030. 4096 bits es habitual en SSH y en claves de larga duración, pero es más lento para firmar y descifrar.
¿Qué diferencia hay entre PEM PKCS#8 y PKCS#1?
PKCS#1 (BEGIN RSA PRIVATE KEY / BEGIN RSA PUBLIC KEY) contiene solo los números RSA. PKCS#8 (BEGIN PRIVATE KEY) y SPKI (BEGIN PUBLIC KEY) envuelven los mismos números con un identificador de algoritmo, así que pueden contener cualquier tipo de clave. La mayoría de las librerías modernas prefieren PKCS#8 y SPKI; las herramientas antiguas de OpenSSL y parte del software SSH esperan PKCS#1.
¿Puedo usar la clave para SSH?
Sí. Pon la línea de la clave pública OpenSSH (ssh-rsa …) en ~/.ssh/authorized_keys en el servidor. Guarda la clave privada en formato PEM como ~/.ssh/id_rsa con permisos 600; OpenSSH lee claves PEM PKCS#1 y PKCS#8. Puedes añadir una frase de contraseña después con ssh-keygen -p -f ~/.ssh/id_rsa.
¿La clave privada está cifrada con contraseña?
No, la clave privada se genera sin cifrar para que funcione con cualquier herramienta. Protégela guardándola de forma segura o añade una frase de contraseña en local, por ejemplo con openssl pkcs8 -topk8 -v2 aes-256-cbc -in key.pem -out key-encrypted.pem o ssh-keygen -p.
¿Por qué importa el uso (OAEP, RS256, PS256)?
Los números RSA son los mismos en todos los casos, pero WebCrypto vincula cada clave a un algoritmo, y la salida JWK lo registra en el campo alg. Los formatos PEM y OpenSSH no guardan el uso, así que una clave PEM generada aquí puede usarse para cualquier operación RSA en otro software.
¿La clave generada es realmente aleatoria?
Sí. WebCrypto genera dos números primos aleatorios grandes con el CSPRNG del sistema y se niega a exportar nada más débil. Cada vez que pulsas Generar obtienes un par de claves completamente nuevo, y la página no guarda ninguna copia cuando te vas.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.