Visible to the public Secure Compilation of Constant-Resource Programs

TitleSecure Compilation of Constant-Resource Programs
Publication TypeConference Paper
Year of Publication2021
AuthorsBarthe, Gilles, Blazy, Sandrine, Hutin, Rémi, Pichardie, David
Conference Name2021 IEEE 34th Computer Security Foundations Symposium (CSF)
Date Publishedjun
Keywordsannotations, Computational modeling, cryptography, Human Behavior, Libraries, Minimization, Predictive models, Privacy Policies, pubcrawl, Scalability, secure compilation, Timing, Verified Compilation
AbstractObservational non-interference (ONI) is a generic information-flow policy for side-channel leakage. Informally, a program is ONI-secure if observing program leakage during execution does not reveal any information about secrets. Formally, ONI is parametrized by a leakage function l, and different instances of ONI can be recovered through different instantiations of l. One popular instance of ONI is the cryptographic constant-time (CCT) policy, which is widely used in cryptographic libraries to protect against timing and cache attacks. Informally, a program is CCT-secure if it does not branch on secrets and does not perform secret-dependent memory accesses. Another instance of ONI is the constant-resource (CR) policy, a relaxation of the CCT policy which is used in Amazon's s2n implementation of TLS and in several other security applications. Informally, a program is CR-secure if its cost (modelled by a tick operator over an arbitrary semi-group) does not depend on secrets.In this paper, we consider the problem of preserving ONI by compilation. Prior work on the preservation of the CCT policy develops proof techniques for showing that main compiler optimisations preserve the CCT policy. However, these proof techniques critically rely on the fact that the semi-group used for modelling leakage satisfies the property: l1+ l1' = l2+l2'$\Rightarrow$l1=l2$\wedge$ l1' = l2' Unfortunately, this non-cancelling property fails for the CR policy, because its underlying semi-group is ($\backslash$mathbbN, +) and it is currently not known how to extend existing techniques to policies that do not satisfy non-cancellation.We propose a methodology for proving the preservation of the CR policy during a program transformation. We present an implementation of some elementary compiler passes, and apply the methodology to prove the preservation of these passes. Our results have been mechanically verified using the Coq proof assistant.
DOI10.1109/CSF51468.2021.00020
Citation Keybarthe_secure_2021