2017
DOI: 10.1145/3110261
|View full text |Cite
|
Sign up to set email alerts
|

Verified low-level programming embedded in F*

Abstract: We present Low * , a language for low-level programming and verification, and its application to high-assurance optimized cryptographic libraries. Low * is a shallow embedding of a small, sequential, well-behaved subset of C in F * , a dependently-typed variant of ML aimed at program verification. Departing from ML, Low * does not involve any garbage collection or implicit heap allocation; instead, it has a structured memory model à la CompCert, and it provides the control required for writing efficient low-le… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
44
0

Year Published

2018
2018
2020
2020

Publication Types

Select...
4
2

Relationship

3
3

Authors

Journals

citations
Cited by 69 publications
(44 citation statements)
references
References 53 publications
(48 reference statements)
0
44
0
Order By: Relevance
“…However, while ConSORT automatically infers many ownership transfers, Viper requires extensive annotations for each transfer. F*, a dependently typed dialect of ML, includes an update/select theory of heaps and requires explicit annotations summarizing the heap effects of a method [44,57,58]. This approach enables modular reasoning and precise specification of pre-and post-conditions with respect to the heap, but precludes full automation.…”
Section: Related Workmentioning
confidence: 99%
“…However, while ConSORT automatically infers many ownership transfers, Viper requires extensive annotations for each transfer. F*, a dependently typed dialect of ML, includes an update/select theory of heaps and requires explicit annotations summarizing the heap effects of a method [44,57,58]. This approach enables modular reasoning and precise specification of pre-and post-conditions with respect to the heap, but precludes full automation.…”
Section: Related Workmentioning
confidence: 99%
“…Once proven correct with regards to their specification, programs written in F * can be compiled to OCaml or F#. Recently [9], F * gained the ability to generate C code, as long as the run-time parts of the program are written in a low-level subset called Low * . This allows the programmer to use the full power of F * for proofs and verification and, relying on the fact that proofs are computationally irrelevant and hence erased, extract the remaining Low * code to C. This approach was successfully used by the HACL * [18] verified crypto library, and the resulting C code is currently used in the Firefox browser and Wireguard VPN.…”
Section: Background: F * and Webassemblymentioning
confidence: 99%
“…Our approach is to compile WebAssembly code from formally verified source code written in Low * [9], a subset of the F * programming language [10]. As far as we know, this is the first verification toolchain for WebAssembly that supports correctness, memory safety, and side-channel resistance.…”
Section: Introduction: Cryptographic Web Applicationsmentioning
confidence: 99%
“…Whereas those specifications are ghost code, we would like to generate implementations that can be extracted to C. To this end, we generate stateful implementations written in the Low set of F [56], operating on buffers, which are Low mutable data structures representing C arrays. There, instead of a sequence of bytes, the parser implementation is given an input buffer and its length; and the serializer implementation is given an output buffer (along with its length) onto which it is to serialize the data.…”
Section: A Metaprogramming Verified Parsers and Serializersmentioning
confidence: 99%