Decomposition Instead of Self-composition for Proving the Absence of Timing Channels
Title | Decomposition Instead of Self-composition for Proving the Absence of Timing Channels |
Publication Type | Conference Paper |
Year of Publication | 2017 |
Authors | Antonopoulos, Timos, Gazzillo, Paul, Hicks, Michael, Koskinen, Eric, Terauchi, Tachio, Wei, Shiyi |
Conference Name | Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation |
Publisher | ACM |
Conference Location | New York, NY, USA |
ISBN Number | 978-1-4503-4988-8 |
Keywords | Blazer, composability, Computing Theory, decomposition, Metrics, pubcrawl, resilience, Subtrails, taint analysis, timing attacks, verification |
Abstract | We present a novel approach to proving the absence of timing channels. The idea is to partition the programas execution traces in such a way that each partition component is checked for timing attack resilience by a time complexity analysis and that per-component resilience implies the resilience of the whole program. We construct a partition by splitting the program traces at secret-independent branches. This ensures that any pair of traces with the same public input has a component containing both traces. Crucially, the per-component checks can be normal safety properties expressed in terms of a single execution. Our approach is thus in contrast to prior approaches, such as self-composition, that aim to reason about multiple (kaY= 2) executions at once. We formalize the above as an approach called quotient partitioning, generalized to any k-safety property, and prove it to be sound. A key feature of our approach is a demand-driven partitioning strategy that uses a regex-like notion called trails to identify sets of execution traces, particularly those influenced by tainted (or secret) data. We have applied our technique in a prototype implementation tool called Blazer, based on WALA, PPL, and the brics automaton library. We have proved timing-channel freedom of (or synthesized an attack specification for) 24 programs written in Java bytecode, including 6 classic examples from the literature and 6 examples extracted from the DARPA STAC challenge problems. |
URL | http://doi.acm.org/10.1145/3062341.3062378 |
DOI | 10.1145/3062341.3062378 |
Citation Key | antonopoulos_decomposition_2017 |