#1 Get the pieces

This guide relies on software which is freely licensed; it's completely transparent and anyone can copy it or make their own version. This makes it safer from surveillance than proprietary software (like Windows). Learn more about free software at fsf.org.

Most GNU/Linux operating systems come with GnuPG installed on them, so you don't have to download it. Before configuring GnuPG though, you'll need the IceDove desktop email program installed on your computer. Most GNU/Linux distributions have IceDove installed already, though it may be under the alternate name "Thunderbird." Email programs are another way to access the same email accounts you can access in a browser (like Gmail), but provide extra features.

If you already have an email program, you can skip to Step 1.b.

Step 1.a Setup your email program with your email account

Open your email program and follow the wizard (step-by-step walkthrough) that sets it up with your email account. Look for the letters SSL, TLS, or STARTTLS to the right of the servers when you're setting up your account. If you don't see them, you will still be able to use encryption, but this means that the people running your email system are running behind the industry standard in protecting your security and privacy. We recommend that you send them a friendly email asking them to enable SSL, TLS, or STARTTLS for your email server. They will know what you're talking about, so it's worth making the request even if you aren't an expert on these security systems.


The wizard doesn't launch
You can launch the wizard yourself, but the menu option for doing so is named differently in each email program. The button to launch it will be in the program's main menu, under "New" or something similar, titled something like "Add account" or "New/Existing email account."
The wizard can't find my account or isn't downloading my mail
Before searching the Web, we recommend you start by asking other people who use your email system, to figure out the correct settings.

Step 1.b Install the Enigmail plugin for your email program

In your email program's menu, select Add-ons (it may be in the Tools section). Make sure Extensions is selected on the left. Do you see Enigmail? If so, skip this step.

If not, search "Enigmail" with the search bar in the upper right. You can take it from here. Restart your email program when you're done.


I can't find the menu.
In many new email programs, the main menu is represented by an image of three stacked horizontal bars.
My email looks weird
Enigmail doesn't tend to play nice with HTML, which is used to format emails. To send an HTML-formatted email without encryption and or a signature, hold down the Shift key when you select compose. You can then write an email as if Enigmail wasn't there.
In many new email programs, the main menu is represented by an image of three stacked horizontal bars.

#2 Make your keys

To use the GnuPG system, you'll need a public key and a private key (known together as a keypair). Each is a long string of randomly generated numbers and letters that are unique to you. Your public and private keys are linked together by a special mathematical function.

Your public key isn't like a physical key, because it's stored in the open in an online directory called a keyserver. People download it and use it, along with GnuPG, to encrypt emails they send to you. You can think of the keyserver as a phonebook; people who want to send you encrypted email can look up your public key.

Your private key is more like a physical key, because you keep it to yourself (on your computer). You use GnuPG and your private key to descramble encrypted emails other people send to you. You should never share you public key with anyone, under any circumstances.

In addition to encryption and decryption, you can also use these keys to sign messages and check the authenticity of other people's signatures. This process helps stop impersonators. We'll discuss this more in the next section.

Step 2.a Make a keypair

The Enigmail Setup wizard may start automatically. If it doesn't, select Enigmail → Setup Wizard from your email program's menu. You don't need to read the text in the window that pops up unless you'd like to, but it's good to read the text on the later screens of the wizard. Click Next with the default options selected, except in these instances, which are listed in the order they appear:

  • On the screen titled "Encryption," select "Encrypt all of my messages by default, because privacy is critical to me."
  • On the screen titled "Signing," select "Don't sign my messages by default."
  • On the screen titled "Key Selection," select "I want to create a new key pair for signing and encrypting my email."
  • On the screen titled "Create Key," pick a strong password! We recommend the Diceware method, which creates passwords which are both strong and memorable. To use the Diceware method, you will need dice and this list of words. Do not substitute computer dice for physical dice. Notice that each word on the word list corresponds to a unique five-digit number. Roll one die five times, or five dice once, then string the numbers on the dice dice together to create a five-digit number, and then look up the corresponding word.
  • Repeat this process until you have at least six words, separating each with a space and keeping them all lowercase. You'll end up with a password like "dog help people drive match ice." Don't rearrange or discard the words, because doing so makes the process much less secure.
  • Diceware passwords are hard to remember until you've typed them in a handful of times. Write down your password and keep it with you at all times until you've got it memorized. Then, destroy the piece of paper.
  • If you don't have dice, pick a password which is at least twelve characters long, and includes at least one lower case and upper case letter and at least one number or punctuation symbol. Never pick a password you've used elsewhere. Don't use any recognizable patterns, such as birthdays, telephone numbers, pets' names, song lyrics, quotes from books, and so on. Don't forget your password, or all of this work will be wasted!

