As part of our commitment to open source, we maintain the OpenPGPjs encryption library. After some recent code enhancements, OpenPGPjs underwent an independent security audit, the results of which are discussed below.
At ProtonMail, our goal is to make encryption as widespread and accessible as possible. We believe a key step toward that is having well-maintained, robust, and secure open source encryption libraries. This is the goal of our efforts on the OpenPGPjs encryption library, which is today used by hundreds of applications (including ProtonMail) serving millions around the world. As the maintainer of OpenPGPjs, we are responsible for making sure the library is up to date and secure, as well as offering basic support to developers who wish to use it.
In March 2018, we released Version 3.0 of OpenPGPjs. With this major update, OpenPGPjs is even more powerful, secure, and efficient. As part of this update, the OpenPGPjs developer community commissioned an independent security audit from the well-respected security firm Cure53. Independent security audits are an important way to ensure there are no vulnerabilities that could be exploited by attackers.
Summer 2018 Security Audit Coverage
The version 3.0 release brought many new features and improvements, such as support for elliptic curve cryptography (ECC), which uses smaller signing and encryption keys compared with RSA cryptography (what ProtonMail uses now), making it a faster and more efficient alternative.
The new version also adds compression, which reduces the size of data before encryption to save space (and time) during encryption and transmission. OpenPGPjs now also offers support for AEAD (Authenticated Encryption with Associated Data). This protocol provides confidentiality, integrity, and authenticity guarantees on encrypted data, so that when you decrypt data, you can be sure this was the exact same data encrypted by your sender, and you can be sure that it was indeed encrypted by that sender. For those who are interested, you can find the full technical details of OpenPGPjs Version 3.0 here.
The Cure53 team focused on a couple of these new features while also taking a closer look at some key aspects of OpenPGPjs’ crypto implementations. In particular, the audit focused on the following:
- AEAD encrypted packets
- EAX, GCM, OCB
- All cryptographic primitive implementations: AES, AES-EAX, AES-GCM, AES-CBC, ED25519, C25519, ECDSA, HMAC, P256, P384, P521, SECP256K1
- Prime number handling
- Date support in signatures
- Cryptographic API exposure via different providers
OpenPGPjs Audit Results
We are pleased to receive a highly positive result from the audit. No major issues were discovered. In their summary, Cure53 provided the following feedback:
As OpenPGPjs forms the foundation of ProtonMail’s encryption, this result provides extra certainty that ProtonMail’s cryptography is properly protecting users as intended. Working with the open source community is an important part of what we do at ProtonMail, and we will continue to build out the OpenPGPjs library. We are grateful to the ProtonMail community for supporting us in these efforts.
The ProtonMail Team
You can get a free secure email account from ProtonMail here.
We also provide a free VPN service to protect your privacy.
ProtonMail and ProtonVPN are funded by the community. If you would like to support our efforts, you can upgrade to a paid plan or donate. Your support allows us to continue to develop ProtonMail as free and open source software.