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


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

]>


<rfc ipr="trust200902" docName="draft-hko-openpgp-identifiers-for-legacy-devices-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="OpenPGP identifiers for legacy devices">Shortened OpenPGP identifiers for legacy hardware devices</title>

    <author initials="H." surname="Schäfer" fullname="Heiko Schäfer">
      <organization></organization>
      <address>
        <email>heiko.schaefer@posteo.de</email>
      </address>
    </author>

    <date year="2026" month="July" day="28"/>

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

    <abstract>


<t>This document describes an approach for storing a shortened fingerprint-based lookup hint for OpenPGP private key material on hardware security devices.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-hko-openpgp-identifiers-for-legacy-devices/"/>.
      </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/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://codeberg.org/heiko/openpgp-identifiers-for-legacy-devices"/>.</t>
    </note>


  </front>

  <middle>


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

<t>Private key material for OpenPGP component keys may be stored on hardware security devices (also see <xref target="I-D.dkg-openpgp-external-secrets"></xref>).
Some such devices offer informational data fields for key lookup based on OpenPGP fingerprints.</t>

<t>This document outlines an approach for how to use such fields on hardware devices, when the field size is too constrained for the length of modern fingerprints.</t>

<t>For example, the "OpenPGP card" specification defines a 20 octet "fingerprint" field for each secret key packet stored on the card (see page 23 in <xref target="OPENPGP-SMARTCARD"/>, under the tag "C5").
These fields were sized for OpenPGP version 4 fingerprints (based on SHA-1 hashes).
However, modern OpenPGP version 6 component keys (as specified in <xref section="5.5.4.3" sectionFormat="of" target="RFC9580"/>) use 32 octet (SHA-256) fingerprints, which cannot be directly stored in a 20 octet field.</t>

<t>This document describes an approach for using size-constrained lookup fields to refer to OpenPGP component keys with longer fingerprint sizes.</t>

<section anchor="requirements-language"><name>Requirements Language</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>

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

<t><list style="symbols">
  <t>"Transferable Secret Key" or just "TSK" refers to an OpenPGP Transferable Secret Key (see <xref section="10.2" sectionFormat="of" target="RFC9580"/>).</t>
  <t>"Component key" refers to a single key object found within an OpenPGP certificate.
A certificate's primary key is a "component key", and any subkey in the certificate is also a "component key".</t>
  <t>"Keyholder" is the party that has legitimate access to the secret key material corresponding to the component keys in a certificate.
The keyholder can sign messages that can be verified with the certificate, decrypt messages that were encrypted to the certificate, and update the certificate itself over time.</t>
</list></t>

</section>
<section anchor="goals"><name>Goals</name>

<t>This draft describes a scheme for using the widely available OpenPGP card devices for OpenPGP version 6 (or later) keys.
The scheme may be applied analogously for other types of hardware security device that have comparable constraints.</t>

</section>
</section>
<section anchor="encoding-a-key-lookup-hint-on-the-device"><name>Encoding a key lookup hint on the device</name>

<t>To store a fingerprint-based lookup key on a hardware device when the target field is shorter than the fingerprint, instead of the full fingerprint, applications should store the concatenation of:</t>

<t><list style="symbols">
  <t>A marker that specifies the key packet's version.</t>
  <t>The leftmost octets of the full fingerprint.</t>
</list></t>

<section anchor="encoding-version-6-or-later-fingerprints-on-openpgp-card-devices"><name>Encoding version 6 (or later) fingerprints on OpenPGP card devices</name>

<t>OpenPGP card devices that implement <xref target="OPENPGP-SMARTCARD"/> version 3.4.1 (or earlier) offer a 20 octet lookup field for each key that is stored on the hardware device. Note that this field an OpenPGP smart cards is named "fingerprint", for historical reasons.</t>

<t>With OpenPGP version 4 keys, the size of the fields on the device matches the length of the OpenPGP fingerprint.
However, OpenPGP version 6 keys use 32 octet fingerprints, so it is not possible to store these fingerprints on the card in full.</t>

<t>When importing a version 6 (or later) OpenPGP key onto an OpenPGP card device, applications should instead store 20 octets of lookup hint, concatenating the following two parts:</t>

<t><list style="symbols">
  <t>12 octets of version marker, consisting of 12 copies of the version octet. For a version v6 key, each octet contains the value <spanx style="verb">0x06</spanx>.</t>
  <t>The leftmost 8 octets of the full fingerprint.</t>
</list></t>

</section>
<section anchor="example"><name>Example</name>

