Relleno en criptografía: usos, esquemas y riesgos
Técnicas que añaden datos extra a los mensajes para ajustarlos a bloques o ocultar patrones predecibles; esquemas comunes, riesgos como padding oracle y mitigaciones.
El relleno en criptografía es la práctica de añadir datos extra al final o al principio de un mensaje para que encaje con los requisitos de un esquema de cifrado o para reducir la utilidad de fragmentos predecibles del mensaje. El relleno se usa con cifrados de bloque, algunos esquemas de clave pública y ciertos protocolos que esperan entradas de longitud fija. Un relleno correcto mantiene la estructura y la aleatoriedad, a la vez que permite recuperar el texto plano original.
Por qué se usa el relleno
Hay dos razones principales para aplicar relleno. La primera es que muchos cifrados de bloque funcionan con bloques de tamaño fijo (por ejemplo, 128 bits). Si la longitud del mensaje no es múltiplo del tamaño del bloque, el último bloque debe completarse. La segunda es que los mensajes suelen contener encabezados, pies o formatos predecibles (por ejemplo, saludos o encabezados de archivos). El relleno puede añadir entropía, hacer menos útiles para un atacante los patrones de texto conocido y ocultar la longitud exacta del mensaje.
Esquemas de relleno comunes
- PKCS#7 / PKCS#5: rellena con N bytes, cada uno igual al valor N, de modo que el receptor pueda eliminar esos N bytes sin ambigüedad.
- Relleno con ceros: completa con bytes cero; es simple, pero ambiguo si los datos originales pueden terminar legítimamente en ceros.
- ANSI X.923: ceros seguidos de un byte final que contiene la longitud del relleno.
- ISO/IEC 7816‑4: un byte 0x80 y luego ceros hasta alcanzar el límite del bloque.
- OAEP y PKCS#1: relleno aleatorizado para cifrado de clave pública (RSA) que proporciona seguridad semántica y resiste el descifrado directo sin la clave privada.
Riesgos y ataques notables
Un manejo incorrecto del relleno puede crear vulnerabilidades graves. Los ataques de oráculo de relleno aprovechan diferencias en las respuestas de error (o en el tiempo de respuesta) cuando los sistemas validan el relleno antes de descifrar o autenticar un mensaje. Estas fallas pueden permitir a un atacante descifrar textos cifrados o falsificar mensajes sin conocer la clave. Del mismo modo, los fallos en esquemas de relleno de clave pública han dado lugar a ataques adaptativos, salvo que se use relleno aleatorizado, como OAEP.
Buenas prácticas
Para evitar debilidades relacionadas con el relleno, los sistemas modernos prefieren modos de cifrado autenticado (AEAD), que combinan cifrado e integridad, de modo que el relleno solo se valida después de que pasen las comprobaciones de autenticidad. Las implementaciones deben realizar las verificaciones de relleno en tiempo constante y evitar mostrar mensajes de error diferentes. Siempre que sea posible, conviene usar algoritmos y bibliotecas de relleno bien especificados y ampliamente revisados, en lugar de crear esquemas propios.
Para una introducción y más referencias técnicas, consulta la referencia de criptografía.
Artículos relacionados
Autor
AlegsaOnline.com Relleno en criptografía: usos, esquemas y riesgos Leandro Alegsa
URL: https://es.alegsaonline.com/art/73955