Get in touch

Contact Form Demo

Generador de Claves RSA

Genera claves públicas y privadas a partir de números primos

Fortaleza de la Clave
Esperando números primos…
Primo P
Primo Q
1
2
3
4
5
6
7
8
9
0
SIGUIENTE
🔓
Clave Pública (Cerrar)
(e, n)
🔑
Clave Privada (Abrir)
(d, n)
Flujo de Derivación
Pasos de Generación
👨‍🏫
Por el Prof. David Anderson
Especialista en Criptografía | 20+ años de exp.
«El cifrado no es magia; es simplemente aritmética modular a una escala masiva. Cuando ves ese pequeño icono del candado en tu navegador, un Generador de claves RSA ha hecho su trabajo. Pero, ¿qué ocurre realmente dentro de esa ‘caja negra’? Hoy, vamos más allá de simplemente hacer clic en botones. Analizaremos la anatomía matemática de un par de claves, exploraremos la diferencia entre los formatos PEM y DER, y entenderemos por qué factorizar números grandes ($n = p \times q$) es lo único que separa tus datos de los hackers.»

Guía del Generador de Claves RSA: Anatomía de un par de claves

Inmersión profunda en algoritmos RSA, formatos PEM y comandos OpenSSL

1. El motor matemático: Cómo nacen las claves RSA

En el corazón de cada Generador de claves RSA reside una hermosa simetría matemática derivada del Teorema de Euler. La seguridad de todo internet descansa sobre la dificultad del «Problema de Factorización de Enteros». Aquí está la receta paso a paso que sigue cada sistema criptográfico:

Protocolo de generación paso a paso

  • 1. Elegir primos ($p, q$): El generador selecciona dos números primos distintos y masivos. En RSA de 2048 bits, estos primos tienen aproximadamente 300 dígitos de longitud.
  • 2. Calcular el Módulo ($n$): Se calcula $n = p \times q$. Este $n$ se convierte en el módulo tanto para la clave pública como para la privada. Su longitud en bits (ej. 2048) determina la robustez de la clave.
  • 3. Calcular la Función Totiente ($\phi(n)$): Se calcula la función Totiente de Euler: $\phi(n) = (p-1)(q-1)$. Este número se mantiene en secreto absoluto.
  • 4. Elegir el Exponente Público ($e$): Se selecciona un entero $e$ tal que $1 < e < \phi(n)$ y $mcd(e, \phi(n)) = 1$.
    Estándar: Casi todos los sistemas usan 65537 ($2^{16}+1$) porque permite un cifrado rápido.
  • 5. Calcular el Exponente Privado ($d$): Se resuelve $d$ usando el Inverso Multiplicativo Modular:
    $d \equiv e^{-1} \pmod{\phi(n)}$. Esto se hace usualmente mediante el Algoritmo de Euclides Extendido.

Fórmulas de Cifrado y Descifrado

Una vez generadas las claves, el proceso es elegante en su simplicidad:

Cifrado (Clave Pública): $$ C = M^e \pmod n $$ Descifrado (Clave Privada): $$ M = C^d \pmod n $$

2. Ejemplo de Generador RSA con «Lápiz y Papel»

Para entender realmente el Generador de claves RSA, actuemos como una computadora pero usando números pequeños y legibles para humanos.

VariableCálculoResultado
Primos Seleccionar dos primos pequeños $p=61, q=53$
Módulo (n) $n = 61 \times 53$ $3233$
Totiente ($\phi$) $(61-1) \times (53-1) = 60 \times 52$ $3120$
Público (e) Elegir primo coprimo con 3120 $17$
Privado (d) Resolver $17d \equiv 1 \pmod{3120}$ $2753$

El Resultado:
• Clave Pública: $(n=3233, e=17)$
• Clave Privada: $(n=3233, d=2753)$
Si ciframos el mensaje $M=65$ (ASCII ‘A’), $C = 65^{17} \pmod{3233} = 2790$.
Descifrado: $2790^{2753} \pmod{3233} = 65$.

3. La jungla de formatos: PEM, DER, PKCS

