7

I've been familiarizing myself with the basics of PGP. If I understand correctly, PGP symmetrically encrypts the data of interest using a random single-use key, then encrypts the encrypted data and its symmetric key using the public key of the intended recipient.

What benefit does the inner layer of symmetric key encryption provide? I am having trouble understanding how this layer adds security over simply encrypting the data with the recipient's public key straight away.

UltraBird
  • 173
  • 4

3 Answers3

12

I think you misunderstood a detail of PGP encryption. Only the random symmetric key is encrypted under the recipient's (asymmetric) public key. This way to encrypt stuff is quite common and is called KEM/DEM paradigm: Key Encapsulation Method/Data Encapsulation Method oy Hybrid Encryption. Some refs: en.wikipedia.org/wiki/Hybrid_cryptosystem and en.kryptotel.net/encryption.html.

B-Con
  • 6,196
  • 1
  • 31
  • 45
ddddavidee
  • 3,364
  • 2
  • 24
  • 34
11

A PGP encrypted message can be hundreds or even thousands of bytes. Encrypting and decrypting large amounts of data using asymmetric algorithms is extremely slow. Encrypting only 32 to 16 bytes (the symmetric key) is much faster.

Additionally, if you encrypt the same message twice with an asymmetric algorithm, you will get the exact same ciphertext. Using a symmetric algorithm with new random keys makes each message indistinguishable from eachother.

Richie Frame
  • 13,278
  • 1
  • 26
  • 42
4

KEM/DEM hybrid encryption has another advantage. It enables a very efficient multi-recipient encryption. The payload is encrypted and transmitted only one time.

Haven't you wondered yet why you are able to decrypt and read your own message although it was encrypted with the recipient's public key? Normally PGP encrypts the message key for symmetric encryption public keys of the recipient and your own public key. That way the message is encrypted just once. An additional recipient increases the size of the message by just a couple of bytes -- IIRC far less than 100 bytes.