Das Haupteinsatzgebiet der Asymmetrischen Kryptographie ist die Nutzung von digitalen Signaturen, der elektronischen Unterschrift. Im Zuge der Umstellung der Geschäftsabläufe – weg vom Papier, hin zur digitalen Abwicklung – ist es sehr wichtig, den Willen eines Geschäftspartners durch ein lückenloses elektronisches Verfahren zu dokumentieren und rechtssicher nachzuweisen.
Analog zur asymmetrischen Verschlüsselung sind auch bei der digitalen Signatur drei Kryptographie-Modelle im Einsatz – das RSA-Verfahren, die auf dem diskreten Logarithmus fußenden Modelle und zuletzt die Verfahren, die mit elliptischen Kurven arbeiten. Da ich alle drei Modelle bereits in der Verschlüsselungsrubrik erläutert habe, verweise ich an dieser Stelle auf die Seite C Asymmetrische Verschlüsselung für weitere Erläuterungen.
Ich zeige Euch in Beispielen die RSA-Signatur D01 RSA Signatur mit einem String sowie eine D02 RSA Signatur mit einer Datei. Sucht Ihr ein Beispiel für das DSA-Verfahren, welches auf dem Diskreten Logarithmus beruht, findet Ihr es in D03 DSA Signatur mit einer Datei. Eine Mischlösung von Diskreter Logarithmus und Elliptische Kurven ist das ECDSA-Verfahren, wofür ich in D04 ECDSA Signatur mit einer Datei ein Beispiel bringe.
Das Beispiel D05 EC Signatur mit einer Datei wird Euch wieder zu einer „Glaubensfrage“ bringen – glaube ich das die zu Grunde liegende Kurve sicher ist ? Die Auswahl der Kurven könnte von der amerikanischen Sicherheits-Behörde NSA beeinflusst worden sein und daher Hintertüren (sogenannte „Backdoors“) aufweisen, so die Verschwörungstheoretiker. Eine sehr ähnliche Kurve („secp256k1“) wird bei der Krypto-Währung Bitcoin verwendet – entscheidet also selbst.
Möchtet Ihr aber eine alternativ entwickelte Elliptische Kurve nutzen, schaut Euch das Beispiel D06 EC Kurve ED25519 Signatur Datei an – hier wird mittels einer Dritt-Bibliothek die Kurve ED25519 als Beispiel gezeigt. Solltet Ihr auf BouncyCastle als zusätzliche Kryptographie-Bibliothek setzen empfehle ich Euch einen Blick in das Beispiel D07 EC Kurve ED25519 Signatur Datei BC, dort wird mit einer BouncyCastle Beta-Bibliothek die Kurve 25519 genutzt.
Solltet Ihr Euch unsicher sein, welche Schlüssellängen bei Euch zum Einsatz kommen sollen, hilft Euch u.a. das deutsche Bundesamt für Sicherheit in der Informationstechnik (BSI) weiter. Aktuell findet Ihr unter dem Link https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR02102/BSI-TR-02102.html eine PDF-Datei, welche Euch wertvolle Hinweise zu dieser Fragstellung gibt.
Alle Quellcodes zur digitalen Signatur findet Ihr zum Download in meinem Github-Repository, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/D-Signatur. Dort findet Ihr auch die Versionen für Java 11.
Letzte Aktualisierung: 18.01.2019