Cargando el código de forma segura en Trusted Execution Environment (ARM)

3

Estoy leyendo sobre TEE en ARM. Estoy buscando indicaciones para las siguientes preguntas:

  • ¿Cómo carga TEE el código del sistema operativo de forma segura y garantiza que no sea un código malicioso?

    Supongo que el código está firmado y el TEE puede verificar la firma. Así que eso trae otras preguntas -

    • ¿Quién está cargando el código? ¿El cargador en el sistema operativo o el TEE tiene su propio cargador que le permite cargar en el entorno del sistema operativo?

    • Si el cargador del sistema operativo lo está cargando, ¿cómo se puede confiar en un dispositivo rooteado?

Siento que me estoy perdiendo algo aquí. ¿Alguien me puede indicar la literatura correcta?

    
pregunta user220201 08.09.2014 - 21:09
fuente

2 respuestas

4

En pocas palabras, el TEE tiene su propio gestor de arranque.

La idea básica es que la CPU arranca desde la ROM. Esta ROM está programada para cargar una imagen de software desde un almacenamiento persistente, verificar que esté firmada por una clave pública que se almacena en la ROM y transferir la ejecución a esta imagen de software. En una plataforma ARM con TrustZone, la CPU se inicia en modo seguro, por lo que este primer software, el TEE, se ejecuta en modo seguro. En algún momento, el TEE cambia al modo no seguro y carga otra imagen de software: el "sistema operativo enriquecido", es decir, el sistema operativo principal que se ejecuta en la plataforma.

El MMU con TrustZone separa un mundo seguro que ejecuta TEE y un mundo no seguro que ejecuta el sistema operativo rico. El mundo no seguro tiene menos privilegios que el mundo seguro, por lo que no puede acceder a la memoria del mundo seguro, de la misma manera que un programa de usuario no puede acceder a la memoria del kernel (aunque los detalles técnicos son algo diferentes). No hay mucha documentación disponible públicamente acerca de TrustZone y las tecnologías asociadas, pero puede encontrar en el sitio web de ARM .

Como la vida real nunca es tan simple, lo que sucede en la práctica es una cadena en la que la ROM carga un primer cargador de arranque que carga un segundo cargador de arranque, etc. Siempre que cada etapa verifique la firma de la imagen de código de la siguiente etapa, Solo se puede ejecutar código autenticado. Uno de estos carga un cargador de arranque no seguro y no autenticado en el mundo normal que a su vez carga el sistema operativo principal (por ejemplo, U-Boot y Linux). Esta es una cadena de arranque segura, similar a lo que Microsoft requiere para Windows 8 . Una cadena de arranque segura garantiza que solo se pueda ejecutar el código aprobado por el fabricante del hardware. La idea de la separación de TEE es aplicar un arranque seguro al TEE, pero no necesariamente al sistema operativo principal.

Tenga en cuenta que lo que garantiza el arranque seguro es que solo se ejecuta el código autenticado . El código malicioso se puede ejecutar si el fabricante del hardware lo firmó por cualquier motivo.

Un Microsoft paper §6.7 ofrece una descripción general de un ejemplo cadena de arranque seguro. Un documento técnico de Texas Instruments describe una cadena de arranque segura con más detalle.

    
respondido por el Gilles 09.09.2014 - 01:08
fuente
0

Puedo responder de cómo lo hacen las plataformas basadas en TEE de Qualcomm y Trustronic.

  

¿Quién está cargando el código? ¿El cargador en el sistema operativo o el TEE tiene su propio cargador que le permite cargar en el entorno del sistema operativo?

El cargador en SO o TEE (si tiene un cargador) puede cargar el código / datos, e informar a TEE que la carga está hecha. Por lo general, su cargador lateral del sistema operativo. Luego, la región de memoria de código / datos se marca como memoria segura, por TEE, por lo que Rich OS ya no puede acceder a ella. Luego puede autenticarse y basarse en un uso que se pueda reutilizar.

  

Si el cargador del sistema operativo lo está cargando, ¿cómo se puede confiar en un dispositivo rooteado?

Rootear simplemente significa que el usuario tiene privilegios de root, por lo que puede crear / modificar archivos en el sistema o en los datos o en cualquier partición que un usuario normal normalmente no puede modificar en Android. Eso afecta solo a los privilegios del usuario en Rich OS y por lo tanto solo en el modo no seguro. TEE y otros recursos y recursos seguros residen en la memoria segura. No accesible incluso en teléfonos android rooteados.

Un poco más sobre el enraizamiento: cuando ejecuta el comando "fastboot oem unlock", en pocas palabras, solo está permitiendo que los kernels sin firma sean cargados por el gestor de arranque, y por lo tanto eventualmente ROMs personalizados. Esto es muy tarde en la cadena de arranque, probablemente 4ª etapa. Las configuraciones de Trustzone pasan muy temprano en la 1ra o 2da etapa Las plataformas siguen siendo seguras. El enraizamiento no da a los piratas informáticos el control total, si los activos seguros se configuran / usan de manera correcta. No hay que preocuparse.

    
respondido por el Aj700 11.01.2017 - 14:16
fuente

Lea otras preguntas en las etiquetas