Trusty es un sistema operativo (SO) seguro que proporciona un entorno de ejecución confiable (TEE) para Android. El SO Trusty se ejecuta en el mismo procesador que el SO Android, pero Trusty está aislado del resto del sistema por hardware y software. Trusty y Android se ejecutan en paralelo. Trusty tiene acceso a toda la potencia del procesador y la memoria principales de un dispositivo, pero está completamente aislado. El aislamiento de Trusty lo protege de las apps maliciosas que instala el usuario y de las posibles vulnerabilidades en Android.
Trusty es compatible con procesadores ARM e Intel. En los sistemas ARM, Trusty usa TrustZone de ARM para virtualizar el procesador principal y crear un TEE seguro. También hay compatibilidad similar disponible en las plataformas Intel x86 con la tecnología de virtualización de Intel.

Figura 1: Diagrama de descripción general de Trusty.
Trusty consta de lo siguiente:
- Un pequeño kernel del SO derivado de Little Kernel
- Un controlador del kernel de Linux para transferir datos entre el entorno seguro y Android
- Una biblioteca de espacio de usuario de Android para comunicarse con apps de confianza (es decir, tareas y servicios seguros) a través del controlador del kernel
Nota: Trusty y la API de Trusty están sujetos a cambios. Para obtener información sobre la API de Trusty, consulta la referencia de la API de Trusty.
Ventajas de Trusty
Otros sistemas operativos de TEE se suelen proporcionar como blobs binarios por proveedores externos o se desarrollan de forma interna. Desarrollar sistemas de TEE internos o licenciar una TEE de un tercero puede ser costoso para los proveedores de sistemas en chip (SoC) y los OEM. El costo monetario combinado con sistemas externos poco confiables crea un ecosistema inestable para Android. Trusty se proporciona a los socios como una alternativa de código abierto confiable y gratuita para su TEE. Trusty ofrece un nivel de transparencia que no es posible con los sistemas de código cerrado.
Android admite varias implementaciones de TEE, por lo que no estás limitado a usar Trusty. Cada SO del TEE tiene una forma única de implementar apps de confianza. Esta fragmentación puede ser un problema para los desarrolladores de apps de confianza que intentan garantizar que sus apps funcionen en todos los dispositivos Android. Usar Trusty como estándar ayuda a los desarrolladores de apps a crear e implementar apps sin tener que tener en cuenta la fragmentación de varios sistemas de TEE. Trusty TEE proporciona a los desarrolladores y socios transparencia, colaboración, inspección del código y depuración sencilla. Los desarrolladores de apps de confianza pueden converger en torno a herramientas y APIs comunes para reducir el riesgo de introducir vulnerabilidades de seguridad. Estos desarrolladores tienen la confianza necesaria para crear una app y reutilizarla en varios dispositivos sin necesidad de realizar más desarrollo.
Apps y servicios
Una app de Trusty es una colección de archivos binarios (ejecutables y archivos de recursos), un manifiesto binario y una firma criptográfica. En el tiempo de ejecución, las apps de Trusty se ejecutan como procesos aislados en modo sin privilegios bajo el kernel de Trusty. Cada proceso se ejecuta en su propia zona de pruebas de memoria virtual con las capacidades de la unidad de administración de memoria del procesador del TEE. La compilación del hardware cambia el proceso exacto que sigue Trusty, pero, por ejemplo, el kernel programa estos procesos con un programador de turnos basado en prioridades y controlado por un tic de temporizador seguro. Todas las apps de Trusty comparten la misma prioridad.

Figura 2: Descripción general de la app de Trusty.
Apps de terceros de Trusty
Todas las apps de Trusty son desarrolladas por una sola parte y se empaquetan con la imagen del kernel de Trusty. El bootloader firma y verifica toda la imagen durante el inicio. El desarrollo de apps de terceros no es compatible con Trusty. Si bien Trusty permite el desarrollo de apps nuevas, hazlo con sumo cuidado, ya que cada app nueva aumenta el área de la base de procesamiento confiable (TCB) del sistema. Las apps de confianza pueden acceder a los secretos del dispositivo y realizar cálculos o transformaciones de datos con ellos. La capacidad de desarrollar apps nuevas que se ejecutan en el TEE abre muchas posibilidades de innovación. Sin embargo, debido a la definición misma de un TEE, estas apps no se pueden distribuir sin algún tipo de confianza adjunta. Esto se realiza en forma de una firma digital de una entidad en la que confía el usuario del producto en el que se ejecuta la app.
Usos y ejemplos
Los TEE se están convirtiendo en un estándar en los dispositivos móviles. Los usuarios dependen cada vez más de sus dispositivos móviles para su vida cotidiana, y la necesidad de seguridad es cada vez mayor. Los dispositivos móviles con un TEE son más seguros que los dispositivos sin un TEE.
En los dispositivos con una implementación de TEE, el procesador principal suele denominarse *no confiable*, lo que significa que no puede acceder a ciertas áreas de la RAM, los registros de hardware y los fusibles de escritura única en los que el fabricante almacena datos secretos (como las claves criptográficas específicas del dispositivo). El software que se ejecuta en el procesador principal delega cualquier operación que requiera el uso de datos secretos al procesador del TEE.
El ejemplo más conocido de esto en el ecosistema de Android es el marco de trabajo de DRM para el contenido protegido. El software que se ejecuta en el procesador del TEE puede acceder a las claves específicas del dispositivo necesarias para desencriptar el contenido protegido. El procesador principal solo ve el contenido encriptado, lo que proporciona un alto nivel de seguridad y protección contra ataques basados en software.
El TEE tiene otros usos, como pagos móviles, banca segura, autenticación de varios factores, protección contra restablecimiento del dispositivo, almacenamiento persistente protegido contra repetición, procesamiento seguro de PIN y huellas dactilares, y hasta detección de software malicioso.