Ataque de arranque en frío
En criptografía, un ataque de arranque en frío (o de menor grado, un ataque de reinicio en plataforma) es un tipo de ataque de canal lateral en el cual el atacante con acceso físico a una computadora es capaz de recuperar las llaves de cifrado durante la ejecución del sistema operativo, después de realizar el arranque en frío para reiniciar la máquina.[1][2] El ataque se basa en persistir datos pertenecientes a la memoria DRAM y a la memoria SRAM para recuperar el contenido de la memoria legible segundos a minutos después de que el control ha sido eliminado.[2][3]
Descripción
Para ejecutar el ataque, se ejecuta el arranque en frío en una computadora. El arranque en frío ocurre cuando la energía es apagada y encendida sin que el sistema operativo la apague limpiamente, o si está disponible, se presiona el botón de reinicio. Inmediatamente después, el disco extraíble se utiliza para arrancar un sistema operativo ligero, que luego se utiliza para vaciar el contenido de la memoria de pre-arranque físico en un archivo.[4] De manera alternativa, los módulos de memoria son eliminados del sistema original y rápidamente se colocan en una máquina controlada por el atacante, la cual después se arranca para acceder a la memoria. Un análisis más detallado se puede ejecutar en la información vaciada desde la memoria para encontrar información delicada, tales como las claves contenidas en dicha información (ahora están disponibles herramientas automatizadas para realizar esta tarea contra de los ataques hacia algunos sistemas de encriptación populares[5]).
El ataque puede demostrar que es efectivo en contra de los sistemas de cifrado de disco completo de varios vendedores y sistemas operativos, incluso en los lugares donde se utiliza un módulo de plataforma confiable (TPM) con procesador de cifrado seguro.[2] Esto es un problema propiamente del hardware (memoria insegura) y no un defecto de software. Aunque el enfoque de la investigación actual es el cifrado de disco, todo dato sensible almacenado en la memoria es vulnerable a ataques.[2]
![](../I/Canned-air.jpg.webp)
Con ciertos módulos de memoria, el tiempo en la ventana para un ataque se puede extender hasta una hora ya que los congelan con un refrigerante como una lata de aire comprimido. Además, como los bits desaparecen en la memoria con el tiempo, pueden ser reconstruidos, ya que desaparecen de manera predecible.[2] En el caso de las aplicaciones de cifrado de disco, pueden ser configuradas para permitir que el sistema operativo pueda iniciar sin ingresar un PIN de pre-arranque o presentar una clave de hardware (por ejemplo, BitLocker es una configuración simple que utiliza un TPM sin tener un PIN con dos factores de autenticación o una clave USB), haciendo que el plazo para el ataque no se limite en absoluto.[2]
Este no es el único ataque que permite la lectura de claves de cifrado desde memoria - por ejemplo, un ataque DMA permite acceder a la memoria por medio del canal DMA 1394. Microsoft recomienda cambiar la configuración predeterminada de Windows para prevenir esto si le representa una preocupación.[6]
La capacidad para ejecutar con éxito el ataque de arranque en frío varía considerablemente debido a los diferentes sistemas, tipos de memoria, fabricantes de memoria y características de la tarjeta madre, y es más difícil de realizar que los métodos de software o ataques DMA.[7]
Factores atenuantes
Cifrado completo de memoria
Cifrar la memoria de acceso aleatorio (RAM) (RAM) mitiga la posibilidad de que un atacante pueda obtener las claves de cifrado u otro material alojado en la memoria a través de un ataque de arranque en frío. Este acceso puede requerir cambios en el sistema operativo, aplicaciones y hardware. Un ejemplo de cifrado basado en la memoria del hardware se implementó en el Xbox de Microsoft,[8] otro ejemplo es la codificación de memoria como una característica de ciertos procesadores Intel Core.[9][10][11]
El cifrado de memoria completa basada en software es similar al almacenamiento de claves basado en CPU ya que el material clave nunca se expone a la memoria, pero es más comprensiva puesto que todos los contenidos de la memoria se cifran. Existen múltiples documentos académicos que describen los métodos de encriptación de memoria y al menos un producto comercial de PrivateCore.[12][13][14]
Recientemente, se han publicado varios trabajos destacando la disponibilidad de seguridad-mejorada x86 y procesadores de productos ARM[15][16] En ese trabajo, un procesador ARM Cortex A8 se utiliza como sustrato en el que una solución de cifrado de memoria se construye. Segmentos de procesos (por ejemplo, la pila, el código o montón) pueden cifrarse individualmente o en conjunto. Esta obra marca la primera implementación de cifrado de memoria en un procesador con propósitos generales de materia. El sistema proporciona protecciones de confidencialidad e integridad de código y datos que están cifrados en todas partes fuera de los límites de CPU.
Desmontaje de discos cifrados
La mayoría de los sistemas de encriptación de disco sobrescriben sus claves de cifrado almacenadas en caché como discos cifrados que son desmontados. Por lo tanto, garantizar que todos los discos cifrados sean desmontados (asegurados) cuando el ordenador está en una posición vulnerable a robo puede eliminar este riesgo y también representa buenas prácticas.[17] Esta mitigación, normalmente no se puede realizar con el disco del sistema en donde se está ejecutando.
Modos de cifrado avanzado
La configuración predeterminada para Bitlocker utiliza un TPM sin un arranque de PIN o clave externa, en esta configuración, la clave de cifrado del disco es obtenida del TPM transparente durante la secuencia de arranque del sistema operativo sin ninguna interacción con el usuario. Por consecuente, el ataque de arranque frío todavía puede ser ejecutado en un equipo con esta configuración, incluso cuando está apagado y aparentemente asegurado con sus llaves en el TPM, la máquina simplemente puede encenderse antes de comenzar el ataque.
La autenticación de dos factores, así como un pre-arranque de PIN o un dispositivo USB extraíble que contiene una clave de inicio con un TPM, puede utilizarse para solucionar esta vulnerabilidad en la implementación predeterminada de Bitlocker.[18][19] De este modo, se requiere una clave de inicio o PIN al encender la máquina o al despertar del modo de hibernación (modo apagado). El resultado es que una vez que el ordenador ha sido apagado durante unos minutos, ya no se podrá acceder a los datos en la memoria RAM sin una clave secreta; el ataque solo puede completarse si el dispositivo es tomado mientras sigue encendido. Ninguna protección adicional se ofrece durante modo sleep (modo de baja potencia), como la clave normalmente permanece en la memoria con los elementos de cifrado de disco completo, no se tiene que volver a ingresar cuando la máquina se reanuda.
Administración de energía
Apagar una computadora genera un número de paquetes de software cifrados que desmontan datos cifrados y eliminan claves de cifrado en la memoria. Cuando una máquina se apaga o pierde energía y el cifrado no se ha extinguido (por ejemplo, en el caso de pérdida repentina de la energía) la persistencia de datos ocurre desde decenas de segundos hasta varios minutos dependiendo de los dispositivos físicos RAM en la máquina. Asegurar que el equipo se apague cada vez que esta vulnerable a robo puede mitigar este riesgo.[2][20]
Para sistemas que utilizan el modo hibernación (estado ACPI S4), el sistema de cifrado también debe desmontar todos los discos cifrados cuando entran en estado de hibernación, o el archivo de hibernación o la partición necesitaría ser cifrada como parte del sistema de cifrado de disco.
Por el contrario, el modo sleep (estado ACPI S1, S2 and S3) es generalmente inseguro, ya que las claves de encriptación seguirán siendo vulnerables en la memoria del ordenador, permitiendo así que el ordenador lea los datos cifrados al despertar o después de leer nuevamente el contenido de la memoria. Configurar el sistema operativopara apagar o hibernar cuando no se use, en lugar de utilizar el modo sleep, puede ayudar a mitigar este riesgo.
Sistemas compatibles con TCG
Otro método de mitigación es utilizar un hardware y un sistema operativo que se ajusten a la "Plataforma TCG para el Restablecimiento de Especificaciones en un Ataque de Mitigacion ",[21] una respuesta de la industria a este ataque específico. La especificación fuerza al BIOS a sobrescribir la memoria durante el POST , si el sistema operativo no se cierra limpiamente.
Sin embargo, esta medida puede eludirse aun cuando se quite el módulo de memoria del sistema y la lectura en otro sistema bajo el control del atacante no soporte estas medidas (como se demuestra en el documento original).
Arranque
Aunque se limite las opciones del dispositivo de arranque en BIOS, puede ser más difícil arrancar otro sistema operativo,[19] muchos BIOS preguntarán al usuario por el dispositivo de arranque después de presionar una tecla específica durante el mismo. Limitar las opciones del dispositivo de arranque no impiden que el módulo de memoria sea removido del sistema y leído desde un sistema alternativo. Además, la mayoría de los chipsets permiten en la configuración del BIOS que este sea restablecido si la placa base es físicamente accesible, permitiendo a la configuración de arranque predeterminada ser restaurada incluso si está protegida con una contraseña.
Almacenamiento de claves basadas en el CPU
Los parches de núcleo para Linux tales como TRESOR[22] y Loop-Amnesia[23] modifican el núcleo de un sistema operativo para que los registros del CPU (en el caso de TRESOR, los registros de depuración x86 y en el caso de Loop-Amnesia, los registros de perfil de AMD64 o EMT4) puedan ser utilizados para almacenar las claves de cifrado, en vez de la RAM. Las claves almacenadas a este nivel no pueden ser leídas fácilmente desde el espacio de usuario y se pierden cuando la computadora es reiniciada. TRESOR y Loop-Amnesia utilizan el sistema on-the-fly para la generación de claves, debido al espacio limitado para el almacenamiento de fichas criptográficas. Por seguridad, ambos deshabilitan lo interruptores para prevenir que la información de claves se filtre a la memoria desde los registros del procesador mientras se está realizando el cifrado o descifrado, así como el bloqueo de acceso a los registros de depuración y de perfil.
Una tesis del 2010 identificó dos áreas de registros en los procesadores modernos x86, las cuales, potencialmente, pueden ser utilizadas para el almacenamiento de claves: los registros SSE, los cuales pueden ser configurados en modo privilegiado, deshabilitando todas las instrucciones SSE (y necesariamente cualquier programa que dependa de ellos) y los registros de depuración (debug), los cuales eran más pequeños pero sin tales problemas. El autor dejó el tema para que sea analizado por otros y desarrolló una distribución de prueba de concepto llamada paranoix basada en el método de registro SSE.[24] Los desarrolladores afirman que “correr TRESOR en un procesador de 64 bits que soporta AES-NI, no afecta el rendimiento comparado con la implementación genérica de AES",[25] y corre un poco más rápido que el cifrado estándar, a pesar del recalculado de la clave.[22] La ventaja principal de Loop-Amnesia, comparada con TReSoR, es que soporta el uso de múltiples unidades cifradas y la principal desventaja es la falta de soporte en x86 de 32 bits y un peor rendimiento en procesadores que no son compatibles con AES-NI.
Una segunda aproximación para combatir el ataque de arranque frío es conocido como "cache congelado" (a veces conocido como “caché como RAM”),[26] el cual deshabilita el caché L1 del procesador y lo utiliza para el almacenamiento de claves. Deshabilitar el caché de esta forma es desastrosa para el rendimiento, a tal punto que, experimentos previos parecen indicar que el sistema puede ser tan lento como para ser utilizado con cualquier propósito.[27] Los procesadores multinúcleo pueden mitigar este problema, dado que sólo un núcleo necesitaría tener su caché deshabilitada, pero aparentemente el análisis de este enfoque se encuentra estancado.
Notas
- MacIver, 2006.
- Halderman et al., 2008.
- Skorobogatov, 2002.
- Memory Research Project Source Code,.
- «Passware Software Cracks BitLocker Encryption Open». PR Newswire. 1 de diciembre de 2009. Archivado desde el original el 6 de junio de 2011. Consultado el 18 de noviembre de 2015.
- KB2516445, Microsoft, 2011,.
- Carbone, Bean y Salois, 2011.
- B. Huang "Keeping Secrets in Hardware: The Microsoft Xbox Case Study", "CHES 2002 Lecture Notes in Notes in Computer Science Volume 2523", 2003
- Igor Skochinsky (12 de marzo de 2014). «Secret of Intel Management Engine». SlideShare. pp. 26-29. Consultado el 13 de julio de 2014.
- «2nd Generation Intel Core Processor Family Desktop, Intel Pentium Processor Family Desktop, and Intel Celeron Processor Family Desktop» (PDF). junio de 2013. p. 23. Consultado el 3 de noviembre de 2015.
- «2nd Generation Intel Core Processor Family Mobile and Intel Celeron Processor Family Mobile» (PDF). septiembre de 2012. p. 24. Consultado el 3 de noviembre de 2015.
- Y. Hu, G. Hammouri, and B. Sunar "A fast real-time memory authentication protocol", "STC '08 Proceedings of the 3rd ACM workshop on Scalable trusted computing", 2008
- G. Duc and R. Keryell, "CryptoPage: an efficient secure architecture with memory encryption, integrity and information leakage protection", Dec. 2006
- X. Chen, R. P. Dick, and A. Choudhary "Operating system controlled processor-memory bus encryption" Archivado el 6 de noviembre de 2018 en Wayback Machine., "Proceedings of the conference on Design, automation and test in Europe", 2008
- M. Henson and S. Taylor "Beyond full disk encryption:protection on security-enhanced commodity processors" Archivado el 3 de febrero de 2019 en Wayback Machine., "Proceedings of the 11th international conference on applied cryptography and network security", 2013
- M. Henson and S. Taylor "Memory encryption: a survey of existing techniques" Archivado el 3 de febrero de 2019 en Wayback Machine., "ACM computing surveys (CSUR) volume 46 issue 4", 2014
- Dean, 2009.
- Bitlocker Technical Overview, 2008,.
- MacIver, 2008.
- Wired, 2008,.
- «TCG Platform Reset Attack Mitigation Specification». Trusted Computing Group. 28 de mayo de 2008. Archivado desde el original el 17 de agosto de 2011. Consultado el 10 de junio de 2009.
- TRESOR USENIX paper, 2011 Archivado el 13 de enero de 2012 en Wayback Machine.
- Loop-Amnesia ACSAC 2011 paper and code
- Müller, 2010.
- TRESOR home page
- Tews, 2010.
- Frozen Cache Blog
- Halderman et al., 2008, p. 14.
Referencias
- «BitLocker Drive Encryption Technical Overview». Microsoft. 2008. Consultado el 19 de noviembre de 2008.
- Carbone, R.; Bean, C; Salois, M. (January 2011). An In-depth Analysis of the Cold Boot Attack: Can it be Used for Sound Forensic Memory Acquisition? (pdf). Valcartier: Defence Research and Development Canada. Archivado desde el original el 13 de abril de 2013. Consultado el 18 de noviembre de 2015.
- Dean, Sarah (11 de noviembre de 2009). «Cold Boot Attacks on Encryption Keys (aka "DRAM attacks")». Archivado desde el original el 15 de septiembre de 2012. Consultado el 11 de noviembre de 2008.
- «Encryption Still Good; Sleeping Mode Not So Much, PGP Says». Wired. 21 de febrero de 2008. Consultado el 22 de febrero de 2008.
- Halderman, J. Alex; Schoen, Seth; Heninger, Nadia; Clarkson, William; Paul, William; Calandrino, Joseph A; Feldman, Ariel J.; Appelbaum, Jacob et al. (21 de febrero de 2008). Lest We Remember: Cold Boot Attacks on Encryption Keys. Princeton University. Consultado el 22 de febrero de 2008.
- «KB2516445: Blocking the SBP-2 Driver to Reduce 1394 DMA Threats to Bitlocker». Microsoft. 4 de marzo de 2011. Consultado el 15 de marzo de 2011.
- MacIver, Douglas (21 de septiembre de 2006). Penetration Testing Windows Vista BitLocker Drive Encryption. HITBSecConf2006, Malaysia: Microsoft. Consultado el 23 de septiembre de 2008.
- MacIver, Douglas (25 de febrero de 2008). «System Integrity Team Blog: Protecting BitLocker from Cold Attacks (and other threats)». Microsoft. Archivado desde el original el 13 de agosto de 2012. Consultado el 23 de septiembre de 2008.
- Müller, Tilo (May 2010). Cold-Boot Resistant Implementation of AES in the Linux Kernel (pdf). Archivado desde el original el 12 de octubre de 2013. Consultado el 18 de noviembre de 2015.
- Tews, Erik (December 2010). FrozenCache – Mitigating cold-boot attacks for Full-Disk-Encryption software. 27th Chaos Communication.
- «Memory Research Project Source Code». Princeton University. 16 de julio de 2008. Archivado desde el original el 5 de junio de 2013. Consultado el 7 de mayo de 2013.
Enlaces externos
- Lest We Remember: Cold Boot Attacks on Encryption Keys en YouTube.
- McGrew Security's Proof of Concept
- Boffins Freeze Phone to Crack Android On-Device Crypto
- Skorobogatov, Sergei (June 2002). Low temperature data remanence in static RAM. University of Cambridge, Computer Laboratory. Consultado el 27 de febrero de 2008.