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 fonctionne sur le même processeur que le système d'exploitation Android, mais Trusty est isolé du reste du système à la fois par le matériel et par les logiciels. Trusty et Android fonctionnent en parallèle. Trusty a accès à toute la puissance du processeur principal et de la mémoire 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 vulnérabilités potentielles qui pourraient être découvertes 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é et fiable. Une prise en charge similaire est également disponible sur les plates-formes Intel x86 utilisant la technologie de virtualisation d'Intel.
Trusty se compose de :
- Un petit noyau OS dérivé de Little Kernel
- Un pilote du noyau 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 de confiance (c'est-à-dire 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 plus d'informations sur l'API Trusty, consultez la référence API .
Pourquoi Fidèle ?
D'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 s'avérer coûteux pour les fournisseurs de systèmes sur puce (SoC) 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 gratuite pour leur environnement d'exécution de confiance. Trusty offre un niveau de transparence qui n'est tout simplement pas possible avec les systèmes fermés.
Android prend en charge diverses implémentations TEE, vous n'êtes donc pas limité à l'utilisation de Trusty. Chaque système d'exploitation TEE possède sa propre manière de déployer des applications fiables. Cette fragmentation peut constituer un problème pour les développeurs d'applications de confiance qui tentent de garantir que leurs applications fonctionnent sur tous les appareils Android. L'utilisation de Trusty comme standard 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 partenaires transparence, collaboration, inspectabilité du code et facilité de débogage. Les développeurs d'applications de confiance peuvent converger autour d'outils et d'API communs pour réduire le risque d'introduction de failles de sécurité. Ces développeurs auront la certitude de pouvoir développer une application et 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 (exécutables et fichiers de ressources), un 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 capacités de l'unité de gestion de mémoire du processeur TEE. La construction du matériel modifie le processus exact suivi par Trusty, mais par exemple, le noyau planifie ces processus à l'aide d'un planificateur circulaire basé sur les priorités et piloté par une minuterie sécurisée. Toutes les applications Trusty partagent la même priorité.
Applications Trusty tierces
Actuellement, toutes les applications Trusty sont développées par une seule partie et emballées avec l'image du noyau Trusty. L'image entière est signée et vérifiée par le chargeur de démarrage lors du démarrage. Le développement d'applications tierces n'est pas pris en charge dans Trusty pour le moment. Bien que Trusty permette le développement de nouvelles applications, cela doit être effectué avec une extrême prudence ; chaque nouvelle application augmente la superficie de la base informatique de confiance (TCB) du système. Les applications de confiance peuvent accéder aux secrets des appareils et effectuer des calculs ou des transformations de données en les utilisant. La capacité de développer de nouvelles applications exécutées dans le TEE 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. Cela se présente généralement sous la forme d'une signature numérique par une entité de confiance par l'utilisateur du produit sur lequel l'application s'exécute.
Utilisations et exemples
Les environnements d'exécution fiables deviennent rapidement une norme sur les appareils mobiles. Les utilisateurs comptent de plus en plus sur leurs appareils mobiles dans 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 dotés d'une implémentation TEE, le processeur principal est souvent qualifié de « 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ù se trouvent les données secrètes (telles que les clés cryptographiques spécifiques à l'appareil). stocké 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 cadre DRM pour les contenus protégés. Les logiciels exécutés sur le processeur TEE peuvent accéder aux clés spécifiques à l'appareil requises pour déchiffrer le contenu protégé. Le processeur principal voit uniquement le contenu crypté, offrant ainsi un haut niveau de sécurité et de protection contre les attaques logicielles.
Il existe de nombreuses autres utilisations d'un TEE, telles que 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é du code PIN et des empreintes digitales et même la détection des logiciels malveillants.