Extensiones Intel SGX

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 23 de febrero de 2021; las comprobaciones requieren 4 ediciones .

Intel Software Guard Extensions (Intel SGX)  son un conjunto de instrucciones de CPU que permiten que una aplicación cree enclaves  : áreas en el espacio de direcciones virtuales que están protegidas contra la lectura y escritura desde fuera de esta área por parte de otros procesos, incluido el kernel del sistema operativo . Intel SGX brinda la integridad y confidencialidad de la informática de alta seguridad realizada en sistemas donde los procesos privilegiados (kernel, hipervisor , etc.) se consideran poco confiables.

El Intel SGX está diseñado para la informática remota segura, la navegación web segura y la protección de los derechos de autor . Otras aplicaciones prácticas de esta tecnología incluyen garantizar la confidencialidad de los algoritmos propietarios y las claves de cifrado.

Historial de creación

Las extensiones Intel SGX llegaron en 2015 con la sexta generación de microprocesadores Intel basados ​​en la microarquitectura Skylake . Comenzando con Skylake, el procesador tiene un nuevo módulo de hardware llamado Motor de cifrado de memoria (MEE), que permite el cifrado automático de los datos transferidos desde el procesador al área de memoria del enclave. Esto hizo posible abandonar el supuesto de confiabilidad de la RAM y limitar el perímetro de seguridad a un procesador central, lo que hizo posible la creación de SGX [1] .

En 2016, se presentó la segunda versión de la tecnología SGX, denominada SGX2. Extendió el conjunto de instrucciones SGX1 con administración de memoria de enclave dinámico. SGX1 impuso restricciones con respecto a la asignación de memoria y la reutilización de la memoria del enclave: el desarrollador debía asignar toda la memoria al crear una instancia del enclave. SGX2 introdujo nuevas instrucciones y modelos de programación para expandir el soporte para la administración de memoria de enclave dinámico [2] .

Solo se admite en los procesadores Intel Core 7000, 8000, 9000 y 10000 (la tecnología SGX se eliminó en los procesadores Core de 11 y 12 generaciones), así como en los procesadores de servidor Intel Xeon Scalabale de 3ra generación . Los procesadores AMD no son compatibles con SGX. [3]

Planteamiento del problema

En primer lugar, la tecnología SGX se creó para habilitar la informática remota segura: ejecutar software en una computadora remota propiedad de una parte no confiable, con algunas garantías de integridad y confidencialidad. En general, la informática remota segura es un problema sin resolver. El cifrado completamente homomórfico resuelve el problema para una familia limitada de cálculos, pero tiene una sobrecarga de rendimiento poco práctica [4] .

Las extensiones Intel SGX resuelven el problema de la informática remota segura mediante el uso de hardware confiable en la computadora remota. La autenticidad del equipo se establece durante el proceso de certificación. El hardware de confianza crea un "área segura" y el usuario del servicio informático remoto puede cargar el código y los datos necesarios en esta "área". El hardware confiable protege la confidencialidad y la integridad de los datos mientras realiza cálculos sobre ellos [5] .

Goles

El desarrollo de Intel SGX siguió 8 objetivos principales [6] :

Detalles del dispositivo

SGX asigna un área de memoria llamada Memoria reservada del procesador (PRM). El procesador protege el PRM de todos los accesos a la memoria que no sean de enclave, incluido el acceso al kernel, al hipervisor y al modo de administración del sistema (SMM), así como al acceso DMA desde los periféricos [5] [7] .

PRM contiene Enclave Page Cache (EPC), que consta de páginas de 4 kilobytes que almacenan código y datos de enclave. El software del sistema no confiable es responsable de asignar páginas EPC a los enclaves. La CPU realiza un seguimiento del estado de cada página de EPC en los metadatos de caché de página de enclave (EPCM) para garantizar que cada página de EPC pertenezca a un solo enclave [7] .