<t>The full version 6 fingerprint of the primary key of the Transferable Secret Key in <xref section="A.4" sectionFormat="of" target="RFC9580"/> is <spanx style="verb">cb186c4f0609a697e4d52dfa6c722b0c1f1e27c18a56708f6525ec27bad9acc9</spanx>.</t>

<t>When uploading this component key to an OpenPGP card device, the lookup hint on the card should be set to <spanx style="verb">060606060606060606060606cb186c4f0609a697</spanx>.</t>

</section>
</section>
<section anchor="some-version-4-fingerprints-become-unusable-on-constrained-card-devices"><name>Some version 4 fingerprints become unusable on constrained card devices</name>

<t>Because the scheme outlined here limits itself to using a pre-existing data field (which can legitimately contain any possible value), and uses this field to encode additional information, the scheme necessarily involves a tradeoff.</t>

<t>Concretely, the chosen tradeoff is:</t>

<t>Version 4 key packets with a fingerprint that starts with 12 octets of the same value (e.g. 12 octets of <spanx style="verb">0x06</spanx>) become unusable when following the guidance in this text, because they are interpreted as key packets with a different version.</t>

<t>That is, to allow explicit encoding of key version other than 4, a (small) portion of the fingerprint namespace gets effectively blocked off.</t>

<t>This text considers the blocked part of the namespace sufficiently small that it is disregarded in the remainder of the document.
Concretely, the fraction of the v4 fingerprint namespace that becomes unusable with this scheme is <spanx style="verb">1 : 2^88</spanx> (any value in which the first 12 octets all have the same content).</t>

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

<section anchor="shorter-identifiers-have-a-higher-risk-of-collisions"><name>Shorter identifiers have a higher risk of collisions</name>

<t>This text proposes use of (effectively) an 8 octet identifier to recognize a key on an OpenPGP card, instead of previously a 20 octet identifier.</t>

<t>This raises the question if there are any risks associated with that shortened identifier.</t>

<t>There are at least two classes of conceivable risks:</t>

<t><list style="numbers">
  <t>Accidental occurrence of a duplicate identifier in a user's context.</t>
  <t>Attackers who intentionally cause a duplicate identifier to be present in a user's context.</t>
</list></t>

<t>It is important to keep in mind that the lookup hints stored on an OpenPGP card device only exist within the user's own local computing environment. They are only visible locally, for example when the user plugs in a USB device that implements the OpenPGP card application.
These lookup hints are never visible in more global namespaces.</t>

</section>
<section anchor="accidental-occurrence-of-duplicate-lookup-hints-on-cards"><name>Accidental occurrence of duplicate lookup hints on cards</name>

<t>It is exceedingly unlikely that the 8 octet prefix of an OpenPGP fingerprint has an accidental collision with a second card-backed component key, within any user's local environment.</t>

</section>
<section anchor="attackers-causing-occurrence-of-duplicate-lookup-hints-on-cards"><name>Attackers causing occurrence of duplicate lookup hints on cards</name>

<t>First, it is unclear under which circumstances an attacker benefits from causing a target keyholder to use a different private key than the one they intend to use. While there might be attacks that are important to consider, underhandedly replacing a user's private keys is not a typical attack scenario.</t>

<t>Given that, this scheme does not add much new attack surface for an attacker who underhandedly replaces a user's OpenPGP card:</t>

<t>When using an "honest" OpenPGP card device in an attack, it remains non-trivial for an attacker to generate a malicious key pair that shares the 64 bit prefix with the user's key, even if the user relies solely on that identifier to ensure that they are using the correct private key material (however, the user's application is not constrained to checking only the lookup hint field on the card. It can easily also check that the full public key parameters, as reported by the card, correspond to the expected component key).</t>

<t>However, self-reported information from a hardware device cannot be relied on, if the device itself is malicious.
A custom "fake" hardware device could report fingerprints and public key material that do not legitimately correspond to the private key material that the card uses.</t>

<t>This draft does not attempt to mitigate the risks associated with adversarial devices.</t>

</section>
</section>
<section anchor="usability-considerations"><name>Usability Considerations</name>

<section anchor="finding-a-hardware-device-that-matches-a-given-openpgp-public-key-packet"><name>Finding a hardware device that matches a given OpenPGP public key packet</name>

<t>When using the method outlined in this text, applications can determine if an OpenPGP card contains the expected key material, as follows:</t>

