Soporte de sistema operativo dual para TEE en informática privada

En una serie de textos sobre informática privada, el artículo " De la privacidad a la informática privada " menciona tres caminos técnicos principales para lograr la informática privada, que incluyen: cifrado seguro multipartito, aprendizaje federado y entornos de ejecución confiables. Entre ellos, en " Un poco de conocimiento del entorno de ejecución confiable en informática de privacidad ", también hay dos métodos de implementación principales del entorno de ejecución confiable (TEE), a saber, el aislamiento físico TrustZone y el aislamiento de virtualización.

Entonces, ¿cómo implementar el entorno de ejecución confiable de TrustZone para respaldar la informática privada?

1. Acerca de TrustZone

La tecnología TrustZone es una tecnología de extensión de seguridad del sistema desarrollada por ARM. El objetivo principal de la tecnología TrustZone es garantizar la seguridad de los sistemas integrados y evitar que se filtren datos confidenciales en el sistema o que funciones críticas del sistema sean atacadas por programas maliciosos. La arquitectura técnica de TrustZone se muestra en la siguiente figura:

7ee39063f2dd694e54634cade54cb2c8.jpeg

TrustZone divide los recursos de todo el sistema mediante una combinación de software y hardware, y divide una parte en un dominio de seguridad y la otra parte en un dominio normal. El dominio de seguridad proporciona los servicios de seguridad correspondientes para todo el sistema y solo puede ejecutar un servicio de seguridad o un sistema operativo completo; el dominio ordinario es un sistema operativo tradicional de propósito general. Las dos áreas de ejecución son independientes entre sí y, en general, el tiempo de ejecución del sistema de una de ellas no se verá afectado por la otra.

Para garantizar la independencia entre el dominio de seguridad y el dominio normal dentro del sistema, los datos confidenciales en el dominio de seguridad son administrados por sus dispositivos internos. Un sistema que admite la tecnología TrustZone tiene tablas de asignación de direcciones independientes en su dominio de seguridad y dominio común, lo que hace que la traducción de direcciones en las dos áreas de ejecución sea completamente independiente, eliminando así la posibilidad de que el dominio de seguridad sea atacado durante el proceso de traducción de direcciones.

1.1 Arquitectura de CPU de TrustZone

Al implementar la tecnología TrustZone, los procesadores ARM generalmente se dividen en dos núcleos virtuales, llamados modo normal y modo seguro, que son responsables respectivamente de ejecutar tareas en el dominio normal y el dominio seguro en el sistema.

d522dc234d5d0571ad9ca18d5f2dfc9b.jpeg

Como se muestra en la figura anterior, tomando ARMv8 como ejemplo, cuando el sistema está en un estado normal, EL0 generalmente ejecuta programas de usuario normales; EL1 generalmente ejecuta software privilegiado, como un kernel de sistema operativo general; EL2 se usa para implementar tecnología de virtualización y generalmente admite virtualización Código relacionado con la tecnología. Por razones de seguridad del sistema, el modo EL3 no existe en dominios normales. Cuando el sistema está en un estado seguro, EL0 generalmente ejecuta servicios de seguridad relacionados con la seguridad, como cifrado y descifrado; el software en EL1 es responsable de brindar soporte para sus aplicaciones de capa superior; el modo EL3 tiene la máxima autoridad de todo el sistema y, en general, ejecuta el firmware subyacente del sistema, como el monitor de seguridad para cambiar las regiones de ejecución. En el ámbito de la seguridad, el modo EL2 generalmente no existe, pero después del lanzamiento de ARMv8.4, los desarrolladores pueden usarlo según las necesidades reales.

1.2 Arquitectura del software TrustZone

Las aplicaciones en el dominio de la seguridad son las principales responsables de proporcionar servicios de seguridad específicos para el sistema, como cifrado, descifrado y almacenamiento seguro de datos confidenciales. El kernel confiable se utiliza principalmente para respaldar el funcionamiento normal de las aplicaciones de la capa superior y es responsable de manejar las interrupciones de seguridad en el dominio de seguridad, la comunicación con dominios ordinarios y proporcionar una interfaz de seguridad unificada para las aplicaciones de la capa superior.

c6093198eb43436f14d3b22e3b7c248c.jpeg

