<?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-02" category="std" consensus="true" submissionType="IETF" updates="9580" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>OpenPGP Key Replacement</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="November" day="26"/>

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

    <abstract>


<?line 35?>

<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/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/openpgp-replacementkey"/>.</t>
    </note>


  </front>

  <middle>


<?line 39?>

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

<t>The OpenPGP message format <xref target="RFC9580"></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 primary 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 direct self-signature over 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 primary key is the suggested replacement.
The corresponding replacement certificate may then be automatically retrieved by the key owner's correspondents and (if supported and validated) used instead of the original.</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 primary key" and "original primary key" refer to a primary key as contained in a Transferable Public Key (certificate) or Transferable Secret Key.</t>
  <t>"target key" refers to either a replacement or original primary key that is referred to by a record in a Replacement Key subpacket.</t>
  <t>"current primary key" refers to the primary key that the self-signature currently under discussion belongs to.</t>
  <t>"replacement certificate", "original certificate" and "current certificate" refer to the TPK within which the corresponding primary key is distributed.</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 section="5.2.3.7" sectionFormat="of" target="RFC9580"/>), 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>To explicitly state that a revoked primary key has no replacement, a Reason for Revocation of "Key is retired and no longer used" <bcp14>SHOULD</bcp14> be used (see <xref target="reasons-for-revocation"/>).
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 primary key.</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>Class</c>
      <c>&#160;</c>
      <c>2</c>
      <c>Record length (1)</c>
      <c>&#160;</c>
      <c>1</c>
      <c>Target Key Version (1)</c>
      <c>&#160;</c>
      <c>N1</c>
      <c>Target Key Fingerprint (1)</c>
      <c>&#160;</c>
      <c>M</c>
      <c>Target Key Imprint (1)</c>
      <c>&#160;</c>
      <c>2</c>
      <c>Record length (2)</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 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>0x40</c>
      <c>Inverse relationship</c>
      <c>Multiple targets may be given</c>
</texttable>

<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 primary key is the replacement primary key.</t>

<t>All other flag bits of the class octet are currently undefined.
All undefined flags <bcp14>MUST</bcp14> be zero.
An implementation that encounters a class octet with nonzero bits that it does not recognise <bcp14>MUST</bcp14> ignore those bits.</t>

<t>Note that if the critical bit on the Replacement Key subpacket is set, a receiving implementation could consider the whole self-signature to be in error (<xref section="5.2.3.7" sectionFormat="of" target="RFC9580"/>).
The critical bit therefore <bcp14>SHOULD NOT</bcp14> be set on the Replacement Key subpacket.</t>

<t>The remainder of the subpacket contains one or more target records of the form:</t>

<figure><artwork><![CDATA[
( Record Length || Target Key Version || Target Key Fingerprint || Target Key Imprint )
]]></artwork></figure>

<t>The Record Length field contains a big-endian two-octet number which indicates the length of the next three fields in octets.
If a receiving implementation does not understand the target key version, it <bcp14>SHOULD</bcp14> ignore the target record and skip to the next.</t>

<t><list style="symbols">
  <t>If the class octet does not have the 0x40 bit set, the subpacket <bcp14>MUST</bcp14> contain exactly one target record to identify the replacement primary key.</t>
  <t>If the class octet has the 0x40 bit set, the subpacket contains one or more target records, to identify the original primary key(s) that the current primary key is a replacement for.</t>
</list></t>

<t>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.
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) primary key is unknown, then no Replacement Key subpacket should be included in the 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 implementation <bcp14>MUST</bcp14> disregard them all.
This imposes a simple graph topology:</t>

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

<t>In addition, the order of the original primary keys specified in an inverse-relationship Replacement Key subpacket is meaningful.
If a replacement primary key is supported by a receiving implementation, but is not usable for the desired purpose (for example, it may not have an encryption-capable subkey), the implementation <bcp14>MAY</bcp14> use the ordering of the original primary keys in its inverse Replacement Key subpacket (if one exists) to indicate which original primary key is preferred as a fallback.
The original primary 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 any primary key that has a Key Equivalence Binding with it (together with any bound subkeys) is 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>

<section anchor="reasons-for-revocation"><name>Reasons for Revocation</name>

<t>For the purposes of Key Revocation signatures:</t>

<t><list style="symbols">
  <t>"hard-revoked" means the key has been revoked with a Reason for Revocation subpacket specifying "Key material has been compromised" or "No reason specified"; the absence of a Reason for Revocation subpacket is equivalent to "No reason specified".</t>
  <t>"soft-revoked" means the key has been revoked with a Reason for Revocation subpacket specifying "Key is superseded" or "Key is retired and no longer used".</t>
</list></t>

<t>If a Key Revocation signature contains a Replacement Key subpacket, a Reason for Revocation subpacket <bcp14>MUST</bcp14> also be included, to prevent it from being interpreted as "No reason specified", which is a hard revocation.</t>

