<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.14 (Ruby 3.1.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-ietf-openpgp-replacementkey-00" category="std" consensus="true" submissionType="IETF" updates="4880" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>OpenPGP Replacement Key Signalling Mechanism</title>

    <author fullname="Daphne Shaw">
      <organization>Jabberwocky Tech</organization>
      <address>
        <email>dshaw@jabberwocky.com</email>
      </address>
    </author>
    <author fullname="Andrew Gallagher" role="editor">
      <organization>PGPKeys.EU</organization>
      <address>
        <email>andrewg@andrewg.com</email>
      </address>
    </author>

    <date year="2024" month="July" day="22"/>

    <area>sec</area>
    <workgroup>openpgp</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 34?>

<t>This document specifies a method in OpenPGP to suggest a replacement for an expired, revoked, or deprecated primary key.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://andrewgdotcom.gitlab.io/draft-gallagher-openpgp-replacementkey"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-openpgp-replacementkey/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        OpenPGP Working Group mailing list (<eref target="mailto:openpgp@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/openpgp/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/openpgp/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://gitlab.com/andrewgdotcom/draft-gallagher-openpgp-replacementkey"/>.</t>
    </note>


  </front>

  <middle>


<?line 38?>

<section anchor="introduction"><name>Introduction</name>

<t>The OpenPGP message format <xref target="I-D.ietf-openpgp-crypto-refresh"></xref> defines two ways to invalidate a primary key.
One way is that the primary key may be explicitly revoked via a key revocation signature.
OpenPGP also supports the concept of key expiration, a date after which the key should not be used.
When a primary key is revoked or expires, very often there is another key that is intended to replace it.</t>

<t>A key owner may also create a new primary key that is intended to deprecate and replace their existing primary key, but without revoking or expiring that key.
This is useful during the rollout of new key versions and algorithms which may not (yet) enjoy universal support.
In such cases, a key owner may prefer that their correspondents use their new primary key, but if this is not possible for technical reasons they may continue to use the non-preferred key, which remains valid.</t>

<t>In the past some key owners have created key transition documents, which are signed, human-readable statements stating that a newer primary key should be preferred by their correspondents.
It is desirable that this process be automated through a standardised machine-readable mechanism.</t>

<t>This document is to specify the format of a Signature Subpacket to be optionally included in a revocation signature or self-signature on a primary key.
This subpacket contains a pointer to a suggested replacement for the primary key that is signed over, or a primary key for which the current key is the suggested replacement.
The replacement key may then be automatically retrieved and (if supported and validated) used instead of the original key.</t>

</section>
<section anchor="conventions-definitions"><name>Conventions and Definitions</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

<section anchor="terminology"><name>Terminology</name>

<t>In OpenPGP, the term "key" has historically been used loosely to refer to several distinct concepts.
Care is therefore required when talking about "keys" in a non-specific sense.
In this document, we use the following convention:</t>

<t><list style="symbols">
  <t>"replacement key" and "original key" always refer to a public key and, unless otherwise qualified, to a full Transferable Public Key (TPK).</t>
  <t>"target key" refers to either a replacement key or an original key that is referred to by a Replacement Key Subpacket.</t>
  <t>"current key" refers to the primary public key belonging to the self-signature currently under discussion.</t>
</list></t>

</section>
</section>
<section anchor="replacement-key-subpacket"><name>The Replacement Key Subpacket</name>

<t>The Replacement Key Subpacket is a Signature Subpacket (<xref target="I-D.ietf-openpgp-crypto-refresh"></xref> section 5.2.3.7), and all general Signature Subpacket considerations from there apply here as well.
The value of the Signature Subpacket type octet for the Replacement Key Subpacket is (insert this later).</t>

<t>A Preferred Key Server subpacket (<xref target="I-D.ietf-openpgp-crypto-refresh"></xref> section 5.2.3.26) <bcp14>MAY</bcp14> be included in the revocation or direct key signature to recommend a location and method to fetch the replacement key.
Note however that since this subpacket automatically also applies to the current key, it cannot be used to set the replacement key's preferred keyserver to a different value than that of the current key.</t>

<t>The absence of a Replacement Key Subpacket <bcp14>SHOULD NOT</bcp14> be interpreted as meaning that there is no replacement (or original) for the current key.
The "no replacement" bit <bcp14>SHOULD</bcp14> be used instead (see below).</t>

<t>The Replacement Key Subpacket <bcp14>MUST</bcp14> only be used in the hashed subpackets area of a primary key revocation or direct key signature.</t>

</section>
<section anchor="replacement-key-subpacket-format"><name>Format of the Replacement Key Subpacket</name>

<t>The format of the Replacement Key Subpacket is:</t>

<texttable title="Replacement Key Subpacket Fields" anchor="replacement-key-subpacket-fields">
      <ttcol align='left'>Octets</ttcol>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Notes</ttcol>
      <c>1</c>
      <c>Subpacket Version</c>
      <c><bcp14>MUST</bcp14> be 0x01</c>
      <c>1</c>
      <c>Class</c>
      <c>&#160;</c>
      <c>1</c>
      <c>Target Key Version (1)</c>
      <c>optional</c>
      <c>N1</c>
      <c>Target Key Fingerprint (1)</c>
      <c>optional</c>
      <c>M</c>
      <c>Target Key Imprint (1)</c>
      <c>optional</c>
      <c>1</c>
      <c>Target Key Version (2)</c>
      <c>optional</c>
      <c>N2</c>
      <c>Target Key Fingerprint (2)</c>
      <c>optional</c>
      <c>M</c>
      <c>Target Key Imprint (2)</c>
      <c>optional</c>
      <c>...</c>
      <c>...</c>
      <c>...</c>
</texttable>

<t>The subpacket version octet <bcp14>MUST</bcp14> be set to 0x01 to indicate the version of the Replacement Key Subpacket as specified in this document.
An implementation that encounters a subpacket version octet that is different than the version(s) it is capable of understanding <bcp14>MUST</bcp14> disregard that Replacement Key Subpacket.</t>

<t>Note that if the critical bit on the Replacement Key Subpacket is set, a receiving application could consider the whole self-signature to be in error (<xref target="I-D.ietf-openpgp-crypto-refresh"></xref> section 5.2.3.7).
The critical bit therefore <bcp14>SHOULD NOT</bcp14> be set on the Replacement Key Subpacket.</t>

<t>The class octet contains flags that indicate the form and semantics of the subpacket:</t>

<texttable title="Replacement Key Subpacket Flags" anchor="replacement-key-subpacket-flags">
      <ttcol align='left'>Flag bit</ttcol>
      <ttcol align='left'>Flag name</ttcol>
      <ttcol align='left'>Form of remainder of packet</ttcol>
      <c>0x80</c>
      <c>No replacement</c>
      <c>No optional fields</c>
      <c>0x40</c>
      <c>Inverse relationship</c>
      <c>Multiple targets may be given</c>
</texttable>

<t>The 0x80 bit of the class octet is the "no replacement" bit.
When set, this explicitly specifies there is no replacement (or original) for the current key.</t>

<t>The 0x40 bit of the class octet is the "inverse relationship" bit.
When set, this means that the target key(s) identified by the packet are the primary keys for which the current key is the replacement key.
If both the 0x80 and 0x40 bits are set, it means that the current key is not a replacement for any other key.</t>

<t>All other bits of the class octet are currently undefined and <bcp14>MUST</bcp14> be set to zero.</t>

<t>If the class octet does not have the 0x80 bit set to indicate there is no replacement, the Replacement Key Subpacket <bcp14>MUST</bcp14> also contain 1 octet for the version of the target key, N octets for the fingerprint of the target primary key, and M octets for an imprint of the target primary key (see below).
If the class octet has the 0x40 bit set, the subpacket <bcp14>MAY</bcp14> repeat the three optional fields one or more times, to refer to multiple target keys that the current key is a replacement for.</t>

<t>If present, the length of the Target Key Fingerprint field (N) <bcp14>MUST</bcp14> equal the fingerprint length corresponding to the immediately preceding Target Key Version field, e.g.
20 octets for version 4, or 32 octets for version 6.
If present, the length of the Target Key Imprint field (M) <bcp14>MUST</bcp14> equal the length of the output of the digest algorithm used by the enclosing signature, e.g.
32 octets for SHA2-256.</t>

<t>If the intent is to state that the replacement (or original) key is unknown, then no Replacement Key Subpacket should be included in the revocation signature.</t>

<section anchor="key-imprints"><name>Key Imprints</name>

<t>An imprint of a public key packet is a generalisation of a fingerprint.
It is calculated in the same way as the fingerprint, except that it <bcp14>MAY</bcp14> use a digest algorithm other than the one specified for the fingerprint.
Conversely, the fingerprint of a public key packet can be considered a special case of an imprint.
A public key packet has only one fingerprint, but may have any number of imprints, each using a different digest algorithm.</t>

<t>When used in a Replacement Key Subpacket, an imprint <bcp14>MUST</bcp14> use the same digest algorithm as the enclosing signature.
This guards against key-substitution attacks when referring to keys that use weaker digest algorithms in their fingerprints.
If the signature's digest algorithm is the same as that used by the fingerprint, then the imprint and the fingerprint will be identical.
In such a case, the imprint <bcp14>MUST</bcp14> still be included for parsing reasons.</t>

</section>
<section anchor="graph-topology"><name>Graph Topology</name>

<t>A given signature <bcp14>MUST</bcp14> contain at most one Replacement Key Subpacket.
If a signature contains more than one such subpacket, a receiving application <bcp14>MUST</bcp14> disregard them all.
This imposes a simple graph topology on replacement key relationships:</t>

<t><list style="symbols">
  <t>An original key <bcp14>MUST NOT</bcp14> claim to have more than one replacement key.</t>
  <t>An original key that claims to have a replacement key <bcp14>MUST NOT</bcp14> claim to be the replacement key for any other key(s).</t>
</list></t>

<t>In addition, the order of the original keys specified in an inverse-relationship Replacement Key Subpacket is meaningful.
If a replacement key is supported by a receiving application, but is not usable for the desired purpose (for example, it may not have an encryption-capable subkey), the application <bcp14>MAY</bcp14> use the ordering of the original keys in its inverse Replacement Key Subpacket (if one exists) to indicate which original key is preferred as a fallback.
The original keys <bcp14>SHOULD</bcp14> therefore be listed in order of decreasing preference.</t>

</section>
</section>
<section anchor="replacement-key-subpacket-trust"><name>Trust and Validation of the Replacement Key Subpacket</name>

<section anchor="key-equivalence-binding"><name>Key Equivalence Binding</name>

<t>The existence of a matching pair of forward and inverse Replacement Key Subpackets on the most recent direct self-signatures (or key revocations) over two primary keys, with each referring to the other primary key, forms a Key Equivalence Binding.
If one primary key is validated for use in a particular context, then a bound-equivalent primary key and its subkeys are also valid, regardless of any User ID certifications over the second primary key (or lack thereof).</t>

<t>The equivalence binding is invalidated under the following circumstances:</t>

<t><list style="symbols">
  <t>if either primary key is hard-revoked.</t>
  <t>if either primary key overrides the equivalence binding with a new direct self-signature that a) does not contain a Replacement Key Subpacket, or b) contains a Replacement Key Subpacket that does not refer to the other key.</t>
  <t>if either signature that forms the equivalence binding has expired.</t>
