Security Experiments #
This file gives a basic way to represent security experiments, as an extension of OracleAlg
.
The definition is meant to be simple enough to give useful lemmas while still being
able to represent most common use cases.
We also give a definition SecAdv α β
of a security adversary with input α
and output β
,
as just a computation bundled with a bound on the number of queries it makes.
The main definition is SecExp spec α β
, which extends OracleAlg
with three functions:
inp_gen
that chooses an input for the experiment of typeα
main
that takes an input and computes a result of typeβ
isValid
that decides whether the experiment succeeded
The advantage between two games p
and q
, modeled as probabilistic computations returning
Unit
, is the absolute difference between their probabilities of success.
Instances For
The advantage between a game and itself is zero (i.e. it is reflexive).
The advantage between two games is symmetric.
A security adversary bundling a computation with a bound on the number of queries it makes,
where the bound must be shown to satisfy IsQueryBound
.
We also require an explicit list of all oracles used in the computation,
which is necessary in order to make certain reductions computable.
- run : α → OracleComp spec β
- qb : ι → ℕ
- qb_isQueryBound (x : α) : (self.run x).IsQueryBound self.qb
- activeOracles : List ι