Affiliation:
1. Microsoft Research, Redmond, WA, USA
2. Microsoft Research, Cambridge, United Kingdom
3. INRIA-Microsoft Research Joint Centre, Orsay, France
4. INRIA, Paris, France
5. Massachusettes Institute of Technology, Cambridge, MA, USA
Abstract
Distributed applications are difficult to program reliably and securely. Dependently typed functional languages promise to prevent broad classes of errors and vulnerabilities, and to enable program verification to proceed side-by-side with development. However, as recursion, effects, and rich libraries are added, using types to reason about programs, specifications, and proofs becomes challenging.
We present F*, a full-fledged design and implementation of a new dependently typed language for secure distributed programming. Unlike prior languages, F* provides arbitrary recursion while maintaining a logically consistent core; it enables modular reasoning about state and other effects using affine types; and it supports proofs of refinement properties using a mixture of cryptographic evidence and logical proof terms. The key mechanism is a new kind system that tracks several sub-languages within F* and controls their interaction. F* subsumes two previous languages, F7 and Fine. We prove type soundness (with proofs mechanized in Coq) and logical consistency for F*.
We have implemented a compiler that translates F* to .NET bytecode, based on a prototype for Fine. F* provides access to libraries for concurrency, networking, cryptography, and interoperability with C#, F#, and the other .NET languages. The compiler produces verifiable binaries with 60% code size overhead for proofs and types, as much as a 45x improvement over the Fine compiler, while still enabling efficient bytecode verification.
To date, we have programmed and verified more than 20,000 lines of F* including (1) new schemes for multi-party sessions; (2) a zero-knowledge privacy-preserving payment protocol; (3) a provenance-aware curated database; (4) a suite of 17 web-browser extensions verified for authorization properties; and (5) a cloud-hosted multi-tier web application with a verified reference monitor.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
45 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Perspectives on adaptive dynamical systems;Chaos: An Interdisciplinary Journal of Nonlinear Science;2023-07-01
2. Synchronous Programming and Refinement Types in Robotics: From Verification to Implementation;Proceedings of the 8th ACM SIGPLAN International Workshop on Formal Techniques for Safety-Critical Systems;2022-11-29
3. A type-theoretic model on NDN-TLV encoding;Proceedings of the 9th ACM Conference on Information-Centric Networking;2022-09-06
4. Diaframe: automated verification of fine-grained concurrent programs in Iris;Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation;2022-06-09
5. Verified functional programming of an IoT operating system's bootloader;Proceedings of the 19th ACM-IEEE International Conference on Formal Methods and Models for System Design;2021-11-20