<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lamps-bonnell-keyusage-crl-validation-03" category="std" consensus="true" submissionType="IETF" updates="5280" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <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-03"/>
    <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>Penguin Securities Pte. Ltd.</organization>
      <address>
        <email>tomofumi.okubo+ietf@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="October" day="18"/>
    <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, this document
clarifies the requirement for relying parties to also verify the
presence of the <tt>keyUsage</tt> extension in the CRL issuer's certificate.
This check remediates a potential security issue that arises when
relying parties 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>
    </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 66?>

<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 of <xref target="RFC5280"/> does not explicitly
include a corresponding check for the presence of the the <tt>keyUsage</tt>
certificate extension. This document updates <xref target="RFC5280"/> to require
that check.</t>
      <t><xref target="the-issue"/> describes the security concern that motivates this update.</t>
      <t><xref target="crl-validation-algo-amendment"/> updates the CRL validation algorithm
to resolve this concern.</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 trusting CRLs signed 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 signed 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 sign 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 signs 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>This step does not explicitly specify a check for 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 signs 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 signs 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 signs 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 signed 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 signed 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 signed 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 224?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1aS48bxxG+96/oUIdICjny6pHYhGOb2l1ZRFa7yu4qshEE
2J6ZJjnZ4fR4embXjGDAl1xyyTEIEAM+GMk9twQJDOSnGFaQn5Gvqns4D5KS
BQQ5BLlInEdXV1d99dVjdjQaiTIpUz2Wg/1UFcksiVSZmEyWRuaFibS1STaX
P9Er+cyquZZXKq20lXFV0P390yO6k8S8aCBUGBb6ioR1HsioLXsg8L+em2I1
lraMhYhNlKkldIgLNStHqVrmdhSaLNNpOrrUq4p2HkVFOmpEjt66J2wVLhMo
aLJylWP59PD8kZQ3pEqtgQ5JFutc45+sHAzlQMdJaYpEpXQxnTzEf6bAr9Pz
RwORVctQF2MB4XosIpNZndnKjmVZVFrgRPcE5BZajeXk9HCCi2tTXM4LU+Vj
+fxD+RxXZJAP6Y6Azngcj4UcyUx/Wsq5znTBetOtKksiU/BPm6viMqWVcWLL
IgmrUscy1fFcF+JKZxW0uSHleiO6cIft7ojbS5Wk9MoH+lMYMNVBZJZ0XxXR
YiwXZZnb8Z07rYd3IA6ik3JRheSyh87id5z9d9m950opU5jMlhBQb1ELCpzo
IDFvIvLOG4AgWJTLdCCqnNwGZz24+/ZbQqiqXJiCjA/tpJxVaergNdg3BYDs
1RvwU1PMVZb8isWN5UEyT/Z1UQ7lNIsCfkE7uw4iWht4hT6I8WKEF8mOg42d
+ErK8Vh++7ff/Ot3X8mXX3/58u9/9LeVjZJkLM9VrBbJpZHT0mxR5exw/+SJ
3D8JhvLo/KCjS+lXBgB0kFdhmkQfzOkRu3y3Mi+/+tO3f/n1t19/If/5+7++
/O2fe/qYpZlVy0SeXFbhNo2e6mxeJZk80xGiv0xAA09LHcijMu6q5wUFhgT9
INHlrKWeyEyxhMQraCaSbNa6EqPRSKoQcaCiUojTR/vsURnrWZJht3KhiZRm
SaqlmcmPggdvvSPJCw48eENlcfuGABkZT2gp4svKmyAme0tiV1lZLXEaEjrN
Sl1kugzk+SKx6z0K/UmVFNqKcqHK7kbXiyRa+FsrCXhalmmTeeZ50UqwSKn8
DnhDMIIl6ADUQhpdIzz44UV0enSGlRcyTEq4w0KsjgM5iUFZeFOl6Wooa3OI
2hy21LnbloS02Ba2IQUC+XxBx8DTAkeFdeoTLUGJgha2aNoUlkj/Shd0Ij7x
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
/Bu+2OU0OiMAAA==

-->

</rfc>
