0Pricing
Cloud & IT Cert Prep · Lección

Intercambio de claves y cifrado híbrido

Descubra cómo el intercambio de claves Diffie-Hellman y TLS combinan métodos simétricos y asimétricos para lograr rendimiento y seguridad.

Intercambio de claves y cifrado híbrido es una lección gratuita de Cloud & IT Cert Prep en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cloud & IT Cert Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.

El problema del intercambio de claves

El cifrado simétrico requiere que ambas partes compartan la misma clave secreta antes de poder comunicarse de forma segura. Pero ¿cómo se comparte esa clave de forma segura cuando todavía no existe un canal seguro? Este problema de distribución de claves se consideró irresoluble hasta 1976, cuando Whitfield Diffie y Martin Hellman publicaron un artículo revolucionario. Su solución, el intercambio de claves Diffie-Hellman, permite que dos partes establezcan una clave secreta compartida a través de un canal inseguro sin transmitir nunca la clave, incluso estando expuesta a posibles interceptores.

Concepto del intercambio de claves Diffie-Hellman

Diffie-Hellman (DH) utiliza un ingenioso truco matemático basado en el problema del logaritmo discreto. Ambas partes acuerdan dos valores públicos (un número primo grande p y un generador g). Cada parte genera un número aleatorio privado, calcula a partir de él un valor público e intercambia los valores públicos. Después, cada parte puede calcular el mismo secreto compartido a partir de su propio número privado y del valor público de la otra parte; sin embargo, un interceptor que solo vea los valores públicos no puede calcular el secreto compartido sin resolver el problema del logaritmo discreto, lo cual es computacionalmente inviable para números grandes.

# Diffie-Hellman conceptual flow:
# 1. Agree on public parameters: prime p=23, generator g=5
# 2. Alice picks private a=6:  computes A = g^a mod p = 5^6 mod 23 = 8
# 3. Bob picks private b=15:   computes B = g^b mod p = 5^15 mod 23 = 19
# 4. Alice sends A=8 to Bob;   Bob sends B=19 to Alice
# 5. Alice: s = B^a mod p = 19^6 mod 23 = 2
# 6. Bob:   s = A^b mod p = 8^15 mod 23 = 2
# Shared secret = 2 (without either party transmitting it!)

ECDH: Diffie-Hellman de curva elíptica

Diffie-Hellman de curva elíptica (ECDH) es la variante moderna y más eficiente del intercambio de claves Diffie-Hellman. Utiliza las matemáticas de curvas elípticas en lugar de la exponenciación modular, y consigue la misma seguridad con parámetros mucho más pequeños. Una clave ECDH de 256 bits proporciona una seguridad equivalente a la de una clave DH de 3072 bits. ECDHE (la «E» significa Ephemeral) genera un nuevo par de claves para cada sesión, lo que proporciona secreto perfecto hacia adelante. TLS 1.3 exige ECDHE para el intercambio de claves, por lo que es el mecanismo de intercambio de claves predominante en la seguridad web moderna.

Secreto perfecto hacia adelante (PFS)

El secreto perfecto hacia adelante (PFS) garantiza que las claves de sesión no queden comprometidas aunque la clave privada de larga duración del servidor sea robada posteriormente. El PFS se consigue utilizando pares de claves efímeras para el intercambio de claves de cada sesión; la clave de sesión se deriva de un par de claves temporal que se descarta al finalizar la sesión. Sin PFS (al utilizar el intercambio de claves RSA), un atacante que registre tráfico cifrado hoy y robe posteriormente la clave privada puede descifrar retroactivamente todo el tráfico anterior. Con PFS, las sesiones pasadas permanecen seguras incluso después de que se comprometa una clave.

# Check if a website uses Perfect Forward Secrecy
openssl s_client -connect google.com:443 2>/dev/null | grep 'Cipher'
# Cipher    : TLS_AES_256_GCM_SHA384 (TLS 1.3 - always has PFS)
# Or look for ECDHE in cipher name:
# Cipher : ECDHE-RSA-AES256-GCM-SHA384 (TLS 1.2 with PFS)
# DHE-RSA-AES256-GCM-SHA384 (DHE = also PFS)
# RSA-AES256-SHA (NO PFS - static RSA key exchange)

