Der Diffie-Hellman-Schlüsselaustausch ist ein Verfahren, mit dem sich zwei Parteien über einen unsicheren Kanal auf einen gemeinsamen geheimen Schlüssel einigen, ohne den Schlüssel selbst zu übertragen.
Wie Diffie-Hellman funktioniert
Whitfield Diffie und Martin Hellman veröffentlichten das Protokoll 1976; es ist das erste praktische Beispiel für Public-Key-Kryptografie. Beide Seiten einigen sich auf öffentliche Parameter, jede wählt eine geheime Zahl und schickt der anderen einen daraus abgeleiteten Wert. Kombiniert jede ihr eigenes Geheimnis mit dem empfangenen Wert, erhalten beide dasselbe Ergebnis. Ein Lauscher, der nur die ausgetauschten Werte sieht, müsste dafür das Problem des diskreten Logarithmus lösen. Aus dem gemeinsamen Geheimnis werden anschließend symmetrische Sitzungsschlüssel abgeleitet.
Moderne Systeme nutzen meist die Variante mit elliptischen Kurven (ECDH), vor allem X25519 (RFC 7748). Werden für jede Sitzung neue Schlüssel erzeugt (DHE oder ECDHE), legt ein späterer Diebstahl des langfristigen Serverschlüssels vergangenen Verkehr nicht offen – diese Eigenschaft heißt Forward Secrecy.
Warum Diffie-Hellman wichtig ist
Ephemeres Diffie-Hellman ist in TLS 1.3 Pflicht und wird in SSH, IPsec-VPNs, WireGuard und dem Signal-Protokoll verwendet. Die bekannten Schwächen sind gut verstanden:
- Keine eigene Authentifizierung – ein Angreifer in einer Man-in-the-Middle-Position kann mit jeder Seite einen separaten Austausch führen; die Werte müssen daher signiert oder an Zertifikate gebunden werden.
- Schwache Gruppen – der Logjam-Angriff von 2015 war ein Downgrade-Angriff, der TLS-Server zu 512-Bit-Gruppen in „Export-Qualität“ zwang, die sich schnell brechen ließen.
- Quantenbedrohung – Shors Algorithmus würde klassisches und elliptisches Diffie-Hellman brechen; Browser und Messenger kombinieren X25519 deshalb inzwischen mit dem Post-Quanten-Verfahren ML-KEM zu einem hybriden Schlüsselaustausch.
Best Practices
- ECDHE mit X25519 oder NIST P-256 oder Finite-Field-Gruppen mit mindestens 2048 Bit verwenden.
- Export-Cipher und statischen (nicht ephemeren) Schlüsselaustausch deaktivieren.
- Den Austausch stets mit Zertifikaten oder gepinnten Schlüsseln authentifizieren.
- Hybriden Post-Quanten-Schlüsselaustausch aktivieren, wo er unterstützt wird.