E04 EC Kurve 25519 Schlüsselaustausch mit Signatur

Der EC Kurve 25519 Schlüsselaustausch basiert auf dem Diffie-Hellmann Schlüsselaustausch und wurde um die elliptische Kurven-Kryptographie erweitert. Auch dieser Algorithmus ist mit wenigen Zeilen Programmcode nutzbar und ist ein vollwertiger Schlüsselaustausch-Code. Die zu Grunde liegende Kurve 25519 wurde vom Team Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe und Bo-Yin Yang fand die Kurve 25519, welche seitdem gerne genutzt wird. Dieses Beispiel erweitert den reinen EC-Schlüsselaustausch um eine Unterschriftsmöglichkeit, d.h. das jeweilige Private-/Public Keypaar wird zusätzlich für die digitale Signatur genutzt.

Auffallend ist der vergleichsweise kleine private bzw. öffentliche Schlüssel von 32 Byte Länge, dadurch eignet sich der Schlüsselaustausch und die digitale Signatur insbesondere für den Einsatz auf Karten.

Die aktuellen Java 8- und Java 11-Versionen enthalten keine Implementierung der Kurve und Ihr benötigt eine Dritt-Bibliothek wie, um die Kurve nutzen zu können. Ich zeige Euch hier die Implementierung mit der Bibliothek curve25519, welche Ihr unter diesem Link herunterladen könnt: http://central.maven.org/maven2/org/whispersystems/curve25519-java/0.5.0/curve25519-java-0.5.0.jar.

Bindet die Bibliothek in Eclipse analog zu BouncyCastle ein (beispielhaft gezeigt in http://javacrypto.bplaced.net/a06-einbindung-und-nutzung-von-bouncy-castle/).

Hier noch einmal in Kurzform die Vorgehensweise: beide Partner erzeugen ihre Schlüsselpaare (KeyPairs) und tauschen dann ihre öffentlichen Schlüssel (public keys) aus. Im Programm geschieht das einfach durch „Vertauschen“ in der Ansicht, in der Praxis werden die öffentlichen Schlüssel z.B. auf einer persönlichen Webseite veröffentlicht. Dann erzeugen beide Partner den gemeinsamen geheimen Schlüssel (shared secret key), der dann z.B. für eine symmetrische Verschlüsselung genutzt werden kann. In diesem Beispiel ist der gemeinsame geheime Schlüssel zwar 32 Byte lang und damit „OK“ für AES-Verschlüsselungen, aber bei mittels SHA-256-Hashfunktion auf die Länge von 32 Byte gebrachten Schlüssel sind dadurch nicht mehr zurück rechenbar.

Schlüsselaustauschsteckbrief
Name des Verfahrens EC 25519
Langname Elliptische Kurve 25519 Schlüsselaustausch
Basis Elliptische Kurve
Blocklänge (Byte)
Schlüssellänge (Byte/Bit) 32/256
Padding genutzt Nein
Sicherheit es existiert nur eine 32 Byte Schlüssellänge
Besonderes

Der nachfolgende Quellcode ist durch die Ausgaberoutinen deutlich länger als der „eigentliche“ Programmcode.

Bitte die nachfolgende Routine nicht für den Echteinsatz nutzen, da sie aus kryptographischer Sicht angreifbar ist !

Die Ausgabe auf der Konsole ähnelt dem Beispiel E03 ECDH Schlüsselaustausch mit Signatur sehr:

Die Lizenz zum obigen Beispiel findet Ihr auf der eigenen Lizenz-Seite.

Letzte Aktualisierung: 18.01.2019