B04 AES-Verschlüsselung Modus ECB Padding String

Wenn Ihr beim vorherigen Beispiel mit dem plaintext gespielt und beispielsweise einen plaintext mit 15 Zeichen Länge genutzt habt, erhieltet Ihr eine heftige Fehlermeldung („Exception in thread „main“ javax.crypto.IllegalBlockSizeException: Input length not multiple of 16 bytes“). Das bedeutet im Klartext, das der plaintext immer ein Vielfaches von 16 Zeichen (das ist die Blocklänge) lang sein muß, was nur selten der Fall ist.

Um diese Vorgabe zu erfüllen könntet Ihr beispielsweise den plaintext am Ende mit Leerzeichen auffüllen, um einen plaintext mit einem Vielfachen von 16 zu erzeugen. Das könnte bei der Entschlüsselung aber zu Problemen führen, wenn auch die Leerzeichen am Ende der Nachricht eine Bedeutung haben.

Für diese Fälle wurde ein Padding-Verfahren („auffüllen“) in den Algorithmus eingebaut, der automatisch den plaintext auffüllt und bei der Entschlüsselung das Padding auch wieder entfernt. Ein Erläuterung dazu ist in der Wikipedia zu finden.

Hier der Steckbrief:

Verschlüsselungssteckbrief
Name des Verfahrens AES/ECB/PKCS5PADDING
Langname ECB Electronic Code Book
Art der Chiffre Blockchiffre
Blocklänge (Byte) 16
Schlüssellänge (Byte/Bit) 16/128, 24/192, 32/256
Padding genutzt Ja
Sicherheit nur bei kleinen Datenmengen
Besonderes Nein

Das nachfolgende Programm ist nahezu identisch mit dem Programm B03_AesEcbNopaddingString.java, allerdings wurde inZeile 44 der Name der Variablen inklusive des Textes angepaßt und der plaintext in Zeile 38 ist 15 Zeichen lang.

Auch hier gilt die nachfolgende Sicherheitswarnung und die Erläuterung ist identisch zum Beispiel B03.

Bitte die nachfolgende Routine nicht für den Echteinsatz nutzen, da sie aus kryptographischer Sicht sehr angreifbar ist ! Eine optische Erläuterung für meine Einschätzung findet Ihr in der Rubrik Unsicherheit unter G01 ECB Pinguin.

Auf der Konsole ist dieses Ergebnis zu sehen – „trotz“ einem 15 Zeichen langen plaintext ver- und entschlüsselt das Programm einwandfrei:

 

Damit Ihr die Verschlüsselungs- bzw. Entschlüsselungsroutinen in Euren eigenen Programmen einfach nutzen könnt habe ich den Verschlüsselungs-/Entschlüsselungs-Programmteil in eigene Methoden ausgelagert – die eigentliche Programmfunktionalität bleibt unverändert.

Bitte die nachfolgende Routine nicht für den Echteinsatz nutzen, da sie aus kryptographischer Sicht sehr angreifbar ist !

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

Letzte Aktualisierung: 18.11.2018