H Tink Stringverschlüsselung mit PBE und GUI

Note: the english version of this article is found here: H Tink String encryption using PBE and GUI.

Die Verschlüsselungsroutinen von Google Tink sind aus kryptographischer Sicht hervorragend programmiert, allerdings betrachten die Entwickler das Ganze wie ein geschlossenes System. Aus Sicherheitsgründen kapseln sie das ganze System und verhindern damit, das der Anwender in direkten Kontakt zum Programmcode und zu den verwendeten Schlüsseln kommt.

So werden die von Tink erzeugten Schlüssel in „KeysetHandle“ verpackt, welche möglichst sicher aufzubewahren sind. Möchte der Anwender nun verschlüsselte Daten mit einem anderen Anwender austauschen, so steht er vor dem Problem, zuerst die Schlüsseldatei „sicher“ auszutauschen – was z.B. bei einem persönlichen Kontakt geschehen kann. In der Realität ist dieses Vorgehen nur selten möglich und es wäre doch toll, wenn die beiden Anwender ein Passwort (=Schlüssel) telefonisch vereinbaren und dann die damit verschlüsselten Daten per Mail austauschen. Für diesen Fall hat sich die „Password Based Encryption“ (oder kurz PBE) durchgesetzt, welche eine ein manuell erfasstes Passwort solange mit Hashwerten bearbeitet, bis das finale Passwort sehr sicher ist. Für Einzelheiten schaut Ihr Euch am Besten die Seite A08 PBKDF2-Verfahren an.

Leider ist in der aktuellen Implementierung von Tink kein PBE-Verfahren vorgemerkt und viele haben sich dann von Tink abgewendet – bis jetzt. Nachfolgend stelle ich Euch eine eigene Java-Klasse namens TinkPbe.java vor, welche mit nur 4 zusätzlichen Zeilen von Programmcode die komplette Ver- und Entschlüsselung mittels Tink durchführt.

Die praktische Anwendung zeige ich Euch anhand einer einfachen grafischen Oberfläche, welche die Ver- und Entschlüsselung sehr einfach durchführt. Danach seht Ihr den Programmcode der TinkPbe.java-Klasse. Der komplette Programmcode ist wie immer in meinem Github-Archiv vorhanden – viel Spass bei der Nutzung. Solltet Ihr eine Konsolenanwendung wünschen, schaut einfach in mein Beispiel H Tink Stringverschlüsselung mit PBE Konsole.

Beachtet bei der Nutzung allerdings zwei Ratschläge: zum Einen sind die unverschlüsselten Texte in Strings gespeichert und daher ggfls. für längere Zeit im Hauptspeicher Eures Rechners vorhanden [den können intelligente Trojaner auslesen und an einen Angreifer senden] und zum Anderen: die Verschlüsselung ist derart gut das es KEINE Möglichkeit gibt, einen verschlüsselten Text ohne Kenntnis des Passwortes zu entschlüsseln [Passwort weg, Daten weg].

Die 4 zusätzlichen Zeilen findet Ihr in den Zeilen 53, 54, 83 (Verschlüsselung) und 97 (Entschlüsselung):

Hier ist nun die Klasse TinkPbe.java, welche die ganze Arbeit übernimmt:

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 auf der eigenen Lizenz-Seite.

Letzte Aktualisierung: 20.11.2019