Saltar al contenido
uencoder

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)
    Output
    appends 05 05 05 05 05

    Pads 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

Herramientas relacionadas

References