<?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.4 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lamps-bonnell-keyusage-crl-validation-00" category="std" consensus="true" submissionType="IETF" updates="5280" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.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-00"/>
    <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="January" day="05"/>
    <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 may manifest in an
issue in some Public Key Infrastructures where a CRL issuer who has been
certified by a Certification Authority to issue CRLs on its behalf can
sign CRLs using a key that has not been certified for signing CRLs.</t>
      <t>This document specifies an enhancement to the CRL validation process
to explicitly require the presence of the <tt>keyUsage</tt> extension 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. This profile requires
that certificates which certify keys for signing CRLs contain the
<tt>keyUsage</tt> extension with the <tt>cRLSign</tt> bit asserted. Additionally,
<xref target="RFC5280"/> 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 key
usage extension itself. The lack of such a requirement may manifest in
an issue in some Public Key Infrastructures where a CRL issuer who has
been certified by a Certification Authority to issue CRLs on its behalf
can sign CRLs using a key that has not been certified for signing CRLs.</t>
      <t><xref target="the-issue"/> describes the issue in detail.</t>
      <t><xref target="crl-validation-algo-amendment"/> describes the amended CRL validation
algorithm that remediates the issue.</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 issue 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 231?>

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

-->

</rfc>