</list></t>

<t>Note however:</t>

<t><list style="symbols">
  <t>If either primary key is soft-revoked or expired, the equivalence binding is unaffected.</t>
  <t>If either primary key is hard-revoked, then the equivalence binding is invalidated and the other key is unaffected.</t>
  <t>Other properties (such as expiry dates, usage preferences, custom notations) <bcp14>SHOULD NOT</bcp14> be applied across the equivalence binding.</t>
  <t>Key Equivalence is transitive; if A is equivalent to B and B is equivalent to C, then A is equivalent to C.</t>
</list></t>

<t>If two or more primary keys are bound-equivalent, they <bcp14>MUST</bcp14> be treated as a single key for the purposes of the Web of Trust, particularly when calculating partial trust values.</t>

</section>
<section anchor="without-a-key-equivalence-binding"><name>Without a Key Equivalence Binding</name>

<t>The Replacement Key Subpacket <bcp14>MUST NOT</bcp14> be treated as a Web of Trust certification over either the current or replacement key.
In the absence of a Key Equivalence Binding, a receiving implementation <bcp14>SHOULD</bcp14> validate the replacement key as they would any other TPK.
If the replacement key is supported, and validates successfully, it <bcp14>SHOULD</bcp14> be preferred over the current key when determining which TPK to use for correspondence.</t>

<t>It is also suggested that the key owner asks the third parties who certified their original key to certify the replacement key.
Distribution of the replacement key over a trusted mechanism (such as WKD) <bcp14>MAY</bcp14> also be used to confer legitimacy.</t>

</section>
</section>
<section anchor="replacement-key-subpacket-placement"><name>Placement of the Replacement Key Subpacket</name>

<t>The Replacement Key Subpacket is only meaningful on a primary key revocation or direct key signature, and <bcp14>MUST NOT</bcp14> appear elsewhere.
A replacement subkey can be directly added by the key owner with no need for the indirection provided by this subpacket.
The Replacement Key Subpacket <bcp14>MUST</bcp14> be placed in the hashed subpackets area of the signature to prevent a possible key substitution attack.
If the Replacement Key Subpacket was allowed in the unhashed subpackets area, an attacker could add a bogus Replacement Key Subpacket to an existing signature.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>A Key Equivalence Binding requires the active consent of both primary key owners.
This is to prevent one key owner from unilaterally claiming signatures made by the other key owner, using the same argument that motivates the embedded Primary Key Binding signature in a signing-capable subkey's binding signature.</t>

<t>The Target Key Imprint is included to mitigate against weaknesses in the fingerprint digest algorithm used by older key versions.
By including a digest over the target primary public key packet, using the same digest algorithm as the enclosing signature, we ensure that the indirect cryptographic binding between the equivalent keys is of the same overall strength as a signature made directly over the target primary public key (as in a certification signature or subkey binding signature).
We intentionally chose not to use embedded back-signatures or third-party certifications, both to keep the design simple and to limit the size of the subpacket(s) required.</t>

<t>In the absence of a complete Key Equivalence Binding, the Replacement Key Subpacket <bcp14>MUST</bcp14> be treated as merely advisory.
In this scenario, it provides information for the purposes of key discovery and order of preference only, without any trust statement regarding the replacement key.
Implementations <bcp14>SHOULD NOT</bcp14> infer any trust value from a single Replacement Key Subpacket, and <bcp14>SHOULD</bcp14> validate the replacement key as they would any other key.</t>

<t>In addition, as this document is an update of <xref target="I-D.ietf-openpgp-crypto-refresh"></xref>, the security considerations there should be carefully reviewed.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document requests that the following entry be added to the OpenPGP Signature Subpacket registry:</t>

<texttable title="Signature Subpacket Registry" anchor="signature-subpacket-registry">
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Specification</ttcol>
      <c>TBC</c>
      <c>Replacement Key</c>
      <c>This document</c>
</texttable>

</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">




<reference anchor="I-D.ietf-openpgp-crypto-refresh">
   <front>
      <title>OpenPGP</title>
      <author fullname="Paul Wouters" initials="P." surname="Wouters">
         <organization>Aiven</organization>
      </author>
      <author fullname="Daniel Huigens" initials="D." surname="Huigens">
         <organization>Proton AG</organization>
      </author>
      <author fullname="Justus Winter" initials="J." surname="Winter">
         <organization>Sequoia-PGP</organization>
      </author>
      <author fullname="Niibe Yutaka" initials="N." surname="Yutaka">
         <organization>FSIJ</organization>
      </author>
      <date day="4" month="January" year="2024"/>
      <abstract>
	 <t>   This document specifies the message formats used in OpenPGP.  OpenPGP
   provides encryption with public-key or symmetric cryptographic
   algorithms, digital signatures, compression and key management.

   This document is maintained in order to publish all necessary
   information needed to develop interoperable applications based on the
   OpenPGP format.  It is not a step-by-step cookbook for writing an
   application.  It describes only the format and methods needed to
   read, check, generate, and write conforming packets crossing any
   network.  It does not deal with storage and implementation questions.
   It does, however, discuss implementation issues necessary to avoid
   security flaws.

   This document obsoletes: RFC 4880 (OpenPGP), RFC 5581 (Camellia in
   OpenPGP) and RFC 6637 (Elliptic Curves in OpenPGP).

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-openpgp-crypto-refresh-13"/>
   
</reference>

<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>

<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>




    </references>



<?line 240?>

<section anchor="example-workflows"><name>Example Workflows</name>

