DEFCON 21. Las contraseñas por sí solas no son suficientes, o por qué se "rompe" el cifrado del disco y cómo se puede solucionar. Parte 1

Gracias a todos por asistir, hoy hablaremos sobre el cifrado completo del disco duro (FDE), que no es tan seguro como crees. Levante sus manos, que así encripta el HDD de su computadora. Asombroso! Pues bien, bienvenido a DefCon!



Parece que el 90% de usted usa software de código abierto para encriptar su disco para poder auditarlos. Ahora deje que aquellos que apagan la computadora si la dejan desatendida levanten la mano. Creo que alrededor del 20% de los presentes. Dime, ¿quién deja tu computadora desatendida durante varias horas? ¿Importa si está encendida o apagada? Considera que haga estas preguntas, solo asegúrate de no ser zombies y no dormir. Creo que casi todos tuvieron que abandonar su computadora durante al menos unos minutos.

Entonces, ¿por qué encriptamos nuestras computadoras? Es difícil encontrar a alguien que haga esta pregunta, por lo que creo que es realmente importante formular la motivación para acciones específicas en el campo de la seguridad. Si no hacemos esto, no podremos entender cómo organizar este trabajo.

Existe una gran cantidad de documentación para el software de cifrado de disco que describe qué hace el software, qué algoritmos usa, qué contraseñas, etc., pero casi no hay lugar para decir por qué se hace esto.

Entonces, encriptamos nuestra computadora porque queremos controlar nuestros datos, queremos garantizar su confidencialidad y que nadie pueda robarlos o cambiarlos sin nuestro conocimiento. Queremos decidir por nosotros mismos qué hacer con nuestros datos y controlar lo que le sucede.

Hay situaciones en las que simplemente debe garantizar la confidencialidad de los datos, por ejemplo, si es un abogado o un médico con información confidencial del cliente. Lo mismo se aplica a la documentación financiera y contable. Las empresas deben informar a los clientes de la filtración de dicha información, por ejemplo, si alguien dejó una computadora portátil desprotegida en un automóvil que fue robado, y ahora esta información confidencial puede estar disponible gratuitamente en Internet.

Además, es necesario controlar el acceso físico a la computadora y garantizar su protección contra el impacto físico, porque el FDE no ayudará si alguien toma el control físico de su computadora.

Si queremos garantizar la seguridad de la red, necesitamos controlar el acceso a la computadora del usuario final. No podremos construir una Internet segura sin garantizar la seguridad de cada usuario final.



Entonces, descubrimos los aspectos teóricos de la necesidad de cifrado de disco. Sabemos cómo generar números aleatorios para garantizar la seguridad de la clave, cómo controlar los modos de cifrado de bloque utilizados para cifrar completamente una unidad, cómo heredar de forma segura una clave para contraseñas, de modo que podamos asumir que la "misión se ha completado", como dijo el presidente Bush, hablando en a bordo de un portaaviones. Pero sabes que esto no es así, y todavía tenemos mucho que hacer para completarlo.

Incluso si tiene una criptografía perfecta y sabe que es casi imposible de descifrar, en cualquier caso debe implementarse en una computadora real, donde no tiene análogos de "cajas negras" confiables. Un atacante no necesita atacar la criptografía si está tratando de descifrar el cifrado de disco completo. Para hacer esto, solo necesita atacar la computadora o engañar al usuario para que lo convenza de proporcionar una contraseña, o usar el keylogger keylogger, etc.

El uso real del cifrado no coincide con el modelo de seguridad FDE. Si observa el software diseñado para el cifrado de disco completo, puede ver que sus creadores prestaron mucha atención a los aspectos teóricos del cifrado. Citaré un extracto de la documentación técnica del sitio web TrueCrypt: "Nuestro programa no protegerá ningún dato en la computadora si el atacante tiene acceso físico a la computadora antes de iniciar o durante TrueCrypt".



En principio, todo su modelo de seguridad tiene este aspecto: "si nuestro programa cifra correctamente el disco y lo descifra correctamente, habremos hecho nuestro trabajo". Pido disculpas por el texto que se muestra en la siguiente diapositiva, si le resulta difícil leerlo, lo haré yo mismo. Estos son extractos de la correspondencia entre los desarrolladores de TrueCrypt y la investigadora de seguridad Joanna Rutkovskaya sobre los ataques del "limpiador".

