¿Es posible evitar un ataque físico en el cifrado completo del disco?

14

He estado investigando algunos métodos para garantizar que las claves de cifrado del disco no puedan ser robadas, y uno que encontré se llama TRESOR. Con este parche de kernel, puede crear una partición que está encriptada usando AES, y las claves se almacenan en los cachés de la CPU en lugar de en la RAM. Al principio, pensé que esto era genial, pero luego de más preguntas, llegué a la conclusión de que cualquier dato descifrado que todavía esté almacenado en la RAM es vulnerable a un volcado de arranque físico en frío. Una forma potencial de que esto sea seguro es cifrar el contenido de la RAM del sistema operativo utilizable TRESOR y luego crear una partición cifrada, ya que las claves estarán en la RAM cifrada y las claves de la RAM en el caché de la CPU. Todavía no sé si este es un método seguro o qué tan bueno es. ¿Es posible incluso evitar un ataque físico en el cifrado completo del disco? Si es así, ¿cómo puedo hacerlo?

    
pregunta Clay Freeman 20.01.2014 - 14:09
fuente

5 respuestas

8

Para que la CPU procese realmente los datos, los datos deben estar en texto claro en algún momento. TRESOR utiliza los registros de la CPU, probablemente más difíciles de leer que la RAM para el atacante físico, pero su alcance está limitado al clave de cifrado : esa clave está en los registros, pero los datos que están cifrados o descifrados todavía están en la RAM. Solo hay un puñado de registros en la CPU, simplemente no hay espacio para más datos.

Al usar un disco RAM respaldado por TRESOR, tiene "archivos cifrados" con acceso rápido (ya que es RAM), pero aún son "archivos" en la vista del kernel y el código de la aplicación. Los datos serán descifrados en la RAM en algún momento.

Si realmente desea que todos la RAM esté encriptada en todo momento, entonces la opción es utilizar una CPU que incluya el hardware para realizar dicha encriptación (hay algunas CPU con tarjetas inteligentes que hacen eso, pero no conozco una CPU similar a una PC, o para hacer una máquina virtual completa cuya CPU virtual esté implementada como TRESOR con cifrado y descifrado automático en cada acceso a la memoria. El modo de cifrado real necesitaría una reflexión profunda (no es fácil cifrar los datos de forma segura y, al mismo tiempo, permitir un descifrado rápido con acceso aleatorio). No tengo conocimiento de ningún prototipo; Pero es teóricamente factible. Un buen proyecto para un estudiante (incluso podría ser el resultado principal de un doctorado). Sería terriblemente lento.

    
respondido por el Thomas Pornin 20.01.2014 - 17:02
fuente
4

Bueno, hay un viejo dicho de Microsoft (lo sé, no el mejor fuente de seguridad) que dice:

  

Ley # 3: si un malvado tiene acceso físico sin restricciones a tu computadora, ya no es tu computadora.

¿Y por qué es eso aplicable a su caso? Porque si tiene suficiente criptografía, su disco duro está seguro si alguien lo roba. Pero si la persona puede tener acceso a sus chips de RAM inmediatamente después de apagar su servidor, puede intentar recuperar las claves en el escenario que acaba de decir.

El almacenamiento de las claves en el caché de la CPU lo minimizaría, como dijiste, pero los datos sin cifrar aún podrían estar disponibles en los chips de RAM.

¿Y qué pasa si él tiene acceso a su computadora antes de que la encienda? ¿Está considerando la protección física antes de arrancar? de lo contrario, el malo puede crear una pantalla de inicio de sesión falsa y capturar su contraseña incluso si todo su sistema está cifrado. O puede adjuntar algunos keylogger. O puede adjuntar algún dispositivo y clonar sus chips de RAM desde el principio. O él puede cambiar su BIOS y hacer eso también. O ... bueno, eche un vistazo al catálogo de la NSA, por ejemplo, para tener algunas ideas del posible ataque.

Entonces tu computadora tiene que estar físicamente segura. Y con eso, significa que no solo el acceso físico debe ser difícil (por ejemplo, si se le da suficiente tiempo para que desaparezca el contenido de la RAM), sino también que no puede capturar la radiación magnética de la CPU o la placa base o el teclado, ni ruidos Imágenes de usted escribiendo o moviendo el mouse.

Si realmente necesita ese nivel de seguridad que para eliminar los chips de memoria RAM de su computadora, probablemente necesite más seguridad de la que espera.

Actualizar

Después de tu comentario:

  

Quiero protección para que los datos de mis clientes no puedan recuperarse físicamente del servidor mientras se está ejecutando, solo se haya apagado recientemente o se haya apagado por un tiempo.

Creo que puedo ampliar un poco mi respuesta, solo pensando en este aspecto físico.

  • Para proteger sus datos después de que su servidor se apague por un tiempo:

El cifrado es tu amigo. Si alguien saca un HDD que está cifrado con un algoritmo fuerte y una contraseña segura, tomará una fuerza bruta para atacarlo por siempre.

Puntos a considerar:

a) todo el cifrado del disco requiere que usted o algún programa "escriba" la contraseña al montarla. Si eres tú, tendrás que estar disponible para encenderlo cada vez. Si es un programa, dónde almacenar la clave

b) cifrar solo datos / carpetas, existe el mismo problema "dónde almacenar la clave para activarlo".

  • Para proteger los datos después de que el servidor se apagó recientemente o durante la ejecución:

