Criptografía Asimétrica: RSA y Curvas Elípticas
Par de claves pública/privada, RSA, ECC, Diffie-Hellman y firmas digitales
El Problema que Resuelve
La criptografía simétrica es rápida, pero requiere compartir la clave de forma segura. La criptografía asimétrica resuelve esto con un par de claves matemáticamente relacionadas: lo que cifra una solo puede descifrarlo la otra.
// Par de claves
Clave Pública → compartir con cualquiera (cifrar, verificar firma)
Clave Privada → guardar en secreto (descifrar, firmar)
matematicamente: conocer K_pub NO permite calcular K_priv
Casos de Uso Principales
🔒
Cifrado de datos
Bob cifra con la clave pública de Alice → solo Alice (clave privada) puede descifrar.
✍️
Firma digital
Alice firma con su clave privada → cualquiera con su clave pública verifica la firma.
🤝
Intercambio de clave (ECDH)
Dos partes derivan un secreto compartido sin enviarlo. Usado en TLS para Perfect Forward Secrecy.
🖥️
Autenticación SSH
El servidor tiene tu clave pública; el cliente demuestra poseer la privada sin revelarla.
RSA — Rivest-Shamir-Adleman
RSA (1977) basa su seguridad en la dificultad de factorizar el producto de dos números primos grandes. Es el algoritmo asimétrico más usado históricamente.
// Generación de claves simplificada
1. Elegir primos grandes p, q
2. n = p × q (módulo, parte pública)
3. φ(n) = (p-1)(q-1)
4. Clave pública: (e, n) — e coprime con φ(n)
5. Clave privada: (d, n) — d = e⁻¹ mod φ(n)
RSA-1024
❌ Roto
No usar
RSA-2048
⚠️ Mínimo
Solo legacy
RSA-4096
✅ Recomendado
Hasta 2030+
ECC — Criptografía de Curvas Elípticas
ECC basa su seguridad en el problema del logaritmo discreto en curvas elípticas (ECDLP). Proporciona la misma seguridad que RSA con claves mucho más pequeñas → más rápido, menos energía, ideal para móviles e IoT.
Comparativa de seguridad equivalente:
RSA-2048
= ECC-224 bits
RSA-3072
= ECC-256 bits
RSA-15360
= ECC-521 bits
P-256 (secp256r1)
✅
TLS, HTTPS, JWT (ES256). Curva NIST recomendada.
P-384 (secp384r1)
✅
NSA Suite B, entornos que requieren máxima seguridad.
Curve25519
✅ Preferida
Signal, WireGuard, SSH moderno. Diseñada por Bernstein, resistente a ataques side-channel.
secp256k1
⚠️ Solo crypto
Bitcoin y Ethereum. No recomendada para TLS/PKI.
Diffie-Hellman y Perfect Forward Secrecy
DH (1976) permite a dos partes derivar un secreto compartido sobre canal inseguro sin enviarlo. ECDH usa curvas elípticas para mayor eficiencia.
Perfect Forward Secrecy (PFS / FS)
Si se usa ECDHE (Ephemeral) en TLS, una clave de sesión comprometida en el futuro no compromete sesiones pasadas, porque cada conexión genera un par de claves efímero. TLS 1.3 obliga a PFS.
// TLS 1.3 cipher suites (todas con PFS)
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_GCM_SHA256
← ECDHE para intercambio de clave en todos
Buenas Prácticas
Preferir ECDSA/ECDH con Curve25519 o P-256 sobre RSA para nuevas implementaciones.
Usar RSA-4096 mínimo si tienes que usar RSA; nunca RSA-1024.
Activar ECDHE en TLS para Perfect Forward Secrecy.
Proteger la clave privada con passphrase + almacenamiento en HSM/KMS.
Rotar certificados y pares de claves periódicamente.
Prepararse para post-quantum: NIST seleccionó CRYSTALS-Kyber (ML-KEM) y CRYSTALS-Dilithium (ML-DSA) en 2024.
Siguiente Paso
Aprende cómo las funciones hash garantizan la integridad de datos
Funciones Hash y HMAC →