Asymmetric Encryption Schemes #
Core definitions for asymmetric encryption schemes and correctness.
An AsymmEncAlg with message space M, key spaces PK and SK, and ciphertexts in C.
m is the monad used to execute key generation, encryption, and decryption. The scheme data stays
purely algorithmic; probabilistic semantics and public-randomness injection are supplied
separately when defining security experiments.
- keygen : m (PK × SK)
- encrypt (pk : PK) (msg : M) : m C
Instances For
An explicit-coins asymmetric encryption scheme in the monad m.
Key generation runs in m, while encryption and decryption become pure once the randomness type
R is supplied explicitly. This is the natural refinement used by FO-style transforms, where the
coins are sampled externally or derived from an oracle.
- keygen : m (PK × SK)
- encrypt (pk : PK) (msg : M) (coins : R) : C
Instances For
Transport an asymmetric encryption scheme across a monad morphism by mapping each algorithmic component.
Instances For
Correctness experiment: returns true iff decrypting the ciphertext recovers the message.
The game returns a Bool directly rather than using guard, so it does not require
AlternativeMonad.
Instances For
An asymmetric encryption scheme is perfectly correct under the given runtime when decrypting a
fresh encryption of any message succeeds with probability 1.
Instances For
Forget the explicit-coins presentation by sampling the coins through the ambient runtime's public-randomness capability.