<?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.11 (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-01" 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="May" day="23"/>

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

    <abstract>


<?line 46?>

<t>This document specifies a method in OpenPGP to suggest a replacement for an expired, revoked, or deprecated 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 50?>

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

<t>The OpenPGP message format <xref target="crypto-refresh"></xref> defines two ways to invalidate a key.
One way is that the key may be explicitly revoked via a revocation signature.
OpenPGP also supports the concept of key expiration, a date after which the key should not be used.
When a 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 key that is intended to deprecate and replace their existing 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 key, but if this is not possible for technical reasons they may continue to use the deprecated key, which remains valid even if it is not preferred.</t>

<t>In the past some key owners have created key transition documents, which are signed, human-readable statements stating that a newer 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 key.
This subpacket contains a pointer to a suggested replacement for the key that is signed over.
This 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>
<section anchor="replacement-key-subpacket"><name>The Replacement Key Subpacket</name>

<t>The replacement key subpacket is a Signature Subpacket as defined in <xref target="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="crypto-refresh"></xref>, section 5.2.3.26) <bcp14>MAY</bcp14> be included in the revocation or self-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 for the current key.
The "no replacement" bit <bcp14>SHOULD</bcp14> be used instead (see below).</t>

<t>The replacement key subpacket is only meaningful in a key revocation or self-signature.
It <bcp14>SHOULD NOT</bcp14> be present in any other sort of 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 1 octet of subpacket version and 1 octet of class, followed by an optional 1 octet of key version and N octets of fingerprint.</t>

<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.
Note that if the critical bit for the replacement key subpacket is set, this <bcp14>MAY</bcp14> also mean considering the whole signature to be in error (<xref target="crypto-refresh"></xref>, section 5.2.3.7).</t>

<t>The 0x80 bit of the class octet is the "no replacement" bit.
When set, this explicitly specifies there is no replacement for the current key.
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 also contains 1 octet for the key version of the replacement key and N octets for the fingerprint of the replacement key.
If present, the length of the fingerprint field <bcp14>MUST</bcp14> equal the fingerprint length corresponding to the key version field, e.g.
20 octets for version 4, or 32 octets for version 6.</t>

<t>If the intent is to state that the replacement key is unknown, then no replacement key subpacket should be included in the revocation signature.</t>

<t>If multiple replacement key subpackets are present, implementations <bcp14>MAY</bcp14> use any method desired to resolve which key (or keys) are the chosen replacement.</t>

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

<t>The existence of a Replacement Key subpacket <bcp14>MUST NOT</bcp14> be considered in any trust calculation over either the current or replacement key.
Receiving implementations <bcp14>SHOULD</bcp14> validate the replacement key as they would any other key.
If the replacement key is supported, and validates successfully, it <bcp14>SHOULD</bcp14> be preferred over the current key when determining which key to use for correspondence.</t>

<t>Since a Replacement Key subpacket only contains a fingerprint and not a full key, the signature made over it forms a weaker binding than a Certification Signature.
A key owner <bcp14>SHOULD</bcp14> therefore also make a Certification Signature over the replacement key using their existing key.
It is also suggested that the key owner asks the third parties who certified their current 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 anchor="replacement-key-subpacket-placement"><name>Placement of the Replacement Key Subpacket</name>

<t>While nothing prevents using the replacement key subpacket on a subkey revocation or self-signature, it is mainly useful on a primary key revocation or self-signature as a replacement subkey can be directly added by the keyholder with no need for the indirection provided by this subpacket.
The replacement key subpacket <bcp14>SHOULD</bcp14> be placed in the hashed section of the signature to prevent a possible key substitution attack.
If the replacement key subpacket was allowed in the unhashed section of the signature, an attacker could add a bogus replacement key subpacket to an existing revocation or self-signature.</t>

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

<t>The replacement key subpacket provides non-sensitive information only.
Nevertheless, as noted above, implementations <bcp14>SHOULD NOT</bcp14> trust a replacement key subpacket that is located in the unhashed area of the signature packet, and <bcp14>SHOULD</bcp14> validate the replacement key as they would any other key.
In addition, as this document is an update of <xref target="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="crypto-refresh" target="https://datatracker.ietf.org/doc/html/draft-ietf-openpgp-crypto-refresh-13">
  <front>
    <title>OpenPGP</title>
    <author initials="P." surname="Wouters" fullname="Paul Wouters">
      <organization></organization>
    </author>
    <author initials="D." surname="Huigens" fullname="Daniel Huigens">
      <organization></organization>
    </author>
    <author initials="J." surname="Winter" fullname="Justus Winter">
      <organization></organization>
    </author>
    <author initials="N." surname="Yutaka" fullname="Niibe Yutaka">
      <organization></organization>
    </author>
    <date year="2023" month="October"/>
  </front>
</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 158?>

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

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

<t><list style="symbols">
  <t>Bob wants to send Alice a message, but they have not corresponded for some time.</t>
  <t>Bob's client refreshes Alice’s 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 new key from a keyserver (by fingerprint); it is certified by the same people that certified her old key (some of whom Bob may trust) and/or Alice’s old key itself (which Bob's policy may consider sufficient).</t>
  <t>Bob's client uses Alice’s new key instead of the old 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 old key.</t>

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

<t><list style="symbols">
  <t>Bob wants to send Alice a message and has Alice's v4 key.</t>
  <t>Either Bob's copy of Alice's key already has the replacement key subpacket pointing to a v6 key, or Bob refreshes Alice's 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 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 key.</t>
</list></t>

<t>WKD does not currently allow more than one valid key 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 Daniel Kahn Gillmor, Simon Josefsson, Heiko Schäfer, Falko Strenzke 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-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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
qZcPRTrYsRcmjvw/HdJg4J0qAAA=

-->

</rfc>

