Extending Layered Attestation into ARM Application Run-Times
Cet article présente ARA, une ancre d'exécution d'application basée sur ARM qui étend l'attestation matérielle du chargement vers l'exécution en exploitant des extensions de superposition de permissions pour créer un domaine attesté et protégé pour la vérification de l'intégrité au moment de l'exécution et la protection des secrets avec un surcoût de performance minimal.
Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète
Dans le monde de l'informatique moderne, la confiance est souvent établie au moment même où un programme démarre. Lorsque vous ouvrez une application sur votre téléphone, l'appareil vérifie que le logiciel est authentique et n'a pas été altéré avant même qu'il ne commence à s'exécuter. Ce processus, connu sous le nom d'attestation, repose sur une « racine de confiance » matérielle, un fondement sécurisé intégré à la puce elle-même qui vérifie l'identité du logiciel. Cependant, une fois que ce contrôle initial est passé et que l'application commence son travail, ce haut niveau de sécurité s'estompe souvent. L'appareil suppose que le programme se comporte correctement, laissant une brèche où des acteurs malveillants pourraient potentiellement altérer le comportement de l'application, voler des secrets ou manipuler des données sans que le système ne s'en aperçoive. Pendant des années, la solution à ce problème a consisté à déplacer les tâches sensibles vers des environnements séparés et isolés, mais cela obligeait l'ordinateur à changer constamment de mode entre différents zones de sécurité, un processus qui était lent et épuisait la batterie.
Une équipe de chercheurs de l'Université de Zurich et de Huawei a développé une nouvelle approche pour combler cette lacune, permettant à la sécurité de persister tout au long de la vie d'une application sans le coût de performance élevé. Ils ont créé un système appelé ARA, qui établit une zone sécurisée et protégée directement à l'intérieur de l'espace mémoire de l'application elle-même. En utilisant une fonctionnalité matérielle récemment introduite dans les processeurs ARM modernes, les chercheurs ont permis à l'application d'héberger son propre garde du corps de sécurité capable de surveiller les actions du programme et de protéger les clés sensibles en temps réel. Leurs travaux démontrent qu'il est possible de maintenir un haut niveau de sécurité et de vérifier qu'une application se comporte correctement pendant qu'elle fonctionne, tout en opérant à une vitesse presque identique à celle d'une application non sécurisée.
Le défi central auquel les chercheurs ont été confrontés était de savoir comment maintenir un système de sécurité fiable isolé d'une application potentiellement compromise sans les forcer à communiquer à travers une frontière lente et distante. Les méthodes traditionnelles reposent souvent sur l'exécution du service de sécurité dans un processus totalement distinct ou dans un enclave matérielle spécialisée. Bien que ces méthodes soient sûres, elles obligent l'ordinateur à interrompre l'application principale, à changer de contexte et à communiquer à travers des barrières complexes chaque fois qu'un contrôle de sécurité est nécessaire. Ce changement constant de contexte crée un délai important, rendant la méthode impraticable pour des tâches qui nécessitent des décisions fréquentes et instantanées, comme la surveillance de chaque étape d'un programme ou le décryptage d'un flux vidéo en temps réel. Les chercheurs ont réalisé que la solution résidait dans une nouvelle capacité matérielle appelée « Permission Overlay Extensions », qui permet à un programme unique de diviser sa propre mémoire en pièces distinctes et isolées avec des règles d'accès différentes, toutes gérées par le processeur lui-même.
En utilisant cette technologie, l'équipe a construit ARA pour agir comme une ancre de sécurité au sein de l'espace d'adressage de l'application. Lorsque l'application se lance, un chargeur de confiance prépare d'abord l'environnement, divisant la mémoire en trois zones distinctes : une pour le code non fiable de l'application, une pour un point d'entrée contrôlé, et une pour les services de sécurité. Le processeur est ensuite instruit d'appliquer des règles strictes sur ces zones. L'application principale peut lire et écrire ses propres données, mais elle est totalement empêchée de toucher à la mémoire où résident les services de sécurité. Crucialement, l'application ne peut pas modifier ces règles par elle-même. Même si un pirate parvient à injecter du code malveillant dans l'application, ce code est physiquement incapable d'atteindre la zone sécurisée ou de modifier les permissions qui la protègent. La seule façon pour l'application d'interagir avec les services de sécurité est de passer par une porte spécifique et pré-approuvée que le système de sécurité contrôle.
Les chercheurs ont testé ce système avec deux scénarios distincts pour voir comment il se comportait dans le monde réel. Dans le premier cas, ils ont simulé un service de streaming multimédia qui devait décrypter un contenu vidéo à l'aide d'une clé secrète. Ils ont comparé leur nouveau système à la méthode standard consistant à utiliser un processus séparé pour le décryptage. Les résultats ont montré que le nouveau système était considérablement plus rapide. Pour un fichier vidéo de deux heures, la méthode traditionnelle ajoutait plusieurs secondes de délai en raison du changement constant entre les processus, tandis que le nouveau système n'ajoutait qu'une fraction de seconde. Dans le second cas, ils ont testé un système qui surveille constamment le comportement de l'application pour s'assurer qu'elle suit le bon chemin, une tâche qui nécessite des milliers de contrôles de sécurité par seconde. Ici, le nouveau système était environ trente à cinquante-cinq fois plus rapide que la méthode traditionnelle. Le gain de vitesse provenait de l'élimination de la nécessité de basculer entre différents processus ou de solliciter l'aide du système d'exploitation ; les contrôles de sécurité se déroulaient directement dans le flux de l'application, protégés par le matériel.
L'étude a également abordé la manière dont ce système s'intègre dans le paysage de sécurité existant des appareils mobiles. Les téléphones modernes utilisent déjà le matériel pour vérifier qu'une application est légitime lors de son installation ou de son lancement. Les chercheurs ont conçu leur système pour étendre cette chaîne de confiance existante. Lorsque l'application démarre, l'appareil vérifie les services de sécurité sécurisés de la même manière qu'il vérifie l'application elle-même. Cela signifie qu'un serveur distant peut être certain que les contrôles de sécurité effectués à l'intérieur de l'application sont authentiques et n'ont pas été altérés. Le système comprend également une méthode pour délivrer des clés secrètes de manière sécurisée à l'application. Un serveur peut envoyer une clé cryptée que seule l'instance spécifique et vérifiée de l'application peut déverrouiller, garantissant que même si l'application fonctionne sur un appareil compromis, le secret reste en sécurité dans la zone de mémoire protégée.
Bien que le système soit très prometteur, les chercheurs ont noté que la caractéristique matérielle requise n'est pas encore disponible dans les appareils commerciaux. Ils ont construit leur prototype en utilisant un environnement simulé et un processeur physique modifié pour prouver que le concept fonctionne. Ils ont également reconnu que leur conception actuelle suppose que l'application s'exécute sur un seul thread, et que le support de plusieurs threads simultanés nécessiterait des travaux d'ingénierie supplémentaires pour garantir que les règles de sécurité sont maintenues correctement pour chaque thread. Malgré ces limites, ce travail fournit un schéma directeur pratique pour un avenir où les applications peuvent être à la fois rapides et sécurisées. Il suggère que le compromis de longue date entre performance et protection n'est pas inévitable et qu'avec le support matériel approprié, nous pouvons avoir des applications capables de protéger leurs propres secrets et de vérifier leur propre intégrité sans ralentir l'expérience utilisateur.
Noyé(e) sous les articles dans votre domaine ?
Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.