Diffie Hellman (DH) Key exchange algorithm ist ein Verfahren zum sicheren Austausch kryptografischer Schlüssel über einen öffentlichen Kommunikationskanal. Schlüssel werden nicht tatsächlich ausgetauscht – sie werden gemeinsam abgeleitet. Es ist nach ihren Erfindern Whitfield Diffie und Martin Hellman benannt.
Wenn Alice und Bob miteinander kommunizieren möchten, vereinbaren sie zunächst eine große Primzahl p und einen Generator (oder eine Basis) g (wobei 0 < g < p).
Alice wählt eine geheime Ganzzahl a (ihren privaten Schlüssel) und berechnet dann g ^ a mod p (was ihr öffentlicher Schlüssel ist). Bob wählt seinen privaten Schlüssel b und berechnet seinen öffentlichen Schlüssel auf die gleiche Weise.
Bob kennt b und g ^ a, also kann er berechnen (g ^ a) ^ b mod p = g ^ ab mod p. Daher kennen sowohl Alice als auch Bob ein gemeinsames Geheimnis g ^ ab mod p. Ein Lauscher, der die Kommunikation mitgehört hat, kennt p, g, Alices öffentlichen Schlüssel (g ^ a mod p) und Bobs öffentlichen Schlüssel (g ^ b mod p). Sie kann das gemeinsame Geheimnis nicht aus diesen Werten berechnen.
Im statisch-statischen Modus behalten sowohl Alice als auch Bob ihre privaten / öffentlichen Schlüssel über mehrere Kommunikationen bei. Daher ist das resultierende gemeinsame Geheimnis jedes Mal dasselbe. Im ephemeral-statischen Modus generiert eine Partei jedes Mal einen neuen privaten / öffentlichen Schlüssel, sodass ein neues gemeinsames Geheimnis generiert wird.