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


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

]>


<rfc ipr="trust200902" docName="draft-dkg-openpgp-hardware-secrets-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>OpenPGP Hardware-Backed Secret Keys</title>

    <author initials="D. K." surname="Gillmor" fullname="Daniel Kahn Gillmor">
      <organization abbrev="ACLU">American Civil Liberties Union</organization>
      <address>
        <postal>
          <street>125 Broad St.</street>
          <city>New York, NY</city>
          <code>10004</code>
          <country>USA</country>
        </postal>
        <email>dkg@fifthhorseman.net</email>
      </address>
    </author>

    <date year="2023" month="December" day="28"/>

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

    <abstract>


<t>This document defines a standard wire format for indicating that the secret component of an OpenPGP asymmetric key is stored on a hardware device.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://dkg.gitlab.io/openpgp-hardware-secrets/"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-dkg-openpgp-hardware-secrets/"/>.
      </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/dkg/openpgp-hardware-secrets/"/>.</t>
    </note>


  </front>

  <middle>


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

<t>Some OpenPGP secret key material is held by hardware devices that permit the user to operate the secret key without divulging it explicitly.
For example, the <xref target="OPENPGP-SMARTCARD"/> specification is intended specifically for this use.
It may also possible for OpenPGP implementations to use hardware-backed secrets via standard platform library interfaces like <xref target="TPM"/>.</t>

<t>An OpenPGP Secret Key Packet (see <xref section="5.5.3" sectionFormat="of" target="I-D.ietf-openpgp-crypto-refresh"/>) is typically used as part of a Transferable Secret Key (<xref section="10.2" sectionFormat="of" target="I-D.ietf-openpgp-crypto-refresh"/>) for interoperability between OpenPGP implementations.
An implementation that uses a hardware-backed secret key needs a standardized way to indicate to another implementation specific secret key material has been delegated to some hardware device.</t>

<t>This document defines a simple mechanism for indicating that a secret key has been delegated to a hardware device by allocating a codepoint in the "Secret Key Encryption (S2K Usage Octet)" registry (see <xref section="3.7.2.1" sectionFormat="of" target="I-D.ietf-openpgp-crypto-refresh"/>).</t>

<t>This document makes no attempt to specify how an OpenPGP implementation discovers, enumerates, or operates hardware, other than to recommend that the hardware should be identifiable by the secret key's corresponding public key material.</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>"Secret key" refers to a single cryptographic object, for example the "56 octets of the native secret key" of X448, as described in <xref section="5.5.5.8" sectionFormat="of" target="I-D.ietf-openpgp-crypto-refresh"/>.</t>

<t>"Public key" likewise refers to a single cryptographic object, for example the "56 octets of the native public key" of X448, as above.</t>

<t>"OpenPGP certificate" or just "certificate" refers to an OpenPGP Transferable Public Key (see <xref section="10.1" sectionFormat="of" target="I-D.ietf-openpgp-crypto-refresh"/>).</t>

<t>"Hardware" refers to any cryptographic device or subsystem capable of performing an asymmetric secret key operation using an embedded secret key without divulging the secret to the user.
For discoverability, the hardware is also expected to be able to produce the public key corresponding to the embedded secret key.</t>

<t>While this document talks about "hardware" in the abstract as referring to a cryptographic device embedding to a single secret key, most actual hardware devices will embed and enable the use of multiple secret keys (see <xref target="multiple-key-hardware"/>).</t>

<t>This document uses the term "authorization" to mean any step, such as providing a PIN, password, proof of biometric identity, button-pushing, etc, that the hardware may require for an action.</t>

</section>
</section>
<section anchor="spec"><name>Hardware-backed Secret Key Material</name>

<t>An OpenPGP Secret Key packet (<xref section="5.5.3" sectionFormat="of" target="I-D.ietf-openpgp-crypto-refresh"/>) indicates that the secret key material is stored in cryptographic hardware that is identifiable by public key parameters in the following way.</t>

<t>The S2K usage octet is set to TBD (252?), known in shorthand as <spanx style="verb">HardwareBacked</spanx>.
A producing implementation <bcp14>MUST NOT</bcp14> include any trailing data in the rest of such a Secret Key packet.
A consuming implementation <bcp14>MUST</bcp14> ignore any trailing data in such a Secret Key packet.</t>

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