El código fuente y los datos en el enclave son cargados por un software del sistema que no es de confianza. Durante la fase de inicio, el software del sistema solicita a la CPU que copie datos de la memoria no protegida (fuera del PRM) a las páginas de EPC y asigna las páginas al enclave que se está instalando. De ello se deduce que el estado inicial del enclave es conocido por el software del sistema [5] [7] .

Después de cargar todas las páginas del enclave en el EPC, el software del sistema le pide a la CPU que marque el enclave como inicializado, luego de lo cual el software de la aplicación puede ejecutar el código dentro del enclave. Después de inicializar el enclave, se prohíbe el método de carga descrito anteriormente [5] [7] .

Mientras se carga el enclave, se calcula un hash criptográfico en función de su contenido. Una vez inicializado el enclave, se completa el proceso de hash y el hash resultante se convierte en el hash de medición del enclave [8] .

La parte remota puede pasar por un proceso de certificación para asegurarse de que se está comunicando con un enclave que tiene un determinado hash de verificación y se ejecuta en un entorno seguro [9] .

Un hilo de ejecución puede ingresar al enclave solo a través de instrucciones especiales de la CPU, que son similares al mecanismo para cambiar del modo usuario al modo kernel. La ejecución del enclave siempre ocurre en modo protegido, en el anillo 3 , y usa la traducción de direcciones establecida por el kernel del sistema operativo y el hipervisor [5] [7] .

Para evitar la fuga de datos confidenciales, la CPU no atiende interrupciones (como fallas de página ) ni salidas de máquinas virtuales (vmexit) mientras se ejecuta el código del enclave. En su lugar, la CPU primero realiza una salida de enclave asíncrona (AEX) para cambiar del código de enclave al código de anillo 3 y luego realiza una interrupción o una salida de máquina virtual. La CPU realiza un AEX, almacena su estado en un área predefinida dentro del enclave y transfiere el control a una instrucción predefinida fuera del enclave, reemplazando los registros de la CPU con valores sintéticos [5] [7] .

La asignación de páginas EPC para enclaves se delega al kernel del sistema operativo (o hipervisor). El sistema operativo comunica sus decisiones de asignación de memoria a la implementación SGX a través de instrucciones especiales de CPU de anillo 0. El sistema operativo también puede cambiar páginas EPC a RAM no confiable y luego volver a cargarlas usando instrucciones especiales del procesador [5] .

SGX utiliza el motor de cifrado de memoria (MEE) para garantizar la confidencialidad, la integridad y la actualización de las páginas EPC cargadas mientras se almacenan en una memoria que no es de confianza [5] . MME funciona como una extensión de la unidad de gestión de memoria y cifra automáticamente todos los datos transferidos desde el procesador a la memoria [10] .

Diseño de aplicaciones

El diseño de aplicaciones con Intel SGX requiere que la aplicación se divida en dos componentes [9] :

Un bean confiable debe limitarse solo a los datos que necesitan la mayor protección y las operaciones que necesitan interactuar con ellos. Un enclave grande con una interfaz compleja no solo consume más memoria protegida, sino que también aumenta la superficie de ataque. Los enclaves también deben tener una interacción mínima entre los componentes de confianza. Aunque los enclaves pueden llamar a funciones en un componente que no es de confianza (usando una instrucción especial), la restricción de dichas llamadas fortalecerá el enclave frente a los ataques [9] [8] .

Certificación

En la arquitectura Intel SGX, la atestación es el proceso de autenticación de enclave. Hay dos mecanismos de atestación [9] :

Atestación local

La atestación local es útil cuando una aplicación tiene más de un enclave que debe funcionar en conjunto, o cuando dos aplicaciones deben comunicarse entre enclaves [9] .

