Refinement types for secure implementations

  • Authors:
  • Jesper Bengtson;Karthikeyan Bhargavan;Cédric Fournet;Andrew D. Gordon;Sergio Maffeis

  • Affiliations:
  • Uppsala University, Uppsala, Sweden;Microsoft Research, United Kingdom;Microsoft Research, United Kingdom;Microsoft Research, United Kingdom;Imperial College London, London, United Kingdom

  • Venue:
  • ACM Transactions on Programming Languages and Systems (TOPLAS)
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

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.