<t><list style="symbols">
  <t>if a Replacement Key subpacket is included in a revocation signature, then the Reason For Revocation subpacket <bcp14>SHOULD</bcp14> indicate "Key is superseded".</t>
  <t>if no Replacement Key subpacket is included in a revocation signature, but a Replacement Key might be specified at a later date, then the Reason For Revocation subpacket <bcp14>MAY</bcp14> indicate "Key is superseded".</t>
  <t>otherwise, the Reason for Revocation subpacket <bcp14>SHOULD</bcp14> indicate "Key is retired and no longer used".</t>
</list></t>

<t>If two or more primary keys have Key Equivalence Binding(s) between them, 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>
<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 primary key.
In the absence of a Key Equivalence Binding, a receiving implementation <bcp14>SHOULD</bcp14> validate the replacement certificate as they would any other.
If the replacement certificate is supported, and validates successfully, it <bcp14>SHOULD</bcp14> be preferred over the current certificate when determining which one to use for correspondence.</t>

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

</section>
</section>
<section anchor="selection-of-encryption-subkeys"><name>Selection of Encryption Subkeys</name>

<t>If a replacement certificate has been validated, whether through key equivalence or other means, correspondents <bcp14>SHOULD</bcp14> assign it preference over the current certificate.
When a correspondent of the key owner selects subkeys for encryption, the subkeys in the replacement certificate <bcp14>SHOULD</bcp14> therefore be considered first.
If there are no usable subkeys in the replacement certificate, then:</t>

<t><list style="symbols">
  <t>If there is an equivalence binding, the subkeys in the first listed original certificate <bcp14>SHOULD</bcp14> be considered next.
  If none of those are usable, then the subkeys in the next original certificate (if any) <bcp14>SHOULD</bcp14> be considered, and so forth.</t>
  <t>If there is no equivalence binding, the subkeys in the current certificate <bcp14>SHOULD</bcp14> be used.</t>
</list></t>

<t>When encrypting to herself, the key owner is not required to use the same encryption subkey selection algorithm as her correspondents.</t>

</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.
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.
Implementations <bcp14>SHOULD NOT</bcp14> infer any trust value from a single Replacement Key subpacket, and <bcp14>SHOULD</bcp14> validate the replacement certificate as they would any other.</t>

<t>In addition, as this document is an update of <xref target="RFC9580"></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="RFC9580">
  <front>
    <title>OpenPGP</title>
    <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
    <author fullname="D. Huigens" initials="D." surname="Huigens"/>
    <author fullname="J. Winter" initials="J." surname="Winter"/>
    <author fullname="Y. Niibe" initials="Y." surname="Niibe"/>
    <date month="July" 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.</t>
      <t>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.</t>
      <t>This document obsoletes RFCs 4880 ("OpenPGP Message Format"), 5581 ("The Camellia Cipher in OpenPGP"), and 6637 ("Elliptic Curve Cryptography (ECC) in OpenPGP").</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9580"/>
  <seriesInfo name="DOI" value="10.17487/RFC9580"/>
</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>

    <references title='Informative References' anchor="sec-informative-references">




<reference anchor="I-D.ietf-openpgp-persistent-symmetric-keys">
   <front>
      <title>Persistent Symmetric Keys in OpenPGP</title>
      <author fullname="Daniel Huigens" initials="D." surname="Huigens">
         <organization>Proton AG</organization>
      </author>
      <date day="8" month="July" year="2024"/>
      <abstract>
	 <t>   This document defines new algorithms for the OpenPGP standard
   (RFC4880) to support persistent symmetric keys, for message
   encryption using authenticated encryption with additional data (AEAD)
   and for authentication with hash-based message authentication codes
   (HMAC).  This enables the use of symmetric cryptography for data
   storage (and other contexts that do not require asymmetric
   cryptography), for improved performance, smaller keys, and improved
   resistance to quantum computing.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-openpgp-persistent-symmetric-keys-00"/>
   
</reference>




    </references>


<?line 266?>

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

<t>In the following, Alice has a v4 primary keypair and subsequently generates a new v6 primary keypair, then at a later date she revokes her v4 primary key.
Bob is her correspondent who consumes the updated certificate(s).
We do not assume that Alice's secret keys are stored on the same hardware device.</t>

<section anchor="alices-actions"><name>Alice's Actions</name>

<t>On creation of a v6 primary keypair and certificate, Alice's client will:</t>

<t><list style="symbols">
  <t>Add a Direct Key signature to Alice's new (v6) certificate, including an inverse Replacement Key subpacket that references her v4 original.</t>
  <t>If the original (v4) secret key is available, add a new Direct Key signature to its certificate with a forwards Replacement Key subpacket that references the v6 replacement.</t>
  <t>Publish the updated certificate(s) to a keyserver.</t>
  <t>Back up the new secret key material and (if necessary) sync it to any other devices.</t>
