Formal certification of code-based cryptographic proofs

Gilles Barthe, Benjamin Grégoire, Santiago Zanella-Béguelin

2009 · 263 citations · 38 references

Concepts

TL;DR

Cryptographic proofs are increasingly unverifiable, prompting the development of techniques such as game‑based and code‑based approaches that structure proofs as sequences of games and rely on programming language theory, yet the length and complexity of typical proofs necessitate formal verification to achieve high confidence. This work introduces Certicrypt, a framework that enables the machine‑checked construction and verification of code‑based cryptographic proofs. Built on the Coq proof assistant, Certicrypt incorporates probability, complexity, algebra, and programming‑language semantics, and supplies certified tools—including a relational Hoare logic, observational‑equivalence theory, verified program transformations, and game‑based reasoning about failure events—to reason about the equivalence of probabilistic programs. Its usefulness is illustrated by proofs of OAEP semantic security with an improved bound and of FDH signature existential unforgeability, marking a significant step toward Halevi’s goal of providing tool support for cryptographic proofs.

Abstract

As cryptographic proofs have become essentially unverifiable, cryptographers have argued in favor of developing techniques that help tame the complexity of their proofs. Game-based techniques provide a popular approach in which proofs are structured as sequences of games and in which proof steps establish the validity of transitions between successive games. Code-based techniques form an instance of this approach that takes a code-centric view of games, and that relies on programming language theory to justify proof steps. While code-based techniques contribute to formalize the security statements precisely and to carry out proofs systematically, typical proofs are so long and involved that formal verification is necessary to achieve a high degree of confidence. We present Certicrypt, a framework that enables the machine-checked construction and verification of code-based proofs. Certicrypt is built upon the general-purpose proof assistant Coq, and draws on many areas, including probability, complexity, algebra, and semantics of programming languages. Certicrypt provides certified tools to reason about the equivalence of probabilistic programs, including a relational Hoare logic, a theory of observational equivalence, verified program transformations, and game-based techniques such as reasoning about failure events. The usefulness of Certicrypt is demonstrated through various examples, including a proof of semantic security of OAEP (with a bound that improves upon existing published results), and a proof of existential unforgeability of FDH signatures. Our work provides a first yet significant step towards Halevi's ambitious programme of providing tool support for cryptographic proofs.

References

38