Trusty TEE

Trusty est un système d'exploitation (OS) sécurisé qui fournit un environnement d'exécution sécurisé (TEE) pour Android. Le système d'exploitation Trusty s'exécute sur le même processeur que le système d'exploitation Android, mais Trusty est isolé du reste du système à la fois par matériel et par logiciel. Trusty et Android s'exécutent en parallèle. Trusty a accès à toute la puissance du processeur et de la mémoire principaux d'un appareil, mais est complètement isolé. L'isolation de Trusty le protège des applications malveillantes installées par l'utilisateur et des failles potentielles pouvant être détectées dans Android.

Trusty est compatible avec les processeurs ARM et Intel. Sur les systèmes ARM, Trusty utilise Trustzone™ d'ARM pour virtualiser le processeur principal et créer un environnement d'exécution sécurisé. Une compatibilité similaire est également disponible sur les plates-formes Intel x86 utilisant la technologie de virtualisation d'Intel.

Figure 1 : Schéma de présentation de Trusty.

Trusty se compose des éléments suivants:

  • Petit noyau de système d'exploitation dérivé de Little Kernel
  • Un pilote de kernel Linux pour transférer des données entre l'environnement sécurisé et Android
  • Une bibliothèque d'espace utilisateur Android pour communiquer avec des applications approuvées (telles que des tâches/services sécurisés) via le pilote du noyau

Remarque:Trusty et l'API Trusty sont susceptibles d'être modifiés. Pour en savoir plus sur l'API Trusty, consultez la documentation de référence de l'API.

Pourquoi Trusty ?

Les autres systèmes d'exploitation TEE sont traditionnellement fournis sous forme de blobs binaires par des fournisseurs tiers ou développés en interne. Le développement de systèmes TEE internes ou la licence d'un TEE auprès d'un tiers peut être coûteux pour les fournisseurs de SoC (système sur puce) et les OEM. Le coût financier combiné à des systèmes tiers peu fiables crée un écosystème instable pour Android. Trusty est fourni à ses partenaires en tant qu'alternative Open Source fiable et sans frais pour leur environnement d'exécution sécurisé. Trusty offre un niveau de transparence qui n'est tout simplement pas possible avec les systèmes propriétaires.

Android est compatible avec différentes implémentations de TEE. Vous n'êtes donc pas limité à l'utilisation de Trusty. Chaque OS TEE a sa propre méthode de déploiement des applications approuvées. Cette fragmentation peut poser problème pour les développeurs d'applications approuvées qui tentent de s'assurer que leurs applications fonctionnent sur tous les appareils Android. L'utilisation de Trusty comme norme aide les développeurs d'applications à créer et à déployer facilement des applications sans tenir compte de la fragmentation de plusieurs systèmes TEE. Trusty TEE offre aux développeurs et aux partenaires transparence, collaboration, inspectabilité du code et facilité de débogage. Les développeurs d'applications approuvés peuvent converger vers des outils et des API communs afin de réduire le risque d'introduire des failles de sécurité. Ces développeurs auront la certitude de pouvoir développer une application et de la réutiliser sur plusieurs appareils sans développement supplémentaire.

Applications et services

Une application Trusty est définie comme une collection de fichiers binaires (fichiers exécutables et de ressources), un fichier manifeste binaire et une signature cryptographique. Au moment de l'exécution, les applications Trusty s'exécutent en tant que processus isolés en mode non privilégié sous le noyau Trusty. Chaque processus s'exécute dans son propre bac à sable de mémoire virtuelle en utilisant les fonctionnalités de l'unité de gestion de la mémoire du processeur TEE. La compilation du matériel modifie le processus exact suivi par Trusty, mais par exemple, le noyau planifie ces processus à l'aide d'un planificateur round-robin basé sur la priorité, piloté par un "tic" de minuteur sécurisé. Toutes les applications Trusty partagent la même priorité.

Figure 2 : Présentation de l'application Trusty.

Applications tierces Trusty

Actuellement, toutes les applications Trusty sont développées par une seule partie et empaquetées avec l'image du noyau Trusty. L'intégralité de l'image est signée et validée par le bootloader au démarrage. Le développement d'applications tierces n'est pas compatible avec Trusty pour le moment. Bien que Trusty permette de développer de nouvelles applications, cela doit être fait avec une extrême prudence. Chaque nouvelle application augmente la zone de la base de calcul sécurisée (TCB) du système. Les applications approuvées peuvent accéder aux secrets de l'appareil et effectuer des calculs ou des transformations de données à l'aide de ces secrets. La possibilité de développer de nouvelles applications exécutées dans le TEE ouvre de nombreuses possibilités d'innovation. Toutefois, en raison de la définition même d'un TEE, ces applications ne peuvent pas être distribuées sans une forme de confiance associée. Il s'agit généralement d'une signature numérique d'une entité approuvée par l'utilisateur du produit sur lequel l'application s'exécute.

Utilisations et exemples

Les environnements d'exécution sécurisés deviennent rapidement la norme sur les appareils mobiles. Les utilisateurs comptent de plus en plus sur leurs appareils mobiles pour leur vie quotidienne, et le besoin de sécurité ne cesse de croître. Les appareils mobiles dotés d'un TEE sont plus sécurisés que les appareils sans TEE.

Sur les appareils avec implémentation de TEE, le processeur principal est souvent appelé "non approuvé", ce qui signifie qu'il ne peut pas accéder à certaines zones de la RAM, des registres matériels et des fusibles en écriture une seule fois où les données secrètes (telles que les clés cryptographiques spécifiques à l'appareil) sont stockées par le fabricant. Le logiciel exécuté sur le processeur principal délègue toutes les opérations nécessitant l'utilisation de données secrètes au processeur TEE.

L'exemple le plus connu dans l'écosystème Android est le framework DRM pour le contenu protégé. Le logiciel exécuté sur le processeur TEE peut accéder aux clés spécifiques à l'appareil requises pour déchiffrer le contenu protégé. Le processeur principal ne voit que le contenu chiffré, ce qui offre un niveau élevé de sécurité et de protection contre les attaques logicielles.

Un TEE peut être utilisé de nombreuses autres manières, par exemple pour les paiements mobiles, la banque sécurisée, l'authentification multifacteur, la protection contre la réinitialisation de l'appareil, le stockage persistant protégé contre la relecture, le traitement sécurisé du code et de l'empreinte digitale, et même la détection de logiciels malveillants.