Secure distributed programming with value-dependent types

Nikhil Swamy, Juan Chen, Cédric Fournet, Pierre Yves Strub, Karthikeyan Bhargavan, Jean Yang

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

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 cloudhosted multi-tier web application with a verified reference monitor.

Original languageEnglish
Title of host publicationICFP'11 - Proceedings of the 2011 ACM SIGPLAN International Conference on Functional Programming
Pages266-278
Number of pages13
DOIs
Publication statusPublished - 19 Oct 2011
Externally publishedYes
Event16th ACM SIGPLAN International Conference on Functional Programming, ICFP'11 - Tokyo, Japan
Duration: 19 Sept 201121 Sept 2011

Publication series

NameProceedings of the ACM SIGPLAN International Conference on Functional Programming, ICFP

Conference

Conference16th ACM SIGPLAN International Conference on Functional Programming, ICFP'11
Country/TerritoryJapan
CityTokyo
Period19/09/1121/09/11

Keywords

  • Refinement types
  • Security type systems

Fingerprint

Dive into the research topics of 'Secure distributed programming with value-dependent types'. Together they form a unique fingerprint.

Cite this