Slides from this class can be found here.
Right now, we use online communication for many things. We may email our doctor, our lawyer or our bank. We may chat with friends and family. What many people forget is that we are doing all of this in full view of everyone else between us and our recepient. This could be your network administrator, your email provider (gmail, yahoo, etc), your internet service provider, or others. It is more accurate to think of an email as a postcard than as a letter right now. Encryption is like putting an envelope on your letter. Everyone can still see where it is going, and who it came from, but they can no longer read the contents of the letter. Not only does encryption protect your privacy, it also makes sure that your messages aren't tampered with. You are able to "sign" messages, even unencrypted ones, in such a way that people can verify that the message that you sent is the one that they are reading. This has advantages outside of emails. For example, when downloading software, you can make sure the software hasn't been tampered with if a company provides cryptographic signatures along with its software.
Public Key Encryption
The type of encryption that we will be talking about today is called public key encryption. It solves a very difficult problem. How do you have a shared key to decrypt a message without a method to securely exchange a key? The answer is to split the key into two parts.
One key only encrypts. This is called a public key and can be shared with anyone. Through some clever math, it is not possible to decrypt a message if you only have the public key.
The second key is called a private key. This should not be shared with anyone. It allows you to decrypt messages that are encrypted with your public key.
The following video demonstrates these concepts quite simply.
If you want to learn more about the math involved, check out the Gambling with Secrets series from the Kahn Academy. It can be found at: https://www.youtube.com/playlist?list=PLB4D701646DAF0817.
You can set up encrypted emails using any email provider. The basic idea is that you encrypt the email before you send it to their servers, then your recepient decrypts it after getting it off their servers. This means that your email provider, ISP and others have no chance to see the unencrypted message. To do this, we need to install a couple of things on our computer. All of these tools should work on any computer.
Thunderbird is an email client similar to Microsoft Outlook. It is available for free from https://www.mozilla.org/en-US/thunderbird/. This program will download your email from your email providers servers and upload emails that you send. Setting up your email accounts on Thunderbird is beyond the scope of this lesson, but instructions can be found at https://support.mozilla.org/en-US/products/thunderbird/emails-thunderbird/set-up-email-thunderbird. So download Thunderbird, install it, and set up your email accounts on it. When this step is complete, you need to get something to encrypt your emails for you.
Just like the web browser Firefox, Thunderbird lets you install add-ons that extend its functionality. The Enigmail add-on lets you use PGP (Pretty Good Privacy) Encryption. Don't let the modest name fool you. This encryption is very good. You can download enigmail from https://addons.mozilla.org/en-US/thunderbird/addon/enigmail/. The first time you start Thunderbird after installing enigmail, a setup wizard will automatically start. The standard setting will work fine for most people. If you want more information about setting up Enigmail, check out https://enigmail.wiki/.
There are just a couple of things to note.
- When generating your key pair, use the largest possible key size. That is the most secure. It may take a little longer to generate, but that is a one time thing.
- Use a very strong passphrase to secure your private key. This ensures that even if someone manages to steal you private key, they won't be able to use it. For hints on setting a good passphrase go to https://www.leblibrary.com/node/875#passwords.
- Keep your private key safe!
Upload your public key
Next you can choose to upload your public key to a keyserver. There is a network of keyservers around the world that store people's public keys. This is optional, but a lot of people do because it makes it easier for people to email you securely.
Spread the work
The biggest drawback to encrypted email is that it only works with others who are set up for it. So spread the word. You can exchange public keys with your friends. That brings up the next step.
Have a Key Signing Party
Encryption not only provides privacy. It also verifies that the person who sends you an email is who they say they are. This requires a way to establish trust. In gpg encryption, we have the concept of the "Web of Trust". Basically, after I verify that your public key actually belongs to you (by actually talking to you and having you read me your key's fingerprint), I can then cryptographically sign your key. By doing this, I am stating that your key is legitimate and that it belongs to you. If anyone who knows me but not you then wants to email you, they can see my signature on your key and trust that it is legitimate. A key signing party is when a group gets together and all verify and sign each other's keys. This helps to extend the web of trust.
For more information, check out the Free Software Foundation's Email Self Defense at https://emailselfdefense.fsf.org/en/.