D05 EC Signatur mit einer Datei

Auch hier ändern wir das RSA-Beispiel D02 RSA Signatur mit einer Datei in Richtung EC (= Nutzung einer Elliptischen Kurve) als Rechenverfahren ab. Aus Darstellungsgründen habe ich als Schlüssellänge die 256 Bit-Kurve gewählt, entscheidet aber bitte selber welche Kurve Ihr verwenden möchtet. Die Kurve („secp256k1“) wird zum Beispiel bei der Krypto-Währung Bitcoin verwendet.

Ganz wichtig ist es, sich den Einsatz des Public und des Private Keys in Erinnerung zu rufen, da an dieser Stelle immer wieder Fehler gemacht werden. Bei der asymmetrischen Signatur veröffentlicht der Absender seinen Public (öffentlichen) Schlüssel, z.B. auf seiner Webseite. Der Absender der Nachricht benutzt seinen Private Key für die Erzeugung der Signatur und sendet die Nachricht (ciphertext) zusammen mit der Signatur an den Empfänger. Der Empfänger prüft die Signatur mit dem Public Keys des Absenders.
Hier noch einmal die Kurzform: signieren mit dem Private Key des Absenders, prüfen der Signatur (Verifizierung) mit dem Public Key des Absenders.

Signatursteckbrief
Name des Verfahrens EC
Langname Elliptische Kurven Signatur
Art der Chiffre Kompletter Plaintext
Blocklänge (Byte)
Schlüssellänge (Byte/Bit) 256/2048, 384/3072, 409/3272, 521/4168, 571/4568
Padding genutzt Nein
Sicherheit bitte benutzt nur Kurven, die zumindest „genormt“ sind.
Besonderes

Der Quellcode ist deutlich länger, dafür ist dieses Beispiel auch gleich in der Praxis einsetzbar, wenn der nachfolgende Sicherheitshinweis beachtet wird. Die erzeugten Schlüssel werden für eine spätere Benutzung in Form von Byte Arrays gespeichert und beim Einlesen mittels geeigneter Routinen wieder als Private und Public Key „regeneriert“. Die zu signierende Nachricht befindet sich in einer Datei und es wird nicht die komplette Nachricht zur Signaturerzeugung genutzt, sondern es wird ein Hashwert der Datei erzeugt und dieser Hashwert wird dann signiert – das verringert die Bearbeitungszeit bei den rechenintensiven Operationen. Die Signatur wird ebenfalls als Byte Array gespeichert und zur (späteren) Verifizierung beim Empfänger wieder eingelesen. Der Empfänger bildet ebenfalls den Hashwert der Nachrichten-Datei und überprüft den Hashwert mit dem Public Key anhand der Signatur.

Bitte wundert Euch nicht, das die Einlese Methoden der Private/Public Keys auf „loadEcdsa..“ lauten – das liegt einfach daran das die Erzeugung der Schlüsseln aus den Byte Arrays identisch zum ECDSA-Verfahren ist.

Zum Test solltet Ihr eine einfache Textdatei mit dem Namen „d02_message.txt“ anlegen, welche Ihr z.B. hier herunterladen könnt. Im Beispiel B05 ist beschrieben, wo die Datei in Eclipse liegen sollte.

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

So informiert Euch die Konsole:

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

Letzte Aktualisierung: 11.01.2019