<?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.7.17 (Ruby 3.3.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lamps-bonnell-keyusage-crl-validation-01" category="std" consensus="true" submissionType="IETF" updates="5280" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="CRL validation clarification">Clarification to processing Key Usage values during CRL validation</title>
    <seriesInfo name="Internet-Draft" value="draft-lamps-bonnell-keyusage-crl-validation-01"/>
    <author fullname="Corey Bonnell">
      <organization>DigiCert, Inc.</organization>
      <address>
        <email>corey.bonnell@digicert.com</email>
      </address>
    </author>
    <author fullname="伊藤 忠彦" asciiFullname="Tadahiko Ito">
      <organization>SECOM CO., LTD.</organization>
      <address>
        <email>tadahiko.ito.public@gmail.com</email>
      </address>
    </author>
    <author fullname="大久保 智史" asciiFullname="Tomofumi Okubo">
      <organization>DigiCert, Inc.</organization>
      <address>
        <email>tomofumi.okubo+ietf@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="July" day="02"/>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 50?>

<t>RFC 5280 defines the profile of X.509 certificates and certificate
revocation lists (CRLs) for use in the Internet. This profile requires
that certificates which certify keys for signing CRLs contain the key
usage extension with the <tt>cRLSign</tt> bit asserted. Additionally, RFC 5280
defines steps for the validation of CRLs. While there is a requirement
for CRL validators to verify that the <tt>cRLSign</tt> bit is asserted in the
<tt>keyUsage</tt> extension of the CRL issuer's certificate, there is no
requirement for validators to verify the presence of the <tt>keyUsage</tt>
extension itself. The lack of this requirement will cause
verifiers that implement the RFC 5280 CRL validation algorithm to accept
a CRL which is signed by a certificate with no <tt>keyUsage</tt> extension, and
therefore does not explicitly have the <tt>cRLSign</tt> bit asserted.</t>
      <t>This document specifies an enhancement to the CRL validation process
to explicitly require the presence of the <tt>keyUsage</tt> extension in CRL
issuer certificates to resolve this issue.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://CBonnell.github.io/lamps-keyusage-crl-validation-clarification/draft-lamps-bonnell-keyusage-crl-validation.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-lamps-bonnell-keyusage-crl-validation/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/CBonnell/lamps-keyusage-crl-validation-clarification"/>.</t>
    </note>
  </front>
  <middle>
    <?line 69?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="RFC5280"/> defines the profile of X.509 certificates and certificate
revocation lists (CRLs) for use in the Internet. Section 4.2.1.3 of
<xref target="RFC5280"/> requires CRL issuer certificates to contain the <tt>keyUsage</tt>
extension with the <tt>cRLSign</tt> bit asserted. However, the CRL validation
algorithm specified in Section 6.3 od <xref target="RFC5280"/> does not include a
corresponding check for the <tt>cRLSign</tt> bit within the <tt>keyUsage</tt>
certificate extension. This document updates <xref target="RFC5280"/> to implement
that check.</t>
      <t><xref target="the-issue"/> describes the security concerns that motivate this update.</t>
      <t><xref target="crl-validation-algo-amendment"/> updates the CRL validation algorithm
to resolve these concerns.</t>
    </section>
    <section anchor="conventions-and-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="the-issue">
      <name>The risk of signing CRLs with non-certified keys</name>
      <t>In some Public Key Infrastructures, entities are delegated by
Certification Authorities to sign CRLs. CRLs whose scope encompasses
certificates that have not been issued by the CRL issuer are known as
"indirect CRLs".</t>
      <t>Certification Authorities delegate the issuance of CRLs
to other entities by issuing to the entity a certificate that asserts
the <tt>cRLSign</tt> bit in the <tt>keyUsage</tt> extension. The Certification
Authority will then issue certificates that fall within the scope of the
indirect CRL by including the <tt>crlDistributionPoints</tt> extension and
specifying the distinguished name ("DN") of the CRL issuer in the
<tt>cRLIssuer</tt> field of the corresponding distribution point.</t>
      <t>The CRL issuer issues CRLs that assert the <tt>indirectCRL</tt> boolean within
the <tt>issuingDistributionPoint</tt> extension.</t>
      <t>Applications which consume CRLs follow the validation algorithm as
specified in Section 6.3 of <xref target="RFC5280"/>. In particular, Section 6.3.3
contains the following step for CRL validation:</t>
      <ul empty="true">
        <li>
          <t>(f) Obtain and validate the certification path for the issuer of
    the complete CRL.  The trust anchor for the certification
    path <bcp14>MUST</bcp14> be the same as the trust anchor used to validate
    the target certificate.  If a <tt>keyUsage</tt> extension is present
    in the CRL issuer's certificate, verify that the <tt>cRLSign</tt> bit
    is set.</t>
        </li>
      </ul>
      <t>Notably, there is no requirement for certificate-consuming applications
to verify the presence of the <tt>keyUsage</tt> extension itself.</t>
      <t>Additionally, the certificate profile in <xref target="RFC5280"/> does not require
the inclusion of the <tt>keyUsage</tt> extension in a certificate if the
certified public key is not used for verifying the signatures of other
certificates or CRLs. Section 4.2.1.3 of <xref target="RFC5280"/> says:</t>
      <ul empty="true">
        <li>
          <t>Conforming CAs <bcp14>MUST</bcp14> include this extension in certificates that
   contain public keys that are used to validate digital signatures on
   other public key certificates or CRLs.</t>
        </li>
      </ul>
      <t>The allowance for the issuance of certificates without the <tt>keyUsage</tt>
extension and the lack of a check for the inclusion of the <tt>keyUsage</tt>
extension during CRL verification can manifest in a security issue. A
concrete example is described below.</t>
      <ol spacing="normal" type="1"><li>
          <t>The Certification Authority issues an end-entity CRL issuer
certificate to subject <tt>X</tt> that certifies key <tt>A</tt> for signing CRLs by
explicitly including the <tt>keyUsage</tt> extension and asserting the
<tt>cRLSign</tt> bit in accordance with Section 4.2.1.3 of <xref target="RFC5280"/>.</t>
        </li>
        <li>
          <t>The Certification Authority issues one or more certificates that
include the crlDistributionPoints extension with the DN for subject
<tt>X</tt> included in the <tt>cRLIssuer</tt> field. This indicates that the
CRL-based revocation information for these certificates will be
provided by subject <tt>X</tt>.</t>
        </li>
        <li>
          <t>The Certification Authority issues an end-entity certificate to
subject <tt>X</tt> that certifies key <tt>B</tt>. This certificate contains no key
usage extension, as the certified key is not intended to be used for
signing CRLs and could be a “mundane” certificate of any type (e.g.,
S/MIME, document signing certificate where the corresponding private
key is stored on the filesystem of the secretary’s laptop, etc.).</t>
        </li>
        <li>
          <t>Subject <tt>X</tt> signs a CRL using key <tt>B</tt> and publishes the CRL at the
<tt>distributionPoint</tt> specified in the <tt>crlDistributionPoints</tt>
extension of the certificates issued in step 2.</t>
        </li>
        <li>
          <t>Relying parties download the CRL published in step 4. The CRL
validates successfully according to Section 6.3.3 of <xref target="RFC5280"/>,
as the CRL issuer DN matches, and the check for the presence of the
<tt>cRLSign</tt> bit in the <tt>keyUsage</tt> extension is skipped because the
<tt>keyUsage</tt> extension is absent.</t>
        </li>
      </ol>
    </section>
    <section anchor="crl-validation-algo-amendment">
      <name>Checking the presence of the <tt>keyUsage</tt> extension</name>
      <t>To remediate the security issue described in <xref target="the-issue"/>, this
document specifies the following amendment to step (f) of the CRL
algorithm as found in Section 6.3.3 of <xref target="RFC5280"/>.</t>
      <t><em>OLD:</em></t>
      <ul empty="true">
        <li>
          <t>(f) Obtain and validate the certification path for the issuer of
    the complete CRL.  The trust anchor for the certification
    path <bcp14>MUST</bcp14> be the same as the trust anchor used to validate
    the target certificate.  If a <tt>keyUsage</tt> extension is present
    in the CRL issuer's certificate, verify that the <tt>cRLSign</tt> bit
    is set.</t>
        </li>
      </ul>
      <t><em>NEW:</em></t>
      <ul empty="true">
        <li>
          <t>(f) Obtain and validate the certification path for the issuer of
    the complete CRL.  The trust anchor for the certification
    path <bcp14>MUST</bcp14> be the same as the trust anchor used to validate
    the target certificate.  Verify that the <tt>keyUsage</tt> extension is
    present in the CRL issuer's certificate and verify that the <tt>cRLSign</tt>
    bit is set.</t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>If a Certification Authority has issued certificates to be used for
CRL verification but do not include the <tt>keyUsage</tt> extension in
accordance with Section 4.2.1.3 of <xref target="RFC5280"/>, then relying party
applications that have implemented the modified verification algorithm
as specified in this document will be unable to verify CRLs issued by
the CRL issuer in question.</t>
      <t>It is strongly <bcp14>RECOMMENDED</bcp14> that Certification Authorities include the
<tt>keyUsage</tt> extension in certificates to be used for CRL verification to
ensure that there are no interoperability issues where updated
applications are unable to verify CRLs.</t>
      <t>If it is not possible to update the profile of CRL issuer certificates,
then the policy management authority of the affected Public Key
Infrastructure <bcp14>SHOULD</bcp14> update the subject naming requirements to ensure
that certificates to be used for different purposes contain unique DNs.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC5280">
        <front>
          <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
          <author fullname="D. Cooper" initials="D." surname="Cooper"/>
          <author fullname="S. Santesson" initials="S." surname="Santesson"/>
          <author fullname="S. Farrell" initials="S." surname="Farrell"/>
          <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
          <author fullname="R. Housley" initials="R." surname="Housley"/>
          <author fullname="W. Polk" initials="W." surname="Polk"/>
          <date month="May" year="2008"/>
          <abstract>
            <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5280"/>
        <seriesInfo name="DOI" value="10.17487/RFC5280"/>
      </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 227?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1aTY/cxhG996/ojA6RlBnKK8mJPXBsj3ZX9iCrXWVXimwE
AbaH7NlhlsOm2eSuJ4IBX3LJJcfAQAz4YCT33BIkMJCfYlhBfkZeVTfJ5nxI
dhDkEOSineF0V1dVV716VdRoNBJVWmV6LAf7mSrTeRqrKjW5rIwsShNra9P8
Qv5Er+RTqy60vFJZra1M6pKe758e0ZM04U0DoWazUl+RsN4PMg5lDwT+6gtT
rsbSVokQiYlztYQOSanm1ShTy8KOZibPdZaNLvWqppNHcZmNOpGj1/aErWfL
FAqavFoV2D49fPJQyhtSZdZAhzRPdKHxT14NhnKgk7QyZaoy+jKdPMAfU+LT
6ZOHA5HXy5kuxwLC9VjEJrc6t7Udy6qstYBF9wTkllqN5eT0cIIv16a8vChN
XYzls/fkM3wjh7xHTwR0xs/JWMiRzPXHlbzQuS5Zb3pU52lsSv5oC1VeZrQz
SW1VprO60onMdHKhS3Gl8xra3JCyPYi+OGP7J+LxUqUZLXlXfwwHZjqKzZKe
qzJejOWiqgo7vnMn+PEOxEF0Wi3qGV3ZA+fxO87/u/y+dpVSZnCZrSCgOaIR
FDnRUWq+i8g73yEIokW1zAaiLujacFmv333jNSFUXS1MSc6HdlLO6yxz4TXY
NyUC2as34F9NeaHy9FcsbiwP0ot0X5fVUE7zOOIF2vl1ENPeyCv0boKFMRaS
HwcbJ/E3Kcdj+c1ff/PP330pX3z1xYu//cE/VjZO07F8ohK1SC+NnFZmiypn
h/snj+T+STSUR08OerpUfmeEgI6Kepal8bsX9BNf+W5lXnz5x2/+/Otvvvpc
/uOzv7z47Z/W9DFLM6+XqTy5rGfbNNrtnMpvjQxt/UGqq3mgkMhNuYSMK+gi
0nwefBOj0UiqGSJfxZUQpw/3+Q5loudpDpipFppgaJ5mWpq5/CB6/bU3Jfnd
hQtWqDwJHwjAj/EQliGjrLwJKLK3JE6VtdUyzVnoNK90mesqkk8WqW3PKPVH
dVpqK6qFqvoHXS/SeOEfrSQC0rJMm17kHgmtBG5Uyp+AFYJjVgIAACak0TUS
gn88j0+PzrDzXM7SChdgIVYnkZwkACmsVFm2GsrGHaJxh6104Y4lIQG+wjek
QCSfLcgM/FrCVHinsWgJEBS0MQBmU1qC+StdkkVs8aZuJMSr530nzmEaF4Pz
wDRoQJtJPCC51uX3bei/YadTbkSgFFuzQyG6ew0gjnUjvjtadEenldXZnG5S
A4ziS7cYJ4XHXKdZJmOFEBAsP9V0GNmcEh7yGjqhDcG1CqYyFCxc35I0VHGs
i0ooXuQCA8dRKMBLsxXcHpjubj03cpvfhhTAgn0DR2iZGE0eqrCiQFqjNK/k
Ql3pl0WNEBzDqKI1m2ELHZOBlBxS5wsFBzr7THtHgWW+zAv8GhzqffeKWwgC
AMEBwcJdfj91IBkSTMZmQFNeE7nkX6ZJkmmBQoWULE1Sx1wlxfPn38NV0E18
8sl/Ew7ONCsg70d3o73oHo7pq9IgRBDpG8aGMLA1Yl+JA++ba40wHW65L9FF
YnPRnJmN4j8kpRPZ918TVWkeZ3WipQLFKWFFYfKE0CteaORNAyx9rUjZTWPC
AG8N82jaRqIvzH1l4KA25TzO0ukR3TkOGbFT+dJtDELkr93qGJSzWpFzcXbu
k3dpUElIBw4sdx5LWqMY5LQRqmGe0LGQ3qi2JSFaB4te4CIH2sMjCth9k4Oh
0RYXdwcUpQzfllKSSwDRxMTKwaOnZ0+Id9JfeXzCn08Pf/p0enp4QJ/P3p8c
HbUfhF9x9v7J06OD7lO3E9zg0eHxgduMp7L3SAweTT4cMLbIwcnjJ9OT48nR
wAV7eD+KEtzIGeUBEgB5TjCvrGh8z5H1YP/x37/Yu+9v8e7e3pvwn/vyxt6P
7uPL9UI7JJMmB3a4r/DYSqii0KokKYrxt0grsHOsBVwuzHUuCfngzds/J8/8
YizfmsXF3v23/QMyuPew8VnvIfts88nGZufELY+2HNN6s/d8zdN9fScf9r43
fg8evvUOqL6Wo7033nlbUAhRlJSp5ZLVYxK+ZoAbuzzDTTDleH6jSxEhprm0
ZqnlY+aA3KVN83mpwKeAozVidygpQisuBlRedKYvVMVVSuy3KUxRP2HW7JYi
JkgbzymcQguD+LexKZDvOWhdQWhlRR/7KCW5XBHYzLTOHURyUezTA1bnMqcQ
QLxRrwZUjSs+bICA2K1cYwMLJGHKlybaSilrqJx2duNoWkWu9QWQf1qv0qy7
Q2Cifxs8aB0B+6gH00KFRaPwyhEPbPWukJsOm1NqBCjrnOxqrQgdw6YwgrMx
rGOZHTSNI859bJDINizLRC9cnVg1m6jTxOc6tQvcDPUI8ubg4Hhwa5PEtZQP
vpjyk3OJYMySZmm/jCSBKrIgXSKHhKFE+mNdUAU+d+Y01uJXuN2YTKvcu8bd
ib/JDZvD6xBiUhCPUQ6aPXHHR4CeO3dussxcr5PorrAiInfX1nmvnEXIOIkm
vkrjGm3sMFwb3ROeCrg6444lRxGRl2t0nHosId6WN+e35MmMCQQhqv/VhXvc
y4pCASSaou3dC75CjZm7GyqzFdscSQ5S4IKFx/MYwdnu7Anl3SyY8XfmzrUU
JMpZ0ZMBDpUwZ/datodXqrzQvRYKKkznSLrt7NF6llmxBJ8Ju7uJlzYtTgQq
jKb4OzaVmlE7FXQgcr0DCYSPXKjQNakgjsS37UzkRmeCgOz1dX2nd5QWVm+n
bV5bTgEGgLDl2sXG+/CWOjjpyombGzBHSd0pfJfcjrGZDVxQJVBcTOhEBtc+
6rswttu4c98eq1aWQxzMiaYAXO0m1kVaQ02ZofQM2UBMut+GY3dmNHCCO16P
SknjGhCPni0c6q5WBL7YapkDMUXZy8UmzLmm+vSHBYARU1e7OwDK7CroV9Ua
BX/JLQdSwimsDoa3MVBzqfJ0rm3lQqGlz673khNCppj4nvQTQYqCjvbNNGyF
3XtbipvsipsHc+4zk5Gvq13W8kWFNRa8op79ksrZ+QfnMhyyQAq5/3xyvjlW
AVehWVPXnK4VwW0JQA52lcUvIxEbJR2NPPg5XyEzrldEcCTufit/GJA8GLGk
jn5r9HbBjgXbSvi2odHBsXON8yDbAyd6UUnLUNZLtW/KqLQGpMN7BP4dzRSl
S9AptzM6fPYBafV6gIOzzFgE0OsqTRzHC243Evf+jdjpRwuJf1XAPDj3BoZb
27ILqKdBHOSszeKGTTnrEewGCqkdyhMHIjPdIiPrE0YmjxtMnVHCIMu+/vT3
yzpHPOmvP/28pxCleL7i0b28qaOLaEiyzu48mj46HAajGy+8Nz7isrVJtoqS
O1+S4zW3FQKOejDHNlBS7ApMY9lgCEAAGa/K1deffmYBPUVlCjQIVRzdisR9
4HfgatKE5oeUzDW/A/LeZpsZMEEfu/65C6nzZJOc9djUS4iry/O1mWIv8Hw/
ATHMoe5G4vVInuqMyxXzMGoR0FZkRiWtdo2+3cb7PjhPj+jMplDAh3VM0zCa
nq88PPjOoUfs1pGBr1N17vBsDCmLPAK022EL+X2gX+MRW1Fqd5WHvpcpWmyK
Px5utjJ2LFcz4lhufEF6NBj6rejM8xsvn6qgTBKzWuokbQhrv+7I3lyhN+4Z
cuEXW4aYfebcnsbFhG6S+HLXuIiQxWMf0nGNwW+DdXH75OhgfPv/9Ps/T79v
Hx8++5/37M/W/bHdyU4H5+hXOdn5aJefWZJ/P+P8fINi3OUa6LVFRS594yL4
3neV4YVqQXV9jh1Wvg2OCdwGzvamyi/pRsR3ZFpDNzIpA2DnYWLX1nezpnaa
rB3ALk3iak1P326qS7PHfj0KZ6Ke2cg6R9eog/dRXPDbcZbYHJR8BDpTuQHE
1F1MVZr8AnUkGBk6vXdPtwJfbn/RttEQ9e5psxcAi6L/ylDqNorwkZokUCOe
+poCkTJLs4CTOcrhRuRJ3+3cXm1zTcRx5iKSgqIw1qZ+mZO0/vpmxxuUoeCr
58UGB6+olYET3MS6jVsP+Wo+RyTB+G4GKvozUOlnvIESDafMFfegwTCA/en8
teUd8JqvEWZzOApqFXUJe3X3BrjOU4QD6r97VTCdHE820rL/roTyEFfCKxXn
Bm3ld2QzNIkkZRLTwJT+cwirKp6P3X9b0cmPB3OVWT2gEnxycAIBzUodiX8B
Luzzi+UjAAA=

-->

</rfc>
