H06 Hybride Verschlüsselung via Tink mit AAD-Daten für eine Datei

Die hier gezeigte Hybride Verschlüsselung ist eine Kombination von Private-/Public-Key Schlüsselpaaren und einer symmetrischen Verschlüsselung.

Was machen wir bei diesem Verfahren nun ganz genau? Wir erzeugen uns ein Schlüsselpaar (auf Basis der Elliptischen Kurve „P-256“), erzeugen einen weiteren (symmetrischen) Schlüssel (hier für AES GCM 256 Bit) und nutzen den symmetrischen Schlüssel zur Verschlüsselung der Datei. Anschließend verschlüsseln wir den symmetrischen Schlüssel mit dem Public Key des Empfängers und werfen den symmetrischen Schlüssel beim Absender direkt weg. Der Empfänger nutzt seinen privaten Schlüssel, um den symmetrischen Schlüssel zu entschlüsseln und mit diesem symmetrischen Schlüssel wird die Datei wieder entschlüsselt.

Um diese hin- und her Verschlüsselungen müsst Ihr Euch dank Google Tink nicht zu kümmern – Ihr erzeugt lediglich Euer eigenes Schlüsselpaar, verteilt den öffentlichen Schlüssel an den Absender und benötigt zur späteren Entschlüsselung nur Euren privaten Schlüssel. Einfacher geht es nicht !

Bitte beachtet, dass dieses Beispiel nur für Dateien bis zu einer Größe von 1 Megabyte genutzt werden sollte, da die gesamte (komplette) Datei in den Programmspeicher geladen wird, was insbesondere bei der späteren Entschlüsselung für Probleme und Kummer sorgen kann.

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.

Hier nun die Konsolenausgabe:

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: 28.01.2019