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)Outputappends 05 05 05 05 05Pads 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
PKCS#7 Padding
Le remplissage PKCS#7 ajoute n octets de valeur n (1 ≤ n ≤ taille_de_bloc) à la fin du texte clair ; réversible et auto-vérifiable, c'est le remplissage de facto du mode CBC. GLOSSAIRE
Block Cipher
Un chiffrement par blocs est un chiffrement symétrique qui chiffre et déchiffre des blocs de longueur fixe (p. ex. 128 bits) et nécessite un mode d'opération pour traiter des données de longueur arbitraire. GLOSSAIRE
CBC (Cipher Block Chaining)
Le mode CBC applique un XOR entre le bloc de texte chiffré précédent et le texte en clair courant avant le chiffrement, si bien que des blocs identiques donnent des textes chiffrés différents ; il exige un IV aléatoire mais ne fournit aucune authentification d'intégrité. GLOSSAIRE