Mientras se ejecuta, necesitaría que la ruta entre HDD - RAM - CPU esté encriptada, como lo explica la respuesta de Thomas Pornin, y que no conozco ningún servidor con una CPU capaz de hacerlo. Y debería preocuparse por la compatibilidad con algunos periféricos, ya que PCI, PCI Express, FireWire, etc., confían en DMA para acelerar las cosas. Por lo tanto, podría tener problemas de rendimiento.

Una forma más fácil de evitar eso es, bueno, proteger físicamente su servidor. Como en una habitación segura, donde el servidor se apaga y se calienta a cierta temperatura (para evitar que alguien le robe los chips de memoria RAM). O incluso destruir chips con picos de explosión o voltaje controlados. Cualquier cosa que haga que sea más difícil para alguien entrar e irse con su servidor bajo sus brazos.

Y, por supuesto, todo esto deja de lado el hecho de que muchos ataques se pueden hacer de forma remota, sin ninguna presencia física, solo usando software, etc.

    
respondido por el woliveirajr 20.01.2014 - 17:39
fuente
1

Supongo que OP está construyendo un servidor y enviándolo a la instalación de colo.

La seguridad física incluiría:

  • incrustar RAM, CPU y circuitos asociados con un compuesto PMMA / Al2O3 (aislante eléctrico, conductor térmico y muy duradero)
  • opcionalmente, incluya circuitos de hombre muerto en la CPU y la RAM de la bomba nuclear
  • desconecte todos los conectores externos, excepto la alimentación y las NIC necesarias, pero no modifique la apariencia externa
  • instale varios interruptores de intrusión de mayúsculas y minúsculas, cada uno de los cuales mata el poder cuando se activan (aún mejor, haga que usen la CPU y la RAM a menos que se desarmen de forma remota)
  • deshabilitar la capacidad de administración remota

La seguridad del software incluiría:

  • arranque de forma remota usando dropbear para ssh a initramfs
  • después del inicio, sobrescriba las ranuras de llaves LUKS y el encabezado con bits aleatorios (nada de eso es necesario hasta el reinicio)
  • al reiniciar, ssh a initramfs y restaurar los encabezados y encabezados de LUKS
  • hacer copias de seguridad seguras con frecuencia

Eso debería hacerlo, excepto contra adversarios muy determinados y hábiles.

    
respondido por el mirimir 24.01.2014 - 05:47
fuente
1

El cifrado del disco físico es un gran paso para detener una gran cantidad de hacks simples. Enseño ciencias de la computación y seguridad cibernética, pero en ocasiones las políticas extremadamente restrictivas del sistema escolar me hacen trabajar en torno a su seguridad. Debido a que el sistema escolar no usa cifrado de disco, puedo obtener acceso de administrador local en la máquina de Windows en menos de 5 minutos gracias al acceso físico. No podría hacer esto si estuvieran utilizando el cifrado completo del disco.

    
respondido por el CSTeach 04.11.2018 - 19:06
fuente
0

Algunos sistemas de archivos admiten DAX, que significa acceso directo. Es una función que omite la memoria caché de la página, por lo que un sistema de archivos cifrado con TRESOR no perderá mucho si no hay datos sin cifrar cuando lees y escribes en él. Puede poner un archivo en tmpfs y crear un dispositivo de bucle invertido y cifrarlo con TRESOR, luego formatearlo con un sistema de archivos compatible con DAX. Este será un ramdisk inmune de arranque frío encriptado.

También puede crear un sistema de archivos tmpfs muy grande y colocar un archivo enorme en él, ocupando la mayor parte de su memoria (90 o 95%), hasta que su sistema sea tan lento con tan poca memoria que no pueda utilizarse. Luego cifre el archivo residente en memoria con TRESOR y utilícelo como un archivo de intercambio. Esto permitirá efectivamente que la mayoría de su memoria permanezca encriptada, mientras que una pequeña cantidad que se use con mayor frecuencia permanecerá sin cifrar. Experimenté con esto yo mismo, y al menos en una máquina virtual, puedo reducirlo a unos 256 MiB de memoria no cifrada. Si modificas el kernel y juegas con suficientes sysctls, deberías poder reducirlo hasta 64.

Algunos proyectos en los que podría estar interesado:

CryptKeeper: Mejora de la seguridad con RAM encriptada

RamCrypt: Cifrado de espacio de direcciones basado en el kernel para procesos en modo de usuario

Un intérprete de bytecode para la ejecución segura de programas en una memoria principal no confiable

Si solo necesita cifrar el espacio de memoria de procesos individuales como nginx, php-fpm, etc., entonces RamCrypt es absolutamente lo que desea. Es una versión modificada de TRESOR, funciona para el kernel 3.19 (aunque es muy adecuado para portar a kernels más nuevos, con solo algunos rechazos que involucran nuevos archivos de encabezado y algunas funciones que cambian de nombre), y tiene un impacto de rendimiento aceptable.

La memoria DDR3 y DDR4 admite una función llamada "codificación de memoria". Se utiliza para reducir el di / dt excesivo (interferencia de 1s y 0s sucesivos en el bus) y hace que los ataques de arranque en frío clásicos sean más difíciles. No sé qué algoritmo utiliza, o si es criptográficamente seguro o no. Lea las páginas 26-30 en Secreto del motor de administración de Intel para saber cómo se ha sorprendido al menos en una instancia de ingeniería inversa .

    
respondido por el forest 03.04.2016 - 05:39
fuente

Lea otras preguntas en las etiquetas