<?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-02" 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-02"/>
    <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="October" day="14"/>
    <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 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>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 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 227?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
IwAA

-->

</rfc>