TrueCrypt: “Nunca consideramos la posibilidad de ataques de hardware, simplemente asumimos lo peor. Después de que el atacante "trabajó" en su computadora, solo tiene que dejar de usarla para almacenar información confidencial. El procesador criptográfico TPM no puede prevenir ataques de hardware, por ejemplo, usando keyloggers.

Joanna Rutkovskaya les preguntó: "¿Cómo puedo determinar si un atacante" trabajó "en su computadora o no, porque no lleva una computadora portátil todo el tiempo?", A lo que los desarrolladores respondieron: "No nos importa cómo el usuario garantiza la seguridad" tu computadora Por ejemplo, un usuario podría usar un candado o colocar una computadora portátil mientras está fuera en un gabinete con cerradura o caja fuerte ". Joanna les respondió muy correctamente: "Si voy a usar un candado o una caja fuerte, ¿por qué necesito su encriptación?"



Por lo tanto, ignorar la posibilidad de tal ataque es un engaño, ¡no podemos hacer eso! Vivimos en el mundo real donde existen estos sistemas con los que interactuamos y que utilizamos. No hay forma de comparar 10 minutos de un ataque realizado solo usando software, por ejemplo, desde una unidad flash, con algo que puede realizar manipulando el sistema únicamente con hardware.
Por lo tanto, no importa lo que digan, la seguridad física y la resistencia a los ataques físicos dependen del FDE. No importa lo que esté renunciando a su modelo de seguridad, y al menos si no quieren asumir la responsabilidad, deben explicarle al usuario de manera muy clara y honesta con qué facilidad se puede piratear la protección que ofrecen.

La siguiente diapositiva muestra el diagrama de arranque FDE abstracto, que es utilizado por la mayoría de las computadoras modernas.



Como sabemos, el gestor de arranque se carga desde el SSD / HDD utilizando el BIOS y se copia en la memoria principal a lo largo de la ruta de transferencia de datos Controlador de almacenamiento - Bus PCI - Hub de controlador de plataforma. El gestor de arranque le pide al usuario información de autenticación, como una contraseña o una clave de tarjeta inteligente. Luego, la contraseña pasa del teclado al procesador, después de lo cual el gestor de arranque toma el control, mientras que ambos componentes, el sistema operativo y la clave, permanecen en la memoria para garantizar la transparencia del proceso de cifrado y descifrado del disco. Esta es una vista idealizada del proceso, lo que sugiere que nadie intentará intervenir de ninguna manera. Creo que conoces varias formas de hackear esto, así que enumeremos las cosas que podrían salir mal si alguien intenta atacarte. Divido los ataques en 3 niveles.

El primero no es invasivo, no requiere la captura de su computadora, ya que se lleva a cabo utilizando una unidad flash con malware. No necesita "desmontar" el sistema si puede conectar fácilmente cualquier componente de hardware como la tarjeta PCI, ExpressCard o Thunderbolt, el último adaptador de Apple que proporciona acceso abierto al bus PCI.

Un ataque de segundo nivel requerirá un destornillador, ya que es posible que deba eliminar temporalmente un componente del sistema para tratarlo en su propio entorno pequeño. El tercer nivel, o "ataque de soldador", es el más difícil, aquí físicamente agrega o modifica componentes del sistema, como chips, para intentar descifrarlos.

Un tipo de ataque de primer nivel es un gestor de arranque comprometido, también conocido como el ataque de la "doncella malvada", donde debe ejecutar un código no cifrado como parte del proceso de arranque del sistema, algo que puede descargar utilizando su información personal para que Acceda al resto de los datos cifrados en su disco duro. Hay varias formas diferentes de hacer esto. Puede cambiar físicamente el gestor de arranque en el sistema de almacenamiento. Puede comprometer el BIOS o cargar un BIOS malicioso que toma el control del adaptador del teclado o los procedimientos de lectura del disco y los modifica para que sean resistentes a la extracción del disco duro. Pero, en cualquier caso, puede modificar el sistema para que cuando el usuario ingrese su contraseña, escriba en el disco sin cifrar, o haga algo similar, no será difícil para el pirata informático.

Puede hacer algo similar a nivel del sistema operativo. Esto es especialmente cierto si no utiliza el cifrado de disco completo, sino el cifrado de contenedor.



