5b1l6f

El protocolo criptográfico Diffie-Hellman, debido a Whitfield Diffie y Martin Hellman (autores también del problema de Diffie-Hellman o DHP), es un protocolo de establecimiento de claves entre partes que no han tenido o previo, utilizando un canal inseguro, y de manera anónima (no autentificada).

Se emplea generalmente como medio para acordar claves simétricas que serán empleadas para el cifrado de una sesión (establecer clave de sesión). Siendo no autenticado, sin embargo, provee las bases para varios protocolos autenticados.

Su seguridad radica en la extrema dificultad (conjeturada, no demostrada) de calcular logaritmos discretos en un cuerpo finito.

Versión básica 5ar1u


El sistema se basa en la idea de que dos interlocutores pueden generar conjuntamente una clave compartida sin que un intruso que esté escuchando las comunicaciones pueda llegar a obtenerla.

Para ello cada interlocutor elige un número público y un número secreto. Usando una fórmula matemática, que incluye la exponenciación, cada interlocutor hace una serie de operaciones con los dos números públicos y el secreto. A continuación los interlocutores se intercambian los resultados de forma pública. En teoría revertir esta función es tan difícil como calcular un logaritmo discreto (Un millón de millones de cuadrillones más costosa que la exponenciación usada para transformar los números). Por eso se dice que este número es el resultado de aplicar una función unidireccional al número secreto.

A continuación ambos interlocutores utilizan por separado una fórmula matemática que combina los dos números transformados con su número secreto y al final los dos llegan al mismo número resultado que será la clave compartida.

Descripción detallada 212c7


 

Para dos partes Alice y Bob que intentan establecer una clave secreta y un adversario Mallory, la versión básica es como sigue:

 

Ataques 4q3o1k


Ataques pasivos

Un adversario Mallory que poseyera p, g, A y B, podría calcular el secreto compartido si tuviera también uno de los valores privados (a o b). Obtener a o b a partir de A o B invirtiendo la función  (  ) es el problema del logaritmo discreto en  

Para evitar este tipo de ataque se suele usar una o más de las siguientes técnicas:

-Control de tiempos
-Autenticación previa de las partes. Por ejemplo usar en protocolo de capa subyacente autenticación. Podríamos primero establecer una conexión TLS y sobre esa capa aplicar el algoritmo de Diffie-Hellman
-Autenticación del contenido. Por ejemplo podríamos usar MAC sobre el contenido de los mensajes
Cifrando las claves públicas con un algoritmo de clave pública (asimétrico), evitando el problema de Man-in-the-middle, y a su vez comprobando que la clave pública sea distinta de 0 y 1.

Ejemplo 5q2kb

 

Ejemplo con implementación de cifrado

La necesidad para este ejemplo es: Bob necesita enviarle un texto cifrado a Alice pero sin compartir la clave de cifrado. ¿Como lo hace?

1-Alice elige un número secreto a=6, el número primo p=23 y la base g=5. Luego envía a Bob la llave pública de Alice (ga mod p), p y g:
-56 mod 23 = 8.
-23
-5

2-Bob elige un número secreto b=15, luego Bob calcula la llave de cifrado común (ga mod p)b mod p
815 mod 23 = 2.

3-Bob cifra, con un cifrador simétrico como AES, el texto claro usando la llave de cifrado generada.

4-TextoCifrado = CifradorSimetrico ( TextoClaro, 2 )

5-Bob envía a Alice el texto cifrado y la llave pública de Bob (gb mod p)
-515 mod 23 = 19.
-TextoCifrado

6-Alice calcula (gb mod p)a mod p
-196 mod 23 = 2.

7-Alice usa esa clave de cifrado generada para descifrar los datos enviados por Bob.

8-TextoClaro = DescifradorSimetrico ( TextoCifrado, 2 )

Valores mucho más grandes de a,b y p se necesitarían para hacer este ejemplo seguro. Dado que es muy sencillo probar todos los valores posibles de gab mod 23 (habrá, como máximo, 22 valores, inclusive si a y b son números grandes).

Obviamente la necesidad de Alice enviarle a Bob la información cifrada también la cubre la implementación.

Generalizaciones 1h3ap


Aumentando el número de partes

La idea del algoritmo podemos generalizarla a la negociación de claves entre más de dos entidades. Veamos un ejemplo para tres entidades y a partir de ahí podemos aumentar el número de partes de forma fácil:


  1. Las partes (Alice, Bob y Carol) se ponen de acuerdo en los parámetros del algoritmo .
  2. Las partes generan sus propias claves privadas llamadas , y  y lo envía a Bob.
  3. Bob calcula  y la usa como su clave secreta.
  4. Bob calcula  y lo envía a Alice.
  5. Alice calcula  y lo envía a Alice.
  6. Alice calcula  y lo usa como su clave secreta.
 
Cambiando de grupo

Podemos generalizar el protocolo y sus derivados si en lugar de basarnos en el grupo   cuya operación multiplicación es una operación de una vía (no tiene inversa o difícilmente invertible)
  • El A genera un número aleatorio a, y transmite este elemento a B, manteniendo secreto a
  • El B genera un número aleatorio b, y transmite este elemento a A, manteniendo secreto b
  • El A recibe 
  • El B recibe 
  • A y B poseen un elemento común secreto del grupo , el grupo de puntos definidos por una curva elíptica sobre un cuerpo finito.

  • Usos prácticos del protocolo 5a581d


    -La red para anonimato Tor usa el protocolo Diffie Hellman, sobre una conexión TLS de una capa inferior previamente establecida, para procurarse claves de sesión entre el cliente y los nodos de enrutamiento de la red. Esas claves son usadas para cifrar las capas de cebolla de los paquetes que transitan por la red.

    -El protocolo Off-the-record messaging para comunicación de mensajería instantánea se apoya en el protocolo Diffie-Hellman para ir cambiando de clave de cifrado según se van intercambiando los mensajes.
    Compartir

    Mi nombre es Alexander fundador y CEO, y me gusta llamarme un Geek. Amo la informática, tecnología y todo lo que está relacionado con ella. Inicié este sitio con la intención de compartir conocimientos como cursos en línea, tutoriales y videotutoriales. Estoy muy entusiasmado con la información que he descubierto y compartido hasta el momento. La verdad es que lo he hecho con el mayor de los gustos. Así es, soy un Geek con una visión para compartir conocimiento. Leer mas...