The program will take a little while to finish the next step, the "Key Creation" screen. While you wait, do something else with your computer, like watching a movie or browsing the Web. The more you use the computer at this point, the faster the key creation will go.

When the "Key Generation Completed" screen pops up, select Generate Certificate and choose to save it in a safe place on your computer (we recommend making a folder called "Revocation Certificate" in your home folder and keeping it there). This step is essential for your email self-defense, as you'll learn more about in Section 5.


I can't find the Enigmail menu.
In many new email programs, the main menu is represented by an image of three stacked horizontal bars. Enigmail may be inside a section called Tools.
The wizard says that it cannot find GnuPG.
Open whatever program you usually use for installing software, and search for GnuPG, then install it. Then restart the Enigmail setup wizard by going to Enigmail → Setup Wizard.
My email looks weird
Enigmail doesn't tend to play nice with HTML, which is used to format emails. To use it, you'll have to hold down the Shift key when you select compose. You can then write an email as if Enigmail wasn't there.
More resources
If you're having trouble with our instructions or just want to learn more, check out Enigmail's wiki instructions for key generation.


Command line key generation
If you prefer using the command line for a higher degree of control, you can follow the documentation from The GNU Privacy Handbook. Make sure you stick with "RSA and RSA" (the default), because it's newer and more secure than the algorithms the documentation recommendeds. Also make sure your key is at least 2048 bits, or 4096 if you really want to be secure.
Advanced key pairs
When GnuPG creates a new keypair, it compartmentalizes the encryption function from the signing function through subkeys. If you use subkeys carefully, you can keep your GnuPG identity much more secure and recover from a compromised key much more quickly. Alex Cabal and the Debian wiki provide good guides for setting up a secure subkey configuration.

Step 2.b Upload your public key to a keyserver

In your email program's menu, select Enigmail → Key Management.

Right click on your key and select Upload Public Keys to Keyserver. Use the default keyserver in the popup.

Now someone who wants to send you an encrypted message can download your public key from the Internet. There are multiple keyservers that you can select from the menu when you upload, but they are all copies of each other, so it doesn't matter which one you use. However, it sometimes takes a few hours for them to match each other when a new key is uploaded.


The progress bar never finishes
Close the upload popup, make sure you are connected to the Internet, and try again. If that doesn't work, try again, selecting a different keyserver.
My key doesnt appear in the list
Try checking "Display All Keys by Default."
More documentation
If you're having trouble with our instructions or just want to learn more, check out Enigmail's documentation.


Uploading a key from the command line
You can also upload your keys to a keyserver through the command line. The sks Web site maintains a list highly interconnected keyservers. You can also directly export your key as a file on your computer.

GnuPG, OpenPGP, what?

In general, the terms GnuPG, GPG, GNU Privacy Guard, OpenPGP and PGP are used interchangeably. Technically, OpenPGP (Pretty Good Privacy) is the encryption standard, and GNU Privacy Guard (often shortened to GPG or GnuPG) is the program that implements the standard. Enigmail is a plug-in program for your email program that provides an interface for GnuPG.

#3 Try it out!

Now you'll try a test correspondence with a computer program named Edward, which knows how to use encryption. Except where noted, these are the same steps you'd follow when corresponding with a real, live person.

Step 3.a Send Edward your public key

This is a special step that you won't have to do when corresponding with real people. In your email program's menu, go to Enigmail → Key Management. You should see your key in the list that pops up. Right click on your key and select Send Public Keys by Email. This will create a new draft message, as if you had just hit the Write button.

Address the message to edward-en@fsf.org. Put at least one word (whatever you want) in the subject and body of the email. Don't send yet.

The lock icon in the top left should be yellow, meaning encryption is turned on. We want the this first special message to be unencrypted, so click the icon once to turn it off. The lock should become grey, with a blue dot on it (to alert you that the setting has been changed from the default). Once encryption is off, hit Send.

It may take two or three minutes for Edward to respond. In the meantime, you might want to skip ahead and check out the Use it Well section of this guide. Once he's responded, head to the next step. From here on, you'll be doing just the same thing as when corresponding with a real person.