<t>Hardware-backed secret keys promise several distinct security advantages to the user:</t>

<t><list style="symbols">
  <t>The secret key cannot be extracted from the device, so "kleptography" (the stealing of secret key material) is harder to perform.</t>
  <t>Some hardware can be moved between machines, enabling secret key portability without expanding the kleptographic attack surface.</t>
  <t>Some hardware devices offer auditability controls in the form of rate-limiting, user-visible authorization steps (e.g., button-presses or biometric sensors), or tamper-resistant usage counters.
Malicious use of a secret key on such a device should be harder, or at least more evident.</t>
</list></t>

<t>However, none of these purported advantages are without caveats.</t>

<t>The hardware itself might actually not resist secret key exfiltration as expected.
For example, isolated hardware devices are sometimes easier to attack physically, via temperature or voltage fluctuations (see <xref target="VOLTAGE-GLITCHING"/> and <xref target="SMART-CARD-FAULTS"/>).</t>

<t>In some cases, dedicated cryptographic hardware that generates a secret key internally may have significant flaws (see <xref target="ROCA"/>).</t>

<t>Furthermore, the most sensitive material in the case of decryption is often the cleartext itself, not the secret key material.
If the host computer itself is potentially compromised, then kleptographic exfiltration of the secret key material itself is only a small risk.
For example, the OpenPGP symmetric session key itself could be exfiltrated, permitting access to the cleartext to anyone without access to the secret key material.</t>

<t>Portability brings with it other risks, including the possibility of abuse by the host software on any of the devices to which the hardware is connected.</t>

<t>Rate-limiting, user-visible authorization steps, and any other form of auditability also suffer from risks related to compromised host operating systems.
Few hardware devices are capable of revealing to the user what operations specifically were performed by the device, so even if the user deliberately uses the device to, say, sign an object, the user depends on the host software to feed the correct object to the device's signing capability.</t>

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

<t>Hardware-backed secret keys present specific usability challenges for integration with OpenPGP.</t>

<section anchor="some-hardware-might-be-unavailable-to-some-implementations"><name>Some Hardware Might Be Unavailable To Some Implementations</name>

<t>This specification gives no hints about how to find the hardware device, and presumes that an implementation will be able to probe available hardware to associate it with the corresponding public key material.
In particular, there is no attempt to identify specific hardware or "slots" using identifiers like PCKS #11 URIs (<xref target="RFC7512"/>) or smartcard serial numbers (see <xref target="historical-notes"/>).
This minimalism is deliberate, as it's possible for the same key material to be available on multiple hardware devices, or for a device to be located on one platform with a particular hardware identifier, while on another platform it uses a different hardware identifier.</t>

<t>Not every OpenPGP implementation will be able to talk to every possible hardware device.
If an OpenPGP implementation encounters a hardware-backed secret key as indicated with this mechanism, but cannot identify any attached hardware that lists the corresponding secret key material, it should warn the user that the specific key claims to be hardware-backed but the corresponding hardware cannot be found.
It may also want to inform the user what categories of hardware devices it is capable of probing, for debugging purposes.</t>

</section>
<section anchor="multiple-key-hardware"><name>Hardware Should Support Multiple Secret Keys</name>

<t>Most reasonable OpenPGP configurations require the use of multiple secret keys by a single operator.
For example, the user may use one secret key for signing, and another secret key for decryption, and the corresponding public keys of both are contained in the same OpenPGP certificate.</t>

<t>Reasonable hardware <bcp14>SHOULD</bcp14> support embedding and identifying more than one secret key, so that a typical OpenPGP user can rely on a single device for hardware backing.</t>

</section>
<section anchor="authorization-challenges"><name>Authorization Challenges</name>

<t>Cryptographic hardware can be difficult to use if frequent authorization is required, particularly in circumstances like reading messages in a busy e-mail inbox.
This hardware <bcp14>MAY</bcp14> require authorization for each use of the secret key material as a security measure, but considerations should be made for caching authorization</t>

<t>If the cryptographic hardware requires authorization for listing the corresponding public key material, it becomes even more difficult to use the device in regular operation.
Hardware <bcp14>SHOULD NOT</bcp14> require authorization for the action of producing the corresponding public key.</t>

