This talk will be about adding features to LLVM that improve the security of the code.T
We will briefly talk about side channel attacks by focusing on information leakage due to timing behaviour and introduce the concept of 'bit-slicing' as a possible countermeasure against such kind of leakage.
We'll then talk about the LADA and the SECURE projects and about my contribution: the addition to LLVM of several tools that can automatically transform sensible regions of the code into 'bit-sliced' format.
We will discuss then the benefits and the limits of such transformations.
Information leakage via side channels is a widely recognized threat to cyber security. In particular small devices are known to leak information through physical channels, i.e. power consumption, electromagnetic radiation, and timing behaviour.
Several implementation techniques and countermeasures are arising nowadays against this kind of threats, but still only fully equipped testing labs with skilled people can afford to test new implementations against leakage attacks.
The LADA project (University of Bristol, Cryptography Research Group) aims at bringing the skill of a testing lab to the desk of a developer of standard consumer devices, without the need for domain specific knowledge.
In such context I focused on the information leakages that are due to the execution time and investigated 'bit-slicing' as a possible countermeasure. I then started the design of a tool for LLVM (an LLVM pass) that works on the intermediate representation and that can transform the selected parts of the code into an equivalent 'bit-sliced' version.
Bit-slicing is just one of many features that can be added to LLVM in order to improve the security of the code.
Since my work is still in progress, the aim of my talk is to discuss the design of my tool, explain its limits and how it should be used, but also to collect any ideas about other security features that may be added to LLVM.