When you open Edward's reply, Enigmail may prompt you for your password before using your private key to decrypt it.

Step 3.b Send a test encrypted email

Write a new email in your email program, addressed to edward-en@fsf.org. Make the subject "Encryption test" or something similar and write something in the body.

The key in the top left of the window should be yellow, meaning encryption is on. This will be your default from now on.

Next to the key, you'll notice an icon of a pencil. We'll get to this in a moment.

Click Send. Enigmail will pop up a window that says "Recipients not valid, not trusted or not found."

To encrypt an email to Edward, you need his public key, so now you'll have Enigmail download it from a keyserver. Click Download Missing Keys and use the default in the pop-up that asks you to choose a keyserver. Once it finds keys, check the first one (Key ID starting with C), then select ok. Select ok in the next pop-up.

Now you are back at the "Recipients not valid, not trusted or not found" screen. Check the box in front of Edward's key and click Send.

Since you encrypted this email with Edward's public key, Edward's private key is required to decrypt it. Edward is the only one with his private key, so no one except him can decrypt it.


Enigmail can't find Edward's key
Close the pop-ups that have appeared since you clicked Send. Make sure you are connected to the Internet and try again. If that doesn't work, repeat the process, choosing a different keyserver when it asks you to pick one.
Unscrambled messages in the Sent folder
Even though you can't decrypt messages encrypted to someone else's key, your email program will automatically save a copy encrypted to your public key, which you'll be able to view from the Sent folder like a normal email. This is normal, and it doesn't mean that your email was not sent encrypted.
More resources
If you're still having trouble with our instructions or just want to learn more, check out Enigmail's wiki.


Encrypt messages from the command line
You can also encrypt and decrypt messages and files form the command line, if that's your preference. The option --armor makes the encrypted output appear in the regular character set.

Important: Security tips

Even if you encrypt your email, the subject line is not encrypted, so don't put private information there. The sending and receiving addresses aren't encrypted either, so a surveillance system can still figure out who you're communicating with. Also, surveillance agents will know that you're using GnuPG, even if they can't figure out what you're saying. When you send attachments, Enigmail will give you an option of whether you want to encrypt them.

Encryption only works when you use it, so it's a good habit to double-check that email encryption is turned on before you hit send.

Step 3.c Receive a response

When Edward receives your email, he will use his private key to decrypt it, then use your public key (which you sent him in Step 3.A) to encrypt his reply to you.

It may take two or three minutes for Edward to respond. In the meantime, you might want to skip ahead and check out the Use it Well section of this guide.

When you receive Edward's email and open it, Enigmail will automatically detect that it is encrypted with your public key, and then it will use your private key to decrypt it.

Notice the bar that Enigmail shows you above the message, with information about the status of Edward's key.

Step 3.d Send a test signed email to a friend

GnuPG includes a way for you to sign messages and files, verifying that they came from you and that they weren't tampered with along the way. These signatures are stronger than their pen-and-paper cousins -- they're impossible to forge, because they're impossible to create without your private key (another reason to keep your private key safe).

You can sign messages to anyone (including people who haven't created their own keypair!) so it's a great way to promote GnuPG. To sign an email to a friend, click the pencil icon next to the lock icon so that it turns gold. If you sign a message, Enigmail will ask you for your password before it sends the message off. It will do this every time it needs to use your private key.

When the pencil is gold but the lock is grey, the email will be signed but not encrypted. When the pencil is grey and the lock is gold, the email will be encrypted but not signed. When they're both gold, the email will be signed and encrypted.

#4 Learn the Web of Trust

Email encryption is a powerful technology, but it has a weakness; it requires a way to verify that a person's public key is actually theirs. Otherwise, there would be no way to stop an attacker from making an email address with your friend's name, creating keys to go with it and impersonating your friend. That's why the free software programmers that developed email encryption created keysigning and the Web of Trust.

When you sign someone's key, you are publicly saying that you've verified that it belongs to them and not an impostor. Signing keys and messages is the same type mathematical operation, but they carry very different implications. It's a good practice to generally sign your email, but if you casually sign people's keys, you may accidently end up vouching for the identity of an imposter!

People who use your public key can see who has signed it. Once you've used GnuPG for a long time, you may have hundreds of signatures. The Web of Trust is a constellation of GnuPG users, connected to each other by chains of trust expressed through signatures. The more signatures of people you trust a key has, the more trustworthy that key is.

Step 4.a Sign a key

In your email program's menu, go to Enigmail → Key Management.

Right click on Edward's public key and select Sign Key from the context menu.

In the window that pops up, select "I will not answer" and click ok.

Now you should be back at the Key Management menu. Select Keyserver → Upload Public Keys and hit ok.

You've just effectively said "I trust that Edward's public key actually belongs to Edward." This doesn't mean much because Edward isn't a real person, but it's good practice.

Identifying keys: Fingerprints and IDs

People's public keys are usually identified by their key fingerprint, which is a string of digits like F357AA1A5B1FA42CFD9FE52A9FF2194CC09A61E8 (for Edward's key). You can see the fingerprint for your public key, and other public keys saved on your computer, by going to Enigmail → Key Management in your email program's menu, then right clicking on the key and choosing Key Properties. It's good practice to share your fingerprint wherever you share your email address, so that people can double-check that they have the correct public key when they download yours from a keyserver.

