Pretty Good Privacy

Pretty Good Privacy (PGP) makes it possible for people to encrypt their email and other communications over the internet. Unlike server-side encryption such as that used by Outlook.com, PGP's trust model does not require that the users trust the service provider (the NSA reads your encrypted Outlook messages). PGP uses end-to-end encryption, so it is sufficient that the user trusts his or her own computer.

Contents

Motivation

The internet without encryption is synonymous with a crowd of people yelling at each other; a curious eavesdropper can easily walk up and listen. It would simply be too dangerous to transmit obviously sensitive information over the internet, such as social security numbers or online banking passwords. You may try to encrypt those highly sensitive communications, but dedicated eavesdroppers can collect the rest of your unencrypted internet communications to paint a detailed picture of your personality and habits. For more on motivations, see our Internet Surveillance page.

Practice

TODO

Theory

Secret-key (symmetric) cryptography—Alice wants to send Bob a secret message. They both agree on a single secret password to use as an encryption/decryption key. Alice can use that key to encrypt data to send to Bob, and Bob can use that key to decrypt data received from Alice. Mathematically, a symmetric cipher is just a one-to-one function that is easily invertible—apply the function to encrypt data, or apply its inverse decrypt data. The key describes the characteristics of the function; without the key, one cannot determine the function or its inverse.

Symmetric cryptography has some disadvantages:

At the very beginning, when Alice and Bob initially exchanged the key, the exchange could have been transparently intercepted by a third party (assume Alice and Bob were not using a secure channel to exchange the key because that is precisely what we are trying to build!). With a stolen key, a third party can eavesdrop on Alice or Bob, and even pretend to be Alice or Bob.

It is unwieldy for large groups of people to communicate privately, since the number of keys is polynomial with the number of people (recall the number of edges in a complete graph of n nodes):

# people

# keys

2

1

3

3

4

6

5

10

6

15

n

n(n-1)/2

A series of complete graphs from n=2 to 15. Each edge represents a secret key that has been exchanged between two people (nodes).

Public-key (asymmetric) cryptography—rather than just using one key, a public-key cipher uses a pair of keys for sending messages. One is a public key used for encryption, and the other is a private key used for decryption. Anybody, including Alice, can use Bob's public key to encrypt messages, but those messages can only be decrypted with the corresponding private key which Bob keeps to himself. If Alice also has a public/private key pair then she can send and receive secret messages to and from Bob.

Only the public (decryption) key needs to be sent over the network, so an eavesdropper cannot simply steal the key by performing a man-in-the-middle attack.

Large groups of people can easily communicate because each person only needs to generate his or her own key pair. The number of key pairs in the network is linear with the number of people (2n). Alice never needed to negotiate with Bob to agree on a shared secret key—they each simply generated their own key pairs and grabbed each other's public key.

Warnings

As stated in the introduction, PGP's trust model requires that the user trusts all the software on his or her computer. The use of open source software on a computer is a prerequisite for trusting the computer, so we advise against the use of untrustworthy proprietary systems such as Microsoft Windows or Mac OS X. Instead, we recommend GNU/Linux or BSD. If you are not already using an open source operating system, see out Getting started page for some guidance.