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 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".
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.
Para dos partes Alice y Bob, que intentan establecer una clave secreta, y un adversario Mallory, la versión básica es como sigue:
Nótese que tanto A como B pueden calcular el valor . En efecto, lo podemos demostrar usando las propiedades del grupo :
Como ambas partes pueden calcular , entonces la podemos usar como clave compartida.
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.
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).
Para evitar este tipo de ataque, se suele usar una o más de las siguientes técnicas:
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.
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?
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.
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:
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)
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.
Escribe un comentario o lo que quieras sobre Diffie-Hellman (directo, no tienes que registrarte)
Comentarios
(de más nuevos a más antiguos)