<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.35 (Ruby 2.7.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mpalmer-key-compromise-attestation-00" category="exp" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.3 -->
  <front>
    <title abbrev="Key Compromise Attestation">A Standard Format for Key Compromise Attestation</title>
    <seriesInfo name="Internet-Draft" value="draft-mpalmer-key-compromise-attestation-00"/>
    <author initials="M." surname="Palmer" fullname="Matt Palmer">
      <organization>pwnedkeys.com</organization>
      <address>
        <email>matt@pwnedkeys.com</email>
      </address>
    </author>
    <date year="2023" month="June" day="15"/>
    <area>Security</area>
    <workgroup>Individual Submission</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 36?>

<t>This document describes a profile for a PKCS#10 Certificate Signing Request (CSR)
that attests with reasonable confidence that the key which signed the CSR has
been compromised.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-mpalmer-key-compromise-attestation/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/pwnedkeys/key-compromise-attestation-rfc"/>.</t>
    </note>
  </front>
  <middle>
    <?line 42?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>When a private key becomes compromised through disclosure or intrusion, it can be
difficult to safely and conclusively demonstrate to third parties that the key is, in fact, compromised.
Different parties have different standards of proof, and the tools available to them may
differ.  In many cases, the lowest-common-denominator approach, that of providing the
actual compromised private key, is used, which increases the risk of further disclosure
and the associated hazards.</t>
      <t>This document describes a specific profile for a PKCS#10 <xref target="RFC2986"/> Certificate Signing Request
(CSR) which provides a reliable attestation that a private key has been compromised.  The
use of an existing format allows re-use of existing tools for generating and validating
the CSR, whilst minimising the risk of inadvertent misuse of a CSR generated for another
purpose.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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="purpose-and-goals-of-a-key-compromise-attestation">
      <name>Purpose and Goals of a Key Compromise Attestation</name>
      <t>An attestation of key compromise is a document which verifiably attests that
a private key is no longer private.  This destroys the utility of that key for
cryptographic operations, as the fundamental assumption of the private key -- that it
is private -- no longer holds.</t>
      <t>An attestation of key compromise should be useable by both first parties (the
legitimate "owner" of the private key) as well as third parties (anyone who
happens to come across a compromised private key and wishes to attest that it
has been compromised).  It must be durable and reliable, in that it must not
expire or otherwise become significantly less trustworthy over time.  It must
also not require the real-time possession of the private key itself, to allow
for attestation of compromise even in situations where the access to the key
material has been lost or is not kept permanently online.</t>
      <t>Ideally, a key compromise attestation should be simple to generate and verify
with existing tools, and not require extensive new code or infrastructure to be
useful.</t>
    </section>
    <section anchor="structure-of-a-key-compromise-attestation">
      <name>Structure of a Key Compromise Attestation</name>
      <t>The format of a key compromise attestation is a PKCS#10 <xref target="RFC2986"/> Certificate Signing
Request (CSR), with a specified subject and extension to minimise the chances of it
being mistaken for a legitimate CSR useful for some other purpose.</t>
      <t>The CSR format was chosen because it is already in wide use for ad hoc attestation of
key compromise, and as such has wide existing support for verification and handling.
A very constrained CSR profile is specified to enhance resistance to collision attacks against
the hashes used in signatures.</t>
      <section anchor="csr-subject">
        <name>CSR Subject</name>
        <t>The subject field of a key compromise attestation CSR MUST be a distinguished
name which contains only a CN field, with the value "kca=v1 This Key Is Compromised" (without
the quotes) as a UTF8String.</t>
        <t>Additional fields SHOULD NOT appear in the subject of the CSR, as they may be used to
provide attacker-controlled prefix data.</t>
      </section>
      <section anchor="csr-subject-public-key">
        <name>CSR Subject Public Key</name>
        <t>The subjectPKInfo field of the key compromise attestation CSR MUST be the
SubjectPublicKeyInfo of the key which is attested as having been compromised.</t>
      </section>
      <section anchor="csr-attributes">
        <name>CSR Attributes</name>
        <t>A key compromise attestation CSR MUST contain an Attributes section with a
single attribute, an extensionRequest <xref target="RFC2985"/>.  The extensionRequest, in
turn, MUST contain a single extension, a NoSecurityAfforded <xref target="RFC7169"/>
extension, with a value of TRUE.  Per <xref target="RFC7169"/>, this extension MUST be
marked critical.</t>
      </section>
      <section anchor="csr-signature">
        <name>CSR Signature</name>
        <t>The signature carried by the CSR MUST be made by the key which is attested as having been
compromised.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>As the consequences for erroneously generating, disseminating, or accepting a
key compromise attestation can be significant (the complete loss of utility of
a key or key-using artifact, such as a certificate), it is important that
compromise attestations are securely generated and validated before use.</t>
      <section anchor="generating-key-compromise-attestations">
        <name>Generating Key Compromise Attestations</name>
        <t>An attestation of key compromise is a potent service denial tool in the wrong
hands.  As such, a key compromise attestation should never be generated for a
key which is not (yet) compromised, unless the resulting attestation will be
carefully secured against disclosure.  While the improper disclosure of a
compromise attestation is not as catastrophic as a key compromise, it can
certainly have unwanted consequences.</t>
        <t>Key compromise attestations do not introduce any new security issues for
systems which are capable of signing arbitrary data, although the consequences
of signing the wrong thing are somewhat different.  If a miscreant is capable
of coercing a system into signing a key compromise attestation, this could be
used to deny further use of the key.  However, the potential for mischief if a
miscreant is capable of signing arbitrary data is already significant.</t>
      </section>
      <section anchor="processing-key-compromise-attestations">
        <name>Processing Key Compromise Attestations</name>
        <t>The consequences of incorrectly accepting an invalid attestation of key
compromise can be significant.  As such, it is important that any attestation
should be carefully examined to ensure its validity before it is relied upon.</t>
        <t>The first thing that MUST be checked on any attestation is the signature.
This signature SHOULD be validated against the subjectPublicKeyInfo in the CSR.
If the signature does not validate, then under no circumstances should the
attestation be relied upon for any purpose.</t>
        <t>Given a valid signature, the subjectPKInfo in the CSR MUST be compared against
the subjectPublicKey info of the key(s) which are to be checked for compromise.
This MAY be done via direct comparison, or via comparison of a SHA256 (or
equivalently robust) hash of the keys.  However, it is important to bear in
mind that some key formats, in particular elliptic curve keys <xref target="SEC1"/>, have
multiple valid representations.  The subjectPublicKeyInfo data in both the CSR
and the key(s) in use MUST be normalised to a common format before comparison,
to avoid false negatives.</t>
        <t>The subject of the CSR should be checked to ensure it indicates that the CSR
is a Key Compromise Attestation, and not a regular CSR.  The prefix "kca=v1 "
in the CN field indicates the version of the attestation, while the remainder
of the field is a more human-readable indication that the key is compromised
and should not be used.</t>
        <t>Ensuring the presence of the NoSecurityAfforded extension is of lesser
importance, as its presence is primarily to prevent the accidental use of the
compromise attestation CSR for other purposes.  Any system which validates
attributes in a CSR before use should fail to process the extension (as it MUST
be marked critical), while any system which blindly copies attributes from the
CSR to the eventual certificate will produce a certificate which, once again,
will fail to validate.  Systems which blindly copy attributes from a CSR to a
certificate whilst resetting the critical flag are beyond help.</t>
        <t>Because key compromise attestations do not expire, and do not need to be
"refreshed" on a regular basis, it is possible that over time attestations may
exist whose signatures use hash algorithms which are not considered
particularly strong at the time of comparison.  Processors of key compromise
attestations SHOULD reject a key compromise attestation which uses a signature
algorithm known to be weak to second pre-image attacks, and which also contains
additional subject distinguished name fields and/or attributes and extensions.</t>
        <t>When a valid key compromise attestation is received, all use of the compromised
key should cease as soon as possible.  Further, the compromised key SHOULD be
remembered as compromised, to prevent the inadvertent reuse of that key in the
future.  Whilst storage of a potentially unbounded list of banned keys is
problematic, it is important to bear in mind that a compromised key is
compromised forever.  Debian weak keys <xref target="DWK"/> have been spotted being used in
the wild over a decade after their existence was first revealed, and there is
no reason to believe that other compromised keys may not have similar longevity.</t>
        <t>Systems which receive key compromise attestations from the public must bear in
mind that generating many keys, and hence generating many attestations of
compromise, is a trivial exercise.  If the work required to process a key
compromise attestation (such as examining all in-use accounts or certificates
to see if they use an attested-compromised key) is significantly greater than
the work required to generate a key compromise attestation, it is recommended that
defences against Denial of Service attacks due to "flooding" attestations
be implemented.</t>
        <t>Repeated submission of attestations for the same compromised key should not,
in general, cause problems for a properly-implemented system.  Once a valid
attestation has been received, all use of that key should cease.  Therefore,
if another compromise attestation for the same key is received, it should be
sufficient to verify that the key is already in the "banned keys" list, without
going through the entire attestation handling chain again.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2986">
          <front>
            <title>PKCS #10: Certification Request Syntax Specification Version 1.7</title>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <date month="November" year="2000"/>
            <abstract>
              <t>This memo represents a republication of PKCS #10 v1.7 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process.  The body of this document, except for the security considerations section, is taken directly from the PKCS #9 v2.0 or the PKCS #10 v1.7 document.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2986"/>
          <seriesInfo name="DOI" value="10.17487/RFC2986"/>
        </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>
        <reference anchor="RFC2985">
          <front>
            <title>PKCS #9: Selected Object Classes and Attribute Types Version 2.0</title>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <date month="November" year="2000"/>
            <abstract>
              <t>This memo represents a republication of PKCS #9 v2.0 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process.  The body of this document, except for the security considerations section, is taken directly from that specification.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2985"/>
          <seriesInfo name="DOI" value="10.17487/RFC2985"/>
        </reference>
        <reference anchor="RFC7169">
          <front>
            <title>The NSA (No Secrecy Afforded) Certificate Extension</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="April" year="2014"/>
            <abstract>
              <t>This document defines the NSA (No Secrecy Afforded) certificate extension appropriate for use in certain PKIX (X.509 Pubic Key Certificates) digital certificates.  Historically, clients and servers strived to maintain the privacy of their keys; however, the secrecy of their private keys cannot always be maintained.  In certain circumstances, a client or a server might feel that they will be compelled in the future to share their keys with a third party.  Some clients and servers also have been compelled to share their keys and wish to indicate to relying parties upon certificate renewal that their keys have in fact been shared with a third party.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7169"/>
          <seriesInfo name="DOI" value="10.17487/RFC7169"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="SEC1">
          <front>
            <title>SEC 1: Elliptic Curve Cryptography</title>
            <author>
              <organization>Standards for Efficient Cryptography Group (SECG)</organization>
            </author>
            <date year="2000" month="September"/>
          </front>
        </reference>
        <reference anchor="DWK" target="https://www.debian.org/security/2008/dsa-1571">
          <front>
            <title>DSA-1571-1 openssl -- predictable random number generator</title>
            <author>
              <organization>The Debian Project</organization>
            </author>
            <date year="2008" month="May"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 231?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author acknowledges the contributions of the many, many people who leave
their private keys in public places, providing such a wealth of opportunity for
handling and reporting their compromise to the appropriate parties.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