En el proceso de certificación entre dos enclaves, cada enclave primero debe asegurarse de que el otro sea confiable. Un enclave se autentica en otro enclave de destino mediante la instrucción EREPORT. Esta instrucción SGX crea un informe de atestación (REPORT) que asocia criptográficamente un mensaje de enclave con una identidad basada en el hash de enclave y en certificados. El enlace criptográfico se realiza mediante una etiqueta especial calculada mediante una clave simétrica que solo está disponible para el enclave de destino y la implementación de SGX [5] .

Luego, los enclaves pueden establecer una sesión segura utilizando el protocolo Diffie-Hellman para intercambiar la clave de sesión. Esta clave de sesión se puede utilizar para cifrar los datos que se compartirán entre dos enclaves [9] .

Dado que un enclave no puede acceder al espacio de memoria protegido de otro enclave, incluso si pertenecen a la misma aplicación, todos los punteros deben ser desreferenciados y los datos deben pasarse directamente entre enclaves [9] .

Atestación remota

El proceso de certificación es el siguiente. Un procesador habilitado para SGX calcula un hash del código y los datos en cada enclave. El software dentro del enclave inicia el proceso de cálculo de la firma de atestación SGX, que incluye el hash del enclave y el mensaje del enclave [8] .

La primitiva criptográfica utilizada en la firma de atestación SGX es demasiado compleja para implementarla en hardware, por lo que el proceso de firma lo realiza un Enclave de cotización privilegiado proporcionado por Intel con acceso a la clave de atestación SGX, una clave asimétrica de hardware única para cada plataforma. La clave de atestación SGX no existe en el momento en que se creó el procesador. Se emite más tarde, utilizando el Enclave de aprovisionamiento proporcionado por Intel [5] .

Debido a que la firma se calcula en Quoting Enclave, existe la necesidad de un canal de comunicación seguro entre el enclave que se somete a la validación del software y Quoting Enclave. Este problema se resuelve utilizando el mecanismo de atestación local [5] .

Si el servidor remoto determina que el enclave se ha creado correctamente y se ejecuta en un procesador compatible con Intel SGX genuino, ahora puede confiar en el enclave y pasarle secretos a través de un canal confiable [9] .

Seguridad

En la computación remota, los contenidos del enclave son descargados por el software del sistema a la computadora y, por lo tanto, no deben contener secretos en claro. Después de la inicialización, hay un proceso de atestación en el que el enclave se autentica en un servidor remoto. Después de una autenticación exitosa, se espera que el servidor remoto revele algunos secretos al enclave a través de un canal de comunicación seguro. El diseño de Intel SGX intenta garantizar que el hash calculado durante el proceso de certificación refleje con precisión el contenido cargado en el enclave [8] .

SGX también ofrece un sistema de identificación basado en certificados. Se utiliza para intercambiar secretos entre enclaves que tienen certificados emitidos por la misma autoridad certificadora. El proceso de intercambio implica cifrar secretos antes de pasarlos a un software de sistema no confiable, que luego los transfiere a otro enclave [5] [8] .

El mismo mecanismo se puede usar para almacenar en caché los secretos obtenidos durante el proceso de atestación en medios de almacenamiento no confiables administrados por el software del sistema. Este almacenamiento en caché puede reducir el número de procesos de atestación en un sistema distribuido [5] .

Prime+Probe Attack

El 27 de marzo de 2017, investigadores de la Universidad Tecnológica de Graz desarrollaron un prototipo capaz de obtener claves RSA de enclaves SGX que se ejecutan en el mismo sistema [11] [12] mediante un ataque cronometrado en cinco minutos . Una contramedida contra este tipo de ataque fue presentada y publicada por Daniel Gruss et al. en el Simposio de Seguridad de USENIX en 2017 [13] . Entre otras contramedidas publicadas el 28 de septiembre de 2017 se encontraba la utilidad DR.SGX. Se afirma que DR.SGX tiene un rendimiento superior y es mucho más fácil de implementar que otras soluciones propuestas [14] .

Ataques de espectros

