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

Kommen wir jetzt zu einem kleinen Highlight der Webseite – der AES Betriebsmodus GCM in Verbindung mit ergänzenden Daten (üblicherweise abgekürzt mit „AAD“). In den Beispielen B12 und B13 habe ich Euch einen recht sicheren Verschlüsselungsmodus vorgestellt, der durch die mögliche Nutzung von ergänzenden Daten noch besser wird.

Was sind nun „ergänzende Daten“ ? Eigentlich möchte ich, das die Daten nach einer Verschlüsselung nicht mehr lesbar sind. Stellt Euch aber jetzt einmal vor, Ihr habt ein paar Excel-Tabellen gemacht und verschlüsselt, könnt jetzt aber 2 oder mehr Tabellen nicht mehr auseinander halten und müsstet nun erst einmal alle Dateien entschlüsseln, um die richtige Datei zu finden. Das ist der Punkt, an dem Ihr Euch über ergänzende Daten freuen könntet (z.B. durch einen Kommentar „Berechnung Haus mit Balkon“).

Was ist die Besonderheit der „ergänzenden Daten“ beim Modus GCM ? Es gibt 2 Besonderheiten – Nummer 1 besagt das diese ergänzenden Daten im Klartext zusammen mit den verschlüsselten Daten verteilt werden. Die zweite Besonderheit ist noch wichtiger: die ergänzenden Daten werden mit in Berechnung des Hashwertes einbezogen, der die Daten vor einer (gewollten oder ungewollten) Veränderung schützt.

Worauf muss ich bei dieser Nutzung achten ? Die wichtigste Regel lautet: der Empfänger der Nachricht benötigt nicht nur das Passwort, den Initialisierungsvektor und die verschlüsselten Daten, sondern zusätzlich die ergänzenden Daten in unveränderter Form. Wurden die ergänzenden Daten auch nur durch ein zusätzliches Leerzeichen verändert gibt es keine Möglichkeit einer Entschlüsslung.

Das Beispiel bietet Euch in den Zeilen 123 und 124 die Möglichkeit, durch schlichtes Auskommentieren eine mutwillige Veränderung der ergänzenden Daten auf dem Weg vom Absender zum Empfänger zu simulieren. Die Auswirkung ist dramatisch – das Programm stürzt gnadenlos ab (ein fertiges Programm kann natürlich die ausgelösten Exceptions abfangen und entsprechend darauf reagieren :-).

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.

Sind alle Daten korrekt sehr Ihr auf der Konsole diese Ausgabe:

Sollten aber die ergänzenden Daten verändert sein, gibt es diese heftige Fehlermeldung:

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

Letzte Aktualisierung: 19.11.2018