QIF - Operational Significance
There are emerging needs in quantitative theories of information flow to assess privacy. Until recently, the consensus was that quantitative information flow should be founded on the concepts of Shannon Entropy and its related measures. Geoffrey Smith showed, in 2009, that Shannon Entropy and Mutual Information do a poor job in characterizing confidentiality. The truth is that Shannon’s work was not devised in the context of privacy, but rather for communication. This shows the importance of understanding the operational significance of the measures that we choose. Yet, till these days people continue to adopt measures indiscriminately, without reasoning about the meaning of such measures and without providing explanation on why such measures are good in the contexts they are being applied. In this project, we explore case studies that show the failure of some measures when applied in the context of privacy, to demonstrate and reinforce the importance of understanding a measure’s operational interpretation.
Lif
A program is said to be isochronous if its running time does not depend on classified information. Isochronicity is an essential property in cryptographic implementations, for isochronous programs do not leak time-related information. In this project, we adapted Moll and Hack’s Partial Control-Flow Linearization algorithm, initially developed in the context of vectorization to remove divergent branches, to the context of side-channel resistance. We developed a prototype on top of LLVM. Lif extends previous work in non-trivial ways: it can handle programs with unbounded loops and does not require runtime information.
[TOPLAS]
Side-channel Elimination via Partial Control-flow Linearization
[CTD]
Memory-Safe Elimination of Side Channels
[MSc Thesis]
Memory-Safe Elimination of Side Channels
[CGO 2021]
Memory-Safe Elimination of Side Channels
Escape Analysis
Escape analysis refers to a compile-time approach that simply establishes whether an object can be stack-allocated or not. An object is said to escape from a function or procedure m if its lifetime exceeds the lifetime of m. We implemented an Escape Analysis on top of Go’s SSA intermediate representation, as an extension of Go’s existing Escape Analysis. We tested our implementation against four real benchmarks and we obtained an average speedup of 1.3%, with the highest speedup being 3.4%.
[Bachelor’s Thesis]
Escape Analysis for Static Single Assignment Form