L’algorithme d’échange de clés Diffie Hellman (DH) est une méthode d’échange sécurisé de clés cryptographiques sur un canal de communication public. Les clés ne sont pas réellement échangées – elles sont dérivées conjointement. Il est nommé d’après leurs inventeurs Whitfield Diffie et Martin Hellman.
Si Alice et Bob souhaitent communiquer entre eux, ils s’accordent d’abord entre eux un grand nombre premier p, et un générateur (ou base) g (où 0 < g <p).
Alice choisit un entier secret a (sa clé privée) puis calcule g^un mod p (qui est sa clé publique). Bob choisit sa clé privée b, et calcule sa clé publique de la même manière.
Bob connaît b et g^a, il peut donc calculer (g^a) ^b mod p = g^ab mod p. Par conséquent, Alice et Bob connaissent tous deux un secret partagé g^ab mod p. Une veille qui écoutait la communication connaît p, g, la clé publique d’Alice (g^a mod p) et la clé publique de Bob (g^b mod p). Elle est incapable de calculer le secret partagé à partir de ces valeurs.
En mode statique-statique, Alice et Bob conservent leurs clés privées/ publiques sur plusieurs communications. Par conséquent, le secret partagé résultant sera le même à chaque fois. En mode statique éphémère, une partie générera une nouvelle clé privée / publique à chaque fois, ainsi un nouveau secret partagé sera généré.