Esto también puede ocurrir cuando el sistema es atacado por un exploit, gracias al cual el atacante obtiene derechos de root y puede leer la clave desde la memoria principal, este es un método de ataque muy común. Esta clave puede almacenarse en el disco duro como texto sin formato para su posterior uso por parte de un atacante o enviarse a través de la red al sistema de comando y control.
Otra posibilidad es una intercepción de teclado usando un keylogger, ya sea software, hardware o algo exótico, como una cámara con aguja o, por ejemplo, un micrófono que graba los sonidos que acompañan las pulsaciones de teclas del usuario e intenta averiguar qué es. llaves Es difícil prevenir dicho ataque, porque potencialmente incluye componentes que están fuera del sistema.



También me gustaría mencionar los ataques de recuperación de datos, mejor conocidos como ataques de arranque en frío. Si hace 5 años preguntaba incluso a personas muy conocedoras de la computadora cuáles eran las características de seguridad de la memoria principal, dirían que cuando se apaga la alimentación, los datos desaparecen muy rápidamente.

Pero en 2008, Princeton publicó una excelente investigación, que descubrió que, de hecho, incluso a temperatura ambiente, había muy poca pérdida de datos en la memoria RAM durante varios segundos. Y si enfría el módulo a temperaturas criogénicas, puede obtener unos minutos, durante los cuales solo se produce una ligera degradación de los datos en la memoria principal.



Por lo tanto, si su clave está en la memoria principal y alguien ha eliminado los módulos de su computadora, pueden atacar su clave descubriendo dónde está en la memoria principal en claro. Existen ciertos métodos para contrarrestar esto a nivel de hardware, por ejemplo, borrar a la fuerza el contenido de la memoria cuando se apaga o reinicia, pero esto no ayudará si alguien simplemente saca el módulo y lo coloca en otra computadora o en una parte dedicada del equipo para extraer el contenido de su memoria.
Finalmente, existe la posibilidad de acceso directo a la memoria. Cualquier dispositivo PCI en su computadora tiene la capacidad de leer y escribir el contenido de cualquier sector en la memoria principal en el modo normal. Pueden hacer cualquier cosa.



Esto se desarrolló incluso cuando las computadoras eran mucho más lentas y no queríamos que el procesador central "cuidara" cada transferencia de datos al dispositivo desde la memoria principal. Por lo tanto, los dispositivos obtienen acceso directo a la memoria, el procesador puede darles instrucciones que simplemente pueden completar, pero los datos permanecerán en la memoria siempre que los necesite.

Este es el problema, porque los dispositivos PCI pueden reprogramarse. Muchas de estas cosas tienen firmware grabable, que simplemente puede actualizar a algo hostil. Y esto puede poner en peligro la seguridad de todo el sistema operativo, ya que permitirá cualquier forma de ataque, incluso modificar el sistema operativo o extraer la clave directamente. En informática forense, hay equipos diseñados para tales cosas en el proceso de investigación de delitos: conectan algo a su computadora y extraen el contenido de la memoria. Puede hacerlo utilizando FireWire, ExpressCard o Thunderbolt ... De hecho, todos estos son puertos externos que proporcionan acceso al bus interno del sistema.

Por lo tanto, sería bueno si fuera posible no almacenar la clave en la RAM, porque de alguna manera mostramos que la RAM no es muy confiable desde el punto de vista de la seguridad. ¿Hay alguna tienda de claves dedicada o equipo criptográfico especial? Si lo hay Puede usar aceleradores criptográficos para que el servidor web procese más transacciones SSL por segundo. Son resistentes a interferencias no autorizadas. Las autoridades de certificación de CA tienen cosas que almacenan sus claves de alto secreto, pero en realidad no están diseñadas para operaciones de alto rendimiento, como el uso de cifrado de disco. Entonces, ¿hay otras opciones?

¿Podemos usar el procesador como una especie de módulo criptográfico de pseudo hardware? ¿Podemos calcular algo así como un algoritmo de cifrado de bloque AES simétrico en una CPU, usando solo algo como registros de CPU en lugar de RAM?



Intel y AMD agregaron nuevas y excelentes instrucciones a los procesadores que se encargaron de ejecutar AES, por lo que ahora puede realizar operaciones de cifrado de bloques primitivas con solo una simple instrucción de compilación. La pregunta es, ¿podemos dejar nuestra clave en la memoria, o podemos realizar este proceso sin depender de la memoria principal? Los procesadores x86 modernos tienen un conjunto bastante grande de registros, y si alguno de ustedes realmente intentó agregar todos los bits que hay en estos, obtendrá aproximadamente 4 kilobytes. Por lo tanto, podemos usar algunas CPU para almacenar claves y crear espacio para operaciones de cifrado.