Cifrado híbrido: lo mejor de ambos mundos

El cifrado híbrido combina la criptografía asimétrica y simétrica para obtener tanto los beneficios de gestión de claves del cifrado asimétrico como el rendimiento del cifrado simétrico. El proceso es el siguiente: (1) generar una clave de sesión simétrica aleatoria; (2) cifrar los datos principales con esta clave simétrica (rápido); (3) cifrar la clave simétrica con la clave pública del destinatario (transmisión segura de la clave); (4) enviar tanto los datos cifrados como la clave cifrada. El destinatario descifra la clave simétrica con su clave privada y, a continuación, descifra los datos con la clave simétrica recuperada.

# Hybrid encryption example with OpenSSL
# 1. Generate a random AES-256 session key
openssl rand -out session.key 32

# 2. Encrypt the large file with the symmetric session key
openssl enc -aes-256-cbc -pbkdf2 -in largefile.tar -out largefile.enc -pass file:session.key

# 3. Encrypt the session key with recipient's RSA public key
openssl rsautl -encrypt -inkey recipient_public.pem -pubin -in session.key -out session.key.enc

# Send: largefile.enc + session.key.enc

Handshake de TLS: el cifrado híbrido en la práctica

El handshake de TLS es la implementación real más común del cifrado híbrido. En TLS 1.3: (1) el cliente envía las suites de cifrado compatibles y su intercambio de claves (valor público de ECDHE); (2) el servidor responde con su intercambio de claves, su certificado (que contiene su clave pública) y una firma; (3) ambas partes calculan el mismo secreto compartido mediante ECDH; (4) todo el tráfico posterior se cifra con una clave simétrica derivada del secreto compartido (AES-256-GCM). Todo el proceso establece un canal cifrado en un solo viaje de ida y vuelta, sin transmitir nunca directamente la clave simétrica.

# Observe the TLS 1.3 handshake
openssl s_client -connect example.com:443 -tls1_3
# You'll see:
# TLSv1.3, Handshake [length 0002], ServerHello
# Cipher    : TLS_AES_256_GCM_SHA384
# Session-ID: (no session ID in TLS 1.3, uses PSK)
# Verify return code: 0 (ok)

Mecanismos de encapsulación de claves (KEM)

La criptografía moderna utiliza mecanismos de encapsulación de claves (KEM) como un enfoque más formal y seguro para el intercambio de claves que el cifrado asimétrico directo de una clave de sesión. Un KEM permite que una de las partes genere una clave simétrica y la «encapsule» mediante la clave pública del destinatario, de forma que solo este pueda desencapsularla (recuperarla). El estándar poscuántico de NIST, CRYSTALS-Kyber, es un KEM basado en problemas de retículas en lugar de la factorización de enteros o las curvas elípticas, lo que lo hace resistente a los ataques de ordenadores cuánticos.

Intercambio de claves RSA frente a ECDHE

Hasta TLS 1.3, el intercambio de claves RSA era habitual: el cliente generaba un secreto premaster, lo cifraba con la clave pública RSA del servidor y se lo enviaba. El problema es que esto no proporciona secreto perfecto hacia adelante. Si la clave privada del servidor se ve comprometida posteriormente, todas las sesiones anteriores cifradas de esta forma pueden descifrarse. TLS 1.3 elimina por completo el intercambio de claves RSA (solo permite ECDHE), específicamente para garantizar el secreto perfecto hacia adelante en todas las conexiones. Por eso, deshabilitar TLS 1.0 y 1.2 (que todavía permiten RSA estático) y exigir TLS 1.3 supone una mejora de seguridad.

Derivación de claves de sesión

