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.