A memory hierarchy protected against side-channel attacks
Une hiérarchie mémoire protégée contre les attaques par canaux auxiliaires
Résumé
Side-channel attacks have been exploiting weaknesses of cryptographic primitives as soon as they began being implemented on embedded systems. The intent has typically been to recover cryptographic keys that are usually difficult to extract by relying solely on the mathematical constructs of these algorithms. Several countermeasures have been developed to protect implementations of cryptographic algorithms from such attacks.However, embedded systems store many types of data that flow through the memory hierarchy and can be as sensitive as encryption keys. Examples include personal and confidential user data (authentication codes, medical information, etc.). This thesis focuses on the threats posed by side channel attacks on the memory hierarchy and especially on first order attacks based on power consumption analysis. A first characterization of side-channel leakage has been performed on the interconnect bus and registers of a System on Chip based on a RISC-V processor (RI5CY). The study confirmed the Hamming weight and distance leakages on these two components. It also demonstrated the possibility of exploiting these leakages through a template attack. The value of the data transmitted on the bus could be recovered with a success probability of 0.96 with 200 attack traces and a residual complexity of 213.2.Secondly, a countermeasure was defined to protect not only the bus and registers but also the entire memory hierarchy. Encryption of memory hierarchy is a well-known and applied method, but it implies an overhead in terms of spatial footprint and timing latencies. In order to alleviate this approach, a solution for fast and lightweight masking of data in cache memory is proposed. This solution provides a lightweight module that can generate 64-bit masks at each clock cycle and at a frequency of 150 MHz while only having to store an 8-bit random source instead of the full masks. These can be recalculated from the random source. Data masking in caches complements encryption on the bus by avoiding the need to send encrypted data to the caches and by allowing masked execution at the CPU pipeline.
Les attaques par canaux auxiliaires ont traditionnellement permis d’exploiter les vulnérabilités des primitives cryptographiques dès lors qu’elles ont commencé à être implémentées sur des systèmes embarqués. L’objectif a longtemps été de retrouver des clés cryptographiques qui sont habituellement difficiles à obtenir en se basant uniquement sur les constructions mathématiques de ces algorithmes. Plusieurs contremesures ont été développées dans le but de protéger les implémentations d’algorithmes cryptographiques face à ces attaques.Pourtant, les systèmes embarqués engrangent plusieurs types de données qui circulent à travers la hiérarchie mémoire et qui peuvent être aussi sensibles que des clés de chiffrement. On pourrait penser à des données personnelles et confidentielles des utilisateurs (code d’authentification, informations médicales…). Cette thèse s’intéresse aux menaces que représentent les attaques par canaux auxiliaires sur la hiérarchie mémoire et spécialement les attaques de premier ordre basées sur l’analyse de la consommation de puissance. Une première caractérisation des fuites par canaux auxiliaires a donc été réalisée sur le bus d’interconnexion et les registres d’un System on Chip basé sur un processeur RISC-V (RI5CY). Cela a permis de confirmer les fuites en poids et distance de Hamming sur ces deux composants et aussi de montrer que ces fuites étaient aussi exploitables à travers une attaque template. On pouvait retrouver la valeur des données passant sur le bus avec une probabilité de succès de 0.96 avec 200 traces d’attaque et une complexité résiduelle de 213.2.Dans un deuxième temps, il a été question de définir une contremesure afin de protéger non seulement le bus et les registres mais toute la hiérarchie mémoire. Le chiffrement de la hiérarchie est une solution qui est bien connue et appliquée mais implique un surcoût en terme d’occupation spatiale et de latence temporelle. Afin d’alléger cette approche, une solution de masquage rapide et léger des données en mémoire cache est proposée. Cette solution prévoit un module léger qui permet de générer des masques 64 bits à chaque cycle d’horloge et à une fréquence de 150 MHz tout en ayant à stocker uniquement une source d’aléas de 8 bits au lieu des masques entiers. Ceux-ci pourront être recalculés à partir de la source d’aléas. Le masquage des données dans les caches vient en complément du chiffrement sur le bus en évitant d’avoir à envoyer des données chiffrées dans les caches et en permettant une exécution masquée au niveau du pipeline du CPU.
Origine | Version validée par le jury (STAR) |
---|