<?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.27 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lamps-bonnell-keyusage-crl-validation-04" category="std" consensus="true" submissionType="IETF" updates="5280" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <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-04"/>
    <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="2025" month="April" day="16"/>
    <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 <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:
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
N/Dk+zYjAAA=

-->

</rfc>
