H Google Tink Bibliothek

Die Kryptographie Bibliothek Google Tink ist noch recht neu (gefühlt ab 2018), enthält aber nahezu alle notwendigen Methoden für eine einfache und zugleich sichere Kryptographie. Es gibt viele Gründe, die für einen Einsatz dieser Bibliothek sprechen und die nachfolgenden Beispiele werden Euch einen Eindruck vom Leistungsumfang geben.

Auf der Seite Sichere Kryptographie mit Google Tink erläutere ich Euch meine Gründe für die Nutzung von Tink und zeige Euch, wie einfach Ihr diese Bibliothek herunterladen und nutzen könnt. Auch wenn es auf der Github-Seite so aussieht, als handele es sich um ein Privatprojekt, so nutzt doch der Google-Konzern diese Bibliothek im Eigeneinsatz – das sollte für sich sprechen.

Die ersten Beispiele beschäftigen sich mit der symmetrischen Verschlüsselung. Das erste Beispiel (H01 AES GCM Verschlüsselung mit einem String) ist das einfachste Programm, welches aber dennoch eine vollwertige Verschlüsslung mit AAD-Daten unterstützt. In H02 Alle symmetrischen Verschlüsselungen mit einem String seht Ihr, wie einfach der Wechsel zwischen den teilweise speziellen Verfahren (neben GCM noch EAX, CTR HMAC SHA256 und CHACHA 20 POLY 1305) ist.

Die folgenden 2 Beispiele kümmern sich um den Bereich der Dateiverschlüsselung, eins davon unter Nutzung von AAD-Daten (H03 Symmetrische Verschlüsselung via Tink mit AAD-Daten und einer Datei) bzw. ohne AAD-Daten (H03 Symmetrische Verschlüsselung via Tink ohne AAD-Daten und einer Datei). Beide Beispiele sind nur für kleinere Dateien geeignet (getestet bis 1 Megabyte), da sie bei der Verschlüsselung die kompletten plaintext-Daten und ciphertext-Daten im Speicher bereithält und bei der Entschlüsselung werden die verschlüsselten und entschlüsselten Daten im Hauptspeicher des Rechners gespeichert.

Möchtet Ihr hingegen eine Dateiverschlüsselung unabhängig von der Dateigröße nutzen, dann ist das Beispiel H04 Symmetrische Streamverschlüsselung via Tink mit AAD-Daten für große Dateien für Euch genau die richtige Lösung – sofort einsetzbar und mit einer erstklassigen Verschlüsselungsroutine (AES GCM mit 256 Byte Schlüssellänge). Damit Ihr die sehr gute Verschlüsselung von Google Tink sofort nutzen könnt, habe ich das Kommandozeilenprogramm H05 Symmetrische Streamverschlüsselung via Tink mit AAD-Daten für Dateien CLI als sofort ausführbare JAR-Datei erstellt.

Ein Beispiel der selteneren Hybriden Verschlüsselung zeige ich Euch im Beispiel H06 Hybride Verschlüsselung mit AAD-Daten und einer Datei. Auch die sehr schnell durchgeführte Sicherung einer Datei mit einem HMAC ist Dank Google Tink ein Kinderspiel – das Beispiel H07 HMAC einer Datei mit Tink wird Euch überzeugen.

Eine häufigere Nutzung dürfte das Beispiel H08 Signatur einer Datei mit Tink haben, insbesondere das die ansonsten selten vorhandene Elliptische Kurve ED25519 benutzt werden kann.

Eine echte Seltenheit kann ich mit dem Beispiel H09 Determistische Verschlüsselung mit AAD-Daten via Tink einer Datei präsentieren, da diese symmetrische Verschlüsselung nur in sehr geringem Umfang im Netz zu finden ist – mit Google Tink ist die Nutzung sehr einfach.

Neben den „offiziellen“ Versionen habe ich aber noch 2 „Schmankerl“ für Euch. Da die Tink-Bibliothek keine Password Based Encryption unterstützt stelle ich Euch eine einfach zu nutzende Bibliothek namen TinkPbe.java vor, welche diese Aufgabe übernimmt und mit einer grafischen Oberfläche (H Tink Stringverschlüsselung mit PBE und GUI bzw. die englische Version) oder Konsolenanwendung (H Tink Stringverschlüsselung mit PBE Konsole) arbeitet.

Die zweite inoffizielle Nutzung dient der Prüfung einer extern erzeugten ECDSA-Signatur mit Hilfe von Tink, realisiert unter H Verify external signature in Tink (englisch).

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 zu den obigen Beispielen findet Ihr auf der eigenen Lizenz-Seite.

Letzte Aktualisierung: 20.11.2019