</list></t>

<t>On revocation of her v4 primary key, Alice's client will:</t>

<t><list style="symbols">
  <t>Add a forwards Replacement Key subpacket to the Primary Key Revocation signature, referencing the replacement.</t>
  <t>If the replacement secret key is available, add a new Direct Key signature to its certificate with a new (or updated) inverse Replacement Key subpacket that references the original.</t>
  <t>Publish the updated certificate(s) to a keyserver.</t>
</list></t>

<t>On receipt of the new (v6) certificate on a second device, Alice's second client will:</t>

<t><list style="symbols">
  <t>Check to see if the certificate contains an unpaired inverse Replacement Key subpacket that refers to any of the available secret keys.</t>
  <t>If the reference is correct, add a Direct Key signature to the affected certificate with a forwards Replacement Key subpacket.</t>
  <t>Publish the updated certificate to a keyserver.</t>
</list></t>

<t>If Alice has a local encryption subkey that she prefers for encryption to herself, for example a Persistent Symmetric subkey <xref target="I-D.ietf-openpgp-persistent-symmetric-keys"></xref>, her client <bcp14>SHOULD</bcp14> use it regardless of any Replacement Key subpacket(s) in her published certificate.</t>

</section>
<section anchor="bobs-actions"><name>Bob's Actions</name>

<t>If Alice has revoked her original Primary Key:</t>

<t><list style="symbols">
  <t>Bob wants to send Alice a message; Bob has Alice's original (v4) certificate but they have not corresponded for some time.</t>
  <t>Bob's client refreshes Alice's original certificate from a keyserver; it contains a Primary Key Revocation signature with a Replacement Key subpacket.</t>
  <t>Bob's client looks up Alice's replacement (v6) certificate on a keyserver.</t>
  <t>There is a Key Equivalence Binding between the original and replacement certificates, which Bob's client automatically validates.</t>
  <t>Bob's client uses Alice's replacement certificate instead of the original certificate.</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>

<t>If Alice has not revoked her original Primary Key:</t>

<t><list style="symbols">
  <t>Bob wants to send Alice a message and has Alice's original (v4) certificate.</t>
  <t>Either Bob's copy of Alice's original certificate already has a Replacement Key subpacket that references her replacement (v6) fingerprint, or Bob refreshes Alice's original certificate from a keyserver and sees the new Replacement Key subpacket.</t>
  <t>If Bob has a v6 implementation, it can proceed with fetching Alice's v6 replacement certificate, validating it, and using 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 certificate.</t>
</list></t>

<t>WKD does not currently allow more than one valid certificate 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 Schaefer, 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-ietf-openpgp-replacementkey-01-and-02"><name>Changes Between draft-ietf-openpgp-replacementkey-01 and -02</name>

<t><list style="symbols">
  <t>Added explanation of hard vs soft revocations.</t>
  <t>Remove the "No Replacement" bit and use the Reason for Revocation subpacket instead.</t>
  <t>Record length field is now two octets.</t>
  <t>Inverted treatment of undefined flag bits.</t>
  <t>Remove references to the Preferred Key Server subpacket.</t>
  <t>Expanded example workflows section and add reference to draft-ietf-openpgp-persistent-symmetric-keys.</t>
  <t>Various terminology nitpicking.</t>
</list></t>

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

<t><list style="symbols">
  <t>Updated references to RFC9580.</t>
  <t>Removed subpacket version octet.</t>
  <t>Added guidance for encryption subkey selection.</t>
  <t>Added record length fields.</t>
  <t>Renamed to "OpenPGP Key Replacement" and normalised terminology.</t>
</list></t>

