Public-key encryption scheme
$\mathcal{PK}$: Public key space (Set)
$\mathcal{SK}$: Secret key space (Set)
$\mathcal{M}$: Message space (Set)
$\mathcal{C}$: Ciphertext space (Set)
$ KeyGen : \rightarrow \mathcal{PK} \times \mathcal{SK} $
Generates a public and secret key pair.
$ Enc : \mathcal{PK} \times \mathcal{M} \rightarrow \mathcal{C} $
Encrypts a message using a public key.
$ Dec : \mathcal{SK} \times \mathcal{C} \rightarrow \mathcal{M} $
Decrypts a ciphertext using a secret key.