GnuPG this Past Fall


The focus of development the past few months has been on polishing the GnuPG 2.1 code base so that we can release GnuPG 2.2. This is particularly important to us, because we want the latest features to be available in the next release of Debian stable, which is about to freeze. All of the main developers have participated in this effort, but I want to particularly point out Daniel Kahn Gillmor’s many patches in this area. Even prior to this effort, Daniel has regularly submitted patches for relatively minor, boring issues. But, it is exactly these types of fixes that result in a polished product.

A relatively major change that went into the most recent release of GnuPG is the replacement of ADNS with William Ahern’s libdns. Unfortunately, our patches for Tor support for ADNS have been in limbo for such a long time, that we decided to change to a different DNS resolver.

Daniel Kahn Gillmor also helped implement and debug GnuPG’s new supervisor mode. This mode allows GnuPG’s daemons to be auto-started and auto-stopped by systemd. If you are tracking Debian testing or Debian unstable, you can try enabling this by following the instructions in /usr/share/doc/gnupg-agent/README.Debian. This is based on the reference implementation for starting GnuPG’s daemons from systemd that Daniel also contributed and is included in GnuPG proper. Linux distributions that use systemd are encouraged to base their systemd unit files on this implementation.

Justus also made significant improvements to our relatively new Scheme-based testing framework. He’s also written many new tests, fixed bugs in TinyScheme, the Scheme interpreter that we are using, and radically improved TinyScheme’s debugging facilities. Furthermore, TinyScheme used to spent about 75% of the execution time in the garbage collector alone, now it typically spends less than 40% of the time in the memory allocator. Unfortunately, although he submitted some patches upstream, they have been mostly ignored. Thus, if you are using TinyScheme, you might want to consider including our patches.

We’ve decided to change the default expiration time for new keys to 2 years. (Previously, keys did not expire by default.) Using an expiration provides an emergency break for users who lose access to their secret key material and any revocation certificate. But note: just because a key has expired does not mean that one has to create a new key; it is entirely possible to extend a key’s expiration, even after the key has expired.

Another minor, but notable improvement that Justus implemented is to GnuPG’s search algorithm. Justus changed gpg’s behavior to take the best match instead of the first match.

Niibe has continued to polish the smart card support including improving support for v3 of the OpenPGPcard specification, and initial support for multiple card readers. He has also reviewed and integrated a number of bugs fixes and small improvements contributed by Arnaud Fontaine.

Andre has made significant progress on GPGOL, our plugin for Outlook. He plans to release a beta in the coming week. Part of this work included fleshing out how the automatic encryption system should work, and thinking about what it can and cannot protect against. We’ve documented this in the wiki. Comments (to the mailing list) are welcome!

As usual, Jussi Kivilinna contributed a number of improvements to libgcrypt. Alon Bar-Lev, a GnuPG maintainer for Gentoo, submitted a number of patches. Mike Blumenkrantz contributed a new EFL-based pinentry. And, Tobias Mueller provided a number of improvements to the Python bindings.

After a long discussion, we decided to change the Python GPGME bindings to use the gpg namespace instead of the pyme3 namespace. This should make finding the bindings easier.

There was also a discussion about the right way to deal with any missing dependencies (in particular, a sufficiently new GPGME) for the Python bindings when they are installed from pip. Unfortunately, we don’t have sufficient resources to properly package them so any users will need to make sure they have a recent operating system or build GPGME themselves.


We’ve released new versions of GPGME including 1.7.0 and 1.8.0. 1.7.0 includes our new Python bindings for GPGME, and 1.8.0 includes the renaming of the namespace from pyme3 to gpg.

The GnuPG proper saw two releases: version 2.1.16 and version 2.1.17. The latter was released exactly 19 years after Werner released version 0.0.0!

We released version 1.7.5 of Libgcrypt, which includes an important bug fix for a secure memory exhaustion regression (see also this post), which was introduced in 1.7.4.

Public Appearances

