Zum Inhalt springen
uencoder

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 bytes
    Output
    appends 03 03 03

    Pads 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

Verwandte Begriffe

Verwandte Tools

References