Las aplicaciones en el espacio de usuario en dominios normales generalmente no conocen la existencia de TrustZone y el sistema proporcionará las interfaces correspondientes para estas aplicaciones a través del espacio de usuario. Cuando se comunican entre sí entre áreas de ejecución, se suelen utilizar colas de mensajes y otros métodos. La memoria donde se ubican estas estructuras de datos se denomina memoria compartida. Dado que el software tanto en el dominio de seguridad como en el dominio normal necesita operar con los datos en la memoria compartida, y el sistema no puede obtener ningún recurso en el dominio de seguridad cuando está en el estado normal, la memoria compartida no debe ser segura. memoria.

Después de recibir la información procesada por el kernel confiable, el servicio de seguridad en el dominio de seguridad procesará la solicitud correspondiente y enviará el resultado a la memoria compartida correspondiente y finalmente regresará al dominio normal.

1.3 TEE basado en TrustZone

Según las características técnicas de TrustZone, el entorno de ejecución confiable puede ejecutarse en el dominio de seguridad del procesador ARM como un entorno de ejecución independiente y proporcionar servicios de seguridad flexibles para todo el sistema. La arquitectura del sistema del estándar TEE se muestra en la siguiente figura.

40a1778abc5df107032035655390f758.jpeg

El entorno de ejecución confiable consta de un sistema operativo confiable (Trusted OS, TOS) y una aplicación confiable (Trusted Application, TA). TOS es responsable de administrar los recursos de software y hardware dentro del TEE y de proporcionar a TA los recursos e interfaces necesarios para su funcionamiento. TA es responsable de proporcionar servicios de seguridad específicos para los programas dentro de REE. Dentro del TEE, los TA también son independientes entre sí y no pueden acceder directamente a los recursos de otros TA a menos que lo hagan a través de interfaces API especiales.

2. Acerca de los sistemas operativos duales

Para garantizar la funcionalidad y los requisitos en tiempo real del sistema al mismo tiempo, se puede formar una arquitectura de sistema operativo dual integrando sistemas en tiempo real y sistemas en tiempo no real en la misma plataforma de hardware. En esta arquitectura, el sistema en tiempo real es responsable de procesar tareas en tiempo real y algunas tareas relacionadas con la seguridad, y el sistema en tiempo no real es responsable de procesar tareas no críticas con funciones relativamente complejas pero bajos requisitos de tiempo real. . El rendimiento de la arquitectura de sistema operativo dual depende de múltiples indicadores, como la complejidad, la independencia y el tiempo de respuesta en tiempo real. Estos indicadores suelen ser contradictorios y difíciles de alcanzar la perfección.

También hay dos formas de implementación de sistema operativo dual, uno es un sistema operativo de doble núcleo y el otro se basa en tecnología de virtualización.

2.1 Sistema de doble núcleo

Un sistema de doble núcleo coloca un pequeño núcleo de sistema operativo en tiempo real (RTOS) debajo de un sistema operativo de propósito general (GPOS) y ejecuta GPOS como una tarea en tiempo real dentro del sistema.

4fc43cb8d9ed306b735352f4964b02f6.jpeg

El sistema de doble núcleo tiene una sobrecarga operativa baja y no requiere ningún soporte de hardware adicional, pero esta arquitectura requiere modificaciones significativas en el código del núcleo GPOS, lo que reduce significativamente la flexibilidad del sistema. Además, la independencia entre RTOS y GPOS en un sistema de doble núcleo es deficiente: cuando GPOS es atacado maliciosamente o se producen sus propios errores de funcionamiento, las tareas de alta criticidad en RTOS no podrán ejecutarse normalmente.

2.2 Sistemas duales virtualizados

La tecnología de virtualización utiliza RTOS y GPOS para ejecutarse simultáneamente en la misma plataforma de hardware como dos máquinas virtuales, y las dos máquinas virtuales son administradas por un administrador de máquinas virtuales (hipervisor).

62b717097105c2886239b34a2b357d7c.jpeg

La virtualización permite una mayor independencia entre los sistemas operativos, y el número de sistemas operativos no se limita a GPOS y RTOS. Al mismo tiempo, todos los sistemas operativos de capa superior no necesitan ninguna modificación y tienen buena flexibilidad. Sin embargo, esta tecnología traerá una sobrecarga adicional significativa a todo el sistema, reduciendo el rendimiento de RTOS y GPOS. Al mismo tiempo, el administrador de la máquina virtual debe rediseñarse para cumplir con los requisitos en tiempo real del sistema.

3. Los sistemas operativos duales son compatibles con TrustZone

