Code Polymorphism Meets Code Encryption: Confidentiality and Side-Channel Protection of Software Components - CEA - Commissariat à l’énergie atomique et aux énergies alternatives Accéder directement au contenu
Article Dans Une Revue Digital Threats: Research and Practice Année : 2021

Code Polymorphism Meets Code Encryption: Confidentiality and Side-Channel Protection of Software Components

Résumé

In this paper, we consider that, in practice, attack scenarios involving side-channel analysis combine two successive phases: an analysis phase, targeting the extraction of information about the target and the identification of possible vulnerabilities; and an exploitation phase, applying attack techniques on candidate vulnerabilities. We advocate that protections need to cover these two phases in order to be effective against real-life attacks. We present PolEn, a toolchain and a processor architecture that combine countermeasures in order to provide an effective mitigation of side-channel attacks: as a countermeasure against the analysis phase, our approach considers the use of code encryption; as a countermeasure against the exploitation phase, our approach considers the use of code polymorphism, because it relies on runtime code generation, and its combination with code encryption is particularly challenging. Code encryption is supported by a processor extension such that machine instructions are only decrypted inside the CPU, which effectively prevents reverse engineering or any extraction of useful information from memory dumps. Code polymorphism is implemented by software means. It regularly changes the observable behaviour of the program, making it unpredictable for an attacker, hence reducing the possibility to exploit side-channel leakages. We present a prototype implementation, based on the RISC-V Spike simulator and a modified LLVM toolchain. In our experimental evaluation, we illustrate that PolEn effectively reduces side-channel leakages. For the protected functions evaluated, static memory use increases by a factor of 5 to 22, corresponding to the joint application of code encryption and code polymorphism. The overhead, in terms of execution time, ranges between a factor of 1.8 and 4.6.
Fichier principal
Vignette du fichier
polen.pdf (2.54 Mo) Télécharger le fichier
Origine : Fichiers produits par l'(les) auteur(s)

Dates et versions

cea-03605072 , version 1 (10-03-2022)
cea-03605072 , version 2 (11-10-2023)

Licence

Paternité - Pas d'utilisation commerciale - Pas de modification

Identifiants

Citer

Damien Couroussé, Lionel Morel, Thomas Hiscock. Code Polymorphism Meets Code Encryption: Confidentiality and Side-Channel Protection of Software Components. Digital Threats: Research and Practice, 2021, https://dl.acm.org/doi/10.1145/3487058. ⟨10.1145/3487058⟩. ⟨cea-03605072v1⟩

Collections

GS-ENGINEERING
121 Consultations
237 Téléchargements

Altmetric

Partager

Gmail Facebook X LinkedIn More