Está en la página 1de 10

Algoritmos de Cifrado

“Diffie – Hellman”
1. Objetivo
El algoritmo Diffie-Hellman tiene el objetivo de:

- Acordar una clave secreta entre dos máquinas, a través de un canal inseguro
y enviando únicamente dos mensajes.
- Acordar una clave simétrica con la que posteriormente cifrar las
comunicaciones entre dos máquinas.
- Lograr la dificultad de descifrado a través de calcular logaritmos discretos en
un campo finito.

2. Desarrollo
2.1. Historia del Algoritmo.
2.1.1. Creadores del Algoritmo.
- Bailey Whitfield “Whit” Diffie

Whitfield Diffie, nació el 5 de junio de 1944, es un criptógrafo estadounidense y


un pionero en la criptografía asimétrica. En 1965 se graduó como Bachelor of
Science en matemáticas en el Instituto Tecnológico de Massachusetts.

En 1976 publicó junto a Martin Hellman, ‘New Directions in Cryptography’, que


presentaba un nuevo método de distribución de claves criptográficas para
solucionar uno de los problemas fundamentales de la criptografía: la distribución
de la clave. Dicha publicación trataba de un nuevo protocolo criptográfico, que
posteriormente se ha dado a conocer como protocolo de Diffie-Hellman, y ha
estimulado el desarrollo público de un nuevo tipo de algoritmos de criptografía
asimétrica.
Diffie fue gerente de investigación en sistemas de seguridad para la Northern
Telecom, donde diseñó la arquitectura de gestión de claves para el sistema de
seguridad PDSO para redes X.25.

- Martin Hellman
Martin Edward Hellman, nació el 2 de octubre de 1945, es un criptólogo
estadounidense. Hellman es famoso por ser el inventor junto a Whitfield Diffie,
de un sistema de criptografía de clave pública. Ambos publicaron en 1976, ‘New
Directions in Cryptography’, que introducía un cambio radical, un nuevo método
de distribución de claves que solucionó uno de los mayores problemas de la
criptografía hasta entonces, la distribución de claves.

Estudió en el Instituto de Ciencias del Bronx y obtuvo su título en Ingeniería


Eléctrica por la Universidad de Nueva York en 1966. Realizó una maestría en la
Universidad de Stanford. Uno de sus primeros empleos fue en IBM. Ha sido
profesor en MIT (Instituto Tecnológico de Massachusetts) y en Stanford donde
ha sido nombrado profesor emérito en 1996.

En su última visita a España en el año 2007 aseguró que la criptografía cuántica


está aún en estado embrionario y hasta dentro de 30 años no se verán sus
primeras aplicaciones prácticas, que romperán con facilidad los actuales
sistemas de cifrado

La Criptografía cuántica se encargará de que su descifrado sea un juego de


niños, susceptible de caer en manos de terroristas o criminales, para Hellman la
mejor forma de que la información este seguro es que no exista, que no se
guarden los datos.

2.1.2. Nacimiento del algoritmo asimétrico Diffie – Hellman.


Tuvo su origen en los años 70. Prácticamente, los algoritmos AES y DES creados
anteriormente a los años 70 son simétricos; tanto emisor como receptor deben
manejar el mismo código y estar informados mutuamente del código que van a usar
a la hora de intercambiar información. Sin embargo, Whitfield Diffie y Martin Hellman
sentaron las bases de la criptografía asimétrica (clave pública y clave privada) en el
artículo "New Directions in Cryptography" publicado en 1976. La criptografía
asimétrica hoy es fundamental para transacciones realizadas a través de Internet,
por ejemplo, en páginas que usan el protocolo HTTPS o para cifrar nuestros
mensajes usando PGP (que combina tanto criptografía asimétrica como criptografía
asimétrica).

2.1.3. Ataques
- Ataques Pasivos

Existe cuando una tercera persona obtiene los valores primos de generador y
referencia; también podría calcular la llave si tuviera solo uno de los valores
privados simplemente invirtiendo la función a=log discp (A) y b=log discp (B).

- Ataques Activos
El protocolo es sensible a ataques activos del tipo Man-in-the-middle. Si la
comunicación es interceptada por un tercero, éste se puede hacer pasar por el
emisor cara al destinatario y viceversa, ya que no se dispone de ningún
mecanismo para validar la identidad de los participantes en la comunicación. Así,
el "hombre en el medio" podría acordar una clave con cada participante y
retransmitir los datos entre ellos, escuchando la conversación en ambos
sentidos. Una vez establecida la comunicación simétrica, el atacante tiene que
seguir en medio interceptando y modificando el tráfico para que no se den
cuenta. Observar que para que el ataque sea operativo, el atacante tiene que
conocer el método de cifrado simétrico que será utilizado.

