Un entorno de ejecución confiable ( TEE ) es un área segura de un procesador principal . Ayuda a que el código y los datos cargados en él estén protegidos con respecto a la confidencialidad e integridad . La confidencialidad de los datos evita que entidades no autorizadas externas al TEE lean los datos, mientras que la integridad del código evita que el código en el TEE sea reemplazado o modificado por entidades no autorizadas, que también pueden ser el propio propietario de la computadora, como en ciertos esquemas DRM descritos en Intel SGX .
Esto se hace implementando una seguridad arquitectónica única, inmutable y confidencial, que ofrece cifrado de memoria basado en hardware que aísla el código y los datos de aplicaciones específicas en la memoria. Esto permite que el código a nivel de usuario asigne regiones privadas de memoria, llamadas enclaves, que están diseñadas para protegerse de los procesos que se ejecutan en niveles de privilegio más altos. [1] [2] [3] Un TEE como entorno de ejecución aislado proporciona características de seguridad como ejecución aislada, integridad de las aplicaciones que se ejecutan con el TEE y confidencialidad de sus activos. En términos generales, el TEE ofrece un espacio de ejecución que proporciona un mayor nivel de seguridad para las aplicaciones confiables que se ejecutan en el dispositivo que un sistema operativo (OS) rico y más funcionalidad que un "elemento seguro" (SE).
La Plataforma de Terminal Móvil Abierta (OMTP) definió por primera vez el TEE en su estándar "Advanced Trusted Environment:OMTP TR1", definiéndolo como un "conjunto de componentes de hardware y software que proporcionan las funciones necesarias para dar soporte a las aplicaciones", que debían cumplir los requisitos de uno de los dos niveles de seguridad definidos. El primer nivel de seguridad, Perfil 1, estaba dirigido únicamente contra ataques de software, mientras que el Perfil 2, estaba dirigido tanto contra ataques de software como de hardware. [4]
Posteriormente se lanzaron soluciones TEE comerciales basadas en la tecnología ARM TrustZone , conforme al estándar TR1, como Trusted Foundations desarrollado por Trusted Logic. [5]
El trabajo sobre los estándares OMTP finalizó a mediados de 2010, cuando el grupo pasó a formar parte de la Comunidad de Aplicaciones Mayoristas (WAC). [6]
Los estándares OMTP, incluidos aquellos que definen un TEE, están alojados por GSMA . [7]
El TEE normalmente consta de un mecanismo de aislamiento de hardware más un sistema operativo seguro que se ejecuta sobre ese mecanismo de aislamiento, aunque el término se ha utilizado de forma más general para referirse a una solución protegida. [8] [9] [10] [11] Mientras que un TEE de GlobalPlatform requiere aislamiento de hardware, otros, como EMVCo, utilizan el término TEE para referirse tanto a soluciones basadas en hardware como en software. [12] FIDO utiliza el concepto de TEE en el entorno operativo restringido para TEE basados en aislamiento de hardware. [13] Solo las aplicaciones confiables que se ejecutan en un TEE tienen acceso a toda la potencia del procesador principal, los periféricos y la memoria de un dispositivo, mientras que el aislamiento de hardware los protege de las aplicaciones instaladas por el usuario que se ejecutan en un sistema operativo principal. El software y la criptografía dentro del TEE protegen las aplicaciones confiables contenidas en él entre sí. [14]
Los proveedores de servicios, los operadores de redes móviles (MNO), los desarrolladores de sistemas operativos, los desarrolladores de aplicaciones , los fabricantes de dispositivos, los proveedores de plataformas y los vendedores de silicio son los principales interesados que contribuyen a los esfuerzos de estandarización en torno a la TEE.
Para evitar la simulación de hardware con software controlado por el usuario, se utiliza una denominada "raíz de confianza de hardware". Se trata de un conjunto de claves privadas que se incorporan directamente al chip durante la fabricación; en los dispositivos móviles se suele utilizar una memoria programable de un solo uso, como los eFuses . Estas no se pueden modificar, ni siquiera después de reiniciar el dispositivo, y sus contrapartes públicas residen en una base de datos del fabricante, junto con un hash no secreto de una clave pública que pertenece a la parte de confianza (normalmente un proveedor de chips) que se utiliza para firmar el firmware de confianza junto con los circuitos que realizan operaciones criptográficas y controlan el acceso.
El hardware está diseñado de manera que impide que todo el software que no esté firmado por la clave de la parte de confianza acceda a las funciones privilegiadas. La clave pública del proveedor se proporciona en tiempo de ejecución y se codifica; este hash se compara luego con el que está integrado en el chip. Si el hash coincide, la clave pública se utiliza para verificar una firma digital del firmware controlado por el proveedor de confianza (como una cadena de cargadores de arranque en dispositivos Android o "enclaves arquitectónicos" en SGX). El firmware de confianza se utiliza luego para implementar la certificación remota. [15]
Cuando se atestigua una aplicación, sus componentes no confiables cargan su componente confiable en la memoria; la aplicación confiable está protegida de modificaciones por componentes no confiables con hardware. La parte no confiable solicita un nonce al servidor del verificador y se utiliza como parte de un protocolo de autenticación criptográfica, probando la integridad de la aplicación confiable. La prueba se pasa al verificador, que la verifica. Una prueba válida no se puede calcular en hardware simulado (es decir, QEMU ) porque para construirla, se requiere acceso a las claves incorporadas en el hardware; solo el firmware confiable tiene acceso a estas claves y/o las claves derivadas de ellas u obtenidas mediante ellas. Debido a que solo el propietario de la plataforma debe tener acceso a los datos registrados en la fundición, la parte verificadora debe interactuar con el servicio configurado por el proveedor. Si el esquema se implementa incorrectamente, el proveedor del chip puede rastrear qué aplicaciones se utilizan en qué chip y denegar selectivamente el servicio devolviendo un mensaje que indica que la autenticación no se ha aprobado. [16]
Para simular el hardware de una manera que le permita pasar la autenticación remota, un atacante tendría que extraer claves del hardware, lo que es costoso debido al equipo y la habilidad técnica requerida para ejecutarlo. Por ejemplo, el uso de haces de iones enfocados , microscopios electrónicos de barrido , microsondeo y desencapsulación de chips [17] [18] [19] [20] [21] [22] es difícil, o incluso imposible, si el hardware está diseñado de tal manera que la ingeniería inversa destruye las claves. En la mayoría de los casos, las claves son únicas para cada pieza de hardware, de modo que una clave extraída de un chip no puede ser utilizada por otros (por ejemplo, funciones físicamente no clonables [23] [24] ).
Aunque la privación de la propiedad no es una propiedad inherente de los TEE (es posible diseñar el sistema de manera que solo el usuario que haya obtenido la propiedad del dispositivo primero pueda controlar el sistema grabando un hash de su propia clave en fusibles electrónicos), en la práctica todos estos sistemas en la electrónica de consumo están diseñados intencionalmente para permitir que los fabricantes de chips controlen el acceso a la certificación y sus algoritmos. Permite a los fabricantes otorgar acceso a los TEE solo a los desarrolladores de software que tienen un acuerdo comercial (generalmente comercial) con el fabricante, monetizar la base de usuarios del hardware, habilitar casos de uso como la tivoización y la DRM y permitir que ciertas características del hardware se usen solo con software proporcionado por el proveedor, lo que obliga a los usuarios a usarlo a pesar de sus antifunciones , como anuncios , seguimiento y restricción de casos de uso para la segmentación del mercado .
Existen varios casos de uso para la TEE. Si bien no todos los casos de uso posibles aprovechan la privación de propiedad, la TEE suele utilizarse precisamente para esto.
Nota: Gran parte de la literatura sobre TEE cubre este tema bajo la definición de "protección de contenido premium", que es la nomenclatura preferida por muchos titulares de derechos de autor. La protección de contenido premium es un caso de uso específico de la gestión de derechos digitales (DRM) y es controvertida entre algunas comunidades, como la Free Software Foundation . [25] Los titulares de derechos de autor la utilizan ampliamente para restringir las formas en que los usuarios finales pueden consumir contenido como películas de alta definición 4K.
El TEE es un entorno adecuado para proteger información codificada digitalmente (por ejemplo, películas o audio en HD) en dispositivos conectados, como teléfonos inteligentes, tabletas y televisores de alta definición. Esta idoneidad se debe a la capacidad del TEE de privar al propietario del dispositivo del acceso a secretos almacenados y al hecho de que a menudo existe una ruta de hardware protegida entre el TEE y la pantalla o los subsistemas de los dispositivos.
El TEE se utiliza para proteger el contenido una vez que se encuentra en el dispositivo. Si bien el contenido está protegido durante la transmisión o streaming mediante el uso de cifrado, el TEE protege el contenido una vez que se ha descifrado en el dispositivo al garantizar que el contenido descifrado no se exponga a un entorno no aprobado por el desarrollador de la aplicación o el proveedor de la plataforma.
Las aplicaciones de comercio móvil, como billeteras móviles, pagos entre pares, pagos sin contacto o el uso de un dispositivo móvil como terminal de punto de venta (POS), suelen tener requisitos de seguridad bien definidos. Los TEE se pueden utilizar, a menudo junto con la comunicación de campo cercano (NFC), SE y sistemas backend confiables para brindar la seguridad necesaria para permitir que se realicen transacciones financieras.
En algunos casos, se requiere la interacción con el usuario final, lo que puede obligar al usuario a exponer información confidencial, como un PIN, una contraseña o un identificador biométrico, al sistema operativo móvil como medio de autenticación del usuario. El TEE ofrece opcionalmente una interfaz de usuario confiable que se puede utilizar para crear la autenticación del usuario en un dispositivo móvil.
Con el auge de las criptomonedas, los TEE se utilizan cada vez más para implementar criptobilleteras, ya que ofrecen la capacidad de almacenar tokens de forma más segura que los sistemas operativos regulares y pueden proporcionar las aplicaciones de computación y autenticación necesarias. [26]
El TEE es adecuado para admitir métodos de identificación biométrica (reconocimiento facial, sensor de huellas dactilares y autorización por voz), que pueden ser más fáciles de usar y más difíciles de robar que los PIN y las contraseñas. El proceso de autenticación generalmente se divide en tres etapas principales:
Un TEE es una buena zona dentro de un dispositivo móvil para alojar el motor de búsqueda y el procesamiento asociado necesario para autenticar al usuario. El entorno está diseñado para proteger los datos y establecer un búfer contra las aplicaciones no seguras ubicadas en los sistemas operativos móviles . Esta seguridad adicional puede ayudar a satisfacer las necesidades de seguridad de los proveedores de servicios, además de mantener bajos los costos para los desarrolladores de teléfonos móviles.
Los gobiernos, las empresas y los proveedores de servicios en la nube pueden utilizar el TEE para permitir el manejo seguro de información confidencial en dispositivos móviles y en la infraestructura del servidor. El TEE ofrece un nivel de protección contra ataques de software generados en el sistema operativo móvil y ayuda a controlar los derechos de acceso. Esto se logra al alojar aplicaciones confidenciales y "confiables" que deben aislarse y protegerse del sistema operativo móvil y de cualquier malware malicioso que pueda estar presente. Al utilizar la funcionalidad y los niveles de seguridad que ofrece el TEE, los gobiernos y las empresas pueden estar seguros de que los empleados que utilizan sus propios dispositivos lo hacen de manera segura y confiable. Asimismo, los TEE basados en servidores ayudan a defenderse de ataques internos y externos contra la infraestructura de backend.
Con el auge de los activos de software y las reutilizaciones, la programación modular es el proceso más productivo para diseñar la arquitectura de software, al desacoplar las funcionalidades en pequeños módulos independientes. Como cada módulo contiene todo lo necesario para ejecutar la funcionalidad deseada, la TEE permite la organización del sistema completo con un alto nivel de confiabilidad y seguridad, al tiempo que evita que cada módulo tenga vulnerabilidades de los demás.
Para que los módulos puedan comunicarse y compartir datos, TEE proporciona medios para enviar y recibir de forma segura cargas útiles entre los módulos, utilizando mecanismos como la serialización de objetos, junto con servidores proxy.
Ver Ingeniería de software basada en componentes
Se pueden utilizar las siguientes tecnologías de hardware para respaldar las implementaciones de TEE: