Der Diffie-Hellman (DH)-Schlüsselaustauschalgorithmus ist eine Methode zum sicheren Austausch von kryptografischen Schlüsseln über einen öffentlichen Kommunikationskanal. Die Schlüssel werden nicht tatsächlich ausgetauscht, sondern gemeinsam abgeleitet. Er ist nach seinen Erfindern Whitfield Diffie und Martin Hellman benannt.
Wenn Alice und Bob miteinander kommunizieren wollen, vereinbaren sie zunächst eine große Primzahl p und einen Generator (oder Basis) g (wobei 0 < g < p).
Alice wählt eine geheime ganze Zahl a (ihren privaten Schlüssel) und berechnet dann g^a mod p (das ist ihr öffentlicher Schlüssel). 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 (g^a)^b mod p = g^ab mod p berechnen. Daher kennen sowohl Alice als auch Bob ein gemeinsames Geheimnis g^ab mod p. Eine Lauscherin Eve, die 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 ist nicht in der Lage, das gemeinsame Geheimnis aus diesen Werten zu berechnen.
Im statisch-statischen Modus behalten sowohl Alice als auch Bob ihre privaten/öffentlichen Schlüssel über mehrere Kommunikationen hinweg. Daher ist das resultierende gemeinsame Geheimnis jedes Mal dasselbe. Im ephemer-statischen Modus generiert eine Partei jedes Mal einen neuen privaten/öffentlichen Schlüssel, so dass ein neues gemeinsames Geheimnis erzeugt wird.
Beide, RSA und Diffie Hellman (DH), sind Public-Key-Verschlüsselungsprotokolle, die für den sicheren Schlüsselaustausch verwendet werden. Sie sind unabhängige Protokolle, die sich nicht aufeinander verlassen.
Ephemeral Diffie-Hellman verwendet temporäre, öffentliche Schlüssel. Jede Instanz oder jeder Durchlauf des Protokolls verwendet einen anderen öffentlichen Schlüssel. Die Authentizität des temporären Schlüssels des Servers kann durch Überprüfung der Signatur des Schlüssels verifiziert werden. Da die öffentlichen Schlüssel temporär sind, gefährdet eine Kompromittierung des langfristigen Signierschlüssels des Servers nicht die Vertraulichkeit der vergangenen Sitzungen. Dies wird als Perfect Forward Secrecy (PFS) bezeichnet.
Diffie Hellman verwendet ein Paar aus privatem und öffentlichem Schlüssel, um ein gemeinsames Geheimnis zu erstellen, typischerweise einen symmetrischen Schlüssel. DH ist kein symmetrischer Algorithmus – es ist ein asymmetrischer Algorithmus, der verwendet wird, um ein gemeinsames Geheimnis für einen symmetrischen Schlüsselalgorithmus zu erstellen.
Authentifizierte Schlüsselvereinbarungsprotokolle tauschen einen Sitzungsschlüssel in einem Schlüsselaustauschprotokoll aus, das auch die Identitäten der am Schlüsselaustausch beteiligten Parteien authentifiziert. Anonymer (oder nicht-authentifizierter) Schlüsselaustausch, wie Diffie-Hellman, bietet keine Authentifizierung der Parteien und ist daher anfällig für Man-in-the-Middle-Angriffe.
DH wird auch heute noch verwendet, aber es müssen bestimmte Vorsichtsmaßnahmen bezüglich seiner Bausteine getroffen werden. Auch die Authentifizierung muss auf DH aufgesetzt werden, um Man-in-the-Middle-Bedrohungen zu verhindern.
DH gilt als sicher gegen Abhörer, wenn die endliche zyklische Gruppe G und der Generator g richtig gewählt sind. Insbesondere muss die Ordnung der Gruppe G groß sein, vor allem, wenn dieselbe Gruppe für große Mengen an Datenverkehr verwendet wird. Bei einer ausreichend großen Gruppe G gilt das Lösen des Diffie-Hellman-Problems zum Erhalt von g^ab als schwierig.
Der Diffie-Hellman-Austausch selbst bietet keine Authentifizierung der kommunizierenden Parteien und ist daher anfällig für einen Man-in-the-Middle-Angriff. Ein aktiver Angreifer, der den Man-in-the-Middle-Angriff ausführt, kann zwei verschiedene Schlüsselaustausche einrichten, einen mit Alice und den anderen mit Bob, und sich effektiv als Alice gegenüber Bob ausgeben und umgekehrt, was es ihm ermöglicht, die zwischen ihnen ausgetauschten Nachrichten zu entschlüsseln und wieder zu verschlüsseln.
Ein Geheimhaltungsdiagramm wird verwendet, um zu analysieren, wer was bei jedem Schritt eines Schlüsselaustausch-Algorithmus weiß.