¿Cuál es la ventaja de XTS sobre el modo CBC (con difusor)?
On noviembre 30, 2020 by adminTengo algunos problemas para entender la «ventaja» de AES-XTS en comparación con CBC con difusor.
Leí algo sobre FileVault , en este trabajo se mencionan los dos modos de operaciones XTS y CBC (con difusor) y las ventajas de XTS.
Ambos modos cifran unidades de datos casi de la misma manera. Para CBC, el número de sector se usa de alguna manera para construir el IV, para XTS, hay un «valor de ajuste», que también incluye (de alguna manera) el desplazamiento del bloque, por lo que cada bloque de datos se puede cifrar de forma independiente (tiene sentido al cifrar discos duros / particiones). Realmente no puedo ver la ventaja de XTS.
Ahora, escriben lo siguiente sobre XTS:
Hay varias ventajas sobre las alternativas como AES en CBC: no se requiere un vector de inicialización (la clave de ajuste se puede derivar del número de bloque); cada bloque se cifra de forma diferente (ya que el valor de ajuste será diferente); y, a diferencia de AES-CBC, AES-XTS evita que un atacante cambie un bit específico en una unidad de datos al modificar cada entrada AES con una versión diferente del ajuste cifrado.
Tal vez solo comparen XTS con CBC (sin difusor) … si es así, ¿alguien conoce alguna ventaja de XTS?
Y alguien puede explicar la segunda ventaja: «AES- XTS evita que un atacante cambie un bit específico en una unidad de datos al modificar cada entrada AES con una versión diferente del ajuste cifrado. «?
Comentarios
- ¿Qué ' s " diffuser "? " el número de sector es de alguna manera " ¿cómo? No ' describiste el esquema con claridad. Si el algoritmo es predecible, esto conduce a debilidades y un algoritmo impredecible es caro.
- @CodesInChaos Creo que la referencia es al difusor Elephant ' de Microsoft utilizado en BitLocker ( download.microsoft.com/download/0/2/3/… – advertencia: descarga PDF ).
- Bienvenido a Cryptography Stack Exchange. Su pregunta se migró aquí porque no está directamente relacionada con el desarrollo de software (el tema de Stack Overflow) y está más relacionada con el tema aquí. También registre su cuenta aquí para poder comentar y aceptar una respuesta.
Responder
XTS frente a CBC no difuso. El problema aquí es la maleabilidad . Tanto XTS como CBC evitan que un atacante obtenga información sobre datos cifrados. Sin embargo, ninguno logra completamente evitar que un atacante manipule datos cifrados.
Sin embargo, podría decirse que es más fácil manipular un texto cifrado CBC (no difundido) que manipular un texto cifrado XTS. Supongamos que un atacante sabe que un mensaje dice
«bla bla Dale a Alice \ $ 400 … bla bla bla «.
Si este mensaje está encriptado usando CBC, el atacante puede manipular el texto cifrado de tal manera que ahora lo descifrará a
«¡bla, bla! ^% @ ^^ Dale a Alice \ $ 800 bla, bla, bla»
Los \ $ 400 se han convertido en \ $ 800. A esto se refiere su cita sobre «AES-XTS evita que un atacante cambie un bit específico en una unidad de datos». Aquí escribo! ^% @ ^^ para indicar que el bloque anterior de 16 bytes se convertirá en un galimatías una vez descifrado, y este galimatías estará fuera del control del atacante.
Por otro lado, usando XTS evita este ataque. El atacante puede corromper un mensaje convirtiendo cualquier bloque de 16 bytes en un galimatías aleatorio, pero no podrá tener el mismo grado de control que tenía en el ejemplo de CBC.
Pero Microsoft decidió no usar XTS de todos modos. La razón es que la capacidad de corromper un bloque de 16 bytes aún podría ser dañina. Aquí está la cita del documento dchest vinculado:
Por ejemplo, podría haber un archivo de configuración (o entrada de registro) con un valor que, cuando se establece en 0, crea un agujero de seguridad en el sistema operativo. En el disco, la configuración se parece a «enableSomeSecuritySetting = 1». Si el inicio del valor cae en un límite de 16 bytes y el atacante aleatoriza el valor de texto sin formato, existe una $ 2 ^ {16} $ de que los primeros dos bytes del texto plano será 0x30 0x00, que es una cadena que codifica el valor ASCII 0.
(Esta cita se refiere al cifrado modificable LRW, pero el cifrado modificable XEX utilizado en XTS tiene el mismo problema).
Añadiendo un difusor. Usando un difusor es la solución de Microsft a este problema.La idea aquí es «mezclar» el texto sin formato antes de cifrarlo para que un atacante «no pueda cambiar \ $ 400 a \ $ 800. Entrometerse en parte del texto cifrado cambiará casi todo el texto sin formato, no solo pequeñas partes de él.»
Esto suena bien, pero hay un truco: nadie sabe realmente si el difusor de Microsoft es realmente seguro. Hasta donde yo sé, no ha recibido ningún análisis formal publicado por los criptógrafos. Esto significa que debe ser escéptico acerca de confiar en él. Microsoft reconoce esto:
En el lado de la desventaja, el difusor es un nuevo algoritmo no probado, y esto inevitablemente conduce a preguntas. Sin un amplio escrutinio público y un análisis de un algoritmo, existe un escepticismo justificado sobre su seguridad. La gente es reacia a confiar en nuevos algoritmos. Entonces, ¿por qué elegimos esta opción de todos modos? En nuestro análisis final, decidimos que esta era la mejor opción para nuestro producto. El aumento de rendimiento sobre las alternativas fue lo suficientemente importante como para superar las desventajas de un nuevo algoritmo de difusor. El tiempo dirá si tomamos la decisión correcta.
La conclusión. XTS es menos maleable que CBC no difundido. Sin embargo, CBC + Diffuser es probablemente menos maleable que XTS, al menos para fines prácticos.
Un aparte importante. Ni CBC ni XTS fueron diseñados para ser no maleables. Asegurarse de que no se manipulen los textos cifrados es un problema aparte, que debe resolverse mediante códigos de autenticación de mensajes (MAC), como HMAC-SHA256. Las razones por las que los MAC no se utilizan normalmente para los algoritmos de cifrado de disco completo son (1) problemas de rendimiento y (2) el uso de un MAC requiere almacenar información adicional con el texto cifrado, lo que hace que agregarlo de forma transparente sea un poco complicado.
Un término medio entre los MAC y los difusores sería utilizar un modo de cifrado de bloque ancho, como CMC, EME o HEH. Puede pensar que estos tienen un difusor «incorporado», que los hace no maleables. A diferencia del difusor de Microsoft, estos algoritmos tienen definiciones de seguridad formales y pruebas matemáticas revisadas por pares. Están seguros bajo el supuesto de que AES es seguro. Microsoft optó por no utilizarlos debido a (1) problemas de rendimiento y (2) patentes.
Comentarios
- En el contexto del cifrado de disco simple Los MAC no son ' t suficientemente buenos. Usted ' necesitará hashtree con una raíz autenticada.
- ¡¡¡Gracias por esta gran respuesta !!! esto dejó todo en claro … 5 *****
- Probablemente esto ganó ' t trabajo, pero ganó ' t ¿el problema de maleabilidad puede resolverse encriptando los mismos datos dos veces usando diferentes contraseñas y / o diferentes algoritmos? Entonces, en lugar de usar un algoritmo difusor no probado, ¿por qué no usar AES probado de nuevo?
- @Yura Eso dependerá de cómo se use AES (XTS, por ejemplo, generalmente se construye sobre AES). Si usa el modo CTR-AES dos veces, el resultado no ' t se vuelve menos maleable (voltear un poco en el texto cifrado aún cambia el bit correspondiente en el texto plano). Si usa el modo CBC-AES dos veces, aún puede realizar el mismo ataque que mencioné en mi respuesta, pero la longitud de la " basura " se duplicará. Finalmente, usar AES en un modo seguro " wideblock " sería aproximadamente tan rápido como cualquiera de estas soluciones, de todos modos. Así que también podría hacerlo.
- Actualización: Windows 10 ofrece la opción de usar el modo XTS. Actualización aún mayor / peor: en Windows 8, Microsoft QUITÓ el difusor. Entonces, Windows 8 bitlocker no ' ni siquiera tiene el difusor.
Deja una respuesta