¿Cómo afecta el esquema de relleno a la seguridad del cifrado?

10

Después de profundizar un poco más en la criptografía, me pregunto qué impacto tendrán los diferentes esquemas de relleno tienen la seguridad de un algoritmo de cifrado. Tomemos AES-128 en modo CBC como ejemplo, porque actualmente estoy trabajando con este.

Wikipedia enumera varios esquemas de relleno, pero no menciona nada sobre el impacto en la seguridad de elegir uno de ellos . La biblioteca en la que estoy trabajando actualmente con suministros relleno PKCS5 , que ni siquiera se menciona en el artículo de Wikipedia. Obviamente, hay varios esquemas de relleno más por ahí.

No soy un experto en criptografía, así que quizás esté totalmente equivocado, pero no puedo ver cómo los diferentes esquemas de relleno deberían tener un impacto significativo. ¿Básicamente soy libre de elegir uno y ser feliz o hay algunas cosas que debo considerar?

    
pregunta Demento 04.05.2011 - 21:44
fuente

2 respuestas

8

Respuesta corta : no te preocupes. En la mayoría de los casos, la elección del método de relleno no importa.

Respuesta más larga: por qué no importa. Siempre que utilice las prácticas de diseño criptográfico adecuadas, en particular, siempre que los textos cifrados estén debidamente autenticados, no conozco ninguna la forma en que la elección del relleno afecta a la seguridad (con una excepción, consulte a continuación).

Es cierto que si no autenticas los textos cifrados, entonces puede haber ataques, como explica @Thomas. Por otra parte, si los textos cifrados no se autentican correctamente, es probable que tenga muchos otros problemas, por lo que no debe culpar de esto al esquema de relleno. Los criptógrafos saben que si encripta algo, realmente debe autenticar el texto cifrado ; no hacerlo es un error clásico de novato que puede abrir graves fallas de seguridad .

En resumen, si está siguiendo buenas prácticas de cifrado, la opción de relleno no debería importar mucho para la seguridad (y si no está siguiendo buenas prácticas de cifrado, puede que tenga problemas más graves).

La excepción: un caso en el que sí importa. Bien, ahora estamos bajo la letra pequeña. Aquí es donde admito que lo anterior es un poco de una simplificación excesiva. Existe una situación en la que la elección del relleno puede ser muy importante para la seguridad: la resistencia al análisis del tráfico.

El cifrado no oculta la longitud de los mensajes que se cifran: el mensaje cifrado generalmente revela la longitud (o la longitud aproximada) del mensaje que se cifró. En algunos contextos, esto puede ser altamente problemático. Por ejemplo, hay contextos en los que revelar información sobre la longitud revela toda la tienda: revela lo que intentabas mantener confidencial. (Consulte, por ejemplo, los sorprendentes ataques de canales laterales de Chen et al en aplicaciones web cifradas con SSL . Entre otros cosas, mostraron que un intruso que observa las longitudes de los paquetes de red mientras el usuario está escribiendo en una consulta de búsqueda web puede inferir cuál era la consulta de búsqueda. Creo que Google solucionó el problema, pero fue un ejemplo sorprendente de revelación. un riesgo general que se conocía previamente.)

Si está en un contexto donde la longitud del mensaje revela información confidencial, entonces tiene un problema. La defensa estándar es rellenar los mensajes antes del cifrado, de modo que la longitud del texto cifrado no revele nada sobre la longitud de los mensajes. Una forma de hacer esto es rellenar todos los mensajes a una longitud fija, antes de cifrarlos. Otra forma (menos segura) de hacerlo es agregar un relleno de una longitud aleatoria, con suficiente relleno aleatorio para que el ruido aleatorio oculte la señal e impida que un atacante obtenga información suficiente sobre la longitud para hacer cualquier daño. Por lo tanto, en un contexto en el que necesitamos evitar el análisis del tráfico, el diseño del esquema de relleno se vuelve crítico, y los esquemas de relleno estándar probablemente no serán suficientes: es posible que tenga que hacer algo especial.

    
respondido por el D.W. 05.05.2011 - 09:38
fuente
6

Puede haber algunos problemas con el relleno:

  • Se puede usar un relleno aleatorio para algún tipo de esteganografía, lo que permite a un remitente corrupto filtrar datos secretos para su uso por parte de terceros. Esto no es una gran preocupación en situaciones normales, pero aún se ve mal.

  • Ha habido algunos ataques al relleno manejo . A saber, el receptor podría descifrar y encontrar un relleno válido, o alguna basura de apariencia aleatoria. Si el receptor informa un código de error distinto en este último caso, entonces este es un "oráculo de relleno" y se puede usar para atacar el sistema. Esto se ha explicado detalladamente en Vaudenay en 2002 y fue la base de la ataque de Oracle Padding oracle ocho años después.

Los modos de cifrado sin relleno (por ejemplo, CTR) evitan la complejidad y la sobrecarga de red del relleno.

    
respondido por el Thomas Pornin 04.05.2011 - 22:25
fuente

Lea otras preguntas en las etiquetas