Una posibilidad es utilizar registros de hardware para depurar puntos de interrupción. En un procesador Intel típico hay 4 de estos registros, y en el sistema x64 cada uno de ellos contendrá un puntero de 64 bits. Esto es 256 bits de espacio en disco potencial que la mayoría de la gente nunca usará. Por supuesto, la ventaja de usar registros de depuración es su privilegio, porque solo el sistema operativo puede acceder a ellos. Aquí hay otras ventajas interesantes, por ejemplo, cuando apaga la alimentación del procesador cuando apaga el sistema o entra en modo de suspensión, realmente pierde todo el contenido del registro, por lo que no puede temer un "reinicio en frío".

Un chico de Alemania, Tilo Muller, implementó una cosa similar llamada TRESOR para Linux en 2011. Probó el rendimiento de dicho sistema y concluyó que no funciona más lento que con el cálculo AES regular por software.
¿Qué tal almacenar dos claves de 128 bits en lugar de una clave? Esto nos llevará a un espacio de criptomódulo más grande. Podemos almacenar una clave maestra que nunca abandona el procesador cuando se inicia, y luego cargar y descargar las versiones clave que necesitamos para realizar operaciones adicionales y resolver tareas adicionales.

El problema es que podemos almacenar nuestro código o nuestras claves fuera de la memoria principal, pero la CPU aún procesará el contenido de la memoria de todos modos. Por lo tanto, el uso de DMA, tecnología de acceso directo a memoria, sin pasar por el procesador central u otras manipulaciones, le permite cambiar el sistema operativo y guardar su volcado fuera de los registros de memoria principal o, si se utilizan métodos más exóticos, fuera de los registros de depuración.

¿Podemos hacer algo con un ángulo de ataque DMA? Al final resultó que, sí, podemos. Recientemente, como parte de las nuevas tecnologías para aumentar la virtualización del servidor, por razones de rendimiento, a las personas les gusta poder conectar, por ejemplo, un adaptador de red a un servidor virtual, por lo que debe conectarse a través de un hipervisor.



La tecnología IOMMU ha sido diseñada de tal manera que puede aislar un dispositivo PCI en su propia partición de memoria pequeña, desde donde no puede leer y escribir arbitrariamente en cualquier parte del sistema. Esto es ideal: podemos configurar los permisos de IOMMU para proteger nuestro sistema operativo o lo que usamos para procesar claves, y protegerlos del acceso aleatorio.

Nuevamente, nuestro amigo de Alemania, Tilo Muller, implementó una versión de TRESOR en un visor de microbit llamado BitVisor, que hace esto. Esto le permite ejecutar un sistema operativo separado y acceder de forma transparente al cifrado del disco, y lo mejor es que no necesita preocuparse ni saber nada al respecto. , , IOMMU , - .



, , , , , . , – , .
, , . , RAM , , . , , , , SSH-, PGP-, « », .



: RAM? , , , , .



, , , – , ! 2010 RAM. — : “clear”, , , . 10-50 . , , , -, – 10% . , . , , ? , TPM , , , .

-, , . , , - CPU.

, . , , , . , , - . , ? , . ? , - , , , “ ” , .



, . , , . — Trusted Platform Module – , . , , , , TPM . , «» , . , , . , , .



? -. - , - «» , . , .

, – -, . , RSA/SHA1, , , - . - , . , .

23:10



DEFCON 21. , «» . Parte 2

Gracias por quedarte con nosotros. ¿Te gustan nuestros artículos? ¿Quieres ver más materiales interesantes? Apóyenos haciendo un pedido o recomendándolo a sus amigos, un descuento del 30% para los usuarios de Habr en un análogo único de servidores de nivel de entrada que inventamos para usted: toda la verdad sobre VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps de $ 20 o cómo dividir el servidor? (las opciones están disponibles con RAID1 y RAID10, hasta 24 núcleos y hasta 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps hasta la primavera sin cargo al pagar durante medio año, puede ordenar aquí .

Dell R730xd 2 veces más barato? ¡Solo tenemos 2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV desde $ 249 en los Países Bajos y los Estados Unidos! Lea sobre Cómo construir un edificio de infraestructura. clase utilizando servidores Dell R730xd E5-2650 v4 que cuestan 9,000 euros por un centavo?

Source: https://habr.com/ru/post/es435176/


All Articles