Key Encapsulation Mechanisms #
This file defines a type to represent protocols for key encapsulation mechanisms. We also define basic correctness and security properties for these protocols.
Correctness experiment: decapsulation of an honestly generated encapsulation should recover the shared key.
Instances For
Perfect correctness of a KEM.
Instances For
Two-phase IND-CPA adversary for a KEM. The adversary only gets access to the base oracle
set spec, with no decapsulation oracle.
- State : Type
- preChallenge : PK → OracleComp spec self.State
- postChallenge : self.State → C → K → OracleComp spec Bool
Instances For
Fixed-branch IND-CPA experiment for a KEM, matching the source proof-ladders formulation
Exp.run(b).
Instances For
Single-game IND-CPA experiment obtained by sampling the challenge bit uniformly and checking whether the adversary guessed it correctly.
Instances For
IND-CPA distinguishing advantage for a KEM, defined canonically as the bias of the single game.
Instances For
The canonical IND-CPA advantage is definitionally the bias of the single game.
IND-CCA adversaries get access to the base oracle set spec plus a decapsulation oracle.
Instances For
Two-phase IND-CCA adversary for a KEM.
- State : Type
- preChallenge : PK → OracleComp kem.IND_CCA_oracleSpec self.State
- postChallenge : self.State → C → K → OracleComp kem.IND_CCA_oracleSpec Bool
Instances For
Pre-challenge decapsulation oracle.
Instances For
Post-challenge decapsulation oracle: the challenge ciphertext itself maps to none.
Instances For
IND-CCA real-or-random experiment for a KEM.
Instances For
IND-CCA distinguishing advantage for a KEM.
Instances For
Any IND-CPA adversary can be viewed as an IND-CCA adversary that simply ignores the
decapsulation oracle while preserving its ordinary pre-challenge interaction with the base
oracle set spec.
Instances For
The one-stage IND-CPA game is exactly the IND-CCA game instantiated with the trivial
CPA-to-CCA embedding (toIND_CCA) that never uses the decryption oracle.