In October and November, I traveled a fair amount. Before leaving, I contacted a few local groups about giving my "An Advanced Introduction to GnuPG" presentation. In the end, I held it in New York City at the NYLUG meetup (recording), in Baltimore at JHU’s ACM chapter, and in San Francisco at OpenLate, at NoiseBridge, (recording) and at the Intercept. The interest in GnuPG in New York is impressive: we filled the 150 person room and there was a waiting list. The audience was also very engaged and asked many questions. Joe Nelson’s recording at NoiseBridge is probably the best recording so far (I had a lapel mic and the slides were recorded separately). If you are interested in seeing the presentation, that is the recording that I currently recommend.

While traveling, I also interviewed a number of GnuPG users (journalists, lawyers, activists, and companies) for our upcoming donation campaign. If you or your company/organization are willing to talk about how you use GnuPG on camera, please get in touch with me.

At the end of December, I attended the CCC’s annual congress. I participated in a panel discussion with Volker Birk from pEp and Holger Krekel from Autocrypt. Unfortunately, we only had half an hour, which made the discussion rather superficial. Other talks more or less related to GnuPG were presented in the #wefixthenet session.

A few GnuPG team members will be present at this year’s FOSDEM. And, I, Daniel, and some of the Autocrypt people attend the Internet Freedom Festival in March in Valencia, Spain.


K9 had a major release (5.2) with significantly better OpenPGP support. Of particular note is support for PGP/MIME. Congratulations!

The developers of GPGTools have released a beta version of GPGTools for macOSX Sierra.

Autocrypt is a new, loose knit group working on a new key discovery protocol for opportunistic encryption. Autocrypt is different from WKD in that it transmits keys via email, and, as such, doesn’t require any new third-party infrastructure, but is more susceptible to attacks than WKD. This approach is complementary to WKD, and similar to what pEp is doing.

pEp has also begun to document their protocols. Their intent appears to be to submit them as IETF internet drafts.


The EFF expects surveillance and censorship to increase under President Trump. And, the same appears to be inevitable in Great Britain with their recently introduced Snoopers’ Charter. The EFF encourages technology companies to, among other things, improve their support for end-to-end encryption. We agree, and add that even individuals can help: start using encryption tools, and, if you know how, volunteer at a local CryptoParty.

Filippo Valsorda wrote an article about why he is giving up on PGP, which got picked up by Ars Technica, and endorsed by Matthew Green and Bruce Schneier (again). I composed a response, which Ars Technica also carried. In short, one of the major reasons that Filippo is giving up on PGP in favor of Signal and WhatsApp is due to the lack of forward secrecy. It’s true that OpenPGP doesn’t support forward secrecy (although it can be approximated with a bit of work). But, it’s not clear to us whether that should be the most important consideration. We know from Snowden, that when properly implemented, "encryption … really is one of the few things that we can rely on." In other words, when nation states crack encryption, they aren’t breaking the actual encryption, they are circumventing it. Thus, if you are like Filippo and are really worried about something like an evil maid attack, then you are probably better off storing your encryption keys on a smart card, which is something that GnuPG supports, but Signal does not. Another major problem with Signal, which Filippo does not address, is its use of telephone numbers as identifiers. This seriously undermines anonymity, and makes harassment easier, which is a particular problem for women who post on the Internet. There are been other responses including those from Bjarni Rúnar (Mailpile), Perry Donham (BU), and Alexandre Dulaunoy (HN comments).

Tobias Müller recently wrote a blog post about his impressions of the OpenPGP conference.

Micah Lee was interviewed about his project about GPG Sync by the FSF.

Heise published an article with tips for encrypting emails (in German).

LinuxFR published a primer covering key validity and trust models, including TOFU (in French). And, NextInpact published an article with a brief history of PGP and GnuPG, a number of tips for using GnuPG, and some tradeoffs (in French).


We recently received an account statement from the Wau Holland foundation on the GnuPG account that they manage for us.