You may also see public keys referred to by their key ID, which is simply the last eight digits of the fingerprint, like C09A61E8 for Edward. The key ID is visible directly from the Key Management window. This key ID is like a person's first name (it is a useful shorthand but may not be unique to a given key), whereas the fingerprint actually identifies the key uniquely without the possibility of confusion. If you only have the key ID, you can still look up the key (as well as its fingerprint), like you did in Step 3, but if multiple options appear, you'll need the fingerprint of the person to whom you are trying to communicate to verify which one to use.

Important: check people's identification before signing their keys

Before signing a real person's key, always make sure it actually belongs to them, and that they are who they say they are. Ask them to show you their ID (unless you trust them very highly) and their public key fingerprint -- not just the shorter public key ID, which could refer to another key as well. In Enigmail, answer honestly in the window that pops up and asks "How carefully have you verified that the key you are about to sign actually belongs to the person(s) named above?".


Master the Web of Trust
Unfortunately, trust does not spread between users the way many people think. One of best ways to strengthen the GnuPG community is to properly understand the web of trust and to carefully sign as many people's keys as circumstances permit.
Set ownertrust
If you trust someone enough to validate other people's keys, you can assign them an ownertrust level through Enigmails's key management window. Right click on the other person's key, go to the "Select Owner Trust" menu option, select the trustlevel and click OK. Only do this once you've read and understand "Master the Web of Trust" above.

#5 Use it well

Everyone uses GnuPG a little differently, but it's important to follow some basic practices to keep your email secure. Not following them, you risk the privacy of the people you communicate with, as well as your own, and damage the Web of Trust.

When should I encrypt?

The more you can encrypt your messages, the better. If you only encrypt emails occasionally, each encrypted message could raise a red flag for surveillance systems. If all or most of your email is encrypted, people doing surveillance won't know where to start.

That's not to say that only encrypting some of your email isn't helpful -- it's a great start and it makes bulk surveillance more difficult.

Be wary of invalid keys

GnuPG makes email safer, but it's still important to watch out for invalid keys, which might have fallen into the wrong hands. Email encrypted with invalid keys might be readable by surveillance programs.

In your email program, go back to the second email that Edward sent you. Because Edward encrypted it with your public key, it will have a message from Enigmail at the top, which most likely says "Enigmail: Part of this message encrypted."

When using GnuPG, make a habit of glancing at that bar. The program will warn you there if you get an email encrypted with a key that can't be trusted.

Copy your revocation certificate to somewhere safe

Remember when you created your keys and saved the revocation certificate that GnuPG made? It's time to copy that certificate onto the safest digital storage that you have -- the ideal thing is a flash drive, disk, or hard drive stored in a safe place in your home.

If your private key ever gets lost or stolen, you'll need this certificate file to let people know that you are no longer using that keypair.

Important: act swiftly if someone gets your private key

If you lose your private key or someone else gets ahold of it (say, by stealing or cracking your computer), it's important to revoke it immediately before someone else uses it to read your encrypted email or forge your signature. This guide doesn't cover how to revoke a key, but you can follow the instructions on the GnuPG site. After you're done revoking, send an email to everyone with whom you usually use your key to make sure they know.

Webmail and GnuPG

When you use a web browser to access your email, you're using webmail, an email program stored on a distant website. Unlike webmail, your desktop email program runs on your own computer. Although webmail can't decrypt encrypted email, it will still display it in its encrypted form. If you primarily use webmail, you'll know to open your email client when you receive a scrambled email.