<t>If a user has two attached pieces of hardware that both hold the same secret key, and one requires authorization while the other does not, it is reasonable for an implementation to try the one that doesn't require authorization first.
Some cryptographic hardware is designed to lock the device on repeated authorization failures (e.g. 9 bad PIN entries locks the device), so this approach reduces the risk of accidental lockout.</t>

</section>
<section anchor="latency-and-error-handling"><name>Latency and Error Handling</name>

<t>While hardware-backed secret key operations can be significantly slower than modern computers, and physical affordances like button-presses or NFC tapping can themselves incur delay, an implementation using a hardware-backed secret key should remain responsive to the user.
It should indicate when some interaction with the hardware may be required, and it should use a sensible timeout if the hardware device appears to be unresponsive.</t>

<t>A reasonable implementation should surface actionable errors or warnings from the hardware to the user where possible.</t>

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

<t>This document asks IANA to make two changes in the "OpenPGP" protocol group.</t>

<t>Add the following row in the "OpenPGP Secret Key Encrpytion (S2K Usage Octet)" registry:</t>

<texttable title="Row to add to OpenPGP Secret Key Encrpytion (S2K Usage Octet) registry">
      <ttcol align='left'>S2K usage octet</ttcol>
      <ttcol align='left'>Shorthand</ttcol>
      <ttcol align='left'>Encryption parameter fields</ttcol>
      <ttcol align='left'>Encryption</ttcol>
      <ttcol align='left'>Generate?</ttcol>
      <c>TBD (252?)</c>
      <c>HardwareBacked</c>
      <c>none</c>
      <c>no data, see <xref target="spec"/> of RFC XXX (this document)</c>
      <c>Yes</c>
</texttable>

<t>Modify this row of the "OpenPGP Symmetric Key Algorithms" registry:</t>

<texttable title="Row to modify in OpenPGP Symmetric Key Algorithms registry">
      <ttcol align='right'>ID</ttcol>
      <ttcol align='left'>Algorithm</ttcol>
      <c>253, 254, and 255</c>
      <c>Reserved to avoid collision with Secret Key Encryption</c>
</texttable>

<t>to include TBD (252?) in this reserved codepoint sequence, resulting in the following entry:</t>

<texttable title="Modified row in OpenPGP Symmetric Key Algorithms registry">
      <ttcol align='right'>ID</ttcol>
      <ttcol align='left'>Algorithm</ttcol>
      <c>TBD (252?), 253, 254, and 255</c>
      <c>Reserved to avoid collision with Secret Key Encryption</c>
</texttable>

</section>


  </middle>

  <back>


    <references title='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='17' month='October' year='2023'/>
      <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-12'/>
   
</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'>

<reference anchor="OPENPGP-SMARTCARD" target="https://www.gnupg.org/ftp/specs/OpenPGP-smart-card-application-3.4.pdf">
  <front>
    <title>Functional Specification of the OpenPGP application on ISO Smart Card Operating Systems, Version 3.4</title>
    <author initials="A." surname="Pietig" fullname="Achim Pietig">
      <organization></organization>
    </author>
    <date year="2020" month="March" day="18"/>
  </front>
</reference>
<reference anchor="GNUPG-SECRET-STUB" target="https://dev.gnupg.org/source/gnupg/browse/master/doc/DETAILS;gnupg-2.4.3$1511">
  <front>
    <title>GNU Extensions to the S2K algorithm</title>
    <author initials="W." surname="Koch" fullname="Werner Koch">
      <organization>g10 Code</organization>
    </author>
    <date year="2023" month="July" day="04"/>
  </front>
</reference>
<reference anchor="TPM" target="https://trustedcomputinggroup.org/resource/tpm-library-specification/">
  <front>
    <title>Trusted Platform Module Library Specification, Family “2.0”, Level 00, Revision 01.59</title>
    <author >
      <organization>Trusted Computing Group</organization>
    </author>
    <date year="2019" month="November"/>
  </front>
</reference>
<reference anchor="SMART-CARD-FAULTS" target="http://hdl.handle.net/2117/99293">
  <front>
    <title>Smart Card Fault Injections with High Temperatures</title>
    <author initials="P. M. C." surname="Massolino" fullname="Pedro Maat C. Massolino">
      <organization></organization>
    </author>
    <author initials="B." surname="Ege" fullname="Baris Ege">
      <organization></organization>
    </author>
    <author initials="L." surname="Batina" fullname="Lejla Batina">
      <organization></organization>
    </author>
    <date year="2016" month="November" day="15"/>
  </front>
