Refinement types for secure implementations

Jesper Bengtson, Karthikeyan Bhargavan, Cedric Fournet, Andrew D. Gordon, Sergio Maffeis

Research output: Contribution to journalArticlepeer-review

Abstract

We present the design and implementation of a typechecker for verifying security properties of the source code of cryptographic protocols and access control mechanisms. The underlying type theory is a λ-calculus equipped with refinement types for expressing pre- and post-conditions within first-order logic. We derive formal cryptographic primitives and represent active adversaries within the type theory. Well-typed programs enjoy assertion-based security properties, with respect to a realistic threat model including key compromise. The implementation amounts to an enhanced typechecker for the general-purpose functional language F# typechecking generates verification conditions that are passed to an SMT solver. We describe a series of checked examples. This is the first tool to verify authentication properties of cryptographic protocols by typechecking their source code.

Original languageEnglish
Article number8
Pages (from-to)1-45
Number of pages45
JournalACM Letters on Programming Languages and Systems
Volume33
Issue number2
DOIs
Publication statusPublished - 1 Feb 2011

Fingerprint

Dive into the research topics of 'Refinement types for secure implementations'. Together they form a unique fingerprint.

Cite this