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

  • PKE implies OWF
  • TDF implies PKE

Candidate Public-key Encryption