Skip to content
Branch: master
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
DRBG_functions.v
HMAC256_DRBG_bridge_to_FCF.v
HMAC256_DRBG_functional_prog.v
HMAC256_DRBG_tests_no_reseed.v
HMAC256_DRBG_tests_pr_false.v
HMAC256_DRBG_tests_pr_true.v
HMAC_DRBG_algorithms.v
HMAC_DRBG_common_lemmas.v
HMAC_DRBG_nonadaptive.v
HMAC_DRBG_pure_lemmas.v
HMAC_DRBG_update.v
PRF_DRBG.v
README
drbg_protocol_proofs.v
drbg_protocol_specs.v
entropy.v
entropy_lemmas.v
hmac_drbg.c
hmac_drbg.h
hmac_drbg.v
hmac_drbg_compspecs.v
hmacdrbg_test_noPredRes_noReseed.v
map_swap.v
md.h
mocked_md.v
mocked_md_compspecs.v
spec_hmac_drbg.v
spec_hmac_drbg_pure_lemmas.v
spec_mocked_md.v
verif_hmac_drbg_NISTseed.v
verif_hmac_drbg_WF.v
verif_hmac_drbg_generate.v
verif_hmac_drbg_generate_abs.v
verif_hmac_drbg_generate_common.v
verif_hmac_drbg_other.v
verif_hmac_drbg_reseed.v
verif_hmac_drbg_reseed_common.v
verif_hmac_drbg_seed.v
verif_hmac_drbg_seed_buf.v
verif_hmac_drbg_seed_common.v
verif_hmac_drbg_update.v
verif_hmac_drbg_update_common.v
verif_mocked_md.v

README

This directory contains the bulk of the Coq source files associated with
our formal verification of the HMAC-DRBG cryptographic primitive.

The FCF development described in Sections 3 and 4 is contained in
  file ../fcf/HMAC_DRBG_nonadaptive.v, with constructions (functions,
  games, and lemmas/theorems) named in accordance with the paper.
  In particular, the games G_real and G_ideal are in lines 308-311 and
  450-452, respectively, and the proof of their closeness is in lines 4563-4571.
 
hmac_drbg.c is the C source file, based on mbedtls' implementation
   https://github.com/ARMmbed/mbedtls/blob/development/library/hmac_drbg.c.
   We started from mbedtls version 2.1.1., and added additional functions
   that connect the implementation of DRBG to ../sha/hmac.c, verified
   previously.

hmac_drbg.v is the Clight AST produced from hmac_drbg.c by CompCert's
   frontend tool, clightgen.

HMAC256_DRBG_functional_prog.v contains the functional programs,
   by instantiating formalizations of more primitive functions from 
   DRBG_functions, HMAC_DRBG_algorithms, according to the structure of 
   NIST 800-90A.

drbg_protocol_specs.v contains API specifications using the abstract
representation predicate AREP. In particular, the spec for
mbedtls_hmac_drbg_random given in Figure 1 is in lines 247-263. The
proofs of the function bodies are in the remainder of this file, and
in verif_hmac_drbg_generate_abs.v (for random_with_add) and
verif_hmac_drbg_other (for free, set parameters, etc). The file imports
auxiliary constructions from spec_hmac_drbg.v which also contains more
general function specifications that don't make use of AREP and also
cover error situations.

The file linking the two specifications, i.e. relating mbedtls_generate
to the core of the generate function used in the FCF proofs, is
HMAC256_DRBG_bridge_to_FCF.v.
You can’t perform that action at this time.