fbpx
Wikipedia

Diffie-Hellman

El protocolo criptográfico Diffie-Hellman,[1]​ 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 contacto previo, utilizando un canal inseguro y de manera anónima (no autenticada).

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.

Whitfield Diffie y Martin Hellman recibieron el prestigioso premio A.M. Turing de 2015 de la Association for Computer Machinery en 2016 por este trabajo "que revolucionó la seguridad informática".[2]

Versión básica

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 se eligen dos números públicos y, cada interlocutor, 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 su número 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 sextillón de veces 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

 
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   ([3]​). Estos son públicos, conocidos no solo por las partes Alice y Bob sino también por el adversario Mallory .
  • Alice escoge   al azar, calcula  , y envía   a Bob
  • Bob escoge   al azar, calcula  , y envía   a Alice

Nótese que tanto A como B pueden calcular el valor  . En efecto, lo podemos demostrar usando las propiedades del grupo  :

Para Alice:  
Para Bob:  

Como ambas partes pueden calcular  , entonces la podemos usar como clave compartida.

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 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.[4]

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. 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.
  • 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.

Ejemplo

Alice
Sec Calc
p, g
a
ga mod p
(gb mod p)a mod p
 
 
=
Bob
Calc Sec
p, g
b
gb mod p
(ga mod p)b mod p
  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)
    • 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
    • 196 mod 23 = 2.
  5. Bob calcula (ga mod p)b mod p
    • 815 mod 23 = 2.

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. ¿Cómo 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 de enviarle a Bob la información cifrada también la cubre la implementación.

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   y  .
  2. Las partes generan sus propias claves privadas llamadas  ,  , y   respectivamente.
  3. Alice calcula   y lo envía a Bob.
  4. Bob calcula   y lo envía a Carol.
  5. Carol calcula   y la usa como su clave secreta.
  6. Bob calcula   y lo envía a Carol.
  7. Carol calcula   y lo envía a Alice.
  8. Alice calcula   y lo usa como su clave secreta.
  9. Carol calcula   y lo envía a Alice.
  10. Alice calcula   y lo envía a Bob.
  11. Bob 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   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[5]​ 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. CRYPTOGRAPHY PIONEERS RECEIVE ACM A.M. TURING AWARD https://www.acm.org/awards/2015-turing
  3. Aquí   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.
  4. Gordon, D. M. Designing and Detecting Trapdoors for Discrete Log. Cryptosystems. Advances in Cryptology-CRYPTO92, Berlin:Springer Verlag pp 66-75
  5. 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.
  •   Datos: Q623447
  •   Multimedia: Diffie-Hellman key exchange

