Trusty TEE

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 que se puedan descubrir 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 entorno de ejecución confiable y seguro. También hay compatibilidad similar disponible en plataformas Intel x86 que usan la tecnología de virtualización de Intel.

Figura 1. Diagrama de descripción general de Trusty

Trusty consta de lo siguiente:

  • Un kernel pequeño del SO derivado de Little Kernel
  • Un controlador de kernel de Linux para transferir datos entre el entorno seguro y Android
  • Una biblioteca de espacio de usuario de Android para comunicarse con aplicaciones de confianza (es decir, tareas o servicios seguros) a través del controlador de 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.

¿Por qué usar Trusty?

Tradicionalmente, los proveedores externos suministran otros sistemas operativos de TEE como objetos binarios o los desarrollan de forma interna. Desarrollar sistemas de TEE internos o obtener licencias de un TEE de un tercero puede ser costoso para los proveedores de sistemas en chip (SoC) y los OEM. El costo monetario combinado con sistemas de terceros poco confiables crea un ecosistema inestable para Android. Trusty se proporciona a sus socios como una alternativa de código abierto confiable y gratuita para su entorno de ejecución confiable. Trusty ofrece un nivel de transparencia que no es posible con los sistemas de código cerrado.

Android admite varias implementaciones de TEE para que no tengas que usar Trusty. Cada SO de TEE tiene su propia forma única de implementar aplicaciones de confianza. Esta fragmentación puede ser un problema para los desarrolladores de aplicaciones de confianza que intentan garantizar que sus apps funcionen en todos los dispositivos Android. El uso de Trusty como estándar ayuda a los desarrolladores de aplicaciones a crear e implementar aplicaciones con facilidad sin tener en cuenta la fragmentación de varios sistemas de TEE. El TEE confiable proporciona a los desarrolladores y socios transparencia, colaboración, capacidad de inspección del código y facilidad de depuración. Los desarrolladores de aplicaciones de confianza pueden converger en torno a herramientas y APIs comunes para reducir el riesgo de introducir vulnerabilidades de seguridad. Estos desarrolladores tendrán la confianza de que pueden desarrollar una aplicación y reutilizarla en varios dispositivos sin necesidad de más desarrollo.

Aplicaciones y servicios

Una aplicación confiable se define como una colección de archivos binarios (ejecutables y archivos de recursos), un manifiesto binario y una firma criptográfica. Durante el tiempo de ejecución, las aplicaciones de Trusty se ejecutan como procesos aislados en el modo sin privilegios del 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 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 colas basado en prioridades impulsado por un tick de temporizador seguro. Todas las aplicaciones de confianza comparten la misma prioridad.

Figura 2. Descripción general de la aplicación de confianza

Aplicaciones de confianza de terceros

Actualmente, un solo tercero desarrolla todas las aplicaciones de Trusty y las empaqueta con la imagen del kernel de Trusty. El bootloader firma y verifica toda la imagen durante el inicio. Por el momento, el desarrollo de aplicaciones de terceros no es compatible con Trusty. Si bien Trusty permite el desarrollo de aplicaciones nuevas, se debe tener mucho cuidado. Cada aplicación nueva aumenta el área de la base de procesamiento confiable (TCB) del sistema. Las aplicaciones de confianza pueden acceder a los secretos del dispositivo y realizar cálculos o transformaciones de datos con ellos. La capacidad de desarrollar aplicaciones nuevas que se ejecutan en el TEE abre muchas posibilidades de innovación. Sin embargo, debido a la propia definición de un TEE, estas aplicaciones no se pueden distribuir sin algún tipo de confianza adjunta. Por lo general, se presenta en forma de una firma digital de una entidad de confianza del usuario del producto en el que se ejecuta la aplicación.

Usos y ejemplos

Los entornos de ejecución confiables se están convirtiendo rápidamente 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 siempre aumenta. Los dispositivos móviles con un TEE son más seguros que los dispositivos sin uno.

En los dispositivos con una implementación de TEE, el procesador principal a menudo se denomina “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 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 TEE.

El ejemplo más conocido de esto en el ecosistema de Android es el marco de trabajo de la DRM para el contenido protegido. El software que se ejecuta en el procesador de 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.

Hay muchos otros usos para un TEE, como pagos móviles, banca segura, autenticación de varios factores, protección contra restablecimiento de dispositivos, almacenamiento persistente protegido contra repetición, procesamiento seguro de PIN y huellas dactilares, e incluso detección de software malicioso.