El grupo LSDS del Imperial College London demostró que una vulnerabilidad de seguridad especulativa de Spectre podría adaptarse para atacar el enclave [15] . El ataque Foreshadow , descubierto en agosto de 2018, combina la ejecución especulativa y el desbordamiento del búfer para eludir SGX [16] .

Ataque de enclave

El 8 de febrero de 2019, investigadores de la Universidad Tecnológica de Graz publicaron resultados de investigación que mostraban que, en algunos casos, es posible ejecutar código malicioso desde el propio enclave [17] . El documento afirma que debido a la naturaleza confidencial y protegida del enclave, el software antivirus no puede detectar ni eliminar el malware que reside en él. Sin embargo, dado que las soluciones antivirus modernas monitorean las llamadas al sistema y las interacciones de las aplicaciones con el sistema operativo, debería ser posible identificar enclaves maliciosos por su comportamiento. Intel emitió una declaración que indica que este ataque estaba fuera del modelo de amenazas SGX, que no podían garantizar que el código ejecutado por el usuario provenga de fuentes confiables e instó a los consumidores a usar solo código confiable [18] .

Ataque de ornitorrinco

Investigadores de la Universidad de Graz en Austria han descubierto una nueva vulnerabilidad peligrosa basada en la medición del voltaje de la CPU que permite extraer claves AES y RSA de un enclave SGX seguro. Esta característica ha estado presente en todos los procesadores Intel desde Sandy Bridge , en el que las funciones de northbridge han sido reemplazadas por completo por un agente del sistema integrado en la matriz del procesador. La vulnerabilidad explota la capacidad del sistema RAPL (Running Average Power Limit), que no requiere acceso privilegiado, para obtener estimaciones detalladas del consumo de energía del núcleo, el agente del sistema y la DRAM [19] . Para combatir la vulnerabilidad, Intel lanzó un parche de microcódigo (INTEL-SA-0389 [20] ).

