Robust Constant-Time Cryptography

Publication date

2025-06-10

Authors

Kolosick, Matthew
Shivakumar, Basavesh Ammanaghatta
Cauligi, Sunjay
Patrignani, Marco
Vassena, MarcoORCID 0000-0002-4795-0236ISNI 0000000527856543
Jhala, Ranjit
Stefan, Deian

Editors

Advisors

Supervisors

Document Type

Article
Open Access logo

License

cc_by

Abstract

Cryptographic library developers take care to ensure their library does not leak secrets even when there are (inevitably) exploitable vulnerabilities in the applications the library is linked against. To do so, they choose some class of application vulnerabilities to defend against and hardcode protections against those vulnerabilities in the library code. A single set of choices is a poor fit for all contexts: a chosen protection could impose unnecessary overheads in contexts where those attacks are impossible, and an ignored protection could render the library insecure in contexts where the attack is feasible. We introduce RoboCop, a new methodology and toolchain for building secure and efficient applications from cryptographic libraries, via four contributions. First, we present an operational semantics that describes the behavior of a (cryptographic) library executing in the context of a potentially vulnerable application so that we can precisely specify what different attackers can observe. Second, we use our semantics to define a novel security property, Robust Constant Time (RCT), that defines when a cryptographic library is secure in the context of a vulnerable application. Crucially, our definition is parameterized by an attacker model, allowing us to factor out the classes of attackers that a library may wish to secure against. This refactoring yields our third contribution: a compiler that can synthesize bespoke cryptographic libraries with security tailored to the specific application context against which the library will be linked, guaranteeing that the library is RCT in that context. Finally, we present an empirical evaluation that shows the RoboCop compiler can automatically generate code to efficiently protect a wide range (over 500) of cryptographic library primitives against three classes of attacks: read gadgets (due to application memory safety vulnerabilities), speculative read gadgets (due to application speculative execution vulnerabilities), and concurrent observations (due to application threads), with performance overhead generally under 2% for protections from read gadgets and under 4% for protections from speculative read gadgets, thus freeing library developers from making one-size-fits-all choices between security and performance.

Keywords

cryptography, secure compilation, Spectre, speculative execution, Software, Safety, Risk, Reliability and Quality

Citation

Kolosick, M, Shivakumar, B A, Cauligi, S, Patrignani, M, Vassena, M, Jhala, R & Stefan, D 2025, 'Robust Constant-Time Cryptography', Proceedings of the ACM on Programming Languages, vol. 9, 207. https://doi.org/10.1145/3729310