<t><list style="numbers">
  <t>Given an OpenPGP key packet, the application determines that component key's full fingerprint.</t>
  <t>If the fingerprint length exceeds 20 octets, the application considers only the leftmost 8 octets of the full fingerprint.</t>
  <t>The application then checks that
a) The first 12 octets of the lookup hint on the card each correspond to the key packet version.
b) The following 8 octets of the lookup hint on the card correspond to the leftmost 8 octets of the fingerprint.</t>
  <t>If the key slot on the card matches this convention, the application assumes that it contains the expected key material.</t>
</list></t>

</section>
<section anchor="finding-the-openpgp-certificate-that-corresponds-to-a-shortened-openpgp-card-lookup-hint"><name>Finding the OpenPGP certificate that corresponds to a shortened OpenPGP card lookup hint</name>

<t>With the scheme outlined in this text, given a key slot on an OpenPGP card device, some additional work may be needed to find the associated OpenPGP certificate:
Because the lookup hint field on the device only contains the first 8 octets of the full fingerprint, not all certificate lookup methods are directly applicable.</t>

<section anchor="lookup-in-a-key-store-that-allows-searches-by-fingerprint-prefix"><name>Lookup in a key store that allows searches by fingerprint prefix</name>

<t>If an application has access to a set of certificates, locally, it can search them by (8 octet) fingerprint prefix.
Depending on the application, it may be sufficient and acceptable to perform such a local key search.</t>

<t>However, applications should consider if collisions of the 8 octet fingerprint prefix are a concern in the expected threat model of their users.</t>

</section>
<section anchor="determining-the-full-openpgp-fingerprint-without-relying-on-external-data"><name>Determining the full OpenPGP fingerprint without relying on external data</name>

<t>In other contexts, it may be necessary to determine the full OpenPGP fingerprint of the key packet on an OpenPGP card device, without relying on any data that is external to the OpenPGP card device.</t>

<t>For example, given an OpenPGP card device, without any additional context, it is not possible to perform a keyserver lookup based on the lookup hint field alone: Privacy-preserving public key servers do not allow lookup of version 6 keys by 8 octet fingerprint prefix. To perform a lookup on such a keyserver, the full 32 octet fingerprint is needed.</t>

<t>To obtain the full fingerprint of a non-v4 key that is stored on an OpenPGP card device, applications can use the following method:</t>

<t><list style="numbers">
  <t>For each key stored on an OpenPGP card device, applications obtain the following information from the device:
  <list style="symbols">
      <t>The basic algorithm setting (e.g. RSA, ECDH).</t>
      <t>The key version (e.g. <spanx style="verb">0x06</spanx>), if the first 12 octets of the lookup hint have a uniform value.</t>
      <t>8 octets of prefix of the OpenPGP fingerprint.</t>
      <t>The (4 octet) key creation timestamp.</t>
      <t>The public key parameters of the key.</t>
    </list></t>
  <t>From this information, the application can construct a set of candidate OpenPGP public key packets, by iterating over all key packet properties that are unspecified on the card (for example, the set of plausible KDF parameters for ECDH key packets).</t>
  <t>The key packet version may be assumed to be <spanx style="verb">0x04</spanx>, if the first 12 octets of the lookup hint on an OpenPGP card device don't all contain the same value. If each of first 12 octets of the lookup hint <em>does</em> contain the same value, this value is taken as the key packet's version number.</t>
  <t>The full OpenPGP fingerprint is calculated for each of these candidate public key packets.</t>
  <t>For key packets with a version greater than 4, if the fingerprint of a candidate public key packet matches the 8 octet fingerprint prefix in the lookup hint, then the application may assume that this candidate public key packet corresponds to the key slot in question.</t>
  <t>The full OpenPGP fingerprint for that public key packet can now be used for any purpose (e.g. for certificate lookup on a privacy-preserving key server).</t>
</list></t>

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

<t>This document does not require any action from IANA.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>



<reference anchor='RFC9580' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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'>




<reference anchor='I-D.dkg-openpgp-external-secrets' target='https://datatracker.ietf.org/doc/html/draft-dkg-openpgp-external-secrets-03'>
   <front>
      <title>OpenPGP External Secret Keys</title>
      <author fullname='Daniel Kahn Gillmor' initials='D. K.' surname='Gillmor'>
         <organization>American Civil Liberties Union</organization>
      </author>
      <author fullname='Heiko Schaefer' initials='H.' surname='Schaefer'>
         </author>
      <date day='22' month='July' year='2026'/>
      <abstract>
	 <t>   This document defines a standard wire format for indicating that the
   secret component of an OpenPGP asymmetric key is stored externally,
   for example on a hardware device or other comparable subsystem.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-dkg-openpgp-external-secrets-03'/>
   
