abril 08, 2026

El intercambio de claves de Diffie-Hellman explicado

 

Dos candados y una llave bajo el título en inglés "entendiendo el interambio de claves Diffie-Hellman"

Gran parte de la seguridad en Internet depende de poder cifrar la información antes de enviarla. Pero para cifrar, primero necesitamos una clave compartida.

El reto de compartir secretos de forma segura

Cuando envías un mensaje por Internet, a menudo viaja por lugares que no controlas, como redes Wi-Fi públicas, servidores o infraestructuras intermedias donde cualquiera podría interceptarlo. Suena preocupante, pero la criptografía moderna tiene una solución elegante: el intercambio de claves Whitfield Diffie y Martin Hellman, conocido como Diffie-Hellman.
 
En el ámbito de la salud digital, el intercambio de claves Diffie-Hellman juega un papel esencial al proteger datos médicos sensibles como historiales clínicos, resultados de pruebas o consultas de telemedicina. Gracias a este mecanismo, el dispositivo del paciente y los servidores sanitarios pueden generar una clave secreta compartida sin exponerla en la red, garantizando que la información viaje cifrada y no pueda ser entendida por terceros.

A grandes rasgos, resuelve un problema simple pero fundamental:

¿Cómo pueden dos personas ponerse de acuerdo en un secreto compartido si todo el mundo puede ver la conversación?

Una analogía de funciones unidireccionales

Imaginemos que Alice y Bob quieren comunicarse por Internet, pero Eve siempre está escuchando. El truco consiste en acordar una clave secreta numérica sin que Eve llegue a conocerla. Esta clave funciona como una contraseña que solo ellos comparten y, una vez que la tienen, pueden cifrar sus mensajes. Así, aunque Eve los intercepte, no podrá entender nada.

Primero pensemos en colores:

  • Mezclar dos colores es fácil: puedes combinarlos y obtener un tercer color.

  • Deshacer la mezcla es difícil: dado el color resultante, no podemos recuperar exactamente los colores originales.

Esto es lo que se conoce como una función unidireccional: es fácil realizar la operación (mezclar), pero extremadamente difícil revertirla (separar los colores).

Alice y Bob usarán esta idea para acordar una clave secreta. El proceso sería así:

  1. Alice y Bob acuerdan un color público que todos, incluida Eve, pueden vefr.

  2. Cada uno elige un color secreto privado.

  3. Mezclan su color privado con el color público y se envían el resultado.

  4. Cuando reciben la mezcla del otro, vuelven a añadir su propio color secreto.

¿El resultado? Ambos terminan con el mismo color secreto final: una clave compartida que solo ellos conocen. Cualquiera que observe puede ver el color público y las mezclas intercambiadas, pero no puede deshacer el proceso para descubrir el secreto, igual que no se puede "desmezclar" la pintura.

Las matemática detrás de Diffie-Hellman

La analogía de la pintura ayuda a visualizar la idea, pero en la práctica el protocolo utiliza números y un poco de aritmética modular.
  1. Acordar números públicos
    Alice y Bob acuerdan un número primo grande \(p\) y un segundo número llamado base o generador \(g\). Estos valores son públicos, como el color público en la analogía. Cualquiera, incluida Eve, los conoce.
  2. Elegir números privados
    Ahora Alice y Bob eligen un número secreto cada uno. Alice elige un número privado \(a\) y Bob elige el número privado \(b\). Estos números se mantienen en secreto y equivalen a los "colores privados".
  3. Calcular valores e intercambiarlos
    Alice y Bob calculan un valor utilizando el número público y su número privado:\[
    A = g^a \bmod p \quad \text{Número público (o mezcla) de Alice}
    \]\[
    B = g^b \bmod p \quad \text{Número público (o mezcla) de Bob}
    \]Tras esto los valores calculados \(A\) de Alice y \(B\) de Bob se intercambian públicamente.
    Podemos pensar en este paso como la "mezcla" del color público con el privado y el envío del resultado. Este es visible para todos, pero estos valores no se pueden revertir fácilmente para descubrir los números privados. Esto se conoce como el problema del logaritmo discreto.
  4. Calcular el secreto compartido
    Ahora cada uno utiliza el valor recibido y lo eleva a su propio número privado:\[
    \text{Alice recibe B y calcula: } K = B^a \bmod p
    \]\[
    \text{Bob recibe A y calcula: } K = A^b \bmod p
    \]
 La magia es que ambos cálculos dan el mismo resultado \(K\). Este es el secreto compartido.

¿Por qué funciona? 

Ahora que entendemos los pasos, podemos escribir esta idea en su forma matemática más común: \[ 
(g^a \bmod p)^b \bmod p = (g^b \bmod p)^a \bmod p
\]Esta igualdad es lo que hace posible el intercambio de claves Diffie-Hellman. Aunque Alice y Bob nunca envían sus números privados, ambos llegan al mismo secreto.

Mientras tanto, un atacante que observe solo conoce los valores:
  • \(p\)
  • \(g\)
  • \(A\)
  • \(B\)

Pero calcular el secreto compartido a partir de esos datos implicaría resolver el problema del logaritmo discreto, que es computacionalmente inviable con números lo suficientemente grandes.

Gracias a esta idea brillante, hoy es posible establecer comunicaciones seguras en protocolos como HTTPS, VPN y muchas otras tecnologías que utilizamos a diario. Diffie-Hellman fue uno de los grandes avances que hicieron posible la criptografía moderna en Internet.


Publicar un comentario