Notas

  1. Simón Johnson. El motor de cifrado de memoria Intel® SGX  . software.intel.com (26 de febrero de 2016). Fecha de acceso: 7 de diciembre de 2019. Archivado desde el original el 7 de diciembre de 2019.
  2. McKeen, Frank & Alexandrovich, Ilya & Anati, Ittai & Caspi, Dror & Johnson, Simon & Leslie-Hurd, Rebekah & Rozas, Carlos. Compatibilidad con Intel® Software Guard Extensions (Intel® SGX) para la administración de memoria dinámica dentro de un enclave. // Conferencia: El Hardware y el Soporte Arquitectónico para la Seguridad y la Privacidad. — 2016.
  3. Intel prohibió a los propietarios de sus nuevos procesadores ver películas con licencia de discos 4K Archivado el 18 de enero de 2022 en Wayback Machine // CNews , 17 de enero de 2022
  4. Michael Naehrig, Kristin Lauter y Vinod Vaikun-tanathan. ¿Puede ser práctico el cifrado homomórfico?  // Actas del tercer taller de ACM sobre seguridad informática en la nube. - 2011. - S. 113-124 . Archivado desde el original el 22 de septiembre de 2020.
  5. ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 Víctor Costan y Srinivas Devadas. Intel SGX explicado  // Laboratorio de Ciencias de la Computación e Inteligencia Artificial Instituto de Tecnología de Massachusetts. Archivado el 4 de mayo de 2020.
  6. Matthew H. Intel® SGX para Dummies (Objetivos de diseño de Intel® SGX  ) . software.intel.com (2013-26-09). Consultado el 7 de diciembre de 2019. Archivado desde el original el 29 de abril de 2014.
  7. ↑ 1 2 3 4 5 6 Alejandro Adamski. Descripción general de Intel SGX - Parte 1, SGX Internals (5 de julio de 2018). Consultado el 24 de diciembre de 2019. Archivado desde el original el 24 de diciembre de 2019.
  8. ↑ 1 2 3 4 5 Ittai Anati, Shay Gueron, Simon P Johnson, Vincent R Scarlata. Tecnología innovadora para certificación y sellado basados ​​en CPU  // Intel Corporation. - 2013. Archivado el 24 de diciembre de 2019.
  9. ↑ 1 2 3 4 5 6 7 8 John M., Benjamin O. Serie de tutoriales de Intel® Software Guard Extensions : Parte 1, Intel® SGX Foundation  . software.intel.com (7 de julio de 2016). Fecha de acceso: 7 de diciembre de 2019. Archivado desde el original el 7 de diciembre de 2019.
  10. Shay Gueron. [ https://eprint.iacr.org/2016/204.pdf Un motor de cifrado de memoria adecuado para procesadores de uso general] // Cryptology ePrint Archive. - 2016. Archivado el 15 de junio de 2020.
  11. Schwarz, Michael; Weiser, Samuel; Gruss, Daniel; Maurice, Clémentine & Mangard, Stefan (2017), Extensión de Malware Guard: uso de SGX para ocultar ataques de caché, archivo iv : 1702.08719 [cs.CR]. 
  12. Ricardo Chirgwin . Boffins muestra que el SGX de Intel puede filtrar claves criptográficas , The Register (7 de marzo de 2017). Archivado desde el original el 11 de julio de 2019. Consultado el 1 de mayo de 2017.
  13. Daniel Gruss, Julian Lettner, Felix Schuster, Olya Ohrimenko, Istvan Haller y Manuel Costa. Protección de canal lateral de caché sólida y eficiente mediante memoria transaccional de hardware . USENIX (16 de agosto de 2017). Consultado el 7 de diciembre de 2019. Archivado desde el original el 27 de julio de 2020.
  14. Brasser, Fernando; Capkun, Srjan; Dmitrienko, Alexandra; Frassetto, Tommaso; Kostiainen, Kari; Müller, Urs y Sadeghi, Ahmad-Reza (2017-09-28), DR.SGX: Fortalecimiento de enclaves SGX contra ataques de caché con aleatorización de ubicación de datos, arΧiv : 1709.09917 [cs.CR]. 
  15. Dan O'Keeffe, Divya Muthukumaran, Pierre-Louis Aublin, Florian Kelbert, Christian Priebe, Josh Lind, Huanzhou Zhu y Peter Pietzuch. SGXSpectre . Consultado el 7 de diciembre de 2019. Archivado desde el original el 7 de mayo de 2020.
  16. Peter Bright - 10 de julio de 2018 9:00 p. m. UTC. El nuevo ataque tipo Spectre utiliza la ejecución especulativa para desbordar los búferes . Ars Technica (10 de julio de 2018). Consultado el 2 de noviembre de 2018. Archivado desde el original el 23 de noviembre de 2018.
  17. Schwarz, Michael; Weiser, Samuel & Gruss, Daniel (2019-02-08), Practical Enclave Malware con Intel SGX, arΧiv : 1902.03256 [cs.CR]. 
  18. Bright, Peter ¿ Los investigadores usan Intel SGX para poner el malware fuera del alcance del   software antivirus ? . Ars Technica (12 de febrero de 2019). Consultado el 15 de febrero de 2019. Archivado desde el original el 15 de febrero de 2019.
  19. Gennady Detinich. Ataque de ornitorrinco: los sensores de consumo del procesador Intel resultaron ser un agujero de seguridad . 3dnews.ru (11 de noviembre de 2020). Consultado el 11 de noviembre de 2020. Archivado desde el original el 11 de noviembre de 2020.
  20. ↑ 2020.2 IPU : aviso sobre la interfaz Intel® RAPL  . www.intel.com (10 de noviembre de 2020). Consultado el 11 de noviembre de 2020. Archivado desde el original el 10 de noviembre de 2020.

Enlaces