Strategies for securing cache memories against software side-channel attacks
Stratégies de sécurisation des mémoires cache contre les attaques par canaux auxiliaires logiciels
Résumé
Process isolation is the most important security constraint enforced by operating systems in multitasking systems. One process isolation is memory isolation, to separates running processes from accessing each other. However, such isolation is not implemented at the hardware level. For example, all processes running on the same CPU eventually share the same L1 and L2 caches. Furthermore, all processes share the last level cache. A malicious program can then manipulate the cache state to derive information about other processes that share the same cache, thus breaking the isolation the operating system provides. However, despite all the isolation mechanisms described by the OS, hardware sharing can lead to information leaks and thus violate the isolation ensured by these mechanisms. Hence, processor architects must redesign the components of processors and address these vulnerabilities to mitigate them effectively in the new generation of processors.This thesis first provides a comprehensive study of the most common cache-based side-channel attacks. These attacks occur when memory accesses depend on sensitive information. In particular, these attacks can retrieve the memory access sequence of the victim program. Although these attacks are easy to understand, their practical implementation is usually tricky and requires a deep understanding of poorly documented processor functions. Therefore, the lack of a set for microarchitectural side-channel attacks is an obstacle to analyzing the resilience of existing software/hardware countermeasures against microarchitectural side-channel attacks. For these reasons, we developed the Micro-Architectural Analysis Toolkit (libMAAT) library to abstract the implementation of microarchitectural side-channel attacks on various CPU architectures (e.g., x86, ARMv7, ARMv8, and RISCV). We have used this library to prototype cache-based side-channel attacks and evaluate the resilience of our secure architectures against realistic attacks.Additionally, on real systems, the attacker's observations using cache-based side-channel attacks can be disrupted because of the noise added by the optimizations, such as hardware prefetching, simultaneous multithreading (SMT), TLBs, buses, etc. This thesis offers a noise-free framework that abstracts the implementation details of inclusive memory hierarchies. We use this framework to analyze the side effects of cache attacks and evaluate them in randomized caches. In addition, it allows us to introduce ScrambleCache, a novel cache architecture that leverages randomized set placement to defeat cache side-channel analysis. A key property of the ScrambleCache is its low impact on performances and its small area overhead. We demonstrate that this countermeasure protects the system against known cache side-channel attacks while ensuring small overheads, making this solution suitable for both embedded and application systems. In addition, to eliminate conflict-based side-channel attacks, we propose to randomly evict a number of cache lines from the last-level cache each time a precomputed number of memory accesses are achieved. Our security analysis reveals that even in the strongest possible attacker model (noise-free), eviction set construction algorithms fail to find a set of congruent addresses.
L'isolation des processus est la contrainte de sécurité la plus importante imposée par les systèmes d'exploitation dans les systèmes multitâches. L'isolation des processus est notamment l'isolation de la mémoire, qui permet d'empêcher les processus en cours d'exécution d'accéder les uns aux autres. Toutefois, cette isolation n'est pas mise en œuvre au niveau matériel. Par exemple, tous les processus exécutés sur la même unité centrale partagent éventuellement les mêmes caches L1 et L2. En outre, tous les processus partagent le cache de dernier niveau. Un programme malveillant peut alors manipuler l'état du cache pour en tirer des informations sur les autres processus qui partagent le même cache, violant ainsi l'isolation fournie par le système d'exploitation. Cependant, malgré tous les mécanismes d'isolation décrits par le système d'exploitation, le partage du matériel peut entraîner des fuites d'informations et donc violer l'isolation assurée par ces mécanismes. Les architectes de processeurs doivent donc revoir la conception des composants des processeurs et étudier ces vulnérabilités afin de les atténuer efficacement dans la nouvelle génération de processeurs.Cette thèse fournit d'abord une étude complète des attaques par canal latéral les plus courantes basées sur le cache. Ces attaques se produisent lorsque les accès à la mémoire dépendent d'informations sensibles. En particulier, ces attaques peuvent récupérer la séquence d'accès mémoire du programme victime. Bien que ces attaques soient faciles à comprendre, leur mise en œuvre pratique est généralement délicate et nécessite une compréhension approfondie des fonctions mal documentées du processeur. Par conséquent, l'absence d'un ensemble d'attaques par canal latéral microarchitectural est un obstacle à l'analyse de la résilience des contre-mesures logicielles/matérielles existantes contre les attaques par canal latéral microarchitectural. Pour ces raisons, nous avons développé la bibliothèque Micro-Architectural Analysis Toolkit (libMAAT) afin d'abstraire l'implémentation des attaques par canal latéral microarchitectural sur diverses architectures de CPU (par exemple, x86, ARMv7, ARMv8 et RISCV). Nous avons utilisé cette bibliothèque pour prototyper des attaques par canal latéral basées sur le cache et évaluer la résilience de nos architectures sécurisées contre des attaques réalistes.De plus, sur les systèmes réels, les observations de l'attaquant utilisant des attaques par canal latéral basées sur le cache peuvent être perturbées à cause du bruit ajouté par les optimisations, telles que le préchargement matériel, le multithreading simultané (SMT), les TLB, les bus, etc. Cette thèse offre un cadre sans bruit qui abstrait les détails d'implémentation des hiérarchies de mémoire inclusive. Nous utilisons ce cadre pour analyser les effets secondaires des attaques de cache et les évaluer dans des caches aléatoires. En outre, il nous a permis de proposer ScrambleCache, une nouvelle architecture de cache qui tire parti du placement aléatoire des ensembles pour déjouer l'analyse des effets secondaires du cache. L'une des principales propriétés du ScrambleCache est son faible impact sur les performances et sa faible surcharge de surface. Nous démontrons que cette contre-mesure protège le système contre les attaques connues des canaux latéraux de cache tout en garantissant un faible surcoût, ce qui rend cette solution adaptée aux systèmes embarqués et aux systèmes d'application. En outre, pour éliminer les attaques par canal latéral basées sur des conflits, nous proposons d'expulser de manière aléatoire un certain nombre de lignes de cache du cache de dernier niveau chaque fois qu'un nombre précalculé d'accès à la mémoire est atteint. Notre analyse de sécurité révèle que même dans le modèle d'attaquant le plus fort possible (sans bruit), les algorithmes de construction d'ensembles d'éviction ne parviennent pas à trouver un ensemble d'adresses congruentes.
Origine | Version validée par le jury (STAR) |
---|