linux-kernel arm trust-zone

linux kernel - Manejo de ARM TrustZones



linux-kernel trust-zone (2)

ARM tiene algo que se llama TrustZone. Según la documentación de ARM, se establece que un proceso puede ejecutarse en un mundo seguro / no seguro.

  1. ¿Qué significa el mundo seguro / no seguro? ¿Está relacionado con los modos de ejecución del procesador o está relacionado con la configuración de los permisos de las regiones de memoria o alguna otra cosa?
  2. ¿Existe alguna relación entre los 7 modos de funcionamiento de ARM y los mundos seguros / no seguros?
  3. Cómo habilitar el TrustZone en ARM.
  4. A partir de qué versión de ARM se presenta.
  5. Es obligatorio utilizar este TrustZone. ¿El linux kernel usa esta extensión TrustZone?

Por favor ayúdame a entender esto.


Para complementar la respuesta de UnixSmurfs ,

¿Qué significa el mundo seguro / no seguro? ¿Está relacionado con los modos de ejecución del procesador o está relacionado con la configuración de los permisos de las regiones de memoria o alguna otra cosa?

Principalmente se relaciona con las regiones de memoria . Todos los dispositivos compatibles con TrustZone etiquetarán el acceso al bus AXI con un bit NS . Este bit especifica si el acceso es desde un mundo seguro o normal . De esta manera, incluso los periféricos DMA que están bajo el control del mundo normal se pueden aislar.

¿Existe alguna relación entre los 7 modos de funcionamiento de ARM y los mundos seguros / no seguros?

Realmente no. Sin embargo, existe un mundo intermedio , llamado Modo Monitor , y aparentemente es el más poderoso de todos. El modo monitor es un intermediario entre los mundos seguro y normal . Puede acceder a los registros de CP15 del mundo normal mientras aún tiene la vista de memoria del sistema del mundo seguro (empujará el bit NS como 0).

Cómo habilitar el TrustZone en ARM.

Habilitar es un poco de una palabra sobrecargada. Está integrado en la CPU como señala . Por defecto, las CPU habilitadas para TrustZone arrancarán en el mundo seguro . Si no hace nada, puede ser ajeno al hecho de que la CPU es compatible con TrustZone . Solo mediante la configuración de un mundo normal y su control, se utilizará TrustZone ; posiblemente esto es lo que quieres decir con habilitar

A partir de qué versión de ARM se presenta.

Hay dos sabores:

  1. TrustZone compatible.
  2. TrustZone habilitado.

La sección 4.2 de la nota de seguridad de TrustZone responde a esto. El ARM1176JZ (F) -S , Cortex-A8 , Cortex-A9 , Cortex-A9-MPCore y Cortex-A5 soportan TrustZone . El ARM1156T2 (F) -S y Cortex-R4 son compatibles; Pueden ser un núcleo en el sistema. A medida que se desarrollan nuevos núcleos, se pueden agregar a la lista; esta pregunta es un blanco en movimiento

Es obligatorio utilizar este TrustZone. ¿Linux kernel utiliza esta extensión TrustZone.

No es obligatorio . Hay dos roles que el kernel de Linux podría jugar; Mundo seguro y normal . Consulte svc-handler-to-smc-call para obtener información sobre el uso de TrustZone con Linux .

Algunas cosas no contestadas a las que AlixSmurf alude; debe asegurarse de que todos los maestros y esclavos de BUS conozcan adecuadamente el bit NS . Esta información está fuera de la información de la CPU e involucra a los árbitros de BUS ; Otro tema que es como un libro .

Ver: PRD29-GENC-009492C
ARM TrustZone como técnica de virtualización en sistemas embebidos
Bloques de construcción de computación de confianza con ARM TrustZone
Firmware de confianza ARM


http://infocenter.arm.com/help/topic/com.arm.doc.prd29-genc-009492c/index.html es un documento introductorio bastante bueno que ofrece una visión general de algo un poco demasiado complejo para ser explicado satisfactoriamente escribiendo en un cuadro de texto. Pero trataré de responder tus preguntas directas a continuación.

  1. Se refiere a una opción de privilegio adicional ortogonal a los modos de ejecución. Secure world tiene la capacidad de hacer que los accesos a la memoria se etiqueten como seguros, pero también puede hacer accesos no seguros. El mundo normal solo puede hacer accesos no seguros. Además, ciertas opciones de configuración del procesador solo son accesibles para Secure world. La intención es aislar el software seguro en un entorno simple donde no puede ser (directamente) vulnerable a las vulnerabilidades del software en el sistema operativo principal del dispositivo o en el software de la aplicación.
  2. Ninguno, además de agregar un modo de "monitor" adicional. Este modo de monitor se usa para el "cambio de contexto" entre el mundo normal y seguro.
  3. TrustZone no está habilitado, está implementado (o no).
  4. TrustZone se introdujo en las Extensiones de seguridad a la arquitectura ARM versión 6. El primer procesador que lo admitió fue ARM1176. Todos los procesadores Cortex-A lo soportan.
  5. "No", aunque desde que los procesadores compatibles con TrustZone comienzan a ejecutarse en estado Seguro al encender, si el cargador de arranque no hace nada para cambiar el estado de seguridad, todo el software se ejecutará como Seguro (eliminando cualquier beneficio de seguridad). No, el entorno TrustZone está explícitamente destinado a ejecutarse junto con su sistema operativo, no a integrarse directamente en él. Para algunas plataformas, el kernel de Linux realiza llamadas de monitorización seguras para solicitar a Secure world que cambie ciertas opciones de configuración del sistema.