Public key encryption (PKE)
Public key encryption (PKE) is a central cryptographic primitive in theory and in practice. It is centrally important in communicating over untrusted channels where parties cannot share a key in advance, in which case SE is sufficient.
Definition
A public key encryption (PKE) scheme is a tuple of efficient algorithms , with respect to key space , message space , and ciphertext space such that
- , is a randomized algorithm that takes a security parameter, and outputs a secret key and a public key ,
- , is a randomized algorithm that takes a public key and message , and outputs a ciphertext ,
- , is a deterministic algorithm that takes a secret key and candidate ciphertext , and outputs either a message
- One may also allow to output to indicate that a candidate ciphertext is not a valid encryption
Correctness
A PKE scheme is correct if for every and message , .
Chosen Plaintext Attack (CPA) Security
The CPA advantage of an adversary that outputs messages and is defined as where , , and .
An PKE scheme is CPA-secure if for all efficient , there exists a negligible function , such that: .
Chosen Plaintext Attack (CCA) Security
The CCA advantage of an adversary that outputs messages and is defined as where , , , and is a decryption oracle.
An PKE scheme is CCA-secure if for all admissible , there exists a negligible function , such that: . An adversary is admissible if it is efficient and never queries on the input , i.e., it never decrypts the given ciphertext with the oracle (but it may query inputs which depend on the outputs given).
- This restriction is necessary, as otherwise could trivially discover what is by querying to see if it is or .
Variations
- Key-hiding
- CCA1
Other results
Candidate Public-key Encryption
- PKE can be built assuming DDH is hard — DH76
- PKE can be built assuming mid-noise LPN