El algoritmo Diffie

Anuncio
Diffie-Hellman
1
Diffie-Hellman
El protocolo criptográfico Diffie-Hellman,[1] debido a Whitfield Diffie y Martin Hellman, (Diffie–Hellman
Problem->DHP) es un protocolo de establecimiento de claves entre partes que no han tenido contacto 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
Descripción
Diffie-Hellman.
Para dos partes Alice y Bob que intentan establecer una clave secreta y un adversario Mallory, la versión básica es
como sigue:
• Se establecen un primo
y un generador
([2]). Estos son públicos, conocidos no sólo por las partes
Alice y Bob sino también por el adversario Mallory .
• Alice escoge
al azar, calcula
• Bob escoge
al azar, calcula
Nótese que tanto A como B pueden calcular el valor
las propiedades del grupo
Para
, y envía
, y envía
a Bob
a Alice
. En efecto, lo podemos demostrar usando
:
Alice:
Para
Como ambas partes pueden calcular
Bob:
entonces la podemos usar como clave compartida.
Diffie-Hellman
2
Ataques
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 patir 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.[3]
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 interceptado 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. Basarse en la ocultación de algoritmo simétrico de cifrado
no cumple con los principios de Kerckhoffs (la efectividad del sistema no debe depender de que su diseño
permanezca en secreto).
Ataque man-in-the-middle en Diffie-Hellman.
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
Diffie-Hellman
3
Ejemplo
Alice
Sec
Bob
Calc
Calc
Sec
p, g
p, g
a
b
…
ga mod
p
(gb mod p)a mod
p
g mod
p
=
• 56 mod 23 = 8.
3. Bob elige un número secreto b=15, luego envía a Alice (gb
mod p)
• 515 mod 23 = 19.
4. Alice calcula (gb mod p)a mod p
b
…
1. Alice y Bob acuerdan usar el número primo p=23 y la base
g=5.
2. Alice elige un número secreto a=6, luego envía a Bob (ga
mod p)
(ga mod p)b mod
p
• 196 mod 23 = 2.
5. Bob calcula (ga mod p)b mod p
•
815 mod 23 = 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).
Generalizaciones
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 respectivamente.
3. Alice calcula
4.
5.
6.
7.
8.
9.
Bob calcula
Carol calcula
Bob calcula
Carol calcula
Alice calcula
Carol calcula
10. Alice calcula
11. Bob calcula
and
.
y lo envía a Bob.
y lo envía a Carol.
y la usa como su clave secreta.
y lo envía a Carol.
y lo envía a Alice.
y lo usa como su clave secreta.
y lo envía a Alice.
y lo envía a Bob.
y lo usa como su clave secreta.
Diffie-Hellman
4
Cambiando de grupo
Podemos generalizar el protocolo y sus derivados si en lugar de basarnos en el grupo
nos basamos en otros
grupos que cumplan las condiciones necesarias para poder aplicar el algoritmo (GDHP<-Generalized Diffie-Hellman
Problem)
Formalización
1. Los usuarios A y B seleccionan públicamente un grupo multiplicativo finito G de orden n y generador
cuya operación multiplicación es una operación de una vía (no tiene inversa o difícilmente invertible)
2. El usuario A genera un número aleatorio a,
, calcula
y transmite este elemento a B,
manteniendo secreto a
3. El usuario B genera un número aleatorio b,
, calcula
y transmite este elemento a A,
manteniendo secreto b
4. El usuario A recibe
y calcula
5. El usuario B recibe
y calcula
6. A y B poseen un elemento común secreto del grupo
Ejemplos
Ejemplos de grupos que podríamos usar: El grupo multiplicativo análogo de los campos de Galois
, el grupo de
puntos definidos por una curva elíptica sobre un cuerpo finito.
Usos prácticos del protocolo
• 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[4] el en el protocolo
Diffie-Hellman para ir cambiando de clave de cifrado según se van intercambiando los mensajes.
Referencias
[1] Diffie, W. y M.E.Hellman. "New directions in cryptography", IEEE Transactions on Information Theory 22 (1976), pp. 644-654.
[2] Aquí UNIQ-math-0-f8bd4a9a31d43c0d-QINU es el conjunto de los enteros menores que p que son primos relativos de p, que es un grupo
bajo la multiplicación módulo p.
[3] Gordon, D. M. Designing and Detecting Trapdoors for Discrete Log. Cryptosystems. Advances in Cryptology-CRYPTO92, Berlin:Springer
Verlag pp 66-75
[4] N. Borisov,"Off-the-Record Communication or, Why Not To Use PGP"
Bibliografía adicional
• Menezes, A.J., P.C. van Oorschot y S.A. Vanstone. Handbook of Applied Cryptography. Boca Raton, Fl.: CRC
Press, 1997.
Fuentes y contribuyentes del artículo
Fuentes y contribuyentes del artículo
Diffie-Hellman Fuente: http://es.wikipedia.org/w/index.php?oldid=66807390 Contribuyentes: Akhram, Alexav8, Ascánder, Aswarp, Açipni-Lovrij, Bambadee, Cinabrium, Damifb, DaveFX,
Erior1, Fercufer, Humberto, Juanpebe, Kronoman, Osado, PabloCastellano, Pabloab, Paintman, Raulshc, Rodrigoq, Waeswaes, 28 ediciones anónimas
Fuentes de imagen, Licencias y contribuyentes
Archivo:Diffie-Hellman-Schlüsselaustausch.png Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Diffie-Hellman-Schlüsselaustausch.png Licencia: Public Domain Contribuyentes:
de:Benutzer:Stern
Archivo:Man-in-the-middle_attack_of_Diffie-Hellman_key_agreement.svg Fuente:
http://es.wikipedia.org/w/index.php?title=Archivo:Man-in-the-middle_attack_of_Diffie-Hellman_key_agreement.svg Licencia: Creative Commons Attribution-ShareAlike 3.0 Unported
Contribuyentes: Stefan Birkner (Benutzer:Squizzzsquizzz)
Licencia
Creative Commons Attribution-Share Alike 3.0 Unported
//creativecommons.org/licenses/by-sa/3.0/
5
Descargar