Encryption 

Symmetric encryption/ Private key model \n Requirements

  • A Private key

  • Three algorithms

    • A random Private key generator algorithm that generates a random key of a specified length (L): KeyGen(L) -> K

    • An encryption algorithm that takes the Private key (K) and the plaintext (M) and then returns a ciphertext (C): Enc(K, M) -> C

    • A decryption algorithm that takes the Private key (K) and the ciphertext (C) and then returns the original plaintext (M): Dec(K, C) -> M

\n Asymmetric encryption / Public key model \n Requirements

  • A Private key and a Public key
  • Four algorithms
    • A random Private key generator algorithm that generates a random key of a specified length (L): KeyGen(L) -> Kₚᵣᵢᵥ
    • A random Public key generator algorithm that generates a random key of a specified length (L): KeyGen(L) -> Kₚᵤb
    • An encryption algorithm that takes the receiver's public key (Kₚᵤb) and the sender's plaintext (M) and then returns a ciphertext (C): Enc(Kₚᵤb, M) -> C
    • A decryption algorithm that takes the receiver's private key (Kₚᵣᵢᵥ) and the ciphertext (C) and then returns the original plaintext (M): Dec(Kₚᵣᵢᵥ, C) -> M

Good:

  • key management is much simpler
  • Alleviates the need to share secrets before communicating between parties

Bad:

  • Much slower than Symmetric cryptography