Una introducción al Trusted Execution Enviroment

lunes, 28 de diciembre de 2015

¿Quién no tiene hoy en día un “smartphone”? La aparición primero del iPhone pero sobre todo la aparición de Android ha propiciado que actualmente casi todo el mundo tenga uno de esos teléfonos inteligentes. En España por ejemplo , según el informe de la Fundación Telefónica, la penetración de los teléfonos inteligentes a finales del año 2014 suponía un 81% sobre el total de teléfonos. Dos años antes era de un 64%, por lo que el crecimiento en tan solo ese tiempo ha sido más que considerable.

Los smartphones actuales son mucho más funcionales y los usamos para una gran variedad de actividades: comunicación, acceso a redes sociales, compras online, transacciones bancarias o navegación en la web, en la mayor parte de los casos a través de aplicaciones que el usuario descarga de las distintas tiendas disponibles. Pero estas funcionalidades también han traído consigo la aparición de nuevos riesgos de seguridad y la creación de malware específico que han obligado a los fabricantes de terminales y proveedores de servicio a buscar nuevas soluciones para proteger a estos dispositivos.

Una de las iniciativas que han surgido para afrontar los problemas de seguridad inherentes a los smartphones, y más en el caso de Android, es el llamado Trusted Execution Environment. (TEE). Global Platform (GP), la organización encargada de estandarizar la gestión de aplicaciones en smartcards y SE (Secure Elements), es también la encargada de estandarizar el TEE.

El TEE es una área segura dentro del procesador principal de un smartphone que garantiza que la información sensible pueda ser almacenada, procesada y protegida en un entorno aislado y seguro. Es el lugar ideal para situar tanto el control de accesos como aquellas aplicaciones especialmente sensibles, que deben ejecutarse aisladas del sistema operativo del terminal.

Los últimos terminales de Samsung (S6, Note5) y Sony (Z5) de alta gama incorporan la tecnología TEE, y esperamos que poco a poco más fabricantes se sumen a esta iniciativa.


Figura 1: Autenticación en un Samsung S6 usando la huella dactilar.

Frente al TEE, la otra iniciativa más conocida para securizar un terminal viene del mundo Apple. Desde la aparición del Touch ID en el iPhone 5S, se viene utilizando una tecnología propia de Apple, pero con unos principios muy similares al TEE denominada “Secure Enclave”. La base de la seguridad en los iPhone está en el uso de un coprocesador dentro del SoC del A7, que utiliza su propio arranque seguro, software y procesamiento separado del procesador de las aplicaciones.

La principal diferencia a nivel funcional entre ambas está en que acceso al “Secure Enclave” se limita a día de hoy en iOS9 a funcionalidad de alto nivel como el TouchID o la generación y uso de pares de claves asimétricas (RSA y ECDSA). El TEE que define GP sin embargo persigue un objetivo más ambicioso, que no es otro que la estandarización de un conjunto de APIs para crear un entorno que permita la ejecución de aplicaciones de confianza de terceros dentro del área segura del terminal de forma interoperable.

EL TEE dentro de la infraestructura de seguridad de un terminal

Antes de continuar, es importante situar al TEE en el contexto de seguridad de un terminal. En este sentido en el terminal podemos distinguir tres entornos de gestión de aplicaciones con distintos niveles de seguridad:

  • Rich OS: Es el OS de alto nivel donde se ejecutan las aplicaciones, como Android, iOS o Windows Phone. Este entorno está abierto a la descarga y ejecución de aplicaciones. Aunque la seguridad es importante en este entorno, a este nivel prima la búsqueda de flexibilidad y versatilidad en el desarrollo de aplicaciones.
  • TEE: La principal función del TEE es la ejecución segura en un entorno de aislado de aplicaciones previamente autorizadas especialmente sensibles, que proporciona seguridad end-to-end, integridad de los datos y control de acceso. El TEE permite ejecutar aplicaciones con una interfaz de usuario atractiva, con una capacidad de procesamiento y acceso a memoria similar a la del sistema operativo de alto nivel del terminal. Además es capaz de acceder a muchos de los periféricos del terminal, incluido el SE, y de resistir a ataques software que normalmente ocurren en los sistemas operativos de alto nivel (OS rooting, malware, jailbreaking, etc.)
  • Secure Element (SE): Actualmente es el entorno más seguro donde pueden ejecutarse aplicaciones dentro del terminal. Aporta seguridad no sólo a nivel software sino a nivel hardware, y permite ejecutar aplicaciones y almacenar datos en un entorno seguro. Otra ventaja de los SE es que pueden ser movidos de un terminal a otro, incluyendo toda la información segura almacenada. Sin embargo, a pesar de su alta seguridad, el SE es un entorno muy poco flexible, con una funcionalidad muy limitada, tanto en términos de experiencia de usuario, capacidad de proceso como de almacenamiento.


Figura 2: Entornos de ejecución en un Smartphone en función de la seguridad ofrecida y la complejidad de implementación.

