# Autocrypt

Autocrypt is a cryptographic protocol for email clients aiming to simplify key exchange and enabling encryption. Version 1.0 of the Autocrypt specification was released in December 2017. Version 1.1 was released in January 2019. It is implemented on top of OpenPGP replacing its complex key management by fully automated exchange of cryptographic keys between peers.

## Method

Autocrypt-capable email clients transparently negotiate encryption capabilities and preferences and exchange keys between users alongside sending regular emails. This is done by including the key material and encryption preferences in the header of each email, which allows encrypting any message to a contact who has previously sent the user email. This information is not signed or verified in any way even if the actual message is encrypted and verified.
No support is required from email providers other than preserving and not manipulating the Autocrypt specific header fields.
When a message is encrypted to a group of receivers, keys are also automatically sent to all receivers in this group. This ensures that a reply to a message can be encrypted without any further complications or work by the user.

## Security model

Autocrypt is guided by the idea of opportunistic security from RFC 7435 but implementing something much less secure than a trust on first use (TOFU) model. Encryption of messages between Autocrypt-capable clients can be enabled without further need of user interaction. Traditional OpenPGP applications should display a noticeable warning if keys are not verified either manually or by a web of trust method before use. In contrast, Autocrypt completely resigns on any kind of key verification. Key exchange is during the initial handshake and valid or invalid keys of peers may be replaced anytime later without any user interaction or verification. This makes it very easy to exchange new key(s) if a user loses access to the key but also makes the protocol much more susceptible to man-in-the-middle attacks than clean TOFU. The underlying OpenPGP implementation makes it often possible for the user to perform manual out of band key verification, however by design users are never alerted if Autocrypt changed the keys of peers.
Autocrypt tries to maximize the possible opportunities for encryption, but is not aggressive about encrypting messages at all possible opportunities. Instead, encryption is only enabled by default if all communicating parties consent, allowing users to make themselves available for encrypted communication without getting in the way of their established workflows.
Man-in-the-middle attacks are not preventable in this security model, which is controversial.
Any attacker who can send emails with forged sender-address can cause encryption keys to be replaced by keys of his choice and/or deliberately turn off encryption.

## Technical details

Autocrypt uses the established OpenPGP specification as its underlying data format. With Version 1.1 support for Elliptic_Curve_Cryptography (ECC) has been introduced and is the standard for new keys, because it provides the same security with shorter keys. For this Curve25519 is used. Messages are encrypted using AES and RSA keys, with a recommended RSA key length of 3072 bits. These mechanisms are chosen for maximum compatibility with existing OpenPGP implementations. There are plans for moving to smaller Elliptic-curve keys when support is more widely available.
The Autocrypt header field features a tag=value format common to several mechanisms (for example dkim), where the keydata tag contains the public key. It is similar to an armored key export, except that it misses the -----BEGIN PGP PUBLIC KEY BLOCK----- and -----END PGP PUBLIC KEY BLOCK----- lines.
For example:

## Support

* Kontact since version 21.04.
* Delta Chat messenger from Version 0.9.2.
* K-9 Mail Android mail-app has support since Version 5.400 (reportedly broken until version 5.717).
* SnappyMail webmail from Version 2.34.0.
* Thunderbird partially supports AutoCrypt since version 78. Thunderbird generates, sends and receives AutoCrypt headers, but does not automatically install received public keys. User action is still required to approve and install a sender's public key.
* The German email provider Posteo supports AutoCrypt, and improves its security by also cryptographically signing outbound Autocrypt header data via DKIM.
* No longer functional: Autocrypt extension in Thunderbird.
* No longer functional: Thunderbird extension Enigmail since version 2.0.