Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Escuela de Postgrados
Criptografía Aplicada
Tarea Individual
Investigación: Diffie-Hellman
Catedrático
Alumno
Jonathan Orlando Sura Cárcamo SC100156
Una vez que A y B han acordado p y q en privado, eligen las claves personales positivas de números
enteros a y b, ambos menos que el módulo de números primos p. Ninguno de los usuarios divulga su clave
personal a nadie; idealmente, memorizan estos números y no los escriben ni los almacenan en ningún lado.
Luego, A y B calculan las claves públicas a* y b* según sus claves personales de acuerdo con las fórmulas:
𝐴∗ = 𝑞𝐴 𝑚𝑜𝑑 𝑝 y 𝐵 ∗ = 𝑞𝐵 𝑚𝑜𝑑 𝑝
Los dos usuarios pueden compartir sus claves públicas a* y b* a través de un medio de comunicación que
se considera inseguro, como internet o una red corporativa de área amplia (WAN). A partir de estas claves
públicas, cualquier usuario puede generar un número x sobre la base de sus propias claves personales. A
calcula x usando la fórmula:
El valor de x resulta ser el mismo según cualquiera de las dos fórmulas anteriores. Sin embargo, las claves
personales a y b, que son críticas en el cálculo de x, no se han transmitido a través de un medio público.
Debido a que es un número grande y aparentemente aleatorio, un hacker potencial casi no tiene
posibilidades de adivinar correctamente x, incluso con la ayuda de una computadora poderosa para realizar
millones de pruebas. Por lo tanto, los dos usuarios pueden, en teoría, comunicarse de forma privada a
través de un medio público con un método de cifrado de su elección utilizando la clave de descifrado x.
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.
Ejemplo
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.
Paso 1:
Paso 2:
Ahora es el turno de Pedro de elegir un número “Y” menor que “P” y mantenerlo en secreto.
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); Imaginemos que le da de resultado 15. Entonces Pedro le envía “B” ´(15) a María.
Paso 3:
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.
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.
• En 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 𝑎 = 𝐿𝑜𝑔 𝑑𝑖𝑠𝑐𝑝 (𝐴)
y 𝑏 = 𝐿𝑜𝑔 𝑑𝑖𝑠𝑐𝑝 (𝐵) es el problema del logaritmo discreto en 𝑍𝑃∗ , un problema que se cree intratable
computacionalmente siempre que p sea un número primo grande de 200 o más dígitos y que no cumplan
ciertas características debilitantes.
• En ataques activos:
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.
• Usar un tercero (Carol) con el que o bien Alice o bien Bob mantienen un canal seguro. Este
tercero puede detectar el man-in-the-middle
Si Alice o Bob están siendo escuchados/modificados, simplemente desafiando a ambos a una prueba
implicando en dicha prueba la clave pública del otro. Si Mallory tergiversa la comunicación Alice-Bob, y
también la Alice-Carol, no puede tergiversar el canal seguro Bob-Carol y será detectado. Y si tergiversa la
Alice-Bob y la Bob-Carol, no puede tergiversar la Alice-Carol (por definición debe haber algún canal seguro
entre dos de los tres, aunque los otros dos canales sean tergiversados por Mallory). Esto significa que el
método Diffie-Hellman puede crear redes de múltiples nodos 100% seguras, a partir de tan solo dos nodos
previamente seguros. Este método también sirve para testear canales que se sospecha que puedan ser
inseguros.