¿Remedio por no haber llenado el disco con datos aleatorios?

4

El llenado de un disco duro grande con / dev / urandom antes del cifrado puede ser extremadamente lento (incluso con netcat, varias instancias en paralelo, etc.) y por esta razón, estoy seguro de que muchos usuarios omiten este consejo incluso si es práctica recomendada e insegura para omitir.

Mi pregunta es: supongamos que un usuario ha omitido este paso de llenar el disco con / dev / urandom, o solo lo ha hecho parcialmente. ¿Se pueden seguir algunos pasos después de que el HDD se haya cifrado para que sea más difícil realizar el criptoanálisis en el disco?

Supongo que el mejor escenario para el atacante sería si el usuario llenara todo el disco con / dev / zero y luego lo cifrara. ¿Ayudaría entonces si el usuario llenara todo el disco (después de haberlo cifrado) escribiendo / dev / zero en algún archivo arbitrario en el sistema de archivos, y luego eliminara el archivo para recuperar el espacio 'usado'? ¿No eliminaría esto los bytes nulos perdidos en el dispositivo y reemplazaría todo con datos cifrados?

Entonces, en el caso más realista, ¿ayudaría llenar el disco con datos después de que se haya cifrado? ¿Si no, porque no? Imagine que el disco se ha llenado a la máxima capacidad después de que se haya cifrado. ¿Qué valor tiene entonces el llenado previo con datos aleatorios antes de que se retenga el cifrado? Todos los datos / dev / urandom se han sobrescrito de todos modos, ¿qué valor tiene esa operación en esa etapa?

Si es necesario, suponga que el sistema es: x86-64 GNU / Linux con LUKS, AES de 256 bits, disco duro mecánico (¿esto cambia con el SSD? Por favor, incluya el motivo, ya que sería interesante).

Escenario de ataque: la unidad de disco duro es robada y obtenida por el atacante, lo que evita ataques como la criada malvada y los ataques de arranque en frío.

    
pregunta ioctlvoid 24.01.2013 - 17:03
fuente

3 respuestas

3
  

¿Se pueden seguir algunos pasos después de que se haya cifrado el HDD?   ¿Es más difícil realizar criptoanálisis en el disco?

Como el disco ya está encriptado, sugeriría llenar el espacio restante del sistema de archivos con datos (aleatorios), por ejemplo. pipe / dev / urandom a un archivo (que puede eliminar después). De esa manera, el dispositivo subyacente (bloque) se llenará con datos cifrados ("ruido").

  

Entonces, en el caso más realista, ayudaría llenar el disco con datos después de que   ha sido encriptado?

Sí, ayudaría, ver más arriba.

  

Imagina que el disco se ha llenado a la máxima capacidad después de que se haya llenado.   cifrado, ¿qué valor tiene entonces el llenado previo con datos aleatorios antes   cifrado de retención?

Bueno, hacerlo antes de que el cifrado inicial lo proteja de olvidarlo después. Es decir. configurando el cifrado completo del disco por la mañana y "llenaré el disco más tarde esta noche", pero luego el disco se robó entre ellos.

Nota: incluso después de completar el cifrado completo del disco, es posible que el controlador del disco no pueda poner en cero todas las partes del disco, consulte Data_remanence para obtener más detalles sobre ese tema.

    
respondido por el ckujau 27.01.2013 - 08:36
fuente
3

La única información que un atacante debería poder extraer de un disco cifrado que no haya tenido una sobrescritura aleatoria completa es un límite superior en la cantidad de información cifrada en el disco.

Para decirlo de otra manera, una buena solución de cifrado de disco no debería depender de la incapacidad de un atacante para determinar los límites de la partición cifrada para cualquier propiedad de seguridad.

Estoy de acuerdo en que llenar el disco con datos después del cifrado debería producir el resultado que espera (siempre que la partición cifrada pueda expandirse dinámicamente para llenar todo el disco): todos los datos en el disco ahora deben parecer aleatorios (partición menos tabla etc dependiendo de la solución).

    
respondido por el Michael 26.01.2013 - 19:24
fuente
1
  

