¿Por qué LUKS usa CBC?

5

Leí que LUKS usa AES de 256 bits con CBC de forma predeterminada. CBC, por supuesto, tiene las desventajas de que si cambia algo en el texto simple, tiene que cambiar todo lo que viene después. En el caso del cifrado del disco duro, eso suele ser de al menos unos pocos cientos de GB, a menudo varios TB. No desea volver a escribir varios TB cada vez que se cambie una palabra en un archivo de texto, obviamente.

Luego leí que LUKS resuelve este problema usando solo CBC dentro de bloques pequeños (por ejemplo, 512 Byte) que encripta independientemente uno de otro. Además de teniendo otros problemas ¿Cómo no introduce esto los problemas del BCE? ¿Es decir, preservar la estructura y ser semánticamente maleable?

¿Se elige un nuevo vector de inicialización para cada uno de esos ~ 512 bloques de bytes para que estos problemas no ocurran? Si es así: ¿Cómo se elige?

¿Por qué LUKS no usa CTR?

    
pregunta UTF-8 30.04.2017 - 23:46
fuente

2 respuestas

0

La respuesta de Liam Dennehy muestra que luks ya no usa CBC por defecto. En cuanto a por qué lo usó en lugar de CTR antes, eso es porque, bajo el modelo adversario habitual para el cifrado de disco, el CTR no es seguro para el cifrado de disco (como puede ver en Wikipedia ).

A menos que cambie la IV en cada cambio, lo que requeriría encriptar todo el disco para cada cambio, si su adversario en algún momento tuvo el texto plano y el texto cifrado de un bloque, puede descifrar ese bloque hasta que cambie el IV, ya que el cifrado CTR simplemente produce un flujo de bytes aleatorios para un bloque dado que se almacena con el texto sin formato. La única forma de hacerlo seguro sin tener que volver a cifrar todo el disco para cada cambio sería almacenar un IV por bloque (que cambiaría para cada actualización), lo que sería bastante costoso en términos de espacio en disco o requeriría grandes bloques y por lo tanto, se vuelve a cifrar mucho para cada actualización.

Tenga en cuenta que en el modo CBC, cada bloque de 512 bytes tiene su propio IV generado a partir de la clave y el número de bloque, por lo que dos bloques idénticos no serán iguales después del cifrado.

    
respondido por el user2313067 25.08.2017 - 20:46
fuente
0

Las páginas de manual en línea para cryptsetup que he encontrado todavía se refieren a una versión muy antigua, y esta puede ser la fuente de su información obsoleta.

Un compromiso el 28 de junio de 2013 (hace cuatro años a partir de esta respuesta) la página de manual actualizada para mostrar que el nuevo valor predeterminado para los dispositivos LUKS es aes-xts-plain64 , que parece estar en algún lugar entre la versión 1.6.0 y la 1.6.2.

    
respondido por el Liam Dennehy 25.07.2017 - 17:22
fuente

Lea otras preguntas en las etiquetas