Output-sensitive Information flow analysis
Cristian Ene, Laurent Mounier, Marie-Laure Potet

TL;DR
This paper introduces an output-sensitive noninterference approach for verifying constant-time programming, allowing safe relaxation of strict policies by considering public outputs and tracking information flow more precisely.
Contribution
It proposes a novel type-based method that accounts for both initial inputs and final outputs to improve information flow analysis in constant-time programming.
Findings
Successfully adapted to LLVM IR
Prototype verifies LLVM implementations effectively
Tracks dependence on both inputs and outputs
Abstract
Constant-time programming is a countermeasure to prevent cache based attacks where programs should not perform memory accesses that depend on secrets. In some cases this policy can be safely relaxed if one can prove that the program does not leak more information than the public outputs of the computation. We propose a novel approach for verifying constant-time programming based on a new information flow property, called output-sensitive noninterference. Noninterference states that a public observer cannot learn anything about the private data. Since real systems need to intentionally declassify some information, this property is too strong in practice. In order to take into account public outputs we proceed as follows: instead of using complex explicit declassification policies, we partition variables in three sets: input, output and leakage variables. Then, we propose a typing system…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
