Diffie Hellman

Diffie-Hellman es un algoritmo que permite ponerse de acuerdo para definir una clave en común entre 2 involucrados en un medio inseguro. Por ejemplo, si estás en una reunión con varias personas pero solo con una de ellas quisieras compartir una clave incluso mientras los demás los están viendo, con este algoritmo lo puedes hacer.

Este algoritmo se utiliza todo el tiempo cuando navegas por la web ya que se utiliza en el protocolo TLS (HTTPS).

Para entender la importancia de este algoritmo, puedes probarlo a continuación con alguien más o duplicando esta pestaña...

Generación de una clave en común

Paso 1: Ingresa un número entre 1 y 99 (¡Cuidado, no lo compartas!) y haz clic en el botón.
Paso 2: Ingresa la clave pública de la otra persona y haz clic en el botón.
Paso 3: A continuación está tu clave privada (Si las claves públicas se compartieron bien, esta clave privada será la misma para tu compañero).

Enviar y recibir mensajes

Paso 4: Escribe algo a continuación para enviar un mensaje cifrado (Esto utiliza la clave privada generada en el punto 3).
Paso 5: Recibe y lee un mensaje cifrado (Esto utiliza la clave privada generada en el punto 3).

¿Quieres saber cómo funciona? Sigue leyendo...

Para que este algoritmo funcione se deben definir previamente 2 constantes: G y P. En este caso fueron definidas arbitrariamente y son: 9 y 23, respectivamente. Estas constantes también pueden ser acordadas entre los involucrados, pues son públicas.

Luego se requiere que cada involucrado genere un número aleatorio (en esta demo se restringió a 99 como valor máximo aunque esto es solo a modo de ejemplificación). Le llamemos a este número A.

Para generar la clave pública X que se compartirá con el otro involucrado se debe calcular la siguiente fórmula:

X = G ^ A mod P

Una vez que cada involucrado conoce la clave pública del otro, se procede a generar la clave privada K (que será la misma para los 2):

K = Xotro ^ A mod P

Finalmente que ya tenemos definida la clave privada compartida K, se la puede utilizar para cifrar mensajes. En este caso, se utiliza el cifrado César.

Diagrama de secuencia

Resumen: Germán y Fede se envían mensajes en un canal abierto.

Resultado: Se obtiene una clave K secreta conocida solo por Germán y Fede.

Comentario sobre la seguridad

La versión básica de Diffie-Hellman solo preserva el secreto de la clave ante espías pasivos, es decir, aquellos que solo ven pero no modifican. En caso de adversarios activos, es decir, aquellos capaces de interceptar y modificar los mensajes no hay garantía del secreto.

Referencias

¿Quieres contactarnos?

Si encuentras un error o tienes alguna sugerencia, te pedimos que nos lo hagas saber.