Cuando usas un Generador de claves RSA, no solo obtienes números; obtienes un archivo. Entender estos formatos es crucial para los desarrolladores.

PEM vs. DER

  • DER (Distinguished Encoding Rules): Formato binario. No es legible por humanos. Se usa a menudo en Java.
  • PEM (Privacy Enhanced Mail): DER codificado en Base64 con encabezado/pie de página. Es el estándar para OpenSSL y la web.

PKCS#1 vs. PKCS#8

EstándarEncabezadoDescripción
PKCS#1 -----BEGIN RSA PRIVATE KEY----- Estándar antiguo. Específicamente para claves RSA.
PKCS#8 -----BEGIN PRIVATE KEY----- Estándar Moderno. Contenedor genérico para CUALQUIER algoritmo de clave (RSA, ECC, DSA).

4. Guía rápida para desarrolladores: Comandos OpenSSL

¿No confías en los generadores en línea para claves de producción? Bien. Deberías generarlas localmente. Aquí están los comandos esenciales para tu terminal.

Generar una Clave Privada de 2048 bits (PKCS#8):
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
Extraer la Clave Pública:
openssl rsa -pubout -in private_key.pem -out public_key.pem
Convertir de PKCS#1 a PKCS#8:
openssl pkcs8 -topk8 -in old_rsa_key.pem -out new_pkcs8_key.pem -nocrypt

5. Análisis de Seguridad: ¿Está muerto RSA?

Con el auge de la Computación Cuántica, la seguridad del Generador de claves RSA está bajo escrutinio.

La amenaza cuántica (Algoritmo de Shor)

Las computadoras clásicas tardarían billones de años en factorizar un número de 2048 bits. Sin embargo, el Algoritmo de Shor ejecutándose en una computadora cuántica suficientemente grande podría resolver esto en horas.

🚫 Recomendación del NIST:

El NIST recomienda abandonar RSA de 1024 bits de inmediato. RSA de 2048 bits es seguro por ahora (hasta ~2030). Para secreto a largo plazo, considere cambiar a ECC (Criptografía de Curva Elíptica) o algoritmos Post-Cuánticos (como CRYSTALS-Kyber).

6. Rincón de FAQ del Profesor

P: ¿Puedo recuperar la clave privada a partir de la pública?
¡No, ese es precisamente el punto! Para hacerlo, necesitarías factorizar el módulo $n$ en $p$ y $q$. Este es el «Problema de Factorización de Enteros», que es computacionalmente inviable para claves grandes.
P: ¿Por qué ‘e’ suele ser 65537?
65537 es un Primo de Fermat ($2^{16} + 1$). En binario es `10000000000000001`. Al tener solo dos bits ‘1’, el proceso de exponenciación modular es extremadamente rápido para las computadoras, optimizando la velocidad de cifrado sin sacrificar la seguridad.
P: ¿Cuál es el tamaño máximo de datos que puede cifrar RSA?
RSA no puede cifrar datos más grandes que el módulo de su clave (menos el margen de relleno/padding). Para RSA de 2048 bits con relleno OAEP, el límite es de unos 190 bytes. Por esto RSA solo se usa para cifrar una «Clave de Sesión» simétrica (AES), no el archivo en sí.
P: ¿Qué pasa si dos personas generan la misma clave?
La probabilidad es infinitesimalmente pequeña. El número de primos de esa magnitud es astronómico. Es más probable que la Tierra sea golpeada por un meteorito mientras lees esta frase a que dos generadores RSA aleatorios colisionen.

Referencias

  • Rivest, R.; Shamir, A.; Adleman, L. (1978). «A Method for Obtaining Digital Signatures and Public-Key Cryptosystems». Communications of the ACM.
  • NIST Special Publication 800-57 Part 1. «Recommendation for Key Management».
  • OpenSSL Foundation. «OpenSSL Cookbook».

¿Quieres verificar tus números primos?

La seguridad de RSA depende totalmente de la calidad de tus números primos. Valídalos ahora.

Ir al Verificador de Números Primos