diffie, hellman, protocolo, criptográfico, debido, whitfield, diffie, martin, hellman, autores, también, problema, protocolo, establecimiento, claves, entre, partes, tenido, contacto, previo, utilizando, canal, inseguro, manera, anónima, autenticada, emplea, g. El protocolo criptografico Diffie Hellman 1 debido a Whitfield Diffie y Martin Hellman autores tambien del problema de Diffie Hellman o DHP es un protocolo de establecimiento de claves entre partes que no han tenido contacto previo utilizando un canal inseguro y de manera anonima no autenticada Se emplea generalmente como medio para acordar claves simetricas que seran empleadas para el cifrado de una sesion establecer clave de sesion 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 Whitfield Diffie y Martin Hellman recibieron el prestigioso premio A M Turing de 2015 de la Association for Computer Machinery en 2016 por este trabajo que revoluciono la seguridad informatica 2 Indice 1 Version basica 1 1 Descripcion detallada 1 2 Ataques 1 2 1 Ataques pasivos 1 2 2 Ataques activos 1 3 Ejemplo 1 4 Ejemplo con implementacion de cifrado 2 Generalizaciones 2 1 Aumentando el numero de partes 2 2 Cambiando de grupo 2 2 1 Formalizacion 2 2 2 Ejemplos 3 Usos practicos del protocolo 4 Referencias 5 Bibliografia adicionalVersion basica EditarEl sistema se basa en la idea de que dos interlocutores pueden generar conjuntamente una clave compartida sin que un intruso que este escuchando las comunicaciones pueda llegar a obtenerla Para ello se eligen dos numeros publicos y cada interlocutor un numero secreto Usando una formula matematica que incluye la exponenciacion cada interlocutor hace una serie de operaciones con los dos numeros publicos y su numero secreto A continuacion los interlocutores se intercambian los resultados de forma publica En teoria revertir esta funcion es tan dificil como calcular un logaritmo discreto un sextillon de veces mas costosa que la exponenciacion usada para transformar los numeros Por eso se dice que este numero es el resultado de aplicar una funcion unidireccional al numero secreto A continuacion ambos interlocutores utilizan por separado una formula matematica que combina los dos numeros transformados con su numero secreto y al final los dos llegan al mismo numero resultado que sera la clave compartida Descripcion detallada Editar Diffie Hellman Para dos partes Alice y Bob que intentan establecer una clave secreta y un adversario Mallory la version basica es como sigue Se establecen un primo p displaystyle p y un generador g Z p displaystyle g in mathbf Z p 3 Estos son publicos conocidos no solo por las partes Alice y Bob sino tambien por el adversario Mallory Alice escoge a Z p 1 displaystyle a in mathbf Z p 1 al azar calcula A g a mod p displaystyle A g a bmod p y envia A displaystyle A a Bob Bob escoge b Z p 1 displaystyle b in mathbf Z p 1 al azar calcula B g b mod p displaystyle B g b bmod p y envia B displaystyle B a AliceNotese que tanto A como B pueden calcular el valor K g a b mod p displaystyle K g a cdot b bmod p En efecto lo podemos demostrar usando las propiedades del grupo Z p displaystyle mathbf Z p Para Alice B a mod p g b mod p a mod p g b mod p g b mod p g b mod p a mod p g b a mod p g a b mod p K displaystyle B a bmod p g b bmod p a bmod p overbrace g b bmod p g b bmod p cdots g b bmod p a bmod p g b cdot a bmod p g a cdot b bmod p K Para Bob A b mod p g a mod p b mod p g a mod p g a mod p g a mod p b mod p g a b mod p K displaystyle A b bmod p g a bmod p b bmod p overbrace g a bmod p g a bmod p cdots g a bmod p b bmod p g a cdot b bmod p K Como ambas partes pueden calcular K displaystyle K entonces la podemos usar como clave compartida Ataques Editar Ataques pasivos Editar Un adversario Mallory que poseyera p g A y B podria calcular el secreto compartido si tuviera tambien uno de los valores privados a o b Obtener a o b a partir de A o B invirtiendo la funcion a l o g d i s c p A displaystyle a operatorname log disc p A y b l o g d i s c p B displaystyle b operatorname log disc p B es el problema del logaritmo discreto en Z p displaystyle mathbf Z p un problema que se cree intratable computacionalmente siempre que p sea un numero primo grande de 200 o mas digitos y que no cumplan ciertas caracteristicas debilitantes 4 Ataques activos Editar El protocolo es sensible a ataques activos del tipo Man in the middle Si la comunicacion es interceptada por un tercero este se puede hacer pasar por el emisor cara al destinatario y viceversa ya que no se dispone de ningun mecanismo para validar la identidad de los participantes en la comunicacion Asi el hombre en el medio podria acordar una clave con cada participante y retransmitir los datos entre ellos escuchando la conversacion en ambos sentidos Una vez establecida la comunicacion simetrica el atacante tiene que seguir en medio interceptando y modificando el trafico para que no se den cuenta Observar que para que el ataque sea operativo el atacante tiene que conocer el metodo de cifrado simetrico que sera utilizado Basarse en la ocultacion de algoritmo simetrico de cifrado no cumple con los principios de Kerckhoffs la efectividad del sistema no debe depender de que su diseno permanezca en secreto Ataque man in the middle en Diffie Hellman Para evitar este tipo de ataque se suele usar una o mas de las siguientes tecnicas Control de tiempos Autenticacion previa de las partes Por ejemplo usar en protocolo de capa subyacente autenticacion Podriamos primero establecer una conexion TLS y sobre esa capa aplicar el algoritmo de Diffie Hellman Autenticacion del contenido Por ejemplo podriamos usar MAC sobre el contenido de los mensajes Cifrando las claves publicas con un algoritmo de clave publica asimetrico evitando el problema de Man in the middle y a su vez comprobando que la clave publica 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 middlesi Alice o Bob estan siendo escuchados modificados simplemente desafiando a ambos a una prueba implicando en dicha prueba la clave publica del otro Si Mallory tergiversa la comunicacion Alice Bob y tambien la Alice Carol no puede tergiversar el canal seguro Bob Carol y sera detectado Y si tergiversa la Alice Bob y la Bob Carol no puede tergiversar la Alice Carol por definicion debe haber algun canal seguro entre dos de los tres aunque los otros dos canales sean tergiversados por Mallory Esto significa que el metodo Diffie Hellman puede crear redes de multiples nodos 100 seguras a partir de tan solo dos nodos previamente seguros Este metodo tambien sirve para testear canales que se sospecha que puedan ser inseguros Ejemplo Editar AliceSec Calcp gaga mod p gb mod p a mod p displaystyle rightarrow displaystyle leftarrow BobCalc Secp gb gb mod p ga mod p b mod p Alice y Bob acuerdan usar el numero primo p 23 y la base g 5 Alice elige un numero secreto a 6 luego envia a Bob ga mod p 56 mod 23 8 Bob elige un numero secreto b 15 luego envia a Alice gb mod p 515 mod 23 19 Alice calcula gb mod p a mod p 196 mod 23 2 Bob calcula ga mod p b mod p 815 mod 23 2 Ejemplo con implementacion de cifrado Editar La necesidad para este ejemplo es Bob necesita enviarle un texto cifrado a Alice pero sin compartir la clave de cifrado Como lo hace Alice elige un numero secreto a 6 el numero primo p 23 y la base g 5 Luego envia a Bob la llave publica de Alice ga mod p p y g 56 mod 23 8 23 5 Bob elige un numero secreto b 15 luego Bob calcula la llave de cifrado comun ga mod p b mod p 815 mod 23 2 Bob cifra con un cifrador simetrico como AES el texto claro usando la llave de cifrado generada TextoCifrado CifradorSimetrico TextoClaro 2 Bob envia a Alice el texto cifrado y la llave publica de Bob gb mod p 515 mod 23 19 TextoCifrado Alice calcula gb mod p a mod p 196 mod 23 2 Alice usa esa clave de cifrado generada para descifrar los datos enviados por Bob TextoClaro DescifradorSimetrico TextoCifrado 2 Valores mucho mas grandes de a b y p se necesitarian para hacer este ejemplo seguro Dado que es muy sencillo probar todos los valores posibles de gab mod 23 habra como maximo 22 valores inclusive si a y b son numeros grandes Obviamente la necesidad de Alice de enviarle a Bob la informacion cifrada tambien la cubre la implementacion Generalizaciones EditarAumentando el numero de partes Editar La idea del algoritmo podemos generalizarla a la negociacion de claves entre mas de dos entidades Veamos un ejemplo para tres entidades y a partir de ahi podemos aumentar el numero de partes de forma facil Las partes Alice Bob y Carol se ponen de acuerdo en los parametros del algoritmo p displaystyle p y g displaystyle g Las partes generan sus propias claves privadas llamadas a displaystyle a b displaystyle b y c displaystyle c respectivamente Alice calcula g a mod p displaystyle g a bmod p y lo envia a Bob Bob calcula g a b mod p g a b mod p displaystyle g a b bmod p g ab bmod p y lo envia a Carol Carol calcula g a b c mod p g a b c mod p displaystyle g ab c bmod p g abc bmod p y la usa como su clave secreta Bob calcula g b mod p displaystyle g b bmod p y lo envia a Carol Carol calcula g b c mod p g b c mod p displaystyle g b c bmod p g bc bmod p y lo envia a Alice Alice calcula g b c a mod p g b c a mod p g a b c mod p displaystyle g bc a bmod p g bca bmod p g abc bmod p y lo usa como su clave secreta Carol calcula g c mod p displaystyle g c bmod p y lo envia a Alice Alice calcula g c a mod p g c a mod p displaystyle g c a bmod p g ca bmod p y lo envia a Bob Bob calcula g c a b mod p g c a b mod p g a b c mod p displaystyle g ca b bmod p g cab bmod p g abc bmod p y lo usa como su clave secreta Cambiando de grupo Editar Podemos generalizar el protocolo y sus derivados si en lugar de basarnos en el grupo Z p displaystyle mathbf Z p nos basamos en otros grupos que cumplan las condiciones necesarias para poder aplicar el algoritmo GDHP lt Generalized Diffie Hellman Problem Formalizacion Editar Los usuarios A y B seleccionan publicamente un grupo multiplicativo finito G de orden n y generador g G displaystyle g in G cuya operacion multiplicacion es una operacion de una via no tiene inversa o dificilmente invertible El usuario A genera un numero aleatorio a 1 a n 1 displaystyle 1 leq a leq n 1 calcula g a G displaystyle g a in G y transmite este elemento a B manteniendo secreto a El usuario B genera un numero aleatorio b 1 b n 1 displaystyle 1 leq b leq n 1 calcula g b G displaystyle g b in G y transmite este elemento a A manteniendo secreto b El usuario A recibe g b displaystyle g b y calcula g b a G displaystyle g b a in G El usuario B recibe g a displaystyle g a y calcula g a b G displaystyle g a b in G A y B poseen un elemento comun secreto del grupo g a b displaystyle g a cdot b Ejemplos Editar Ejemplos de grupos que podriamos usar El grupo multiplicativo analogo de los campos de Galois F 2 n displaystyle mathbb F 2 n el grupo de puntos definidos por una curva eliptica sobre un cuerpo finito Usos practicos del protocolo EditarLa red para anonimato Tor usa el protocolo Diffie Hellman sobre una conexion TLS de una capa inferior previamente establecida para procurarse claves de sesion 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 comunicacion de mensajeria instantanea se apoya 5 en el protocolo Diffie Hellman para ir cambiando de clave de cifrado segun se van intercambiando los mensajes Referencias Editar Diffie W y M E Hellman New directions in cryptography IEEE Transactions on Information Theory 22 1976 pp 644 654 CRYPTOGRAPHY PIONEERS RECEIVE ACM A M TURING AWARD https www acm org awards 2015 turing Aqui Z p displaystyle mathbf Z p es el conjunto de los enteros menores que p que son primos relativos de p que es un grupo bajo la multiplicacion modulo p Gordon D M Designing and Detecting Trapdoors for Discrete Log Cryptosystems Advances in Cryptology CRYPTO92 Berlin Springer Verlag pp 66 75 N Borisov Off the Record Communication or Why Not To Use PGP Bibliografia adicional EditarMenezes A J P C van Oorschot y S A Vanstone Handbook of Applied Cryptography Boca Raton Fl CRC Press 1997 Datos Q623447 Multimedia Diffie Hellman key exchange Obtenido de https es wikipedia org w index php title Diffie Hellman amp oldid 133520556, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos