TrustZone y niveles de excepción en ARM

TrustZone

TrustZone es una arquitectura de hardware diseñada por ARM para dispositivos electrónicos de consumo, cuyo objetivo es construir un marco de seguridad para productos de electrónica de consumo para resistir varios ataques potenciales. TrustZone divide el hardware y software SoC (System-on-a-Chip) en dos partes: mundo normal y mundo seguro. Algunas operaciones confidenciales, como el cifrado y descifrado, la biometría y la autenticación de seguridad, deben realizarse en el mundo seguro, y los sistemas operativos de los usuarios y las aplicaciones generales se realizan en el mundo normal.


Inserte la descripción de la imagen aquí

La siguiente figura es la introducción de TrustZone en el sitio web oficial de ARM. Desde una perspectiva macro, Rich OS Application Environment (REE) representa el entorno operativo del usuario y puede ejecutar varias aplicaciones, como el sistema operativo del usuario del televisor o teléfono móvil; Trusted Execution Envrionment (TEE) representa El entorno de seguridad del sistema, que ejecuta Trusted OS, ejecuta aplicaciones confiables sobre esta base, incluida la verificación de identidad, gestión de autorizaciones, autenticación DRM, etc. Esta parte está oculta detrás de la interfaz de usuario, independientemente del entorno operativo del usuario, proporcionando servicios de seguridad para el entorno operativo del usuario. 1 .


Niveles de excepción

ARMv8 divide el procesador en cuatro niveles de privilegio, que llamamos niveles de excepción, que se basan en TrustZone. La siguiente figura es el modelo de seguridad ARMv8 2 cuando EL3 usa AArch64
Inserte la descripción de la imagen aquí

  • EL0: espacio de usuario, el programa general se ejecuta en el mundo Normal, se ejecuta en el mundo seguro se llama TA (aplicación de confianza)
  • EL1: sistema operativo, el SO invitado se ejecuta en el mundo normal, como Linux / Wlnce, el sistema operativo de confianza se ejecuta en el mundo seguro, como QSEE de Qualcomm, OP-TEE de código abierto, TEE de guisante, etc.
  • EL2: capa de hipervisor diseñada para admitir la virtualización, solo se usa en el mundo normal
  • EL3: Como un canal de intercambio, el mundo normal envía comandos SMC al mundo seguro a través de la capa Secure Moniter. La función de Secure Moniter es cambiar entre el mundo Noraml y el mundo seguro.

Diferentes EL corresponden a diferentes permisos y registros. El comportamiento de alto permiso no se puede realizar en EL de bajo permiso. Hay dos métodos de seguridad comunes: transgresión horizontal, es decir, una aplicación o sistema que ejecuta el estado seguro desde un estado no seguro; transgresión vertical, es decir, un comportamiento de EL de alto privilegio de un EL de bajo privilegio.


Android llama a la interfaz del kernel

Tomamos Android como ejemplo. La aplicación de EL0 quiere llamar al código (código del kernel) de EL1. Generalmente, al interrumpir, el kernel puede ingresar a la tabla de vectores de excepción. La tabla de vectores de excepción es un concepto de uso común en la arquitectura ARM. El programa de aplicación accede al núcleo a través de llamadas del sistema, y ​​las llamadas del sistema se implementan a través de interrupciones suaves.

Tipo de interrupción anormal

Tipos de excepción: la arquitectura ARM admite siete tipos de excepciones [^ 3]

  • Restablecer : cuando el procesador funciona, presione de repente el botón de restablecimiento, se activará esta excepción
  • Instrucciones no definidas : el procesador no puede reconocer la excepción de la instrucción. La instrucción ejecutada por el procesador está estandarizada. Si intenta ejecutar la instrucción que no cumple los requisitos, ingresará la dirección correspondiente a la instrucción anormal
  • Interrupción de software (SWI) : interrupción suave, el software necesita interrumpir el trabajo del procesador, puede usar la interrupción suave para ejecutar
  • Anulación de captación previa (cancelación de memoria de captación de instrucciones ) : la instrucción de captación previa falla. Durante la ejecución de la instrucción, ARM debe ir primero a la instrucción de captación previa para prepararse para la ejecución. Si la instrucción de captación previa falla, se generará esta excepción.
  • Cancelación de datos (cancelación de memoria de acceso a datos) : error al leer los datos
  • IRQ (interrupción) : interrupción ordinaria
  • FIQ (interrupción rápida) : interrupción rápida, la interrupción rápida es más rápida que la velocidad de respuesta de interrupción normal

La siguiente imagen proviene del sitio web oficial.
Inserte la descripción de la imagen aquí

Manejo de excepciones

En la programación integrada ARM, al escribir una tabla de vectores de excepción (código de ensamblaje ARM), el enlazador puede formar nuestro propio manejo de excepciones. Cree una tabla de vectores de excepción-> guarde la escena en la pila-> maneje excepciones-> restaure la escena de la pila.
Inserte la descripción de la imagen aquí

Llamar a la interfaz del kernel

Llame a la interfaz del núcleo de EL0 a EL1, generalmente dividida en el siguiente proceso

  • A través de la interrupción, ingrese la tabla de vectores de excepción
  • Encuentre el número de llamada del sistema e ingrese una llamada de sistema diferente
  • Mediante la llamada al sistema y el sistema de archivos virtual, llame a varios códigos de controlador

libc es nuestra biblioteca de uso común (glibc es la biblioteca libc lanzada por GNU, es decir, la biblioteca de tiempo de ejecución c. glibc es la API de nivel más bajo en el sistema Linux, y casi cualquier otra biblioteca de tiempo de ejecución dependerá de glibc)
Inserte la descripción de la imagen aquí

La biblioteca libc ha encapsulado el código de interrupción. Todas las API que necesitan llamar al código del núcleo (como read / write / fork / ioctl) llamarán a la macro DO_CALL, que se define en varios lugares.

Para una llamada detallada de la función de llamada del kernel, visite el próximo blog.


Resumen

Como aficionados, no como desarrolladores, no hemos estudiado en detalle el mecanismo de implementación de hardware de TrustZone. Desde un punto de vista de seguridad, podemos conocer la base de los niveles de excepción al comprender su concepto, que es conveniente para nosotros llamar al núcleo, controlador y sistema Linux. Investigación.


  1. https://blog.csdn.net/guyongqiangx/article/details/78020257 ↩︎

  2. https://developer.arm.com/docs/100095/0002/programmers-model/armv8-a-architecture-concepts/exception-levels ↩︎

52 artículos originales publicados · Me gusta 30 · Visitas 50,000+

Supongo que te gusta

Origin blog.csdn.net/song_lee/article/details/105152161
Recomendado
Clasificación