<section anchor="alice-revokes-her-primary-key"><name>Alice Revokes her Primary Key</name>

<t><list style="symbols">
  <t>Bob wants to send Alice a message; Bob has Alice's original key but they have not corresponded for some time.</t>
  <t>Bob's client refreshes Alice’s original key from a keyserver (by fingerprint); it contains a revocation signature with a Replacement Key Subpacket.</t>
  <t>Bob's client looks up Alice’s replacement key from a keyserver (by fingerprint); it is certified by the same people that certified her original key (some of whom Bob may trust) and/or Alice’s original key itself (which Bob's policy may consider sufficient).</t>
  <t>Bob's client uses Alice’s replacement key instead of the original key.</t>
</list></t>

<t>There are other means to achieve a similar result, such as WKD or Autocrypt, but they may not be available.
For example, Alice’s service provider may not support WKD, and Alice may not have sent Bob an autocrypt message since revoking her original primary key.</t>

</section>
<section anchor="alice-creates-a-v6-primary-key"><name>Alice Creates a V6 Primary Key</name>

<t><list style="symbols">
  <t>Bob wants to send Alice a message and has Alice's v4 original key.</t>
  <t>Either Bob's copy of Alice's original key already has the Replacement Key Subpacket pointing to a v6 primary key, or Bob refreshes Alice's original key from a keyserver and sees a new Replacement Key Subpacket.</t>
  <t>If Bob has a v6 implementation, it can proceed with fetching Alice's v6 replacement key, validating it, etc, and then use it to send his message to Alice.</t>
  <t>If Bob doesn't have a v6 implementation, it can continue to use Alice's v4 original key.</t>
</list></t>

<t>WKD does not currently allow more than one valid TPK to be returned for a query, therefore it cannot easily support this use case.</t>

</section>
</section>
<section anchor="acknowledgments"><name>Acknowledgments</name>

<t>The authors would like to thank Bart Butler, Kai Engert, Daniel Kahn Gillmor, Daniel Huigens, Simon Josefsson, Heiko Schäfer, Falko Strenzke, Justus Winter and Aron Wussler for suggestions and discussions.</t>

</section>
<section anchor="document-history"><name>Document History</name>

<t>Note to RFC Editor: this section should be removed before publication.</t>

<section anchor="changes-between-draft-gallagher-openpgp-replacementkey-02-and-draft-ietf-openpgp-replacementkey-00"><name>Changes Between draft-gallagher-openpgp-replacementkey-02 and draft-ietf-openpgp-replacementkey-00</name>

<t><list style="symbols">
  <t>Standardised capitalisation and terminology</t>
</list></t>

</section>
<section anchor="changes-between-01-and-02"><name>Changes Between -01 and -02</name>

<t><list style="symbols">
  <t>Specified Public Key Imprints.</t>
  <t>Specified inverse relationship flag and packet format.</t>
  <t>Restricted graph topology.</t>
  <t>Specified Key Equivalence Binding.</t>
  <t>Guidance re subpacket placement escalated from <bcp14>SHOULD</bcp14> to <bcp14>MUST</bcp14>, and critical bit to <bcp14>SHOULD NOT</bcp14>.</t>
</list></t>

</section>
<section anchor="changes-between-00-and-01"><name>Changes Between -00 and -01</name>

<t><list style="symbols">
  <t>Added example workflows.</t>
  <t>Specifically describe "deprecation without expiry or revocation" use case.</t>
  <t>Add note about weakness of signatures over fingerprints.</t>
  <t>Miscellaneous clarifications.</t>
</list></t>

</section>
<section anchor="changes-between-draft-shaw-openpgp-replacementkey-00-and-draft-gallagher-openpgp-replacementkey-00"><name>Changes Between draft-shaw-openpgp-replacementkey-00 and draft-gallagher-openpgp-replacementkey-00</name>

<t><list style="symbols">
  <t>Changed <spanx style="verb">algid</spanx> octet to <spanx style="verb">key version</spanx> octet.</t>
  <t>Changed initial subpacket version number to 1.</t>
  <t>Clarified semantics of some edge cases.</t>
</list></t>

</section>
</section>


  </back>

<!-- ##markdown-source:
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
pqAJMIuZCVv+P4YFx9y3RgAA

-->

</rfc>

