¿Cifrado autenticado versus suma de comprobación / hash cifrada y contenida?

10

Entonces leí enlace y enlace y parece que no estoy siguiendo el concepto.

De los ejemplos simples proporcionados, parece que el cifrado autenticado pretende demostrar que el mensaje no se ha modificado, es decir, que un atacante no ha modificado la carga útil de un contenedor cifrado mediante una manipulación que no requiere la clave. .

Mi pregunta es la siguiente: si el objetivo es simplemente garantizar que la carga / contenido no se haya modificado (nuevamente, el atacante no tiene la clave, está modificando el mensaje a nivel binario), ¿por qué no? ¿No es suficiente para la verificación incluir un hash final de la carga útil dentro del contenedor cifrado?

En el caso de un mensaje AES cifrado, el mensaje se recibe, la clave simétrica precompartida se utiliza para descifrar y el mensaje (datos) y el hash se evalúan. La carga útil / datos se hashean y se comparan con el hash recibido. Si coinciden, tenemos una probabilidad extremadamente alta de que el mensaje no haya sido manipulado.

Entonces ... mi pregunta es esta. Eso parece realmente simple, y sin embargo, las personas mucho más experimentadas e inteligentes que yo han pasado mucho tiempo en el cifrado autenticado, ¿qué me falta?

Gracias de antemano.

    
pregunta JP Anderson 16.04.2012 - 05:19
fuente

2 respuestas

8

Descripción general. Su propuesta no es segura (consulte más abajo para análisis de criptoanálisis). Es por eso que no es una alternativa razonable al cifrado autenticado.

Un poco más de fondo. ¿Por qué necesitamos cifrado autenticado? Se debe a que el cifrado sin autenticación no es seguro . Muchos desarrolladores no lo saben, por lo que terminan con un uso inseguro de la criptografía.

Es posible utilizar manualmente tanto un algoritmo de cifrado como un algoritmo de autenticación. Por ejemplo, puede usar la construcción de encriptación y luego autenticación utilizando un esquema de encriptación seguro y una autenticación de mensaje segura ( Algoritmo MAC). Sin embargo, esto requiere un esfuerzo adicional por parte del desarrollador.

El cifrado autenticado se diseñó como una primitiva única que es fácil de usar para los desarrolladores y que proporciona toda la autenticación necesaria (para que no tenga que hacer algunas cosas adicionales para proporcionar seguridad). Por lo tanto, es útil para la seguridad. Algunos esquemas de cifrado autenticados también tienen el beneficio de un mejor rendimiento que el cifrado por separado y luego la autenticación, pero eso es una consideración secundaria.

Lea No use cifrado sin autenticación para obtener más detalles sobre este tema.

Criptoanálisis de su esquema. Usted propuso que adjuntáramos un hash del mensaje antes de cifrar: en otras palabras, C = Cifrar ( K , M || H (M) ), donde || representa la concatenación de cadenas de bits. Este esquema no es seguro contra los ataques de texto sin formato seleccionado, con muchos algoritmos de cifrado. Por ejemplo, mostraré un ataque contra su propuesta, si está utilizando el cifrado en modo CBC (aunque el ataque también se aplica a muchos otros modos de cifrado).

Tenga en cuenta que si un hombre en el medio trunca un texto cifrado que se generó con el modo CBC (en un límite de bloque), el destinatario no notará el truncamiento, y después del descifrado recibirá una versión truncada del mensaje. que el remitente estaba tratando de enviar. Así que, con ese fondo, aquí está el ataque. Deje que Alice sea el remitente, Bob el destinatario y asuma una configuración de texto sin formato elegido.

El atacante elige un mensaje M que desea que Alice envíe: pero Alice se niega a enviarlo (tal vez M dice "transferir $ 100 de mi cuenta y dárselo a El atacante ", o algo así. El atacante construye algún otro valor X de modo que Alice esté dispuesta a enviar M ' = M || H (M) || X (tal vez X dice "¡es broma! no te atrevas"). El atacante convence a Alice para que cifre y envíe M '. Esto significa que Alice va a transmitir el texto cifrado C ' = Encriptar ( K , M' || H (M ') ) = Encriptar ( K , M || H (M) || X || H (M ') ). El atacante juega al hombre en el medio, captura C ' y lo trunca mientras está en vuelo. Llamemos a C '' el texto cifrado truncado. Bob recibirá C '' , lo descifra y luego verifica el hash. Si el atacante eligió el punto de truncamiento correctamente, luego de descifrar, Bob obtiene M || H (M) , verifica el hash, ve que el hash es correcto y concluye que Alice debe haber enviado M .

En otras palabras, al final de este ataque, Bob concluye que Alice autorizó la transmisión del mensaje M , pero nunca lo hizo. (Ella autorizó la transmisión de algún otro mensaje, pero no M .)

Si esto es o no una vulnerabilidad grave de seguridad dependerá del contexto en el que se use, como el formato del mensaje M . Pero, empíricamente, en al menos algunas aplicaciones, este tipo de ataque podría representar un serio peligro para la aplicación. Por lo tanto, los criptógrafos consideran que este no es un buen esquema de propósito general.

Dado que hay buenos esquemas que han sido cuidadosamente examinados y comprobados como seguros para uso general, los criptógrafos recomendarían usar uno de esos esquemas de propósito general (como el cifrado autenticado, o la construcción de cifrar y luego autenticar), y en particular, no utilice el que mencionó.

    
respondido por el D.W. 17.04.2012 - 00:00
fuente
2

Puede consultar este curso de criptografía de la Universidad de Stanford . Hay una conferencia sobre el cifrado autenticado y se muestra por qué debe usar el cifrado autenticado y cómo debe usarlo. También se muestra cómo diferentes enfoques pueden ser defectuosos (es decir, SSH o SSL).

Debería usar el cifrado autenticado y debería usarlo correctamente, lo que también significa que no debe inventarlo ni implementarlo usted mismo.

Usar el cifrado autenticado es tan fácil como usar el modo de cifrado adecuado (es decir, CCM, GCM, EAX). Desafortunadamente, es bastante común que los marcos no incluyan esos modos de operación, por lo que es posible que necesite usar bibliotecas adicionales.

    
respondido por el pgolen 16.04.2012 - 07:08
fuente

Lea otras preguntas en las etiquetas