Voici les éléments 1 - 1 sur 1
  • Publication
    Accès libre
    Enhancing Security and Performance in Trusted Execution Environments
    (Neuchâtel : Université de Neuchâtel, 2024) ;
    Le cloud offre une flexibilité permettant aux entreprises de s’adapter rapidement aux fluctuations de la demande, accordant ainsi des coûts réduits et une meuilleure scalabilité. Cependant, pour les utilisateurs du cloud, garantir la confidentialité et l’intégrité des données sensibles confiées à des fournisseurs de services cloud non fiables pose des défis en matière de sécurité. Pour résoudre ce problème, les fabricants de processeurs ont introduit des environnements d’exécution de confiance (TEE) tels que Intel software guard extensions (SGX), AMD secure encrypted virtualisation (SEV), Arm TrustZone, etc., dans les processeurs. Les TEEs fournissent des enclaves sécurisées qui exploitent des mécanismes de sécurité basés sur le matériel pour garantir la confidentialité et l’intégrité du code et des données déployés sur des infrastructures cloud non fiables. Cependant, la complexité des TEEs au niveau du développement a été un obstacle majeur à leur adoption par les développeurs. Deux défis fondamentaux se posent lors du développement des programmes TEE : améliorer la sécurité grâce au partitionnement du code et atténuer les surcoûts de performance introduits par les extensions de sécurité. Bien que certaines solutions aient été proposées par le milieu académique et l’industrie pour résoudre ces problèmes, elles présentent des inconvénients : elles ciblent soit uniquement des langages de programmation de bas niveau, entravant l’adoption par la communauté du développement, soit sont trop spécifiques à un langage particulier, limitant leur utilité pour les programmes basés sur différentes langages de programmation. Cette thèse revisite ces problèmes fondamentaux dans le développement TEE et présente des solutions plus viables. Tout d’abord, elle aborde le défi du partitionnement du code en concevant et en développant des outils de haut niveau, ainsi que des outils multi-langages, pour isoler le code sensible à l’intérieur d’enclaves sécurisées. Deuxièmement, elle explore le domaine de l’internet des objets (IoT), en fournissant des techniques robustes pour renforcer la sécurité dans les environnements IoT. Enfin, elle propose des approches nouvelles pour relever les défis de performance associés aux TEEs. Le premier travail de recherche introduit une nouvelle approche pour partitionner les programmes Java pour les enclaves Intel SGX. L’approche proposée s’appuie sur des annotations de code et des transformations de bytecode pour partitionner les classes Java en composants fiables et non fiables. Ces composants partitionnés font l’objet d’une compilation anticipée (AOT) permettant ainsi leur exécution à l’intérieur et à l’extérieur d’une enclave, tout en maintenant une interaction suffisante pour préserver les objectifs fonctionnels du programme original. S’appuyant sur le travail précédent, le deuxième travail de recherche étend le concept de partitionnement du code à un contexte multi-langage. Il exploite le framework Truffle de GraalVM pour fournir des noeuds d’arbre syntaxique abstrait (AST) qui encapsulent des données sensibles dans des programmes polyglottes. L’AST résultant est ensuite analysé via une analyse dynamique, et les noeuds sécurisés sont utilisés pour déduire les portions sensibles du programme à isoler à l’intérieur d’une enclave. Le troisième travail de recherche explore le domaine de l’internet des objets (IoT), en proposant une technique pour sécuriser les données sensibles générées par les périphériques. Il fournit un modèle générique pour le partitionnement des pilotes de périphériques, et exploite cette approche pour concevoir et construire un framework robuste pour renforcer la sécurité des périphériques IoT en utilisant Arm TrustZone. Le quatrième travail de recherche recentre l’attention sur l’amélioration des performances en utilisant la mémoire persistante (PM) pour fournir des garanties efficaces de tolérance aux pannes pour les programmes Intel SGX. La praticabilité de cette technique est démontrée dans un contexte d’apprentissage automatique (ML) pour réaliser un entraînement de modèle ML sécurisé et persistant. Se focalisant toujours sur l’amélioration des performances, le cinquième travail de recherche propose un système pour optimiser les appels sans commutation ("switchless calls") d’Intel SGX. Il identifie les limitations de la politique de configuration statique de la librairie switchless d’Intel SGX, et propose une approche dynamique qui élimine la pénalité de performance due aux configurations statiques. ABSTRACT Cloud computing permits companies to easily scale their infrastructure to meet changing demand, providing reduced costs and improved scalability. However, for cloud tenants, ensuring the confidentiality and integrity of sensitive data entrusted to untrusted cloud service providers poses security challenges. To address these issues, processor manufacturers have introduced trusted execution environments (TEEs) like Intel software guard extensions (SGX), AMD secure encrypted virtualisation (SEV), Arm TrustZone etc. into commodity CPUs. TEEs provide secure enclaves that leverage hardware-based security mechanisms to ensure the confidentiality and integrity of code and data deployed on untrusted cloud infrastructures. Nevertheless, the complexity of TEEs at the development level has been a major impediment to their widespread adoption. Two fundamental challenges arise when dealing with TEE programs: improving security through code partitioning, and mitigating the performance overhead introduced by the security extensions. While some tools have been proposed by both academia and industry to address these issues, they have drawbacks: they either target only lower level programming languages, hindering adoption by the development community, or are too language-specific, limiting their utility for programs in different programming languages. This thesis revisits these fundamental issues in TEE development and presents more viable solutions. First, it addresses the code partitioning challenge by designing and building high-level, as well as multi-language tools, to isolate sensitive code inside secure enclaves. Second, it explores the realm of IoT, providing robust techniques to enhance security in IoT environments. Finally, it introduces novel approaches to tackle the performance challenges associated with TEEs. The first research work presents an approach to partitioning Java programs for Intel SGX enclaves. The proposed approach relies on code annotations and bytecode transformations to partition Java classes into trusted and untrusted components. These partitioned components are then ahead-oftime (AOT) compiled into binaries that run in and out of an enclave, while maintaining sufficient interaction to preserve the functional goals of the original program. Building upon the previous work, the second research work extends the concept of code partitioning to a multi-language context. It leverages GraalVM’s Truffle framework to provide abstract syntax tree (AST) nodes that encapsulate sensitive data in polyglot programs. The resulting AST is then analysed via dynamic taint analysis, and the secure nodes are used to deduce sensitive portions of the program to be isolated inside an enclave. The third research work delves into the realm of internet of things (IoT), providing a technique to secure sensitive data generated by peripheral devices. It proposes a generic blueprint for partitioning peripheral drivers for Arm TrustZone, and leverages this approach to design and build a robust framework to enhance security of IoT peripherals. The fourth research work shifts the focus to performance enhancement by leveraging persistent memory (PM) to provide efficient fault tolerance guarantees for Intel SGX programs. The practicality of this technique is demonstrated in a machine learning (ML) context to achieve secure and persistent ML model training. Still focusing on performance enhancement, the fifth research work proposes a system to optimise Intel SGX switchless calls. It identifies the limitations of the static configuration policy in Intel SGX’s switchless call library, and provides a dynamic approach which obviates the performance penalty due to static configurations.