2.2. Funcional
El algoritmo Diffie-Hellman no es un algoritmo de cifrado como los otros, este es un
algoritmo de intercambio de claves.
1. Los dos usuarios A y B seleccionan públicamente un grupo multiplicativo finito,
G, de orden n y un elemento de G.
2. A genera un número aleatorio Xa, calcula Ya en G y transmite este elemento a B.
3. B genera un número aleatorio Xb, calcula Yb en G y transmite este elemento a A.
4. A recibe Yb y calcula (Yb)^Xa en G.
5. B recibe Ya y calcula (Ya)^Xb en G.
6. La llave es (Yb)^Xa = (Ya)^Xb.

Examinemos la siguiente situación:


Alice y Bob quieren comunicarse de una forma segura a través de un canal público,
imaginemos una pequeña red LAN de 3 ordenadores. En esta pequeña red, están
los ordenadores de Alice, Bob y la cotilla de Charlotte, que quiere saber a toda costa
de que quieren hablar Alice y Bob.
Sería algo así:

Ahora, vemos que cualquier comunicación entre Alice y Bob puede ser leída por
Charlotte, así que sabemos que tendrán que cifrar la conversación.

Imaginemos que Alice y Bob van a usar un cifrado simétrico para generar su canal
cifrado, este va a ser RC4 128 bits. Alice y Bob tendrían que acordar una clave por
esa red insegura (Esta sería la clave 128 bits del RC4), ¿cómo pueden hacerlo sin
que Charlotte averigüe esa clave? Ahí es donde entra el algoritmo de intercambio
de claves de Diffie-Hellman.

Vamos por pasos:


1. Alice elige un número primo “p” que suele ser muy grande, pero por cuestiones
prácticas para el ejemplo, vamos a elegir uno pequeño, utilizaremos el 31 y un
número aleatorio “k” menor que “p”, por ejemplo, el 12. Tras elegirlo se lo manda a
Bob (da igual que Charlotte lo vea).

2. Alice elige un número cualquiera menor que “p” y lo guarda en secreto. A ese
número lo vamos a llamar x, luego a partir de x saca A de esta forma:
A = k^x (mod p)

Imaginemos que x = 6, por lo tanto:


A = 12^6 (mod 31) = 2
Tras calcularlo, Alice manda a Bob el número A, en este caso 2.

3. Ahora le toca a Bob elegir un número secreto (y menor que “p”) y realizar la
operación de antes para conseguir B.
Supongamos que y = 26
B = k^y (mod p)
B = 12^26 (mod 31) = 10

Tras calcularlo, Bob enví a B a Alice.


4. Este es el momento en el que ambos calculan la clave que van a usar para el
RC4 128 bits.

Por una parte, Alice:


Clave = B^x (mod 31) = 10^6 (mod 31) = 2
Por otra parte, Bob:
Clave = A^y (mod 31) = 2^26 (mod 31) = 2

Y así ambos han llegado a la misma clave. Se puede observar que como Charlotte
no conoce ni “x” ni “y”, no puede obtener la clave.

Si Charlotte intentará averiguar x o y, tendría que resolver la siguiente ecuación:


10 = 12^x (mod 31)

Quizás con estos números no tardará mucho, pero normalmente se cogen números
de 300 dígitos, por lo que se tardaría un tiempo enorme en encontrar solución a esta
ecuación.

Una pequeña explicación matemática es que:

B^x (mod p) = g^y^x (mod p) = g^(yx) (mod p) = g^(xy) (mod p) = g^x^y (mod p) =
A^y (mod p)
(Siendo g el segundo numero elegido y p el número primo del principio)

Y es por eso que llegan a la misma clave.


2.3. Ventajas y Desventajas del algoritmo

2.3.1. Ventajas
- Genera una clave privada a ambos extremos de un canal de comunicación
inseguro.
- Su seguridad radica en la dificultad de calcular el logaritmo discreto de
números grandes.
- No necesita encriptar ni desencriptar ninguna información que debe ser
transmitida.

2.3.2. Desventajas
- No proporciona autenticación, no puede validar la identidad de los usuarios.
- Los usuarios tienen que seleccionar llave en secreto antes de empezar a
comunicarse.
- La especificidad de la función hecha por este protocolo es lo que lo hace
impráctico para su uso en dispositivos portátiles, ya que además de la
implementación del protocolo se requiere la implementación de los
algoritmos simétricos que se usarán durante la comunicación.

3. Conclusiones

- A pesar de la antigüedad del algoritmo este algoritmo es muy útil


actualmente, pues si bien existen vulnerabilidades en el algoritmo como ser
el MitM, actualmente existen métodos para contrarrestar dicha vulnerabilidad
incluso si existiese un ataque pasivo por parte de un atacante le va a ser
difícil o incluso imposible descifrar el código de números primos generador y
base si se toman las recomendaciones mencionadas en el RFC 3526.
Además, como recomendaciones se puede nombrar que para evitar o
disminuir el riesgo de un ataque de MitM se debe realizar:
 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).
 Usar un tercero, un personal de confianza con el que o bien el receptor
o el receptor mantienen un canal seguro. Este tercero puede detectar
el man-in-the-middle.

- Puede que la forma de aplicación del algoritmo no sea tan complicada de


