lunes, 1 de julio de 2013

Protocolo Diffie-Hellman.

El problema del logaritmo discreto fue utilizado por Diffie y Hellman como un medio seguro para el intercambio de claves entre dos usuarios a través de un canal inseguro.


EL PROBLEMA.

Alice y Bob desean ponerse desean ponerse de acuerdo sobre una clave para comunicarse criptográficamente y solo disponen de un canal al que también tiene acceso Eve. Eve tiene interceptadas las comunicaciones de Alice y Bob (Eve is eavesdropping).


  • Alice y Bob deciden que la clave será una potencia modular, y escogen la base de la potencia (g) y el módulo (p). Eve toma nota de estos números.
  • Alice elige un número (x) que mantiene en secreto, Bob también elige un número (y) secreto. Eve no conoce estos números.
  • Alice calcula la función X = g^x mod p y se la envía a Bob. Eve toma nota de este número.
  • Bob calcula la función Y = g^y mod p y se la envía a Alice. Eve toma nota de este número.
  • Alice y Bob calculan la clave con la cual se comunicaran, con el número que recibieron el uno del otro. Alice calcula k = Y^x mod p; y Bob calcula k = X^y mod p, obteniendo ambos el mismo resultado. Eve no puede calcular este número por falta de datos.
¿Cómo puede Eve encontrar la clave secreta?
Eve posee la base de la potencia (g) y el módulo (p), así como las funciones X y Y. Para poder encontrar la clave secreta que Alice y Bob utilizarán para comunicarse (k) Eve necesita encontrar (x) y (y), calculando por medio de fuerza bruta (brute force) todos y cada uno de los valores que pueden tener (x) y (y).

A continuación se muestra el desarrollo del problema hecho a mano y también en código.


Código en Python

Resultados



Descargar Código










2 comentarios: