= RFC-4880bis = These are notes created during planning of an updated OpenPGP specifiction in 2015/2016. GnuPG meanwhile implements nearly everything from a draft which got rough consensus in the WG in early 2018. The current state of the OpenPGP specification is [[https://datatracker.ietf.org/doc/draft-koch-openpgp-2015-rfc4880bis/|rfc4880bis]]. Up to "New MUST algorithms" section the following notes are the topics from dkg's list. == Fingerprints == Update the fingerprint format (avoid inclusion of creation date, use stronger digest algorithm; i'm dubious about embedding algorithm agility in the fingerprint itself, but explicit version info in the fingerprint might be reasonable so we don't have to keep guessing by fpr structure for future versions) == Key IDs == get rid of keyids entirely -- when referring to a key, use the fingerprint where a compact hint is needed (e.g. in a replacement of the issuer subpacket) or the full primary key where it is more sensitive (e.g. in designated revoker). With EC keys, we could consider using the full key (not the full cert) even in the issuer subpacket case, which could make things cleaner. == Hash algo == deprecate MD5, SHA1, and RIPEMD160 == Cleartext sigs == clarify that cleartext signatures should all use charset/encoding UTF-8. == S2K == update S2K with something more modern (PBKDF2, scrypt?), deprecate all the other mechnanisms explicitly * Jon Callas suggests the use of PBKDF2. * Peter Gutmann suggests to wait for the outcome of PHC and use that. * Nils Durner maintains a patch for RFC4880bis to include the PHC winner Argon2i == Curves == standardize the two new curves coming out of the CFRG: 25519 and curve448 ("goldilocks") for both signatures and encryption (Werner has already started this process for 25519 signatures) == Compression == remove compression entirely == Terminology == clean up the language: clearly distinguish between "public key" and "certificate", and ensure that the use of the terms "trust" and "validity", if still present, are used unambiguously. == Literal data packet == declare a literal data packet type "m" that means "MIME content" so that we can punt on the rest of the message structure/format/encoding/type craziness to MIME. == Deprecated 3DES et al. == deprecate 3DES, IDEA, and as many of the weaker ciphers as we can get away with. == AEAD == provide a modern streamable/chunkable AEAD replacement for Symmetrically-Encrypted Integrity-Protected Data (SEIPD) packets == New MUST algorithms == change MTI algorithms: SHA512, the two new ECs, and the new AEAD mechanism should be the baseline. == New key flags == * A new key flag to support GNS == New notation data == In the past we add a few requests for new IETF namespace notations: * "nick" for GNS * [fixme] = RFC-3156bis = * Define {{{application/pgp-message}}} for binary OpenPGP messages * Define {{{application/pgp-keydata}}} for binary OpenPGP keys * Remove the micalg parameter