4 research outputs found
Iodine: Verifying Constant-Time Execution of Hardware
To be secure, cryptographic algorithms crucially rely on the underlying
hardware to avoid inadvertent leakage of secrets through timing side channels.
Unfortunately, such timing channels are ubiquitous in modern hardware, due to
its labyrinthine fast-paths and optimizations. A promising way to avoid timing
vulnerabilities is to devise --- and verify --- conditions under which a
hardware design is free of timing variability, i.e., executes in constant-time.
In this paper, we present Iodine: a clock precise, constant-time approach to
eliminating timing side channels in hardware. Iodine succeeds in verifying
various open source hardware designs in seconds and with little developer
effort. Iodine also discovered two constant-time violations: one in a
floating-point unit and another one in an RSA encryption module
PLAS:The 18th Workshop on Programming Languages and Analysis for Security
PLAS provides a forum for exploring and evaluating the use of programming language and program analysis techniques for promoting security in the complete range of software systems, from compilers to machine-learned models and smart contracts. The workshop encourages proposals of new, speculative ideas, evaluations of new or known techniques in practical settings, and discussions of emerging threats and problems. We also host position papers that are radical, forward-looking, and lead to lively and insightful discussions influential to future research at the intersection of programming languages and security. This year will mark the 18th iteration of PLAS, which was first held in 2007 in San Diego. We expect an exciting program and many interesting discussions
Constant-Time Foundations for the New Spectre Era
PLDI '20International audienceThe constant-time discipline is a software-based countermeasure used for protecting high assurance cryptographic implementations against timing side-channel attacks. Constant-time is effective (it protects against many known attacks), rigorous (it can be formalized using program semantics), and amenable to automated verification. Yet, the advent of micro-architectural attacks makes constant-time as it exists today far less useful. This paper lays foundations for constant-time programming in the presence of speculative and out-of-order execution. We present an operational semantics and a formal definition of constant-time programs in this extended setting. Our semantics eschews formalization of microarchitectural features (that are instead assumed under adversary control), and yields a notion of constant-time that retains the elegance and tractability of the usual notion. We demonstrate the relevance of our semantics in two ways: First, by contrasting existing Spectre-like attacks with our definition of constant-time. Second, by implementing a static analysis tool, Pitchfork, which detects violations of our extended constant-time property in real world cryptographic libraries