Filtros
Nivel
Artículos (116)
Wiki/Fundamentos/Criptografía Asimétrica
Intermedio18 min lectura

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+

Limitación: RSA es ~100x más lento que AES. En la práctica, RSA se usa solo para cifrar la clave de sesión simétrica (RSA + AES = cifrado híbrido). TLS hace esto en cada conexión.

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 →