B16 AES Modus GCM Kein Padding Zufalls-GCM Nonce Aad PBKDF2 Base64-Kodierung File

Das nachfolgend gezeigte Programm erfüllt schon sehr viele Anforderungen an eine sichere Verschlüsselung. Ich nutze den AES Betriebsmodus GCM, erzeuge einen Zufalls GCM Nonce, die Verwendung von ergänzenden Daten („AAD“) ist möglich und das verwendete Passwort wird durch den PBKDF2-Algorithmus mehrere tausend Male der Hash-Routine unterworfen. Zur Weitergabe der verschlüsselten Daten (z.B. per Mail) werden die AAD-Daten und der komplette Verschlüsselungs-Datensatz in eine Datei geschrieben und später wieder eingelesen.

Solltet Ihr eine Variante mit Stringverschlüsselung wünschen, schaut Euch das Programm B15… String an, dort wird ein Klartext verschlüsselt und später wieder entschlüsselt.

Hier der Steckbrief des Verfahrens:

Verschlüsselungssteckbrief
Name des Verfahrens AES/GCM/NOPADDING
Langname GCM Galois_Counter Mode
Art der Chiffre Blockchiffre, auch Stream-Chiffre
Blocklänge (Byte) 16
Schlüssellänge (Byte/Bit) 16/128, 24/192, 32/256
Padding genutzt Nein
Sicherheit sicher bei Nutzung von unterschiedlichen Initialvektoren
Besonderes Benötigt einen Initialvektor, der als Zufallszahl erzeugt wird. Möglich ist auch die Verbindung eines Nonce mit einem fortlaufenden Zähler. Zusätzlich können ergänzende Daten (AAD) genutzt werden.

Zum Test solltet Ihr eine einfache Textdatei mit dem Namen „b16_test.txt“ anlegen, welche Ihr z.B. hier herunterladen könnt. Im Beispiel B05 ist beschrieben, wo die Datei in Eclipse liegen sollte.

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.

Die Ausgabe auf der Konsole ist deutlich kürzer:

Wer sich die erzeugte Datei in einem Hex-Editor anschaut erkennt deutlich, dass die AAD-Daten dort im Klartext stehen:

Alle Quellcodes zur symmetrischen Verschlüsselung findet Ihr zum Download in meinem Github-Repository, welches Ihr über diesen Link erreicht:
https://github.com/java-crypto/B-Symmetrische-Verschluesselung.

Die Lizenz zum obigen Beispiel findet Ihr auf der eigenen Lizenz-Seite.

Letzte Aktualisierung: 13.01.2019