pmeunier / openpgp
Latest patch on March 8, 2019
srcIniton July 23, 2018
Cargo.tomlIniton July 23, 2018
README.mdTypoon March 8, 2019
default.nixIniton July 23, 2018
README.md

OpenPGP

OpenPGP is an IETF-standardised format for electronic signatures and encryption of contents. The main RFC describing the format is RFC 4880.

What OpenPGP does

OpenPGP allows users to:

  • sign and encrypt contents using public keys.

  • manage keys, including important operations such as revocation (when a key is compromised) and key signatures.

  • build a web of trust, allowing users to trust signatures even if they haven't meant the signer in person, provided there is a chain of persons who have met in person between the signer and the recipient of the message.

What OpenPGP doesn't do

OpenPGP doesn't allow users to:

  • deny that they were the authors of a message after the message has been received. This is a desirable property of cryptographic systems, known as forward anonymity.

  • invalidate collected ciphertexts once a key has been compromised. This is a property known as forward secrecy, implemented by other secure systems such as OpenSSH and Signal.

Caveats

Even in its claimed features, OpenPGP has a number of caveats:

  • The OpenPGP RFC is not always as precise as everyone would expect for a crypto standard. The fuzziness is also claimed to be intentional sometimes, and very few examples of binary formats are given. Some things are signed by all implementations (usually, file contents are), while others (such as file names) aren't signed by some implementations, which can go against the intuition some users might have.

  • The web of trust seemed like a good idea when OpenPGP was designed, but it is now known that the surveillance of society performed by states and big corporations focuses more on the metadata of communication than on their contents. If the web of trust had been widely adopted, that would expose the metadata of all communication in an even more reliable way than centralised platforms could ever imagine. States and big corporations would have signed and dated declarations that two people met in real life, for example.

  • By design the security of OpenPGP and the web of trust relies on its wide adoption. Unfortunately, most human beings seem more eager to communicate with others than was envisionned when OpenPGP was designed, and do not often take the time to learn how to protect themselves online. Moreover, not all internet users have access to the resources to learn why and how to use this relatively complex tool, which almost never comes as a default on most operation systems and/or email clients. The wide success of webmail, which requires some form of browser support to be used with OpenPGP, had also not been imagined when OpenPGP was designed.

  • Unlike when OpenPGP was designed, many internet users today access the web using more than one device, and many of these devices (smartphones in particular) use a closed operating system with strong restrictions on what can and cannot be run on the device. This makes key management and transfer between devices particularly complicated, and increases the risk of compromising keys unintentionally.

Should I use OpenPGP?

Beyond interpersonal email communications, important applications of OpenPGP are found in:

  • signing software, which is an important vector of security if implemented properly.

  • sending secure archives, for instance from whistleblowers to journalists. However, the complexity of OpenPGP makes it tricky to use by non-experts, and can result in privacy breaches. Alternatives such as SecureDrop, over a Tor-encrypted connection, are generally considered safer, in the sense that they are much easier to use properly.

Implementations

Over time, there have been multiple software projects that implement OpenPGP, the most successful open source one probably being GnuPG, often called "GPG".