Utilizando la tecnología TrustZone, el sistema operativo integrado en tiempo real se puede ejecutar en el dominio de seguridad, responsable de procesar tareas en tiempo real de alta crítica, y el kernel de Linux se puede ejecutar en el dominio común, responsable de procesar tareas generales de baja crítica. . Si las tareas relevantes en el dominio ordinario no necesitan comunicarse con el dominio de seguridad, el kernel de Linux solo necesita realizar modificaciones mínimas y no se dará cuenta de la existencia del dominio de seguridad durante la operación, y sus programas internos no serán capaz de acceder a cualquier recurso en el dominio de seguridad, asegurando la independencia del dominio de seguridad. Si hay programas en el dominio normal que necesitan utilizar los servicios del sistema proporcionados en el dominio de seguridad, puede agregar el controlador TrustZone al kernel de Linux. El controlador será responsable de transmitir datos entre el monitor de seguridad y el dominio de seguridad. La capa del dominio ordinario generalmente también necesita agregar una biblioteca relacionada con TrustZone que se utiliza para proporcionar interfaces API relacionadas con TrustZone para programas de usuario.

aff8e1136d60b29e67df6c3411fec9a.jpeg

Entre ellos, el monitor de seguridad es el principal responsable de ejecutar la conmutación entre áreas del sistema, que incluye:

(1) Responder a instrucciones de dos áreas de ejecución.

(2) Responsable de responder a las interrupciones de seguridad durante la ejecución del sistema operativo general y entregar las interrupciones al controlador de interrupciones del sistema operativo en tiempo real en el dominio de seguridad para su procesamiento.

(3) Cuando se produce el cambio entre áreas de ejecución, es responsable de guardar y restaurar el contexto relevante y otros trabajos de cambio específicos.

3.1 Mecanismo de manejo de interrupciones

El sistema divide todas las interrupciones en interrupciones seguras e interrupciones no seguras: Linux maneja las interrupciones no seguras en el dominio normal y RTOS en TrustZone maneja las interrupciones seguras.

4d90a7c8fd8ad5ee0c6516cbc34cb73f.jpeg

Si se produce una interrupción que no es de seguridad en el dominio de seguridad, para garantizar que las tareas clave que se ejecutan en el dominio de seguridad actual se puedan ejecutar correctamente, el sistema ignorará temporalmente la interrupción, es decir, cuando RTOS se está ejecutando, el La interrupción IRQ siempre estará enmascarada hasta que se completen las tareas clave. Linux manejará la interrupción solo después de que el sistema cambie al dominio normal. Si ocurre una interrupción de seguridad en el dominio ordinario, para garantizar la capacidad de respuesta en tiempo real de las tareas clave en el dominio de seguridad, el sistema cambiará inmediatamente al dominio de seguridad a través del monitor de seguridad para manejar la interrupción.

3.2 Estrategia de programación

Los algoritmos de programación en sistemas operativos duales requieren el establecimiento de modelos de tareas apropiados. Para juzgar la programabilidad de la tarea correspondiente establecida en el sistema, generalmente es necesario calcular el peor tiempo de respuesta de todas las tareas. Después de determinar el método de análisis del tiempo de respuesta de la tarea, se necesita un algoritmo para asignar las prioridades respectivas a todas las tareas del sistema. Una vez completada la priorización, las tareas del conjunto de tareas se programan para ejecutarse según esa secuencia de prioridades.

Generalmente, se puede adoptar una estrategia de programación de dos niveles. El primer nivel es la programación entre dos sistemas operativos, que es responsable de RTOS, y adopta una estrategia de programación que combina prioridad fija y rotación de intervalos de tiempo. Para que el programador en RTOS programe la ejecución de Linux, siempre hay dos tareas de cambio de región dentro de RTOS. Cuando RTOS programa una tarea de cambio de región, se cambiará para ejecutarse en Linux a través de la interfaz correspondiente. Entre ellas, una tarea se ejecuta como una tarea inactiva de RTOS; la otra tarea se utiliza para reducir el tiempo de respuesta del kernel de Linux, mejorar la experiencia del usuario y reducir el impacto en su rendimiento.

4. Resumen

Si TEE se implementa a través de la tecnología TrustZone para soportar la informática privada, entonces los sistemas operativos duales pueden ser una solución potencial, que también tienen que lidiar con problemas como las interrupciones y la programación, y tal vez puedan considerarse como un caso especial de los sistemas operativos distribuidos.

[Lectura relacionada]

Supongo que te gusta

Origin blog.csdn.net/wireless_com/article/details/131886763
Recomendado
Clasificación