El secreto compartido producido por un intercambio Diffie-Hellman no se utiliza directamente como clave de cifrado. En su lugar, se introduce en una función de derivación de claves (KDF) para producir las claves de cifrado y los vectores de inicialización reales. TLS 1.3 utiliza HKDF (función de derivación de claves basada en HMAC) para derivar claves independientes para el cifrado en cada dirección. Las KDF añaden un coste computacional (lo que dificulta la fuerza bruta), amplían secretos cortos hasta obtener la cantidad necesaria de bytes de clave y garantizan que las claves derivadas tengan buenas propiedades estadísticas para utilizarse como claves simétricas.

Cifrado de correo electrónico con PGP: cifrado híbrido en el correo

Pretty Good Privacy (PGP) y su equivalente de código abierto, OpenPGP, utilizan cifrado híbrido para el correo electrónico. Cuando Alice envía un correo cifrado a Bob, PGP genera una clave de sesión simétrica aleatoria, cifra con ella el cuerpo del correo (AES), cifra la clave de sesión con la clave pública RSA o ECC de Bob y envía ambas juntas. En los correos firmados, PGP aplica un hash al mensaje y firma dicho hash con la clave privada de Alice, lo que proporciona no repudio. El modelo de red de confianza de PGP (los usuarios firman las claves de los demás) es una alternativa a la PKI basada en autoridades de certificación.

# Encrypt and sign an email file with GPG (OpenPGP)
# Encrypt to Bob using his public key, sign with Alice's private key
gpg --encrypt --sign --recipient bob@example.com --armor message.txt

# Decrypt (Bob uses his private key)
gpg --decrypt message.txt.asc

# List available keys
gpg --list-keys
gpg --list-secret-keys

Riesgo de intermediario en el intercambio de claves

El intercambio de claves Diffie-Hellman es seguro frente a los fisgones pasivos, pero es vulnerable a ataques activos de intermediario (MITM) si las partes no se autentican mutuamente. Un atacante puede interceptar el valor público de Alice, sustituirlo por el suyo y establecer sesiones DH independientes con Alice y Bob, mientras cada uno cree que se está comunicando con el otro. Por eso TLS combina el intercambio de claves DH con la autenticación mediante certificados: el certificado del servidor (firmado por una CA de confianza) demuestra la identidad del servidor e impide que se sustituya la clave pública durante el handshake.

Comprobación rápida

Ponga a prueba su comprensión de los conceptos de CompTIA Security+ (SY0-701) de esta lección.

Resumen de la lección

En esta lección ha aprendido lo siguiente: Diffie-Hellman resuelve el problema del intercambio de claves al permitir que las partes deriven un secreto compartido a través de un canal inseguro; ECDHE (efímero) proporciona secreto perfecto hacia adelante; el cifrado híbrido combina el intercambio asimétrico de claves con el cifrado simétrico de grandes volúmenes de datos para mejorar la eficiencia; y TLS 1.3 exige ECDHE para todas las conexiones. A continuación, exploraremos las autoridades de certificación y las cadenas de confianza.

Preguntas frecuentes

¿La lección «Intercambio de claves y cifrado híbrido» es gratis?

Sí — el texto completo de «Intercambio de claves y cifrado híbrido» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cloud & IT Cert Prep, actualiza a CoddyKit PRO. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.

¿Qué aprenderé en «Intercambio de claves y cifrado híbrido»?

Descubra cómo el intercambio de claves Diffie-Hellman y TLS combinan métodos simétricos y asimétricos para lograr rendimiento y seguridad. Practicas Cloud & IT Cert Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cloud & IT Cert Prep?

No se requiere experiencia previa. Cloud & IT Cert Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Intercambio de claves y cifrado híbrido»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cloud & IT Cert Prep?

Sí. Cada lección de Cloud & IT Cert Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Algoritmos de cifrado simétrico
  2. Cifrado asimétrico y pares de claves
  3. Hashing e integridad de los datos
  4. Intercambio de claves y cifrado híbrido
← Volver a Cloud & IT Cert Prep