<?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.29 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-keyusage-crl-validation-00" 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-ietf-lamps-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>Penguin Securities Pte. Ltd.</organization>
      <address>
        <email>tomofumi.okubo+ietf@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="May" day="20"/>
    <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/ietf-lamps-keyusage-crl-validation-clarification/draft-ietf-lamps-keyusage-crl-validation.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-lamps-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:
H4sIAAAAAAAAA+1azY8cRxW/119RjA/YZqbXazuQjEKS8e4mGbHeNbtrnAgh
bU13zUyxPV2dru7dDFakXLhw4YiQiJRDBHduIFAk/pQoRvwZ/N6r6unu+bAd
CXFAXOzpj3r16r3f+72P3sFgIEpTpnooewepKszUxKo0NpOllXlhY+2cyWby
J3opnzo10/JapZV2MqkKun9wdkx3TMKLekJNJoW+JmGdBzJuy+4J/K9ntlgO
pSsTIRIbZ2oBHZJCTcuB0eV0kKpF7gZXelnRtoO4SAeNvMG9e8JVk4WBdjYr
lznWjo8u3pfyllSps1DAZInONf7Jyl5f9nRiSlsYldLFePQI/9kCv84u3u+J
rFpMdDEUEK6HIraZ05mr3FCWRaUFjvNAQG6h1VCOzo5GuLixxdWssFU+lM8+
kM9wRdb4gO4I6IzHyVDIgcz0p6Wc6UwXrDfdqjIT24J/ulwVVymtTIwrCzOp
Sp3IVCczXYhrnVXQ5paUq43owh+2uyNuL5RJ6ZX39KcwXKqj2C7oviri+VDO
yzJ3w7291sM9iINoU86rCfnrkc0ynaZ7L7f7mh+lTGEyV0JAvUUtKPKiI2P3
XsOfHbl7rwuDaF4u0p6ocnIc3PXG/TfvCaGqcm4LMj/0k3JapalHV+/AFsBx
ULDHT20xU5n5FYsbykMzMwe6KPtynMURv6C9ZXsxrY0mfu17CV6M8SJZsrex
E19JORzKb//2m3/97iv54usvX/z9j+G2crExQ3mhEjU3V1aOS7tFlfOjg9PH
8uA06svji8OOLmVYGQHSUV5NUhO/N6NH7PTdyrz46k/f/uXX3379hfzn7//6
4rd/XtPHLuy0Whh5elVNtmn0RGezymTyXMcI/tKABZ6UOpLHZdJVLwiKLAn6
AbmxpZ7IbLGAxGtoJkw2bV2JwWAg1QSRoOJSiLP3D9ijMtFTk2G3cq6Jk6Ym
1dJO5UfRG/fekuQFjxy8obKkfUOAi2zgsxQR5uRt8JK7I7GrrJyWOA0JHWel
LjJdRvJibtxqj0J/UplCO1HOVdnd6GZu4nm4tZSAp2OZzsyyQItOgkdKFXbA
G4IRLEEIIBfS6AYBwg8v47Pjc6y8lBNTwh0OYnUSyVEC0sKbKk2XfVmbQ9Tm
cKXO/bYkpEW2sA0pEMlnczoGnhY4KqxTn2gBUhS0sMXStnDE+de6oBPxiTd1
IyFBvWA7cYmjcWa4bB0NGtBiEg+KrnTxfde2Xx9PIQq0X7EqIfqDi1tK8ukK
nS7JqCBLBh20JI5vVNUih5d0Fut6461KBVfsUioS7Px4ruMrSdsnxmNK5hYi
SuQO6Tz0l16AtxJUd4wInYl1VVUc6xyv8KYeM9iCUAIDTpZ40FLAAyKzW03a
Z2yzK2ETDdtBfGZLvJEj/pHCl3KurrX3yXZA+QBbmCRJtUByAOwLm1QxZybx
/Pn3ADFC2Gef/TdDDnTCbz+M7kf70QNs01WljsKW47oaAA/tUGusJ75DrH1o
bzQA1V9BpIknoVLUKhCwQMLWMQGV0V8r/kNWWnbtt+kekF2cVokmp9sCB8pt
lhBYPOLqON4NZdHGyupogbPqWJIhGXbVgYmCGQOX0ZYR+RxbDNio7HQXowgJ
bl9hHcbFzplH+8KCrL3ZaVu/G0tay+hktAHyT5aQWpBeK7ZpYLkysGBFnU0Z
yMbVe0cE1wObXVMcojxj1B0SRpkgnUDsMslSYZY42Xv89PyCKj36X56c8u+z
o58+HZ8dHdLv8w9Hx8erHyK8cf7h6dPjw+ZXsxK5+PHRyaFfjLuyc0v0Ho8+
7vkQ7Z0+uRifnoyOex7qbd+ghCRXTCgKAH+4mohUOVFbnnH16ODJP77cfxg8
eH9//y1Yz1+8uf+jh7ggrvG72Qxx7y9h16VQea5VQVKQNGSsclOCK/EuWGdu
bzJJBAJr3v05WeYXQ/n2JM73H74TbtCBOzdrm3Vuss0272ws9kbccmvLNitr
du6vWbqr7+jjznVt99bNt99Fca3lYP/Nd98RBCFCCej6ioOrqFy5StaBkwMF
oyD1sYZbnNyf32oCRYhxJp1daPmEay9ujsbZtFCoXMCmFRDcl4RUnwOIrXWq
Z6pk0hcHqzAm7I+4WjV1ZiM9QvZmvW7mFqTpYpsj5jMUUDlxlhNdBqTIZPYn
yplonbVyTDfnsTpXGUEBuKMuCaQQl7xZD8DYrVx9BhZIwlRgKVpKgWspOzXn
nvgsSRbGQ1rEj9aTns+hzMNUaG1UHOuk3mU+HK2tsKgVRlAYBACWelPITXtN
KULI32ELb2PPuqJtFz4JczefhVUs0sO6Y8O2Tyzi2bVrDcSm8MliWS+iFs9Q
Be3mcAyV5vJ27/Ckd2ezWlrVVjDFmO9cSmAxTepXuwkkaamCYgW6RJ4QWxLJ
CM5DqmVxf5r6sHgKo1ubapUFy3iPBD9uHLntDCFGOaU65Qk6FMj4Cerz+05t
mtqb9WK1Sa7A4+vm1wjx5ousuELt2G+/Gz0QoRzwucZvS3aiglmulb3U2Qjx
jrw9vSNPJ1xEEK+Gpx7scScmcgWKqLN1sC5qFmqAvGuowy75zJFkiDLTQGwM
aK5WdoTyahbMLDzx+zrCiPKn6MhAHZVwsR60XG1eqmKmO60KVBhPEXLbK2IX
yo2SJbyiQO6/vDnwIsCk2sPP+A5la6UaQoOo4GXFz/bmwpROp1MCXKc/6hq1
KVtxqu2lWVMRaR/f7dZlVwfRJS/j1WyShe/GuRIxfhf2FZ3PG69mA4pHxamC
dmTq7HK6h6nbVh93z+PU0jGEUR9RN80pbeQ8kuqak+uQzkE2CJH8V9fRzTFq
ukDWWEedpCFISV1R6ywMZZ8JWrbYejLPUYqik1NJO6bq3NJtukETtip3V/mh
RZKpijnFr8PrJV5uSWmPNnVrIhqDFRcqM1PtSg+FbjuIhp2YJ6aqToZJG6Gg
Ke4mGmfFufe3pC7ZpC7P1dgNxfMgJM0mKNlP7QSKoqGa/JKS1eVHl7I9q4DN
yPqXo8vN6QQKERrZNDG5luK24Z/s6xNHeI1EbORrNL0owtmDXE69AsCRuP86
5rAo5HCGBTW/W7HbQB0vbMvP20YvhyfeMt6AfBzYMIhKVtXHeh4OTRclzlZF
EQwC8w4mioKl1QuvJl34HeDo9Dq8UZBMWAS469okvn5rOTcSD747crpYIemv
gsujy3C+9tJVTs0sT7MgZ22g1a9zVad2rnmQOp4s8Qwy0StaZH3auOR5gq1S
ihaE2Def/2FRZUCT/ubzLzoKUXxnS56Hy9s6mkV9knW+93j8+Kjf9Fy18M6g
hSdim4VUXnBvS3KC5q4E3qjN8qUE8olbIqstagIBAyDcVbFEqkxVXtoclX8Z
R3ci8RDU3TJ0cA0HcsXfVIKt+cTMlSgMm/a4wdNlsll3dQqll5SkPsbXxnId
1IVGAWI4W9+PxBuRPFubYyXoF1KrkpV2tb7NwocBmWfHtGedIyC/iukjEo2j
l4EaQkvQqdnWWYGdqRpzhEIL8YogAqu71UDsFSXENobaneCh75VBD03oixXN
q2oZO15XEyqf/HyC9Kj587Umks9vvXxoggxpm1FkdyrjJ5CdwUFnmuNnrKKJ
g4CY9aJ4tRsnEvIklcJNSyLaBTrWIRjXivNtlC7unh4fDu/+v7L+z1fWd0+O
nv3PW/Zn6/bYbmSvgzf0q4zsbbTLziwpfOLwdr5Vf+haUmXtkI79N1wnBPt9
Vw6eqxWpro+p23lvo7wEb4NnQ65sSpkdjYj4jlVW389C2h8oeFrYdOzNEMkQ
GogStCfYhU18runo2wxt6cDdfNQeeoayRlaZmqS69Y2pPXdDNbo5AvmkQqXt
Zwtj75iysNkMeaQ1E/R67x5btWy5o51c74U6ftpsA1BD0V8HFHqFIvyk/giF
EY91bQ6kTEy6YmkXCg4/AU+6ZufOaptpIsaZRySBIrfOmfCal7T+dWbHB5K+
YNfzyxYbL6mLgRH8SHqF20D5ajoFknD4ZrgpusNNGYa4LSXqijJT3H62vuCx
Pb29tnxGXbM1YDaFoaBWXhU4r24+olaZARyQ/x2H5nh0MtoIy+6HEIpDuITf
VBwbtJQ/gU3QH5KUUUyTUPp7C1ZVPB/6vwTRyY97U5U63aMUfHp4CgH1mzoS
/wbyEFPINSMAAA==

-->

</rfc>