</reference>


<reference anchor="OPENPGP-SMARTCARD" target="https://gnupg.org/ftp/specs/OpenPGP-smart-card-application-3.4.1.pdf">
  <front>
    <title>Functional Specification of the OpenPGP application on ISO Smart Card Operating Systems, Version 3.4.1</title>
    <author initials="A." surname="Pietig" fullname="Achim Pietig">
      <organization></organization>
    </author>
    <date year="2020" month="March" day="18"/>
  </front>
</reference>


    </references>


<section anchor="design-choices"><name>Design Choices</name>

<t>An alternative design could encode the first octets of the full fingerprint on the card, matching the length of the field on the constrained device, without an explicit version marker.
With this approach, applications would for example store the first 20 octets of a version 6 fingerprint on an OpenPGP card device.</t>

<t>This approach would also be practically viable. However, it would be in more tension with the guidance in (<xref section="14.1" sectionFormat="of" target="RFC9580"/>).</t>

</section>
<section numbered="false" anchor="acknowledgements"><name>Acknowledgements</name>

<t>The following people have contributed in various ways to this draft,
offering reviews, suggestions, corrections, and implementation notes:</t>

<t><list style="symbols">
  <t>Andrew Gallagher</t>
  <t>Daniel Huigens</t>
  <t>Daniel Kahn Gillmor</t>
</list></t>

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

</section>


  </back>

<!-- ##markdown-source:
H4sIAC7uaGoAA5Va23IbOZJ9r6/A0g8tdZC0JEuyzNjdGLXkW7Rva6mnY6Kj
tw1WgSRGxUJNoYo0t8P/sg/7JTs/NicTQBWKF7d7diZWLgKZibyeTGA0GiW1
rnM1EXcLU9WqUJl4X6riw8sPQmeqqPVMq8qKmalEruYy3YiFrLK1rJTI1Eqn
yiZyOq3UavJH+8LyzKSFXIJjVslZPVo8mJHBznJejqKdI+wcuZ0jv3N0cpKk
slZzU20mQhczkyS6rCairhpbn52cPDs5Sx5BMjkRVqXJ2lQP88o05UR4BsmD
2uBrNhGvi1pVhapHtyREYpvpUlurTXG/KSHa6+f3L5LE1rLIfpO5KfBpA9FL
PRG/1CYdCgtlVWpm8ddmSX/8mjxUcpmZdfGbKWsQspNEiELZWmW/mfy3GnTt
RJwOhRwKnSSyqaFwrBlhGRayRl4p/WDEXbr45//NVMU/qKXU+UQs6JexTRdS
4Ze/lAZ0zThTyUoVjSJW/qQDb4UBPtV8lsHP0IMu5uIlraDvjuTAK+UvWtWz
sanm9JOs0gV+WtR1aSePH9NK+qRXahyWPaYPj6eVWVv12NN4THsrVZpob2oy
NVXVnPew/I+/zc6DhGxbLWUNtnS016PbcfYwb91EfSbjyXwEK1eqZk2///D8
HY49unt7/fH+5vrj7YTVV8tqrmrozws1L5rSSTSry8e2VKl97DU2sktZ1aMU
7j2SZZlr+BrsOHoyPh+fjsts5gi6aHnRFCn9KnNxByI4i1stzEzUC9XGQkRI
4L+v796LO2IjbsCGVlX4Dba528CgS7jTX6ETWsxcmWMGl5+Is5Ozk9HJk9Hp
FX9s3Yf+41yoc6NrGGwpPsBgep4ko9FIyKmtK5nWSXK/0FYgBJslTICYtGml
p8oKWZCslZHpgoPW1qYiwaSwbWKY4YOqSnyvR1Np8SU35qEpxQJfeFc4Ntas
ILZAvMHbYC0NReFUbe6A5ZpK121WGDs5lzrLcpUkjyhAK5M1rOQk+bCPXsww
NcsSYQoxsMRizUZMFR8CUn6NsTiSuTX4rMQvf+Rnvx6PkzuzBJEGWgoEzAwR
KVqXZZ+AzSTUpfLMpUCS2+vKKQ4iBdEjrZIa+gYyTZ3rYo99FmYtaiMa66Xx
zOKjegGHYr1QBXslLxJW/48SYFIbA70V5BmazQuytCpXxbxekCcvEcJVsS3h
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

-->

</rfc>

