Neatly managing and handling PGP/GnuPG keyrings
Key Service
PGP/GnuPG is becoming increasingly popular, thanks to digital crime and government surveillance. We take a look behind the scenes and show how you can keep your keyring current and valid.
If you want to encrypt your data traffic, you first have to gain a general understanding of the concepts and individual steps necessary. Pretty Good Privacy (PGP) or GNU Privacy Guard (GnuPG) let you create key pairs – public and private – and group your keys in keyrings. In this article, I discuss the tools for managing these keyrings and keeping them up to date, including checking them regularly for validity.
Once you have your key pair, you pass your public key to your communication partners. Traditionally, that either occurs directly as a character string in an email attachment [1], in printed form (e.g., during a key-signing party) [2], or by downloading the key from a web page. For some time, it's been possible to use QR codes that you can receive, check, and manage on your smartphone. In Figure 1, you can see the Monkeysign [3] GUI with the QR code key.
Individually exchanging keys with each communication partner is a bit complicated. To simplify the process for everyday use, key servers were established [4] (Table 1) to store your public key in a key server so that anyone can download it, validate it, and immediately use it to communicate with you. An example call using GnuPG [5] looks like this:
Table 1
A Selection of Key Servers
Name | URL |
---|---|
SKS |
hkp://pool.sks-keyservers.net |
MIT |
hkp://pgp.mit.edu |
PGP |
ldap://keyserver.pgp.com |
GnuPG |
hkp://keys.gnupg.net |
$ gpg --keyserver hkp://keys.gnupg.net --send-keys <key ID> gpg: sending key <key ID> to hkp server
The program is simply called gpg
on the command line, or gpg2
in version 2. You can state the ID of the key that you want to share with the --send-keys
switch. The --keyserver
switch specifies the key server to be used. It does not matter which key server you initially designate or have already set up in the ~/.gnupg/gpg.conf
file [6]. All the larger key servers [7] work together and regularly compare the database of stored keys with one another [8]. Within 48 hours, the shared key generally spreads so far that it can automatically be checked for validity worldwide.
Please note that you can only upload keys for which you also hold the private key. When you use the --list-secret-keys
switch, GnuPG delivers an overview of the private keys. Listing 1 shows an extract for one of my keys. Here, sec denotes the key's procedure and identification, uid is the user ID, and ssb is the secret key's procedure and identification [9]. Additionally, you can see in the readout that GnuPG analyzes the .gnupg/secring.gpg
file, where it saves your private key.
Listing 1
Listing Secret Keys
Integrating Email
To exchange data in signed or encrypted form [10] from your email program, you need to add a suitable cryptographic signature (see "Navigating the Signature Jumble" box). As a result, you are in a position to immediately exchange your data in signed and/or encrypted form. Figure 2 shows an example using the text-based email client Mutt [11]. The text lines in yellow show that the sender of this message has signed cryptographically. The PGP key has the ID D431AC07, is based on the RSA procedure, and is recognized as valid. In short, this email very likely came from the sender designated in the message.
All mail clients currently offer a suitable extension for dealing with signed and encrypted email. They differ clearly, however, in terms of the complexity of setting up and using the extension. You can find a comprehensive step-by-step guide for Mozilla Thunderbird/Icedove combined with the Enigmail [15] encryption plugin on the Debian wiki [16].
Displaying Existing Keys
Figure 3 shows a selection of the public keys with the name of the author; all interested parties have unrestricted access to these keys on the key server. This form of Internet-based request can serve as a reliable reference point for everyday use. Each line contains the key type (pub, or the public part of the key), the key length with the procedure (e.g., 4096R indicates a 4096-bit RSA key), the key identifier (ID), the date of key creation, and the name (User ID) and email address.
If you compare Figures 2 and 3, you will note that the email's key ID in Figure 2 is identical to the one listed in line 4 of Figure 3. As is apparent from Figure 3, more than one key is associated with "Frank Hofmann," but only the keys in lines 2-4 belong to the author.
Checking the Other Side
All communication partners can automatically verify cryptographically signed email, provided the public PGP/GnuPG keys are stored on a public key server or the participants have a copy of the originator's public key.
GnuPG hangs the keys you received from the key server on your locally saved keyring. To check this, you need an existing Internet connection, unless you have access to a complete copy of the public key server's data pool (rather unlikely).
Listing 2 shows the full call on the command line to download a key. The --keyserver
switch designates the server; here, hkp://keys.gnupg.net
gives the key server network a generic specification. Specify the ID of the public key you want to receive with the --recv-keys
switch, such as for the RSA key with the ID C76E337A
.
Listing 2
Downloading a Key
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Support Our Work
Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.
News
-
ESET Discovers New Linux Malware
WolfsBane is an all-in-one malware that has hit the Linux operating system and includes a dropper, a launcher, and a backdoor.
-
New Linux Kernel Patch Allows Forcing a CPU Mitigation
Even when CPU mitigations can consume precious CPU cycles, it might not be a bad idea to allow users to enable them, even if your machine isn't vulnerable.
-
Red Hat Enterprise Linux 9.5 Released
Notify your friends, loved ones, and colleagues that the latest version of RHEL is available with plenty of enhancements.
-
Linux Sees Massive Performance Increase from a Single Line of Code
With one line of code, Intel was able to increase the performance of the Linux kernel by 4,000 percent.
-
Fedora KDE Approved as an Official Spin
If you prefer the Plasma desktop environment and the Fedora distribution, you're in luck because there's now an official spin that is listed on the same level as the Fedora Workstation edition.
-
New Steam Client Ups the Ante for Linux
The latest release from Steam has some pretty cool tricks up its sleeve.
-
Gnome OS Transitioning Toward a General-Purpose Distro
If you're looking for the perfectly vanilla take on the Gnome desktop, Gnome OS might be for you.
-
Fedora 41 Released with New Features
If you're a Fedora fan or just looking for a Linux distribution to help you migrate from Windows, Fedora 41 might be just the ticket.
-
AlmaLinux OS Kitten 10 Gives Power Users a Sneak Preview
If you're looking to kick the tires of AlmaLinux's upstream version, the developers have a purrfect solution.
-
Gnome 47.1 Released with a Few Fixes
The latest release of the Gnome desktop is all about fixing a few nagging issues and not about bringing new features into the mix.