¿Cómo usar ESSIV para evitar ver patrones repetidos?

1

Estoy intentando implementar un sistema de archivos encriptado.

El sistema de archivos consta de sectores de 512 bytes. Encripto / desencripto los contenidos de un sector de la siguiente manera:

  1. Calcule la suma SHA256 de la contraseña de usuario. Esto da como resultado una clave de usuario de 32 bytes.

  2. Calcule el ESSIV para un sector calculando la suma SHA256 de la Clave de usuario y el Número de sector. Esto da como resultado una clave de sector de 32 bytes.

  3. La clave de sector XOR con los datos de sector simple para obtener los datos de cifrado de la siguiente manera:

sector[0] = sector[0] ^ key[0]
sector[1] = sector[1] ^ key[1]
...
sector[31] = sector[31] ^ key[31]

sector[32] = sector[32] ^ key[0]
sector[33] = sector[33] ^ key[1]
...
sector[63] = sector[63] ^ key[31]

...
sector[511] = sector[511] ^ key[31]

Al volver a leer el sector más tarde, YO XO la clave de sector con los datos de cifrado para recuperar mis datos de sector simple.

Ahora, se supone que el enfoque ESSIV previene los ataques de marca de agua. Sin embargo, cuando examino los sectores cifrados correspondientes a un archivo muy grande (> > 512-bytes) lleno de solo ceros ( 0x00 ) ...

  • Veo que no hay dos sectores cifrados de este archivo grande que sean idénticos, ¡lo cual es genial!
  • Veo patrones repetitivos (cada patrón de 32 bytes de longitud) dentro del mismo sector, ¡lo cual no es tan bueno! Obviamente, estos vienen de XOR paso arriba.

Mi pregunta es doble:

  1. ¿Puede un adversario romper el cifrado del sistema de archivos anterior copiando los archivos cuidadosamente construidos en este sistema de archivos? O, ¿es suficiente el esquema anterior?

  2. Cuando copio el archivo anterior a un volumen de TrueCrypt, no veo patrones repetitivos. (Utilicé AES y RIPEMD-160 como algoritmos de cifrado y hash, respectivamente.) Entonces, aparte de usar AES, ¿qué puedo hacer para lograr un resultado similar a TrueCrypt a través de alguna operación simple y liviana similar a XOR?

pregunta Harry 23.02.2014 - 15:33
fuente

2 respuestas

1

Su enfoque es sensato (incluso si siempre debemos recordar la primera ley de la criptografía: " no haga su propio "). Si puedo sugerir algunos giros leves:

  1. Calcule la suma de comprobación SHA256 de algunos sal fijos (mejor si depende del sistema de archivos, por ejemplo, una secuencia aleatoria almacenada allí) y la contraseña del usuario. Esto evita que un atacante tenga una base de datos de sumas de comprobación SHA256 de contraseñas comunes. La sal se generará al azar cuando (alguna vez) el sistema de archivos se formatee, y se almacene en la estructura del sistema de archivos (Sal de contraseña). El atacante tiene que volver a generar su base de datos SHA256 de nuevo después de obtener acceso al sistema de archivos (lo que significa que es fuerza bruta con cero ventaja).

  2. No utilice la clave de usuario para cifrar el disco. Es mejor utilizar una clave aleatoria de 32 bytes y cifrar esta clave con la contraseña hash. La seguridad es la misma, pero de esta manera, si el usuario cambia su contraseña, no necesita descifrar y volver a cifrar todo el sistema de archivos, solo descifrar y volver a cifrar la clave.

  3. En lugar de usar lo que es efectivamente el modo ECB para la codificación de sector, use el CTR más lento pero más seguro, usando la clave de sector yor como IV:

    SHA256 (SectorNumber, DiskKey) = > IV para este sector.

    SHA256 (IV, 0) = > Clave XOR para bytes 0..31

    SHA256 (IV, 1) = > Clave XOR para bytes 32..63

    ...

    SHA256 (IV, 15) = > Clave XOR para bytes 480..511

respondido por el LSerni 24.02.2014 - 21:44
fuente
0

Obtuve un contacto con XEX .

PS: siéntete libre de compartir mejores respuestas o ideas, y en su lugar seleccionaré la tuya como final.

    
respondido por el Harry 23.02.2014 - 16:50
fuente

Lea otras preguntas en las etiquetas