Visible to the public Sparse Representation of Implicit Flows with Applications to Side-channel Detection

TitleSparse Representation of Implicit Flows with Applications to Side-channel Detection
Publication TypeConference Paper
Year of Publication2016
AuthorsRodrigues, Bruno, Quintão Pereira, Fernando Magno, Aranha, Diego F.
Conference NameProceedings of the 25th International Conference on Compiler Construction
Date PublishedMarch 2016
PublisherACM
Conference LocationNew York, NY, USA
ISBN Number978-1-4503-4241-4
Keywordscomposability, edge detection, implicit flows, information flow, Metrics, pubcrawl, Resiliency, Scalability, security, sparse analyses, SSA
Abstract

Information flow analyses traditionally use the Program Dependence Graph (PDG) as a supporting data-structure. This graph relies on Ferrante et al.'s notion of control dependences to represent implicit flows of information. A limitation of this approach is that it may create O(textbarItextbar x textbarEtextbar) implicit flow edges in the PDG, where I are the instructions in a program, and E are the edges in its control flow graph. This paper shows that it is possible to compute information flow analyses using a different notion of implicit dependence, which yields a number of edges linear on the number of definitions plus uses of variables. Our algorithm computes these dependences in a single traversal of the program's dominance tree. This efficiency is possible due to a key property of programs in Static Single Assignment form: the definition of a variable dominates all its uses. Our algorithm correctly implements Hunt and Sands system of security types. Contrary to their original formulation, which required O(IxI) space and time for structured programs, we require only O(I). We have used our ideas to build FlowTracker, a tool that uncovers side-channel vulnerabilities in cryptographic algorithms. FlowTracker handles programs with over one-million assembly instructions in less than 200 seconds, and creates 24% less implicit flow edges than Ferrante et al.'s technique. FlowTracker has detected an issue in a constant-time implementation of Elliptic Curve Cryptography; it has found several time-variant constructions in OpenSSL, one issue in TrueCrypt and it has validated the isochronous behavior of the NaCl library.

URLhttps://dl.acm.org/doi/10.1145/2892208.2892230
DOI10.1145/2892208.2892230
Citation Keyrodrigues_sparse_2016