Voici les éléments 1 - 10 sur 261
  • Publication
    Accès libre
    Towards new memory paradigms : integrating non-volatile main memory and remote direct memory access in modern systems
    (2024) ; ;
    Thomas, Gaël
    Les ordinateurs modernes sont construits autour de deux éléments : leur CPU et leur mémoire principale volatile, ou RAM. Depuis les années 1970, ce principe a été constamment amélioré pour offrir toujours plus de fonctionnalités et de performances. Dans cette thèse, nous étudions deux paradigmes de mémoire qui proposent de nouvelles façons d’interagir avec la mémoire dans les systèmes modernes : la mémoire non-volatile et les accès mémoire distants. Nous mettons en oeuvre des outils logiciels qui exploitent ces nouvelles approches afin de les rendre compatibles et d’exploiter leurs performances avec des applications concrètes. Nous analysons également l’impact des technologies utilisées, et les perspectives de leur évolution dans les années à venir. Pour la mémoire non-volatile, comme les performances de la mémoire sont essentielles pour atteindre le potentiel d’un CPU, cette fonctionnalité a historiquement été abandonnée. Même si les premiers ordinateurs ont été conçus avec des formes de mémoire non volatiles, les architectes informatiques ont commencé à utiliser la RAM volatile pour ses performances inégalées, et n’ont jamais remis en question cette décision pendant des années. Cependant, en 2019, Intel a commercialisé un nouveau composant appelé Optane DCPMM qui rend possible l’utilisation de NVMM. Ce produit propose une nouvelle façon de penser la persistance des données. Mais il remet également en question l’architecture de nos machines et la manière dont nous les programmons. Avec cette nouvelle forme de mémoire, nous avons implémenté NVCACHE, un cache en mémoire non-volatile qui permet d’accélérer les interactions avec des supports de stockage persistants plus lents, tels que les SSD. Nous montrons que NVCACHE est particulièrement performant pour les tâches qui nécessitent une granularité élevée des garanties de persistance, tout en étant aussi simple à utiliser que l’interface POSIX traditionnelle. Comparé aux systèmes de fichiers conçus pour NVMM, NVCACHE peut atteindre un débit similaire ou supérieur lorsque la mémoire non volatile est utilisée. De plus, NVCACHE permet aux programmes d’exploiter les performances de NVMM sans être limité par la quantité de NVMM installée sur la machine. Un autre changement majeur dans le paysage informatique a été la popularité des systèmes distribués. Alors que les machines ont individuellement tendance à atteindre des limites de performances, l’utilisation de plusieurs machines et le partage des tâches sont devenus la nouvelle façon de créer des ordinateurs puissants. Bien que ce mode de calcul permette d’augmenter le nombre de CPU utilisés simultanément, il nécessite une connexion rapide entre les noeuds de calcul. Pour cette raison, plusieurs protocoles de communication ont implémententé RDMA, un moyen de lire ou d’écrire directement dans la mémoire d’un serveur distant. RDMA offre de faibles latences et un débit élevé, contournant de nombreuses étapes de la pile réseau. Cependant, RDMA reste limité dans ses fonctionnalités natives. Par exemple, il n’existe pas d’équivalent de multicast pour les fonctions RDMA les plus efficaces. Grâce à un switch programmable (le switch Intel Tofino), nous avons implémenté un mode spécial pour RDMA qui permet de lire ou d’écrire sur plusieurs serveurs en même temps, sans pénalité de performances. Notre système appelé Byp4ss fait participer le switch aux transferts, en dupliquant les paquets RDMA. Grâce à Byp4ss, nous avons implémenté un protocole de consensus nommé DISMU. De par sa conception, DISMU est optimal en termes de latence et de débit, car il peut réduire au minimum le nombre de paquets échangés sur le réseau pour parvenir à un consensus. Enfin, en utilisant ces deux technologies, nous remarquons que les futures générations de matériel pourraient nécessiter une nouvelle interface pour les mémoires de toutes sortes, afin de faciliter l’interopérabilité dans des systèmes qui ont tendance à devenir de plus en plus hétérogènes et complexes. ABSTRACT Modern computers are built around two main parts: their Central Processing Unit (CPU), and their volatile main memory, or Random Access Memory (RAM). The basis of this architecture takes its roots in the 1970’s first computers. Since, this principle has been constantly upgraded to provide more functionnality and performance. In this thesis, we study two memory paradigms that drastically change the way we can interact with memory in modern systems: non-volatile memory and remote memory access. We implement software tools that leverage them in order to make them compatible and exploit their performance with concrete applications. We also analyze the impact of the technologies underlying these new memory medium, and the perspectives of their evolution in the coming years. For non-volatile memory, as the main memory performance is key to unlock the full potential of a CPU, this feature has historically been abandoned on the race for performance. Even if the first computers were designed with non-volatile forms of memory, computer architects started to use volatile RAM for its incomparable performance compared to durable storage, and never questioned this decision for years. However, in 2019 Intel released a new component called Optane DC Persistent Memory (DCPMM), a device that made possible the use of Non-Volatile Main Memory (NVMM). That product, by its capabilities, provides a new way of thinking about data persistence. Yet, it also challenges the hardware architecture used in our current machines and the way we program them. With this new form of memory we implemented NVCACHE, a cache designed for non-volatile memory that helps boosting the interactions with slower persistent storage medias, such as Solid State Drive (SSD). We find NVCACHE to be quite performant for workloads that require a high granularity of persistence guarantees, while being as easy to use as the traditional POSIX interface. Compared to file systems designed for NVMM, NVCACHE can reach similar or higher throughput when the non-volatile memory is used. In addition, NVCACHE allows the code to exploit NVMM performance while not being limited by the amount of NVMM installed in the machine. Another major change of in the computer landscape has been the popularity of distributed systems. As individual machines tend to reach performance limitations, using several machines and sharing workloads became the new way to build powerful computers. While this mode of computation allows the software to scale up the number of CPUs used simultaneously, it requires fast interconnection between the computing nodes. For that reason, several communication protocols implemented Remote Direct Memory Access (RDMA), a way to read or write directly into a distant machine’s memory. RDMA provides low latencies and high throughput, bypassing many steps of the traditional network stack. However, RDMA remains limited in its native features. For instance, there is no advanced multicast equivalent for the most efficient RDMA functions. Thanks to a programmable switch (the Intel Tofino), we implemented a special mode for RDMA that allows a client to read or write in multiple servers at the same time, with no performance penalty. Our system called Byp4ss makes the switch participate in transfers, duplicating RDMA packets. On top of Byp4ss, we implement a consensus protocol named DISMU, which shows the typical use of Byp4ss features and its impact on performance. By design, DISMU is optimal in terms of latency and throughput, as it can reduce to the minimum the number of packets exchanged through the network to reach a consensus. Finally, by using these two technologies, we notice that future generations of hardware may require a new interface for memories of all kinds, in order to ease the interoperability in systems that tend to get more and more heterogeneous and complex.
  • 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.
  • Publication
    Restriction temporaire
  • Publication
    Restriction temporaire
  • Publication
    Restriction temporaire
    SGX Switchless Calls Made Configless
    (2023) ;
    Paper, Michael
    ;
    Zerbib, Timothée
    ;
    ; ;
    Tchana, Alain
  • Publication
    Restriction temporaire
    VEDLIoT: Next generation accelerated AIoT systems and applications
    (2023)
    Mika, Kevin
    ;
    Griessl, René
    ;
    Kucza, Nils
    ;
    Porrmann, Florian
    ;
    Kaiser, Martin
    ;
    Tigges, Lennart
    ;
    Hagemeyer, Jens
    ;
    Trancoso, Pedro
    ;
    Azhar, Muhammad
    ;
    Qararyah, Fareed
    ;
    Zouzoula, Stavroula
    ;
    ; ; ;
    Marcus, Carina
    ;
    Brunnegård, Oliver
    ;
    Eriksson, Olof
    ;
    Salomonsson, Hans
    ;
    Ödman, Daniel
    ;
    Ask, Andreas
    ;
    Casimiro, António
    ;
    Bessani, Alysson
    ;
    Carvalho, Tiago
    ;
    Gugala, Karol
    ;
    Zierhoffer, Piotr
    ;
    Latosinski, Grzegorz
    ;
    Tassemeier, Marco
    ;
    Porrmann, Mario
    ;
    Heyn, Hans-Martin
    ;
    Knauss, Eric
    ;
    Mao, Yufei
    ;
    Meierhöfer, Franz
  • Publication
    Restriction temporaire
  • Publication
    Restriction temporaire
    Capacity Planning for Dependable Services
    (2022)
    Faqeh, Rasha
    ;
    Martin, André
    ;
    ;
    Bhatotia, Pramod
    ;
    ;
    Fetzer, Christof