El llenado de un disco duro grande con / dev / urandom antes del cifrado puede ser extremadamente lento (incluso con netcat, varias instancias en paralelo, etc.) y por esta razón, estoy seguro de que muchos usuarios omiten este consejo incluso si es práctica recomendada e insegura para omitir.

En los nuevos kernels de Linux, el dispositivo /dev/urandom usa ChaCha20 para la aleatoriedad, en lugar de una función de mezcla SHA1 más lenta, lo que permite que sea muy, muy rápido. Si no tienes un kernel más nuevo, una solución simple es usar OpenSSL o dm-crypt para crear aleatoriedad.

OpenSSL es el más simple, requiere solo un comando:

openssl aes-128-ctr -nosalt -in /dev/zero -out /dev/sdX -k $(head -c16 /dev/urandom | base64)

Usar dm-crypt es más complejo, pero a menudo puede hacer uso de criptografía acelerada por el kernel más rápida:

cryptsetup open -M plain -c aes-cbc-plain -s 128 -d /dev/urandom /dev/sdX wipeme
cat /dev/zero > /dev/mapper/wipeme
cryptsetup close wipeme
  

Mi pregunta es: supongamos que un usuario ha omitido este paso de llenar el disco con / dev / urandom, o solo lo ha hecho parcialmente. ¿Se pueden seguir algunos pasos después de que el HDD se haya cifrado para que sea más difícil realizar el criptoanálisis en el disco?

Primero que nada, el problema no es que facilite el criptoanálisis . AES no es tan débil que los simples gigabytes de texto sin formato conocido generan una recuperación de claves. Algunos de los PRNG más potentes generan datos aleatorios al cifrar un flujo nulo con una clave aleatoria. El problema es más bien la fuga de metadatos a nivel del sistema de archivos (saber qué bloques son gratuitos y cuáles no), lo que revela el diseño general de su sistema de archivos. Esto puede filtrar no solo la cantidad de espacio que se ha utilizado, sino también mucha más información, como el tamaño de los archivos, las posiciones, las posibles acciones previas realizadas en los archivos y más. Ha habido casos de arrestos y condenas basadas solo en los metadatos de un archivo cifrado (por ejemplo, tamaños).

  

Supongo que el mejor escenario para el atacante sería si el usuario llenara todo el disco con / dev / zero y luego lo cifrara. ¿Ayudaría entonces si el usuario llenara todo el disco (después de haberlo cifrado) escribiendo / dev / zero en algún archivo arbitrario en el sistema de archivos, y luego eliminara el archivo para recuperar el espacio 'usado'? ¿No eliminaría esto los bytes nulos perdidos en el dispositivo y reemplazaría todo con datos cifrados?

Eso sería bueno, sí. No es perfecto, porque todavía habrá áreas del sistema de archivos que no se borrarán aunque se rellenen. Por ejemplo, el usuario no root no puede sobrescribir el último 5% del espacio en un sistema de archivos ext4 de forma predeterminada. Y ningún usuario puede sobrescribir ciertos campos de metadatos que pueden no inicializarse cuando se crea el sistema de archivos, y dejarlos como bytes nulos. Tendría que examinar el formato en disco y las técnicas de formato utilizadas por su sistema de archivos en particular para comprender qué campos pueden no estar inicializados y pueden filtrar información confidencial. Como a menudo esta es una tarea tan compleja, generalmente es más fácil comenzar con un dispositivo de bloque aleatorio.

Una publicación muy útil para comprender el problema al dejar algunos datos sin encriptar es aquí . La publicación trata específicamente sobre TRIM en los SSD, pero el efecto es el mismo, como los bloques de ceros de TRIM que se liberan, filtrando información sobre qué bloques son gratuitos y cuáles no. Esto también puede responder a su pregunta sobre cómo se aplica esto a los SSD.

    
respondido por el guest 18.11.2017 - 04:10
fuente

Lea otras preguntas en las etiquetas