TEE de confianza

Trusty es un sistema operativo (SO) seguro que proporciona un entorno de ejecución de confianza (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. Un soporte similar también está disponible en las plataformas Intel x86 que utilizan la tecnología de virtualización de Intel.

Figura 1 . Diagrama de descripción general confiable.

Fiel consta de:

  • Un pequeño kernel OS 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 sujetas a cambios. Para obtener información sobre la API Trusty, consulte la referencia de la API .

¿Por qué Confiable?

Otros sistemas operativos TEE se suministran tradicionalmente como blobs binarios de proveedores externos o se desarrollan internamente. Desarrollar sistemas TEE internos o licenciar 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 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 simplemente no es posible con los sistemas de código cerrado.

Android admite varias implementaciones de TEE, por lo que no está restringido a usar 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 fácilmente aplicaciones sin tener en cuenta la fragmentación de múltiples sistemas TEE. Trusty TEE brinda a los desarrolladores y socios transparencia, colaboración, capacidad de inspección del código y facilidad de depuración. Los desarrolladores de aplicaciones confiables pueden converger en 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 más desarrollo.

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 propio espacio aislado 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 núcleo programa estos procesos utilizando un programador rotatorio basado en prioridades impulsado por un tic de temporizador seguro. Todas las aplicaciones Trusty comparten la misma prioridad.

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

Aplicaciones Trusty 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 la imagen completa durante el arranque. El desarrollo de aplicaciones de terceros no es compatible con Trusty en este momento. Si bien Trusty permite el desarrollo de nuevas aplicaciones, se debe tener mucho cuidado al hacerlo; cada nueva aplicación aumenta el área de la base informática confiable (TCB) del sistema. Las aplicaciones confiables pueden acceder a los secretos de los dispositivos y pueden realizar cálculos o transformaciones de datos usándolos. La capacidad de desarrollar nuevas aplicaciones que se ejecutan 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 adjunta. Por lo general, esto viene 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 confían cada vez más en sus dispositivos móviles para su vida cotidiana y la necesidad de seguridad es cada vez mayor. Los dispositivos móviles con TEE son más seguros que los dispositivos sin TEE.

En 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 RAM, registros de hardware y fusibles de escritura única donde se almacenan datos secretos (como claves criptográficas específicas del dispositivo). almacenada 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 de Android es el marco DRM para contenido protegido. El software que se ejecuta en el procesador TEE puede acceder a las claves específicas del dispositivo necesarias para descifrar el contenido protegido. El procesador principal solo ve el contenido cifrado, lo que brinda 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 contra reinicio del dispositivo, almacenamiento persistente protegido contra reproducción, procesamiento seguro de PIN y huellas dactilares, e incluso detección de malware.