Aller au contenu
uencoder

Padding

Le remplissage (padding) est le mécanisme qui étend le texte en clair jusqu'à une frontière de bloc ; les schémas courants incluent PKCS#7, le remplissage par zéros et ISO 10126, tandis que les modes AEAD n'en ont pas besoin.

Objectif

Il permet aux chiffrements par blocs de traiter des textes clairs dont la longueur n'est pas un multiple de la taille de bloc.

Mécanisme

Des octets sont ajoutés au texte clair pour que la longueur totale soit un multiple de la taille de bloc, et retirés au déchiffrement. PKCS#7 ajoute n octets de valeur n (réversible et auto-vérifiant). Le remplissage par zéros est simple mais ne distingue pas le remplissage des données. Les modes en flux (CTR) et AEAD (GCM) n'exigent aucun remplissage.

Cas d’usage

  • Remplissage AES-CBC/PKCS#7
  • Remplissage RSA OAEP
  • Schémas historiques de remplissage par zéros
  • Exemples pédagogiques

Exemples

  • entrée
    3 bytes + PKCS#7 (block=8)
    Output
    appends 05 05 05 05 05

    Pads with five 0x05 bytes

Erreurs courantes

Zero padding cannot distinguish trailing data zeros from padding
Use a self-describing scheme such as PKCS#7
Padding errors fall to Padding Oracle attacks
Use AEAD or constant-time validation

Termes associés

Outils associés

References