© GoodStudio/Shutterstock.com
Von Version zu Version – Teil 3

Chiffriermaschine und Schönschrift im SDK


Seit Java 15 ist ein neues, modernes und performanteres Signaturschema im Software Development Kit enthalten. Texte, Nachrichten und Dokumente können mit dem Edwards-Curve Digital Signature Algorithm sicher signiert werden. Die eigene Applikation kann damit mit dem aktuellen Standard der digitalen Unterschrift vor unlauterer Veränderung geschützt werden. Ebenso stellen wir das Feature Text Blocks vor, das das Einbetten von Quelltext einer anderen Sprache (wie HTML) im Java-Code deutlich lesbarer gestaltet.

Ab dem JDK 15 wird mit dem Edwards-Curve Digital Signature Algorithm (EdDSA) ein modernes Signaturschema [1] für elliptische Kurven bereitgestellt, das gegenüber den bisher enthalten Signaturschemata mehrere Vorteile bietet. Das Hauptziel ist die Implementierung dieses in RFC 8032 standardisierten Schemas [2]. Ebenso werden mit JDK 15 Text Blocks (Textblöcke) eingeführt. Damit lassen sich mehrzeilige Strings einfacher aufbauen und verwenden. Beide Features wollen wir uns genauer ansehen. Beginnen wir mit der Integration von digitalen Signaturen.

Digitale Signaturen

Bevor wir uns die Features der Implementierung des Edwards-Curve Digital Signature Algorithm im JDK 15 ansehen, ist es angebracht, die Anwendung und Theorie für digitale Signaturen näher zu untersuchen. Erst nach und nach setzt sich die Anwendung von digitalen Signaturen in der Praxis durch. Sie ermöglichen die Sicherung von Integrität, Nachrichtenauthentizität und Verbindlichkeit. Damit sind sie ein wesentlicher Bestandteil für sichere digitale Kommunikation. Die Anwendung von digitalen Signaturen basiert auf privaten und öffentlichen Schlüsseln, um eine digitale Unterschrift zu generieren und damit die Unversehrtheit eines Dokumentes nachvollziehen zu können (Abb. 1).

krypczyk_features_3_1.tif_fmt1.jpgAbb. 1: Das Prinzip einer digitalen Signatur

Die Nachricht bzw. das digitale Dokument, das signiert werden soll, wird mit Hilfe einer Hashfunktion verschlüsselt. Das Ergebnis der Anwendung dieser Hashfunktion ist ein eindeutiger alphanumerischer Wert – bezeichnet als Hashwert. Dieser Hashwert wird nun mit dem privaten Schlüssel (Private Key) des Signaturverfahrens verschlüsselt. Das Ergebnis ist die digitale Signatur. Die Nachricht und die digitale Signatur werden im nächsten Schritt über das Internet vom Sender an den Empfänger übermittelt. Auf Seiten des Empfängers muss nun geklärt werden, ob die Nachricht unverändert, d. h. noch im Originalzustand vorliegt. Mit anderen Worten: Wir müssen feststellen, ob vom Zeitpunkt der finalen Erstellung des digitalen Dokuments bis zum Eintreffen beim Empfänger keine unberechtigten Änderungen durchgeführt wurden. Diese Funktion soll die digitale Unterschrift (Signatur) erfüllen. Der Vorgang ist so mit der handschriftlichen Unterschrift auf einem Papierdokument vergleichbar. Mit dieser wird ebenso die Unversehrtheit des Dokuments nach der Übermittlung bestätigt. Würde es jemand nach der Leistung der Unterschrift anpassen, würde es juristisch nicht mehr anerkannt werden. Zurück zur elektronischen Signatur: Das signierte Dokument kommt über das Internet beim Empfänger an. Dieses wird dazu wieder in seine beiden Bestandteile, d. h. das eigentliche Dokument und die Signatur zerlegt. Das digitale Dokument (Nachricht, Message, Bild usw.) wird erneut mittels der gleichen Hashfunktion verschlüsselt. Wir erhalten einen weiteren Hashwert. Die übermittelte digitale Signatur, d. h. der verschlüsselte Hashwert, wird mittels eines öffentlichen Schlüssels wieder entschlüsselt und damit lesbar. Beide Hashwerte (in der Abbildung mit A und B bezeichnet) werden miteinander verglichen. Stimmen beide Hashwerte überein, ist davon auszugehen, dass das Dokument seit seiner Signierung nicht verändert wurde.

Das Vorgehen folgt dem Prinzip der asymmetrischen Verschlüsselung. Unabhängig von gewählten Verschlüsselungsverfahren haben wir es mit einem Schlüsselpaar bestehend aus einem privaten und einem öffentlichen Schlüssel zu tun. Der private Schlüssel ist geheim und wird lediglich zur Erzeugung der digitalen Signatur verwendet. Dieser muss sorgfältig beim Empfänger verwahrt werden. Der öffentliche Schlüssel wird allgemein zur Verfügung gestellt und dient zur Entschlüsselung des Hashwertes.

Aus theoretischer Sicht lohnt es sich, ein paar Worte zur Hashfunktion zu verlieren. Eine Hashfunktion ist eine Abbildung, die effizient eine Zeichenfolge beliebiger Länge (Eingabewert, Dokument usw.) auf eine Zeichenfolge mit fester Länge (Hashwert) abbildet. Aus dieser Längenbeschränkung ergibt sich notwendigerweise, dass verschiedenen Eingabewerten theoretisch derselbe Hashwert zugeordnet wird – die Abbildung ist also nicht eindeutig. Mit anderen Worten: Es ist denkbar, dass zwei unterschiedliche Dokumente zum gleichen Hashwert führen bzw. dass die nachträgliche Änderung eines Dokuments (Fälschung) den Hashwert nicht verändert. Kryptologische bzw. kryptografische Hashfunktionen sind jedoch weitgehend kollisionsresistent. Es ist also praktisch nicht möglich, zwei unterschiedliche Eingabewerte zu finden, die einen identischen Hashwert ergeben. Man unterscheidet hier unterschiedliche Stärken der Kollisionsresistenz (schwach, stark, perfekt). Bereits bei der schwachen Ausprägung ist man i. d. R. nicht mehr in der Lage, das Dokument so zu verändern, dass es den gleichen Hashwert bildet. Die starke Kollisionsresistenz schließt das in der Praxis aus, und die perfekte Kollisionsresistenz geht davon aus, dass es informationstechnisch nicht möglich ist, zwei unterschiedliche Dokumente mit identischem Hashwert zu finden. In der Praxis heißt das, dass wir – wenn die beiden Hashwerte übereinstimmen – davon ausgehen können, dass das betreffende Dokument in unveränderter Form vorliegt. In diesem Fall ersetzt...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang