2019
DOI: 10.1145/3371075
|View full text |Cite
|
Sign up to set email alerts
|

Formal verification of a constant-time preserving C compiler

Abstract: Timing side-channels are arguably one of the main sources of vulnerabilities in cryptographic implementations. One effective mitigation against timing side-channels is to write programs that do not perform secret-dependent branches and memory accesses. This mitigation, known as łcryptographic constant-timež, is adopted by several popular cryptographic libraries. This paper focuses on compilation of cryptographic constant-time programs, and more specifically on the following question: is the code generated by a… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

1
44
0

Year Published

2020
2020
2024
2024

Publication Types

Select...
3
3
2

Relationship

5
3

Authors

Journals

citations
Cited by 46 publications
(45 citation statements)
references
References 46 publications
(53 reference statements)
1
44
0
Order By: Relevance
“…Barthe et al [150] laid the theoretical foundations of constant-time preserving compilation. These ideas were subsequently realized in the verified CompCert C compiler [157].…”
Section: Discussionmentioning
confidence: 99%
“…Barthe et al [150] laid the theoretical foundations of constant-time preserving compilation. These ideas were subsequently realized in the verified CompCert C compiler [157].…”
Section: Discussionmentioning
confidence: 99%
“…However, mechanizing a proof of preservation of speculative constant-time seems significantly simpler, because the analysis is carried at a lower level. This endeavor would require developing methods for proving preservation of speculative constant-time; however we do not anticipate any difficulty in adapting the techniques from existing work on constant-time preserving compilation [54], [66] to the speculative setting.…”
Section: A Machine-checked Guaranteesmentioning
confidence: 99%
“…The prevailing trend in this line of work is to carry verification of side-channel protection and this is typically performed towards the end of the compilation chain or directly on the generated assembly code. This is because even certified compilers may not preserve countermeasures against side-channel attacksa notable exception being the CompCertCT compiler that has been formally proved to preserve these countermeasures [12]. Following this trend, our version of CompCert includes an intrinsics-aware constant-time verifier, following the type-checking approach at Mach level of [11].…”
Section: Contributionsmentioning
confidence: 99%
“…Finally, we mention work on Jasmin [3,6], a new pre-assembly language for the implementation of high-assurance crypto code. Jasmin comes with a verified compiler that is guaranteed to preserve, not only functional correctness but also source-level constant-time properties [14,12] The Jasmin language also supports intrinsics and has been shown to give rise to competitive assembly implementations of cryptographic libraries. Our work provides an alternative to Jasmin, and indeed direct assembly verification using e.g., Vale [18], when functionally correct implementations are generated at C level.…”
Section: Related Workmentioning
confidence: 99%