Conoce Atico34 - Solicita presupuesto
Ciberseguridad

Algoritmo Diffie-Hellman. Descripción, funcionamiento y ejemplos

Existen numerosos protocolos que permiten realizar comunicaciones seguras entre dos equipos. Uno de los más antiguos es el llamado algoritmo Diffie Hellman. En este artículo te contamos en qué consiste y cómo funciona.

¿Qué es el algoritmo Diffie-Hellman?

El algoritmo Diffie-Hellman debe su nombre a sus creadores Whitfield Diffie y Martin Hellman. Creado en 1976, es uno de los protocolos de intercambio de claves más antiguos que todavía se siguen usando en la actualidad. Sus creadores fueron galardonados con el premio A.M. Turing 2015 por este trabajo, con el que revolucionaron por completo la seguridad informática.

Pero, ¿en qué consiste?

Se trata de un algoritmo que permite crear una clave secreta entre dos equipos informáticos que nunca han tenido contacto previo, a través de un canal inseguro, y mediante el envío de solo dos mensajes.

La clave Diffie Hellman solo podrá ser conocida por los dos equipos que realizan la comunicación, y no podrá ser descubierta por un atacante o por un tercero que quiera conocer dicha comunicación.

El algoritmo crea una clave simétrica que cifrará la comunicación entre ambos equipos, de forma que esta comunicación no podrá ser interceptada, aunque un tercero conozca los mensajes enviados por el protocolo.

¿Es un algoritmo de cifrado?

En realidad, aunque se utiliza para el cifrado de comunicaciones entre dos equipos en un entorno inseguro, el algoritmo Diffie Hellman no es realmente un algoritmo de cifrado, sino que se conoce como un algoritmo de intercambio de claves.

Entonces,  ¿para qué sirve el algoritmo Diffie Hellman?

A través de este protocolo se crean dos claves idénticas para los equipos que establecerán la comunicación, de manera que solo dichos equipos conocerán esa clave y podrán establecer la comunicación de forma segura.

Funcionamiento básico

El funcionamiento de este algoritmo es más sencillo de lo que parece y se usa frecuentemente en protocolos y aplicaciones de encriptado de datos, como SSL (Secure Sockets Layer), SSH (Secure Shell) o VPN (Virtual Private Network).

Pero veamos con un sencillo ejemplo cómo funciona el algoritmo Diffie Hellman paso a paso.

Imaginemos que María y Pedro quieren establecer un color secreto entre ambos y que nadie más lo conozca.

Entonces, María y Pedro deciden un color común.

A continuación, tanto María como Pedro eligen otro color, el cual mantienen en secreto.

Ahora, María y Pedro mezclan su color común, y obtienen un nuevo color, que se envían mutuamente.

Por último, mezclan el color que han recibido de la otra parte con el que han mantenido en secreto. Esto genera un nuevo color que será el mismo para ambos. Esto daría lugar a su secreto, es decir, a la clave Diffie Hellman.

Este color resultante será un secreto que solo ellos conocerán, y otras personas no lo podrán saber aunque hayan tenido conocimiento de los colores que María y Pedro se enviaron mutuamente.

Grupos Diffie-Hellman

Existen diferentes Grupos Diffie Hellman, en función de la fuerza empleada en el intercambio de claves. Cuanto más alto sea el grupo, más seguros serán los intercambios, pero a la vez, se necesitará más tiempo para procesar la clave.

Los grupos Diffie-Hellman más comunes son:

  • Grupo DH 1 de 768 bits
  • Grupo DH 2 de 1024 bits
  • Grupo DH 5 de 1536 bits
  • Grupo DH 14 de 2048-bit
  • Grupo DH 15  de 3072-bit
  • Grupo DH 19  de 256-bit de curva elíptica
  • Grupo DH 20  de 384 bits de curva elíptica

A la hora de realizar el intercambio de claves, ambos equipos deben elegir durante la primera fase del proceso un mismo Grupo DH, de forma que crean un canal seguro y autenticado para establecer la comunicación.

Ejemplo práctico

Antes hemos visto un ejemplo del funcionamiento del algoritmo Diffie Hellman usando colores. En este caso, vamos a ver un ejemplo práctico de este intercambio de claves que se acerca más a su funcionamiento real.

Ejemplo:

Imaginemos que, de nuevo, María y Pedro quieren establecer una comunicación segura a través de una red pública. Esta red está compuesta por tres ordenadores, el de María, el de Pedro y el de Isabel. Sin embargo, María y Pedro no quieren que Isabel sepa de qué están hablando.

Entonces, María y Pedro deciden usar un cifrado asimétrico para establecer un canal de comunicación seguro y privado entre ambos en esa red insegura. Con este objetivo, usarán el algoritmo Diffie Hellman.

Para ello siguen los siguientes pasos:

Paso 1:

  1. María elige un número primero “P”, por ejemplo, el 31.
  2. A continuación, elige un número “K” que debe ser menor que “P”, por ejemplo el 10.
  3. Este número “K” se lo envía a Pedro, sin importar que Isabel lo vea.
  4. Ahora, María elige un número “X” menor que “P” y lo mantiene en secreto. Ahora calculará el número “A” en base a la siguiente fórmula: A = k^x (mod p).
  5. Imaginemos que el resultado de esa fórmula es “3” (*nota, las cifras usadas no son reales, solo es un ejemplo del funcionamiento del algoritmo). María envía a Pedro este número “A”, es decir, el 3.

Paso 2:

  1. Ahora es el turno de Pedro de elegir un número “Y” menor que “P” y mantenerlo en secreto.
  2. A continuación realiza la misma operación que hizo María, para calcular su número “B”. La fórmula sería: B = k^y (mod p)
  3. Imaginemos que le da de resultado 15. Entonces Pedro le envía “B” ´(15) a María.

Paso 3:

  1. Una vez que ambos tienen sus números “A” y “B” llega el momento en que ambos deben calcular la clave que usarán en común.
  2. María: B^x (mod 31)
  3. Pedro: A^y (mod 31)
  4. Imaginemos que el resultado es 9. Pues esa será la clave que ambos usarán para la comunicación

Evidentemente, estamos utilizando números muy pequeños, con los que a Isabel no le resultaría difícil descifrar “X o “Y” para así poder calcular “A” y “B”. Sin embargo, hay que tener en cuenta que el algoritmo Diffie Hellman en la realidad usa números de alrededor de 300 dígitos, por lo que descifrar la fórmula es casi imposible.

Vulnerabilidades de este sistema de intercambio de claves

Cabe destacar que el algoritmo Diffie-Hellman no es totalmente infalible. Su  principal vulnerabilidad es ante los ataques Man In the Middle. En ellos, un atacante podría situarse entre ambos equipos y actuar como un intruso, acordando una clave con cada una de las partes. Es decir, se haría pasar por el equipo A ante el equipo B y viceversa. Entonces, el atacante ejercería de puente o intermediario entre ambos equipos y, conociendo las claves, podría descifrar la información y luego volver a cifrarla para enviársela al otro equipo, sin que ninguno de los dos se diera cuenta de que su comunicación está siendo interceptada.

En todo caso, el hecho de que sea un algoritmo de intercambio de claves que se sigue utilizando 45 años después de su creación da una muestra de su efectividad y de lo que se adelantaron sus creadores a su tiempo.