El algoritmo Diffie-Hellman (algoritmo D-H) es un protocolo criptográfico que se utiliza para crear una conexión cifrada entre partes en comunicación a través de un canal no seguro, sin necesidad de determinar previamente la clave de cifrado. El resultado del algoritmo es una clave de cifrado simétrica, que puede utilizarse para cifrar el resto de la comunicación.
Una ventaja es que un atacante potencial no puede obtener esta clave escuchando a escondidas (intercepción). La clave es creada por todos los participantes en esta comunicación y nunca se envía de forma abierta. Este algoritmo garantiza el intercambio de una clave común de tal manera que si el atacante escucha esta comunicación, no puede reconstruir la clave combinada basada en la información interceptada.
Una desventaja de este protocolo es la indefensión frente a ataques de hombre en el medio “Man in the Middle”, porque no permite la autenticación de los participantes. Este protocolo, sin ninguna combinación con otros métodos de autenticación, sólo es apropiado cuando un atacante no puede perturbar la comunicación de forma activa.
El tamaño del módulo especifica el tipo de grupo. Por lo general, existen estos grupos: 1, 2 y 5. El número de grupo indica la longitud de la clave - DH-1 (768 bits), DH-2 (1024 bits), DH-5 (1535 bits), DH-14 (2048 bits).
El cálculo del valor resultante es muy fácil (rápido), pero es muy difícil encontrar algunos de los valores conocidos sólo por el otro participante. Este principio, que es la base de la seguridad de este algoritmo, se conoce como el problema del logaritmo discreto.
La comunicación mediante el algoritmo D-H se realiza de la siguiente manera: