Low-level Isochronous Form

Lif is a tool that transforms a given program into a semantically equivalent version that has the property that it always executes the same operations, regardless of the inputs. In some cases, it also guarantees that the modified code will always access the same sequence of memory addresses. This second property depends on some features of the original program. This way, Lif can be used to automatically eliminate timing-based side channels. This tool is memory safe, which means that it does not introduce out-of-bounds memory accesses that did not exist in the first place. And, more importantly, Lif can deal with loops, in contrast to previous techniques. Lif is built on top of the LLVM compiler infrastructure, thus working at the LLVM IR level. The first version of Lif was described in this paper published at CGO. The new algorithm to linearize programs with loops is described in the MSc thesis of Luigi Soares and in this new report.

Try It Yourself!

Type your C code in the box below or select a file to upload:

Our Team

Luigi Soares

Luigi Soares

UFMG

Fernando Pereira

Fernando Pereira

UFMG