</section>
<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-draft-gallagher-openpgp-replacementkey-01-and-02"><name>Changes Between draft-gallagher-openpgp-replacementkey-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-draft-gallagher-openpgp-replacementkey-00-and-01"><name>Changes Between draft-gallagher-openpgp-replacementkey-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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
ArVNHRlYIQrA0EhrtXXHJM5PX5/uGw8tS7lvONJTjsh9oDuirsw22Q/vK2oI
lblTivjeH4DuO6IAJMS4Z5f01PZ9+M59OBZ3gshF/oyf59MIL1DAdu9uDy32
r164Y0mcSR1ujR3ulx1dPn7C7dMpg3ADc4woPtGOOgLx/ZTLoQIvbFgAtmyQ
3YC9iTgFHaZccej6UWxyqc4mufRjkQDUWsrNNTVV0LHacf1Fd4wvQqWZKGAP
5bKe7Gemi4G5MXNK6nddUI6MgStgh2wwmD/zmOOp8g1qNDekNSE+g6+ZW2iD
n2G7KB2iIntAR4NrQ6mAqPUH04pbfJcD22auBcmPPyV/GXD4puQjyKG3aB8F
hLYkUPKzZIVWrlODWw3ILztjw/Yy9l6Rk/0oRPTR9RfH6ZyRdS5vroAyNto6
hSdCe6Q0NBGG0Ojo+tFxhDjSD9d4hweFV+xTImxD8GNBPEmtcLbbVW4PeqId
YBEswHOnuYJO0NnVAa7gQ3lIdFVdowa8Kx5jobHZuEhwG+8v1BP84dxSYTIJ
KAto2JUZWhzykZ1CdYyCUdKbMolIFj08fhMX3AYtrN1iZ7Mvkz8JqOs1VIHQ
sf3488lMXIsF64070fz7eTTmxj9IcKZMpvQmhK994sQBpqtNM1knse7Ax12y
PVkprFnjmVYV2tijKdt6ChjVEhWDukWrQoQEG7iNJw9UibVZQk/vyGh33jyr
PQGHiEfzusLnHxPWWxBmnyoAcWx6CoPN9PuJCsIFmo6NQ0iaEUuSIlELEMz4
Ntw/Iy78/TN+1h9vf1sNuD5kkpj0zgmjFgzvC8a9D4M4orMjdKSc4waK25ME
IdoasIGxpUlw5CuGOEVQ0JEiwGt1cAKxlZipJK4EnuUJpL+y5mv6BOfzvJ0q
+5hmWHQiN5KqLtyzEAwz96LQBR21XgP8Uwe9wxSQCz5dqZ6F4jWcCxw442vE
a1SHvEnTtQXUQebsAFYYc2VR/3u4kgbnXq0Q8e0UD/u6NOdgbiMORcOuo/tm
uv56uLIkATS9WiJUOPY21NgIyYMlk/57JDoseBlSwVESnGQ3W+G9Ftw1iXd4
wUK2KUC5RMl/DEZPAWgSzknLPr4Vbx4psBm1FISGvVbRVqh5fVhXhbGu3oPL
cDjEfJ10+VHuCNkb018ejnBXE0RZmWpv8EnEKD1ylYgdJ1b/DNEjsG8leUji
p1y+c5Q2G7IBB0VJFnhfzM4p1N/nB+7JQNJ8bAiOPyrS7mSjs+Zoew8KK2Df
qyhyrbs9oZp73+k+Hd9AsVCuN9ADlrqKqdvsJIlqly625kwVO3dEOj4HyGTz
fngEHLZZlZ/55tIDUHZvQgrwPRoSQZSjtkcsnOij1G+n05g20rWyc+Rx0Iyl
09BSQORW8bkCVwhi2HB+bPnE8/VOuCgZgGBirziF7KcZnukoVL6k25I4Lcn3
3FmXXSj0lfMjZHkFzjXM87iBkBriwJdSi6fIR4DmM1lqVcCjVSmegwMFWwkP
XzQawkrQghd6DQr3G2PVwlpE4wulr4y4yFYS+XUinskC/8a83W9XQMtvGls3
oHz4XiHSCxXM8H1jbYG5YMq7UTE23JLTXjDBxY0zn2R4QXeY7PzRRINn/sRT
ugLvxGWeXM2kzXRUam3ouh/GLKcEfU8KGPQngBRYXTx2FuEWlz0+ICjx0kcO
DGB2vApBlm1kgd0v19xaFzepoh/2jgAiScM2mvgCSjoCxtyubtW+4WwGTxuf
3OajS1R12nKvhjudd5dP8VLlG0NkXzNKD6C6I6AB2Njf9/GNr9RTdYnVSOJv
Pv11I0vGDTt8W5/kCFSiCzDyPHKK8f63fQIMun64zneYaQQOq9vLcESp643O
rqhH7w8S+b4j8gMk8nvnL6d4cKm3Fk9RnSccNiPEzwKjLBvQbLjTjpfcrfq1
I6p9wjrS4IFwSqcN3mjq+neqNZ61wm9bHB1CzNLfUjl83ykL6i3QiOi7iK9O
c9c4+bNflOD+s8BKJPMitFxF1/j4o2qz5IO+o+csCDifoyhnrxn12JRB4Vh6
NiWddbCH/K547tmgio96tuZQWfApuZ8cbbXvFDCUhmeLmJ5vNlEu+9/DYcL4
Xrt1JDjaJ/u+/sovMfbXNyJtfZbe9eNSc5PXYuPIjHF6pUSlzhdH+RoZaqa4
lIJKJj3GdVe8AmuhYFOlQi2QgefbllcOYQLvbb0BCbdGGacacJVc/CyLpc5/
did8gTA/R0W7n1t94L+na9/oxsiu6nAn+mCKBzSAt6Y6l1BQgAfmn5EJW/4/
jL4p4utYAAA=

-->

</rfc>

