Intel SGX de un vistazo y su función en la nube
Las extensiones Intel Software Guard (Intel SGX) son un conjunto de instrucciones de CPU que crean áreas protegidas privadas (enclaves) en el espacio de direcciones de la aplicación donde se encuentra el código a nivel de usuario. La tecnología asegura la confidencialidad e integridad de los datos sensibles. Al aislarlos en un enclave, obtienen protección adicional tanto contra el acceso externo no autorizado, incluido el proveedor de la nube, como contra las amenazas internas, incluidos los ataques de software privilegiado.
Principios de trabajo.La tecnología Intel SGX asigna una memoria reservada de procesador (PRM) para almacenar el código y los datos del enclave. La CPU lo protege de todas las llamadas externas, incluido el acceso al kernel y al hipervisor. El PRM contiene un Enclave Page Cache (EPC) de 4 bloques de páginas KiB, cada página debe ser propiedad de un solo enclave, y su estado se captura en los Enclave Page Cache Metadata (EPCM) y es monitoreado por la CPU.
La seguridad de EPC está garantizada por el motor de cifrado de memoria (MEE), que genera claves de cifrado almacenadas en la CPU. Se supone que las páginas solo se pueden descifrar dentro del núcleo del procesador físico.
Beneficios.Intel SGX ayuda a incrementar el nivel de confianza en la nube pública por parte de las organizaciones que utilizan datos sensibles en su trabajo (contraseñas, claves de cifrado, identificación, biométricos, datos médicos, así como información relacionada con la propiedad intelectual). Estamos hablando de representantes de una amplia variedad de industrias: el sector financiero, la medicina y el cuidado de la salud, el comercio minorista, el desarrollo de juegos, las telecomunicaciones, los medios de comunicación.
Nuestro enfoque para la implementación de Intel SGX
Para hacer posible la asignación de máquinas virtuales con enclaves Intel SGX en la nube pública de G-Core Labs, tuvimos que pasar de compilar el kernel KVM y QEMU parcheado a escribir scripts Python en servicios OpenStack Nova. Decidimos definir los nodos de cómputo que se planearon usar para asignar máquinas virtuales de alta seguridad en un agregador separado, un tipo de recursos computacionales que requiere configuración adicional. En tales nodos era necesario:
- Habilite la compatibilidad con BIOS Intel SGX.

