H05 Symmetrische Streamverschlüsselung via Tink mit AAD-Daten CLI

Dieses Beispiel basiert auf dem Programm H04 Symmetrische Streamverschlüsselung via Tink mit AAD-Daten für große Dateien und hat als Besonderheit die Buchstaben „CLI“ am Ende stehen. Diese stehen für „Command Line Interface“ oder auf Deutsch „Kommandozeilenversion“.

Mit diesem Programm könnt Ihr Dateien beliebiger Größe auf sehr einfache Weise verschlüsseln und wieder entschlüsseln. Zusätzlich können AAD-Daten genutzt werden – diese werden in der verschlüsselten Datei gespeichert und bei der Entschlüsselung wieder angezeigt.

Eine weitere Programmoption ist die alleinige Anzeige der AAD-Daten (ohne Entschlüsselung), dieses ist sehr nützlich, wenn Ihr als AAD-Daten zum Beispiel das Datum des Backups oder einen Backupstand dokumentieren wollt.

An dieser Stelle steht ein Warnhinweis: die erzeugte oder genutzte Schlüsseldatei (mit dem AES GCM 256-Bit-Schlüssel) muss sehr sicher gespeichert werden, denn ohne diese Datei kann weder das Programm noch jemand anderes eine Entschlüsselung vornehmen. Für den Fall des Schlüsselverlustes gilt: „weg ist unwiederbringlich weg“.

Das Programm ist zum Anderen eine Erweiterung des Google „Hello World“ Beispiels (https://github.com/google/tink/tree/master/examples/helloworld/java), daher habe ich die dort genannte Apache 2.0-Lizenz auch für dieses Beispiel gesetzt. Den englischen Lizenztext der Apache 2.0-Lizenz findet Ihr unter http://www.apache.org/licenses/LICENSE-2.0.

Damit Ihr das Programm direkt einsetzen könnt, habe ich Euch eine fertige JAR-Datei erzeugt, welche Ihr über diesen Link: h05_encryptiontinkdecli.jar herunterladen könnt. Falls Ihr wissen möchtet, wie eine solche ausführbare JAR-Datei mittels Eclipse erzeugt wird, schaut Euch das Beispiel A12 ausführbare JAR-Datei erzeugen an.

Das Programm besteht diesmal aus zwei Klassen, die Ihr hier und im Github-Archiv findet.

Bitte die nachfolgende Routine nur nach einer gründlichen Überprüfung für den Echteinsatz nutzen. Aus kryptographischer Sicht dürfte sie für viele Einsatzgebiete nutzbar sein.

Diese Befehlsfolgen habe ich verwendet:

Bei der Ausführung in der Konsole seht Ihr diese Ausgaben (Verschlüsselung mit AAD-Daten, Entschlüsselung mit AAD-Daten und reine Anzeige der AAD-Daten:

Alle Quellcodes zu Google Tink findet Ihr zum Download in meinem Github-Repository, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/H-Google-Tink. Alle Programme sind sowohl unter Java 8 als auch unter Java 11 lauffähig.

Die Lizenz zum obigen Beispiel findet Ihr – da es sich um eine abweichende Apache 2.0 Lizenz handelt – auf der http://www.apache.org/licenses/LICENSE-2.0 Lizenz-Seite.

Letzte Aktualisierung: 28.01.2019