Lamentablemente, a día de hoy hay una relación inversa entre la seguridad y la flexibilidad en el desarrollo de aplicaciones. La figura anterior representan las características de facilidad de implementacion y seguridad en cada uno de los entornos mencionados. El diagrama refleja la fortaleza de cada uno de los entornos en cada capacidad concreta mediante el largo y ancho de las flechas.

Por último, hacer notar que los tres entornos no son mutuamente excluyentes sino complementarios, en el sentido que es posible implementar una aplicación donde se use el sistema operativo de alto nivel para aquella funcionalidad no sensible, el TEE para aquella funcionalidad que requiera del uso de interfaces de usuario seguras y el SE en las partes que requieran máxima seguridad.

Introducción a la arquitectura del TEE

El TEE es un entorno de ejecución seguro para aplicaciones autorizadas, conocidas como “Trusted Applications”, que implementan una funcionalidad critica desde el punto de vista de seguridad. Esta aplicación puede ser un servicio en sí misma, o puede ser una parte específica de una aplicación que se ejecuta en el OS estándar.

El TEE se encarga de proteger, y mantener la confidencialidad e integridad de la información y controlar el acceso a los datos que pertenecen a cada una de estas aplicaciones “confiables”. Con el fin de garantizar la base de confianza en el TEE, éste es autenticado y despues aislado del sistema operativo de alto nivel durante el proceso de arranque seguro.

En la siguiente figura se recogen los módulos fundamentales de la arquitectura del TEE.


Figura 3: Arquitectura de un TEE.

Dentro del TEE se distinguen dos tipos de software, el código interno propiamente del TEE (llamémosle kernel) y las aplicaciones confiables de terceros (“Trusted Applications”) que ejecutan su funcionalidad sobre ese código.

El kernel del TEE a su vez consta de:

  • Un core, que propociona una funcionalidad similar a la de un OS a las aplicaciones de terceros.
  • Un conjunto de funciones de más alto nivel para facilitar la labor de los desarrolladores de aplicaciones.

Las apliciones seguras de terceros ejecutan sobre este kernel y cada una de ellas es independiente de las otras, en el sentido de que una aplicación no puede realizar un acceso no autorizado a recursos de otra aplicación.

Las aplicaciones que ejecutan en el TEE consiguen acceso controlado a los recursos de seguridad y servicios a través del “TEE Internal API”. Dichos recursos incluyen la gestión de claves, criptografía, almacenamiento seguro, interfaz de usuario segura, etc.

El “TEE Client API” es una interfaz de comunicación a bajo nivel que permite a una aplicación que se ejecuta en el sistema operativo de alto nivel el acceso e intercambio de información con una aplicación segura que se ejecuta dentro del TEE.

Por último, el “TEE Functional API” ofrece un API de alto nivel a las aplicaciones cliente que se ejecutan en el sistema operativo estandar. Este API permite a estas aplicaciones acceder a servicios de criptografia y de almacenamiento seguro mediante un API familiar al usado en estos sistemas operativos.

El TEE y Mobile Connect

En Mobile Connect (MC) uno de los retos que nos planteamos es facilitar la autenticación de los usuarios, mediante métodos de autenticación fuerte sin contraseñas. A día de hoy en MC disponemos de autenticadores fuertes basados en los activos del operador como el SMS y la SIM, que nos permiten llegar a toda nuestra planta de usuarios móviles.

Pero queremos ir más allá e incorporar a MC los autenticadores biométricos, que en el mundo de la autenticación tienen una especial relevancia por la seguridad y experiencia de usuario que aportan, y que hoy en día ofrecen ya muchos terminales de gama alta. Para ello en MC integramos nuestra solución con FIDO, de una forma que garantiza que todos los autenticadores compatibles con el estándar UAF se integran en nuestra solución.

¿Qué aporta el TEE en este ecosistema? En la mayoría de los autenticadores biométricos (huella, reconocimiento de voz, reconocimiento facial), la validación del usuario se lleva a cabo en tres pasos:

  • Extraer la lectura de la huella, muestra de voz o la cara.
  • Almacenar en el dispositivo el patrón para una posterior comparación a partir de las siguientes lecturas.
  • Un motor de comparación, para analizar la comparación entre cada lectura y el patrón, y así validar al usuario.

El TEE se presenta entonces como el lugar ideal dentro del terminal para almacenar el patrón biométrico y todos los procesos necesarios para realizar la comparación entre la lectura y dicho patrón.

El TEE, por tanto, facilita a los proveedores de terminales la creación de autenticadores biométricos seguros. Pero no sólo eso, sino que la estandarización de las interfaces del TEE favorece la innovación de terceros, al permitir crear nuevos autenticadores basados en patrones biométricos alternativos, haciendo accesible el ecosistema a nuevos actores, y no solo a los fabricantes del terminales. La combinación de este hecho con FIDO hace además viable el acceso a cualquiera de estos autenticadores usando un mismo protocolo.

Y dado que MC integra FIDO en su solución de autenticación, cualquier Service Provider que utilice MC en sus procesos de autenticación, y sin realizar integración alguna podrá comenzar a usar de forma inmediata cualquiera de estos nuevos autenticadores biométricos.

Cristina Diaz
cris.diaz@11paths.com

No hay comentarios:

Publicar un comentario en la entrada