This library holds worked examples: the security of authenticated encryption from ind-cca and
int-ptxt, with its collision bound and its collision game (AuthenticatedEncryption);
hardness and game hops in every instance of the games classes (Games); substitutions
on interfaces (Substitution); PRG length extension, proved by the laws of one reply of
memoryless systems (PRGLengthExtension); components, AES and an AEAD written in the DSL
(DSL); and the proof commands on interfaces (Usability). Citations refer to the
numbered references of THEORY.md.
The security of authenticated encryption [9, Theorem 2.3.10(4)], corrected, is in
Security. Let AE.Real, Encryption.Real, and AE.Ideal • Encryption.Real): AE.Ideal, like AE.CTXT
(AE M C to Encryption M C. Let AE.PTXT and the random-message transformation AE.CCA,
and
The last step is the collision bound, which compares the hybrid
with AE.Ideal.perPort • Encryption.Real.perPort (Collision). The results are the
counted witness, with two uses of ind-cca and
two of int-ptxt, the advantage form, and the
distance form
AE.INDCCA, AE.INTPTXT,
AE.INTCTXT and AE.Secure are Commons definitions
(AEAD); int-ctxt and ae read
The examples are in Games. In every instance of Games: hardness through
a reduction, two reductions and
a lossy reduction, DistinctionGames: a game hop inside a construction,
Substitution gives single substitutions with a context
on the right or on the left,
and two statistical substitutions giving
Components declares counters, fresh and persistent randomness, a padding converter with an inferred cost, the write-through cache typed by a partial port map, and a filter.
AES and AEAD declare AES-256 as a system with a random key, from the Commons block cipher AES, with converters around it such as CBC-MAC; and AES-CTR followed by PMAC, from the Commons CTR and PMAC converters. The proof commands on interfaces are exercised in Usability.