Padding
El relleno (padding) es el mecanismo que extiende el texto plano hasta un límite de bloque; los esquemas comunes incluyen PKCS#7, relleno con ceros e ISO 10126, mientras que los modos AEAD no lo necesitan.
Propósito
Permite que los cifradores de bloque procesen textos planos cuya longitud no es múltiplo del tamaño de bloque.
Mecanismo
Se añaden bytes al texto plano para que la longitud total sea múltiplo del tamaño de bloque, y se retiran al descifrar. PKCS#7 añade n bytes de valor n (reversible y autoverificable). El relleno con ceros es simple pero no distingue relleno de datos. Los modos de flujo (CTR) y AEAD (GCM) no requieren relleno.
Casos de uso
- Relleno AES-CBC/PKCS#7
- Relleno RSA OAEP
- Esquemas heredados de relleno con ceros
- Ejemplos didácticos
Ejemplos
- entrada
3 bytes + PKCS#7 (block=8)Outputappends 05 05 05 05 05Pads with five 0x05 bytes
Errores comunes
- 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
Términos relacionados
PKCS#7 Padding
El relleno PKCS#7 añade n bytes de valor n (1 ≤ n ≤ tamaño_de_bloque) al final del texto claro; reversible y autoverificable, es el relleno de facto del modo CBC. GLOSARIO
Block Cipher
Un cifrador por bloques es un cifrado simétrico que cifra y descifra bloques de longitud fija (p. ej., 128 bits) y necesita un modo de operación para procesar datos de longitud arbitraria. GLOSARIO
CBC (Cipher Block Chaining)
El modo CBC aplica XOR del bloque de texto cifrado anterior con el texto plano actual antes de cifrar, de modo que bloques idénticos producen cifrados distintos; requiere un IV aleatorio pero no aporta autenticación de integridad. GLOSARIO