entender con respecto a sus fórmulas, pero esto no representa como tal una
vulnerabilidad dado se escogerán números de 300 digitos por lo que una
persona tardaría un tiempo enorme en encontrar la solución a la ecuación.

Aunque hay que tener en cuenta que este algoritmo no es autenticado,


dando, así como resultado que no podemos tener la certeza de quien está
comunicándose contigo.

4. Ejemplos
1. El protocolo "Off-The-Record Messaging", comúnmente llamado OTR, es un
protocolo criptográfico que proporciona un cifrado fuerte para conversaciones de
mensajería instantánea. OTR utiliza una combinación del algoritmo AES de claves
simétricas, el protocolo de intercambio de claves Diffie-Hellman y la función hash
SHA-1. Además de la autenticación y el cifrado, OTR aporta una confidencialidad
directa perfecta y cifrado maleable.

La principal motivación debajo de este protocolo fue ocultar la identidad de los


participantes en la conversación a la vez que se mantenía la confidencialidad de la
propia conversación, como si fuera una conversación privada de la vida real. Esto
contrasta con otras fuentes criptográficas en las cuales se produce una salida que,
más tarde, puede ser usada como un registro verificable de la comunicación y las
identidades de los participantes. La mayoría de las veces, la gente que usa este tipo
de software criptográfico desconocen esto y habría sido mejor que hubieran usado
OTR

2. Ejemplo simulado del algoritmo de Diffie-Hellman para generar una clave


simétrica para el cifrado de mensajes obtenida y conocida únicamente por
emisor y receptor.
Ana y Borja seleccionan y se intercambian dos números, a y b que se utilizarán para
la generación de la clave simétrica secreta compartida. Ana selecciona después su
número secreto xa. (su clave privada). Borja realiza el mismo proceso eligiendo su
clave privada xb. A partir de los dos números anteriores (a y b) y de su clave privada
xa, Ana calcula ya (su clave pública) y se lo envía a Borja. Borja calcula igualmente
yb (su clave pública) y se lo envía a Ana. A partir de estos valores Ana y Borja
pueden calcular la clave simétrica secreta que utilizaran para cifrar/descifrar la
información que se intercambien.
Veámoslo con un ejemplo:
Ana elige 7 como su número inicial (a=7) y 3 como clave privada (xa=3).
Borja elige 5 como su número inicial (b=5) y 2 como clave privada (xb=2).
Ana calcula ya (su clave pública) mediante la fórmula ya= (b ** xa) % a y se lo envía
a Borja. (donde ** representa “elevado a”, y % “resto de la división”)
ya= (5 ** 3) % 7 = 6 (resto de 5 elevado a 3 dividido entre 7)
Borja realiza el mismo proceso yb=(b**xb) % a, enviándoselo a Ana.
yb= (5 ** 2) % 7 = 4.
Usando el número recibido de Borja (yb=4), Ana calcula ka,
ka = (yb ^ xa) % a
ka = (4 ** 3) % 7 = 1
De igual modo, Borja calcula kb a partir del número enviado por Ana (ya=6):
kb = (ya ^ xb) % a
kb = (6 ** 2) % 7 = 1
Ana y Borja han completado el proceso de encriptación Diffie-Hellman. Ana ha
aplicado su número secreto xa al valor yb de Borja y ha calculado ka. Borja ha
aplicado su número secreto xb al valor ya de Ana y ha calculado kb. Como se
comprueba ka = kb, un número conocido ahora por Ana y Borja únicamente Alicia
y Borja pueden ahora usar el valor 1 para encriptar mensajes.
Si alguien “escuchara” la transmisión no le sería fácil descubrir el valor de ka.
Con los valores a, b, ya e yb “escuchados” por la red, puede escribir la ecuación.
ya = (b ** xa) % a
y probar todos los posibles valores para encontrar xa (la clave privada de Ana),
hasta encontrar uno que generara el valor conocido de ya.
Siguiendo con nuestro ejemplo donde (a=7 b=5 ya=6 yb=4)
6= (5 ** 1) % 7 --> FALSO
6= (5 ** 2) % 7 --> FALSO
6= (5 ** 3) % 7 --> VERDADERO
xa=3
Usando este valor de xa en la ecuación.
ka = (yb ** xa) % a
ka = (4 ** 3) % 7 = 1
Eva podría calcular el valor de ka=1. Este método de ataque de “fuerza bruta”, solo
es posible si Alicia y Borja han usado números pequeños (como en nuestro
ejemplo). Usando preferentemente números primos grandes, Ana y Borja pueden
hacer el ataque de “fuerza bruta” de Eva impracticable.

5. Bibliografía
- https://sergvergara.files.wordpress.com/2011/03/diffie-hellman.pdf
- http://wiki.elhacker.net/seguridad/criptografía/algoritmo-diffie-hellman
- https://www.youtube.com/watch?v=zW9vFS4Edcg
- https://www.redeszone.net/2010/11/16/criptografia-algoritmos-de-cifrado-de-
clave-asimetrica/
- http://cryptomex.org/SlidesCripto/CriptoAsim.pdf

También podría gustarte