<?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-gallagher-openpgp-replacementkey-02" category="info" 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="June" day="29"/>

    <area>int</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-gallagher-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 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 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 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-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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

-->

</rfc>

