PKCS#7 Padding
Das PKCS#7-Padding hängt n Bytes des Werts n (1 ≤ n ≤ Blockgröße) an das Ende des Klartexts an; umkehrbar und selbstprüfend, ist es das De-facto-Standard-Padding des CBC-Modus.
Zweck
Liefert ein umkehrbares, prüfbares Padding, damit der Entschlüssler die wahre Klartextlänge bestimmen und Padding-Fehler erkennen kann.
Mechanismus
Ist die Klartextlänge bereits ein Vielfaches der Blockgröße, wird dennoch ein volles Padding-Block (jedes Byte mit dem Wert der Blockgröße) angehängt, um die Umkehrbarkeit zu wahren. Beim Entschlüsseln wird der Wert n des letzten Bytes gelesen und die letzten n Bytes entfernt, nachdem geprüft wurde, dass alle den Wert n haben. Eine fehlgeschlagene Prüfung zeigt einen korrumpierten oder manipulierten Geheimtext an.
Anwendungsfälle
- Standard-Padding von AES-CBC
- CMS/PKCS#7-Nachrichtenformate
- Java PKCS5Padding (äquivalent zu PKCS7)
- OpenSSL-Standard-Padding
Beispiele
- Eingabe
block=16, data=13 bytesOutputappends 03 03 03Pads with three 0x03 bytes
Häufige Fehler
- Non-constant-time padding verification falls to Padding Oracle attacks
- Use AEAD, or compare padding in constant time