</reference>


<reference anchor='VOLTAGE-GLITCHING'>
  <front>
    <title>The Forgotten Threat of Voltage Glitching: A Case Study on Nvidia Tegra X2 SoCs</title>
    <author fullname='Otto Bittner' initials='O.' surname='Bittner'>
      <organization/>
    </author>
    <author fullname='Thilo Krachenfels' initials='T.' surname='Krachenfels'>
      <organization/>
    </author>
    <author fullname='Andreas Galauner' initials='A.' surname='Galauner'>
      <organization/>
    </author>
    <author fullname='Jean-Pierre Seifert' initials='J.' surname='Seifert'>
      <organization/>
    </author>
    <date year='2021'/>
  </front>
  <seriesInfo name='arXiv' value='article'/>
  <seriesInfo name='DOI' value='10.48550/ARXIV.2108.06131'/>
</reference>

<reference anchor='ROCA'>
  <front>
    <title>The Return of Coppersmith's Attack: Practical Factorization of Widely Used RSA Moduli</title>
    <author fullname='Matus Nemec' initials='M.' surname='Nemec'>
      <organization>Masaryk University, Ca' Foscari University of Venice, Brno, Czech Rep</organization>
    </author>
    <author fullname='Marek Sys' initials='M.' surname='Sys'>
      <organization>Masaryk University, Brno, Czech Rep</organization>
    </author>
    <author fullname='Petr Svenda' initials='P.' surname='Svenda'>
      <organization>Masaryk University, Brno, Czech Rep</organization>
    </author>
    <author fullname='Dusan Klinec' initials='D.' surname='Klinec'>
      <organization>EnigmaBridge, Masaryk University, Brno, Czech Rep</organization>
    </author>
    <author fullname='Vashek Matyas' initials='V.' surname='Matyas'>
      <organization>Masaryk University, Brno, Czech Rep</organization>
    </author>
    <date month='October' year='2017'/>
  </front>
  <seriesInfo name='Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications' value='Security'/>
  <seriesInfo name='DOI' value='10.1145/3133956.3133969'/>
</reference>

<reference anchor='RFC7512'>
  <front>
    <title>The PKCS #11 URI Scheme</title>
    <author fullname='J. Pechanec' initials='J.' surname='Pechanec'/>
    <author fullname='D. Moffat' initials='D.' surname='Moffat'/>
    <date month='April' year='2015'/>
    <abstract>
      <t>This memo specifies a PKCS #11 Uniform Resource Identifier (URI) Scheme for identifying PKCS #11 objects stored in PKCS #11 tokens and also for identifying PKCS #11 tokens, slots, or libraries. The URI scheme is based on how PKCS #11 objects, tokens, slots, and libraries are identified in "PKCS #11 v2.20: Cryptographic Token Interface Standard".</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='7512'/>
  <seriesInfo name='DOI' value='10.17487/RFC7512'/>
</reference>




    </references>


<section anchor="historical-notes"><name>Historical notes</name>

<t>Some OpenPGP implementations make use of private codepoint ranges in the OpenPGP specification within an OpenPGP Transferable Secret Key to indicate that the secret key can be found on a smartcard.</t>

<t>For example, GnuPG uses the private/experimental codepoint 101 in the S2K Specifier registry, along with an embedded trailer with an additional codepoint, plus the serial number of the smartcard (see <xref target="GNUPG-SECRET-STUB"/>).</t>

<t>However, recent versions of that implementation ignore the embedded serial number in favor of scanning available devices for a match of the key material, since some people have multiple cards with the same secret key.</t>

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

<t>This work depends on a history of significant work with hardware-backed OpenPGP secret key material, including useful implementations and guidance from many people, including:</t>

<t><list style="symbols">
  <t>NIIBE Yutaka</t>
  <t>Achim Pietig</t>
  <t>Werner Koch</t>
  <t>Heiko Schäfer</t>
</list></t>

<t>The people acknowledeged in this section are not respsonsible for any proposals, errors, or omissions in this document.</t>

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

</section>


  </back>

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

-->

</rfc>

