Abstract
Cyber-attacks combine several techniques to compromise device's functionality, recover sensitive data or unveil IP design. Combined counter-measures are needed to address these complex attacks as a whole. We address attacks that rely on reverse engineering to recover application code and side-channel attacks to access sensitive data. We present POLEN, a toolchain and a processor architecture that combines two countermeasures: code encryption and code polymorphism to thwart such complex attacks. Code encryption reduces the useful information in memory dumps, preventing reverse engineering, by encrypting machine instructions before its deployment, and instructions are only decrypted inside the CPU. Code polymorphism regularly changes the observable behaviour of the program, making it unpredictable for an attacker, and reducing the possibility to exploit side-channel leakages. Using many configuration parameters, POLEN gives the developer the ability to adapt the security level to its application. We present our prototype implementation, based on the RISC-V Spike simulator and a modified LLVM toolchain. We demonstrate that POLEN reduces side-channel leakages through leakage assessments metrics. We show that POLEN achieves a good level of security against side-channel attacks while maintaining acceptable overheads on program performance.
Publisher
Association for Computing Machinery (ACM)