Für mich sind die asymmetrischen Kryptographie-Verfahren immer noch ein kleines Wunder. Eine der größten „Zaubereien“ ist der Schlüsselaustausch zwischen zwei Parteien, ohne dass dabei eine direkte Kommunikation zwischen den beiden Partnern stattgefunden hat.
Zum Einstieg hierzu soll ein kleines Beispiel dienen: sie möchten dem Empfänger eine verschlüsselte Datei senden und dafür zum Beispiel das AES GCM-Verfahren nutzen (also die symmetrische Verschlüsselung nutzen). Die Erzeugung eines Schlüssels ist ein Klick, ebenso die Dateiverschlüsselung und der anschließende (elektronische) Versand der verschlüsselten Datei. Es bleibt das Problem – wie erhält der Empfänger der Schlüssel zum Entschlüsseln ? Natürlich kannst Du ihn anrufen und ihm den 256-Bit langen Schlüssel übermitteln oder per Post zusenden, aber geht das nicht auch besser ? Die Antwort auf diese Frage lautet ganz einfach: „Ja“. Die nachfolgenden Beispiele zeigen Euch den (einfachen) Weg dafür auf.
Der Diskrete Logarithmus ist Euch ja bereits bei der asymmetrischen Verschlüsselung und der elektronischen Signatur als Rechenverfahren bekannt geworden und dient auch hier als Basis für die Erzeugung eines gemeinsamen geheimen Schlüssels („shared secret key“). Auf dieser Basis entwickelten Whitfield Diffie und Martin Hellman im Jahre 1976 das nach ihnen benannte Diffie-Hellmann Schlüsselaustauschverfahren, das wie folgt funktioniert:
Beide Kommunikationspartner erzeugen ihr persönlichen Schlüsselpaar aus privatem und öffentlichem Schlüssel. Der jeweilige öffentliche Schlüssel (public key) wird z.B. auf einer Webseite veröffentlicht und kann vom anderen Partner genutzt werden. Jeder Partner erzeugt nun aus seinem privaten Schlüssel und dem öffentlichen Schlüssel des anderen Partners einen geheimen gemeinsamen Schlüssel. Die Magie des Verfahrens besteht nun darin, dass beide geheimen gemeinsamen Schlüssel identisch sind, obwohl die Schlüsselpaare getrennt voneinander erzeugt worden sind.
Im Beispiel E01 Diffie-Hellmann Schlüsselaustausch zeige ich Euch diese magische Funktionsweise. Das Beispiel E02 ECDH Schlüsselaustausch nutzt die Kombination Elliptische Kurve mit Diffie Hellmann. Das Beispiel wird erweitert in E03 ECDH Schlüsselaustausch mit Signatur um eine Signaturfunktion, welche die bereits erzeugten Schlüssel nutzt. Die unvermeidliche Frage nach der Sicherheit der Kurven hat auch beim Schlüsselaustausch zur Erzeugung einer „unabhängigen“ Kurve namens 25519 geführt – das Beispiel hierzu findet Ihr unter E04 EC Kurve 25519 Schlüsselaustausch mit Signatur.
Alle Quellcodes zur digitalen Signatur findet Ihr zum Download in meinem Github-Repository, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/E-Schluesselaustausch. Alle Programme sind sowohl unter Java 8 als auch unter Java 11 lauffähig.
Letzte Aktualisierung: 18.01.2019