TEE de confianza

Trusty es un sistema operativo (SO) seguro que proporciona un entorno de ejecución confiable (TEE) para Android. El sistema operativo Trusty se ejecuta en el mismo procesador que el sistema operativo Android, pero Trusty está aislado del resto del sistema tanto por hardware como por software. Trusty y Android funcionan en paralelo. Trusty tiene acceso a toda la potencia del procesador principal y la memoria de un dispositivo, pero está completamente aislado. El aislamiento de Trusty lo protege de aplicaciones maliciosas instaladas por el usuario y de posibles vulnerabilidades que puedan descubrirse en Android.

Trusty es compatible con procesadores ARM e Intel. En los sistemas ARM, Trusty utiliza Trustzone™ de ARM para virtualizar el procesador principal y crear un entorno de ejecución seguro y confiable. También hay disponible soporte similar en plataformas Intel x86 que utilizan la tecnología de virtualización de Intel.

Figura 1 . Diagrama general confiable.

Confiable consta de:

  • Un pequeño kernel de sistema operativo 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 aplicaciones confiables (es decir, tareas/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 Trusty API, consulte la Referencia de API .

¿Por qué confiable?

Otros sistemas operativos TEE son tradicionalmente suministrados como blobs binarios por proveedores externos o desarrollados internamente. Desarrollar sistemas TEE internos o obtener una licencia de un TEE de un tercero puede resultar 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 ofrece a sus socios como una alternativa confiable y gratuita de código abierto para su entorno de ejecución confiable. Trusty ofrece un nivel de transparencia que simplemente no es posible con sistemas de código cerrado.

Android admite varias implementaciones de TEE, por lo que no está restringido a utilizar Trusty. Cada TEE OS tiene su propia forma única de implementar aplicaciones confiables. Esta fragmentación puede ser un problema para los desarrolladores de aplicaciones confiables que intentan garantizar que sus aplicaciones funcionen en todos los dispositivos Android. El uso de Trusty como estándar ayuda a los desarrolladores de aplicaciones a crear e implementar aplicaciones fácilmente sin tener en cuenta la fragmentación de múltiples sistemas TEE. Trusty TEE ofrece a los desarrolladores y socios transparencia, colaboración, inspeccionabilidad del código y facilidad de depuración. Los desarrolladores de aplicaciones confiables pueden converger en torno a herramientas y API 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 múltiples dispositivos sin necesidad de desarrollarla más.

Aplicaciones y servicios

Una aplicación Trusty se define como una colección de archivos binarios (ejecutables y archivos de recursos), un manifiesto binario y una firma criptográfica. En tiempo de ejecución, las aplicaciones Trusty se ejecutan como procesos aislados en modo sin privilegios bajo el kernel Trusty. Cada proceso se ejecuta en su propia zona de pruebas de memoria virtual utilizando las capacidades de la unidad de administración de memoria del procesador TEE. La construcción del hardware cambia el proceso exacto que sigue Trusty, pero, por ejemplo, el kernel programa estos procesos utilizando un programador de turnos basado en prioridades impulsado por un temporizador seguro. Todas las aplicaciones Trusty comparten la misma prioridad.

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

Aplicaciones de confianza de terceros

Actualmente, todas las aplicaciones Trusty son desarrolladas por una sola parte y empaquetadas con la imagen del kernel Trusty. El gestor de arranque firma y verifica toda la imagen durante el arranque. Trusty no admite el desarrollo de aplicaciones de terceros en este momento. Aunque Trusty permite el desarrollo de nuevas aplicaciones, debe realizarse con sumo cuidado; Cada nueva aplicación aumenta el área de la base informática confiable (TCB) del sistema. Las aplicaciones confiables pueden acceder a los secretos del dispositivo y realizar cálculos o transformaciones de datos usándolos. La capacidad de desarrollar nuevas aplicaciones que se ejecuten en el TEE abre muchas posibilidades de innovación. Sin embargo, debido a la definición misma de TEE, estas aplicaciones no se pueden distribuir sin algún tipo de confianza. Normalmente, esto se presenta en forma de firma digital de una entidad en la que confía el 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 crece. Los dispositivos móviles con TEE son más seguros que los dispositivos sin TEE.

En dispositivos con una implementación TEE, el procesador principal a menudo se denomina "no confiable", lo que significa que no puede acceder a ciertas áreas de RAM, registros de hardware y fusibles de escritura única donde se almacenan datos secretos (como claves criptográficas específicas del dispositivo). almacenado por el fabricante. 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 Android es el marco DRM para contenido protegido. El software que se ejecuta en el procesador TEE puede acceder a claves específicas del dispositivo necesarias para descifrar contenido protegido. El procesador principal solo ve el contenido cifrado, 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 multifactor, protección de reinicio del dispositivo, almacenamiento persistente protegido contra reproducción, procesamiento seguro de PIN y huellas dactilares e incluso detección de malware.