- Instale QEMU / KVM parcheado.
Inicialmente, no teníamos conocimiento de cómo debería funcionar esto y qué al final tenemos que atornillar para obtener la VM de la configuración deseada. Parte de la Guía para desarrolladores de Intel ayudó a solucionar este problema . Con su ayuda, aprendimos cómo preparar un nodo computacional para trabajar con SGX y qué parámetros adicionales debe tener el archivo de configuración XML de una máquina virtual. Aquí encontramos información completa sobre cómo crear una máquina invitada usando Intel SGX usando virtualización KVM. Para asegurarnos de poder brindar soporte para esta tecnología, usamos dos métodos:
- Verificó la sección / dev / sgx / virt_epc en el archivo / proc / $ PID / smaps:
[root@compute-sgx ~]# grep -A22 epc /proc/$PID/smaps 7f797affe000-7f797b7fe000 rw-s 00000000 00:97 57466526 /dev/sgx/virt_epc Size: 8192 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB LazyFree: 0 kB AnonHugePages: 0 kB ShmemPmdMapped: 0 kB FilePmdMapped: 0 kB Shared_Hugetlb: 0 kB Private_Hugetlb: 0 kB Swap: 0 kB SwapPss: 0 kB Locked: 0 kB THPeligible: 0 VmFlags: rd wr sh mr mw me ms pf io dc dd hg
- Y usamos este script de shell, después de instalar el controlador SGX (todas las acciones se llevaron a cabo dentro de la VM):
[root@sgx-vm ~]# cat check_sgx.sh #!/bin/bash METRICS="sgx_nr_total_epc_pages \ sgx_nr_free_pages \ sgx_nr_low_pages \ sgx_nr_high_pages \ sgx_nr_marked_old \ sgx_nr_evicted \ sgx_nr_alloc_pages \ " MODPATH="/sys/module/isgx/parameters/" for metric in $METRICS ; do echo "$metric= `cat $MODPATH/$metric`" done [root@sgx-vm ~]# curl -fsSL https://raw.githubusercontent.com/scontain/SH/master/install_sgx_driver.sh | bash -s - install -p metrics -p page0 [root@sgx-vm ~]# ./check_sgx.sh sgx_nr_total_epc_pages= 2048 sgx_nr_free_pages= 2048 sgx_nr_low_pages= 32 sgx_nr_high_pages= 64 sgx_nr_marked_old= 0 sgx_nr_evicted= 0 sgx_nr_alloc_pages= 0
Debe tenerse en cuenta que si una página tiene 4 KiB, 2048 páginas requieren 8 MiB (2048 x 4 = 8192).
Dificultades de desarrollo y su superación
La falta de documentación técnica para integrar Intel SGX en OpenStack fue nuestra principal dificultad en el momento de la implementación. La búsqueda nos llevó a un artículo del proyecto SecureCloud, que presentaba una forma de gestionar máquinas virtuales con enclaves SGX.
La información encontrada ayudó a comprender exactamente en qué tenemos que trabajar. Como resultado, hemos formado las siguientes tareas:
- Obtenga el servicio OpenStack Nova para generar un archivo XML con parámetros adicionales para máquinas virtuales con soporte Intel SGX.
- Escriba un filtro de programador de OpenStack Nova para determinar la memoria disponible para enclaves en nodos de cómputo y realice otras comprobaciones.
Su ejecución fue suficiente para integrar Intel SGX en nuestra nube pública.
Además, hemos agregado la recopilación de estadísticas teniendo en cuenta el EPC:
# openstack usage show
Usage from 2020-11-04 to 2020-12-03 on project a968da75bcab4943a7beb4009b8ccb4a:
+---------------+--------------+
| Field | Value |
+---------------+--------------+
| CPU Hours | 47157.6 |
| Disk GB-Hours | 251328.19 |
| EPC MB-Hours | 26880.02 |
| RAM MB-Hours | 117222622.62 |
| Servers | 23 |
+---------------+--------------+
Entorno seguro para ejecutar aplicaciones en contenedores
Después de aprender a aprovisionar máquinas virtuales con soporte Intel SGX, utilizamos la plataforma SCONE de Scontain para garantizar que las aplicaciones en contenedores puedan ejecutarse de forma segura en caso de amenazas de software privilegiado. Para los entornos Docker, Kubernetes y Rancher, esta solución requiere un procesador compatible con Intel SGX y un controlador Linux SGX para proteger de forma transparente los sistemas de archivos.
El lanzamiento de cada uno de los contenedores es posible solo si existe un archivo de configuración creado por la extensión del cliente de la plataforma SCONE. Contiene claves de cifrado, argumentos de la aplicación y variables de entorno. Los archivos, el tráfico de red y los flujos de E / S estándar (stdin / stdout) están encriptados de forma transparente y son inaccesibles incluso para los usuarios root.
La plataforma SCONE está equipada con un servicio integrado de atestación y configuración que valida las aplicaciones con las políticas de seguridad aceptadas. Genera claves privadas y certificados que solo deberían estar disponibles dentro del enclave. La confidencialidad e integridad de los datos en el proceso de su transferencia está garantizada por el protocolo criptográfico TLS.
El controlador SGX reserva hasta 64 GB de memoria para cada enclave en el espacio de direcciones virtuales. La plataforma SCONE es compatible con los lenguajes de programación C / C ++ / C # / Rust / Go / Python / Java. Debido al compilador especial, el código fuente se prepara automáticamente (sin necesidad de modificaciones adicionales) para su uso junto con Intel SGX.
Caso de agregación
Habiendo completado todo el trabajo necesario en la integración de Intel SGX, conectamos la plataforma de gestión de datos distribuidos Aggregion a nuestra nube pública.
Está destinado a la implementación de proyectos de marketing conjuntos por parte de representantes de diversas industrias: servicios financieros y de seguros, gobierno, telecomunicaciones, comercio minorista. Los socios analizan el comportamiento del consumidor, desarrollan promociones específicas de bienes y servicios, desarrollan programas de lealtad exigidos, intercambian y procesan conjuntos de datos anónimos en la plataforma Aggregion. Dado que la filtración de información confidencial es altamente indeseable y amenaza con serios riesgos para la reputación, la empresa presta especial atención a los problemas de seguridad.
El software Aggregion está completamente integrado en el proveedor de datos, lo que significa que tiene una infraestructura con soporte Intel SGX a su disposición. Ahora los clientes de la empresa pueden considerar conectarse a nuestra nube pública como una alternativa a alquilar o comprar servidores físicos.
Principios de trabajo seguro en la plataforma Aggregion. En el ciclo de cada proveedor, los datos confidenciales se aíslan en enclaves de Intel SGX, que en realidad son cajas negras: lo que sucede dentro no está disponible para nadie, incluido el proveedor de infraestructura en la nube. La verificación del estado inicial del enclave y la posibilidad de su uso para el almacenamiento de información confidencial se realiza mediante atestación remota, cuando MrEnclavedefine un valor hash.
Beneficio potencial para el cliente. La combinación de bases de datos de varios proveedores puede mejorar la eficacia de las campañas publicitarias conjuntas. Cuando la audiencia objetivo se asigna de acuerdo con los parámetros especificados, la coincidencia (coincidencia) de segmentos se realiza directamente dentro de contenedores con soporte para enclaves Intel SGX. Solo el resultado final se muestra fuera de los límites: por ejemplo, el número de usuarios que coinciden con los atributos seleccionados. La efectividad de las campañas se evalúa de manera similar: los datos sobre impresiones publicitarias y ventas completadas se cargan en enclaves para calcular el aumento de compras del grupo objetivo en relación con el grupo de control, que luego se emite al exterior para su uso posterior.
conclusiones
Entendemos que Intel SGX no es una panacea para la protección de datos y puede encontrar varios artículos que condenan esta tecnología, incluso en Habré. Periódicamente, hay informes de ataques capaces de extraer datos sensibles de enclaves: por ejemplo, Meltdown y Spectre en 2018 abrieron agujeros SGX, y SGAxe y CrossTalk en 2020. A su vez, Intel está abordando las vulnerabilidades identificadas mediante actualizaciones de microcódigo del procesador.
¿Por qué decidimos implementar esta tecnología? Vemos el uso de Intel SGX como una oportunidad para reducir el área potencial de ataques cibernéticos al crear un circuito de protección adicional para la infraestructura en la nube de G-Core Labs junto con las tecnologías de seguridad de la información ya utilizadas y, por lo tanto, aumentar la confianza de nuestros usuarios en el almacenamiento y procesamiento de datos confidenciales. Esperamos que en el futuro todavía tengamos que compartir con ustedes casos de clientes exitosos, aunque no nos comprometemos a afirmar que nuestros artículos no se basarán en historias de descubrimiento y eliminación de nuevas vulnerabilidades. Mientras tanto, lo invitamos a compartir sus métodos para proteger datos sensibles en los comentarios.