Encrypt files with GNUPG

GnuPG is wonderful and free tool which can help you encrypt your data and communication.

GnuPG is free and is already embedded into some Linux distros. Ubuntu is one of them, and I will use it today. Also, it works on Windows and Mac with appropriate apps installed. I will cover all the basic details for file encryption for your personal use in this guide.

If you are interested more in GnuPG, you can visit they site on this link.

What is the plan for this guide?

I will show installation and key generation procedure in Linux, we will also encrypt a file, send it to Windows machine and see if we can read it. This guide will only cover encryption and decryption of files for your own personal use, not exchanging files with third parties, so this tutorial is valid if you want to protect your own files for your usage.

Linux side steps

Installation

I’m testing this on Ubuntu 19.10 with GUI installed.

Lets first check if GnuPG is already installed.

Enter following command into terminal

apt-cache policy gnupg

Ok, so I already have GnuPG installed.

This tool should come by default with Ubuntu. In case it is not in your installation, to install it, you will need to run following:

sudo apt install gnupg2

I would also like to have some kind of frontend for GUI in Ubuntu.

Open Ubuntu Software Store and search for Seahorse.After you found it – install it if it already haven’t been installed.

On my Ubuntu install it is already installed by default.

Last installation step. I would like integrate GnuPG with my File Explorer (Nautilus) so I can encrypt and decrypt files with right click on a file.

sudo apt-get install seahorse-nautilus -y

We will need to restart Nautilus to make this install active

killall nautilus

After I reopened Nautilus, and right clicked on a file, I got option to encrypt.

Great.

But we cannot encrypt anything yet because we have to generate keys.

Generate Keys

We will start procedure by entering following command

gpg --full-generate-key

We will select 1 – RSA and RSA

We want maximal protection so we will select 4096 as our RSA keysize

Expiration date is our next step. I will select 0 (zero) since I don’t want my key to expire. You can also select various other periods of validity if this does not fit your need.

You will be asked to confirm. Select yes

Identity construction will be our next task. Enter your real name – I entered mine

Next, enter your email address

After you entered your email you will be asked to enter comment, this you can skip if you don’t have any

You will then be asked to enter password to potect your private key. Enter strong password twice and select ok.

Be sure to remember this password.This password also needs to be strong and safe. If you lose this password you will not be able to decrypt your files.

After you confirmed your password it will take a short time to generate your keys…

You will also be able to see these keys in your “Seahorse” app which we installed earlier under PGP Keys section.

Before we proceed, we will also create revocation certificate. In case your certificate gets compromised, you will need revocation cert.

–output will specify directory where we will save revocation cert.

–gen-revoke will create revocation certificate. You will need to specify email address with which you generated your certificate.

gpg --output ~/revocation.crt --gen-revoke info@informaticar.net

When asked if we want to create revocation cert for the key – confirm with “y”

You will also be asked for the reason of revocation – since we don’t know what the reason will be, we will select 1.

Enter the description if you want, and Confirm with “y” in the end.

It would be wise to keep this cert in a safe place.

Encrypting/Decrypting file

We already install encryption support for Nautilus (file explorer). Now we will test it.

I have an important picture in my downloads folder that I want to encrypt.

Just right click on the file, and select encrypt.

I will select created key (zeljko, infoATinformaticar.net) and also sign message with the same key.

confirm with OK

You will now be asked for a passphrase you assigned to your key.

Again confirm with OK

We are done with the encrption. File with .pgp extension is created.

I will now delete .jpg file and just leave .pgp file in my Download directory.

Now, if we want to decypt and see the file, we will right click on ImportantPic.jpg.pgp in Download folder and select

“Open with Decrypt File”

ImportantPic.jpg will appear in the Download folder again.

When you are done with editing/watching/reading file, procedure for encryption is the same.

If you want to do it using terminal, you can do so.

To encrypt file in terminal enter following command:

infoATinformaticar.net – replace with your email address, you entered when creatign key

ImportantPic.jpg – replace with your filename you wish to encrypt

