B15 AES Modus GCM Kein Padding Zufalls-GCM Nonce Aad PBKDF2 Base64-Kodierung String

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 per Base64-Kodierung in einen String verwandelt.

Solltet Ihr eine Variante mit kompletter Dateiverschlüsselung wünschen, schaut Euch das Programm B16… Datei an, dort wird eine Klartextdatei 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.

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 Konsole zeigt die folgende Ausgabe. Bitte beachtet, das innerhalb des Programms die sensiblen Arrays gelöscht werden:

Die AAD-Daten werden ebenfalls der GCM-internen Hash-Prüfroutine unterworfen. Wenn Ihr testweise die AAD-Daten auf dem Weg zum Empfänger ändert (z.B. in Zeile 162 den Kommentarvermerk entfernt) erhaltet Ihr diese Fehlermeldung:

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