Trusty est un système d'exploitation sécurisé qui fournit un environnement d'exécution sécurisé (TEE) pour Android. Trusty OS s'exécute sur le même processeur que l'OS Android, mais il est isolé du reste du système par du matériel et des logiciels. 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 contre les applications malveillantes installées par l'utilisateur et les potentielles failles d'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 TEE sécurisé. Une compatibilité similaire est également disponible sur les plates-formes Intel x86 utilisant la technologie de virtualisation d'Intel.

Figure 1. Diagramme de présentation de Trusty.
Trusty se compose des éléments suivants :
- Petit noyau d'OS dérivé de Little Kernel
- Un pilote de noyau Linux pour transférer des données entre l'environnement sécurisé et Android
- Bibliothèque userspace Android permettant de communiquer avec des applications de confiance (c'est-à-dire des tâches et 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 Trusty.
Avantages de Trusty
Les autres systèmes d'exploitation TEE sont généralement 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 l'obtention d'une licence TEE auprès d'un tiers peuvent être coûteux pour les fournisseurs de SoC (système sur une puce) et les OEM. Le coût monétaire combiné à des systèmes tiers peu fiables crée un écosystème instable pour Android. Trusty est fourni à ses partenaires comme une alternative open source fiable et sans frais pour leur TEE. Trusty offre un niveau de transparence impossible à atteindre avec les systèmes à source fermée.
Android est compatible avec différentes implémentations TEE. Vous n'êtes donc pas limité à l'utilisation de Trusty. Chaque OS TEE possède une méthode unique pour déployer des applications de confiance. Cette fragmentation peut poser problème aux développeurs d'applications de confiance 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 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 débogage simple. Les développeurs d'applications de confiance peuvent se regrouper autour d'outils et d'API communs pour réduire le risque d'introduction de failles de sécurité. Ces développeurs peuvent créer une application et la réutiliser sur plusieurs appareils sans développement supplémentaire.
Applications et services
Une application Trusty est un ensemble de fichiers binaires (fichiers exécutables et de ressources), d'un fichier manifeste binaire et d'une signature cryptographique. Lors 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 à l'aide des 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 à priorité et à tour de rôle piloté par un tic de temporisateur sécurisé. Toutes les applications Trusty partagent la même priorité.

Figure 2. Présentation de l'application Trusty.
Applications tierces Trusty
Toutes les applications Trusty sont développées par une seule partie et empaquetées avec l'image du noyau Trusty. L'image entière est signée et vérifiée par le bootloader lors du démarrage. Le développement d'applications tierces n'est pas pris en charge dans Trusty. Bien que Trusty permette le développement de nouvelles applications, faites-le 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 de confiance peuvent accéder aux secrets de l'appareil et les utiliser pour effectuer des calculs ou des transformations de données. La possibilité de développer de nouvelles applications qui s'exécutent dans l'environnement d'exécution sécurisé ouvre de nombreuses possibilités d'innovation. Cependant, en raison de la définition même d'un TEE, ces applications ne peuvent pas être distribuées sans une certaine forme de confiance. Il s'agit d'une signature numérique d'une entité de confiance pour l'utilisateur du produit sur lequel l'application s'exécute.
Utilisations et exemples
Les TEE deviennent une norme dans les appareils mobiles. Les utilisateurs s'appuient de plus en plus sur leurs appareils mobiles dans leur vie quotidienne, et le besoin de sécurité augmente. Les appareils mobiles dotés d'un TEE sont plus sécurisés que ceux qui n'en ont pas.
Sur les appareils dotés d'une implémentation TEE, le processeur principal est souvent considéré comme *non fiable*, ce qui signifie qu'il ne peut pas accéder à certaines zones de la RAM, aux registres matériels et aux fusibles à écriture unique où le fabricant stocke des données secrètes (comme les clés de chiffrement propres à l'appareil). Le logiciel exécuté sur le processeur principal délègue au processeur TEE toutes les opérations qui nécessitent l'utilisation de données secrètes.
L'exemple le plus connu dans l'écosystème Android est le framework DRM pour le contenu protégé. Les logiciels exécutés sur le processeur TEE peuvent accéder aux clés propres à l'appareil nécessaires 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.
Le TEE a d'autres utilisations, comme les paiements mobiles, les opérations bancaires sécurisées, l'authentification multifacteur, la protection contre la réinitialisation de l'appareil, le stockage persistant protégé contre la relecture, le traitement sécurisé des codes et des empreintes digitales, et même la détection des logiciels malveillants.