gpg -e -r info@informaticar.net ImportantPic.jpg

File is created

To decrypt file in terminal, enter encrypted filename you wish to decrypt

ImportantPic.jpg.gpg – replace with your filename you wish to decrypt

gpg ImportantPic.jpg.gpg

You will be asked for your encryption key password

Opening Encrypted file on another system (Windows, MacOS)

This procedure is valid if you are using GnuPG for your own file encryption on multiple systems.

On Windows I use gpg4win

https://www.gpg4win.org/

On MacOS I use GPGTools

https://gpgtools.org/

I will cover Windows here – go to gpg4win and download installation. After download is done, install it.

I will not cover installation in details. Only component you will definitely need is GnuPG, make sure it is checked on installation.Best to leave all as depicted below.

Start Kleopatra.

We don’t want to create new keys, want to use the key we created on our Ubuntu installation.

If we want to create new encrypted files and also read encrypted files we will need both public and private key from Ubuntu installation.

Private/Public key export

We will first just export public key from Ubuntu installation and import it on Windows so we can open our encrypted file.

First we will export public key on our Ubuntu install

gpg --output ~/informaticarpublic.key --armor --export info@informaticar.net

–output is location where the public key will be saved. In my case that will be home directory and the key name will be informaticarpublic.key

–armor – will create ASCII armor output instead of binary

–export – will export public part of infoATinformaticar.net key we generated at start of this tutorial.

If I open created key, this is what will be in it.

We can also export our private key

Open Passwords and Keys (Seahorse) on Ubuntu. Select PGP Keys – GnuPG keys – and click on private key we created. Select Properties.

Select Details tab and under Actions click on Export next to “Export Secret Key”.

Enter name for the key (I entered informaticarprivate.asc) and select Export.You will need to confirm your passphrase before you can export the key.

Now, I will copy both private and public key to my Windows machine.

Open Kleopatra and select Import

First we will import private key (informaticarprivate.asc).

We will confirm with yes. This is our own key.

Ok, key is imported.

You can repeat this procedure for public part of the key. When selecting key, there is just one little difference. You will not see it by default in file explorer.

Select Any files (*) from the bottom of the screen and then select your public key you exported from Ubuntu. Select Open

Ok, after we are done, this is how our Kleopatra should look like.

Lets now try and decrypt on Windows ImportantPic.jpg.gpg we created on Ubuntu and copied to Windows.

I will double click on file

If everything went ok, you will be asked for the passphrase for your file.

Kleopatra should also be activated in that moment, and dialog will say that “Decryption succeeded”

Confirm with “Save all”

File is decrypted

____________________________

In case you would like to exchange files via email with third party, both sides need to have private/public key pairs created on their PCs, and would only need to exchange public keys for encryption (never send your private key to someone else!). When encrypting file you should select your private key and public key of the recipient. That is only difference for that scenario.

___________________________

So, that should be it. All that is left is to test Encryption/Decryption.

Encryption/Decryption test.

Ok, we already done testing from Ubuntu -> Windows. We will now test also vice versa.

I will encrypt file on Windows, and then decrypt in on Ubuntu. It should work since I have same key pair on both machines.

We will encrypt LovelyPic.jpg on Windows

Right click on file you wish to encrypt and select Sign and encrypt

I will just sign it and encrypt it for me. Sign / Encrypt

You will be asked for a key passphrase

Encryption succeeded and we now have encrypted version of the picture. Select Finish in dialog that is opened.

I copied file to Ubuntu to Download folder and will try and Decrypt it. Right click on the file – Open with Decrypt File

You will be asked for passphrase

Success

Conclusion

What we done in this guide is a creation of key-pair that we can use for our private files security. With the same key we can encrypt/decrypt files on multiple systems. It is a little bit of manual work to encrypt/decrypt files but in the end this is free and secure solution well worth trying.

I would also like to encourage you to donate to the creators of these solutions, since a lot of work and effort is part of these wonderful and free solutions.

Disclaimer