Internet-Draft | CRL validation clarification | January 2024 |
Bonnell, et al. | Expires 8 July 2024 | [Page] |
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 cRLSign
bit asserted. Additionally, RFC 5280
defines steps for the validation of CRLs. While there is a requirement
for CRL validators to verify that the cRLSign
bit is asserted in the
keyUsage
extension of the CRL issuer's certificate, there is no
requirement for validators to verify the presence of the keyUsage
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.¶
This document specifies an enhancement to the CRL validation process
to explicitly require the presence of the keyUsage
extension to resolve
this issue.¶
This note is to be removed before publishing as an RFC.¶
The latest revision of this draft can be found at 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 https://datatracker.ietf.org/doc/draft-lamps-bonnell-keyusage-crl-validation/.¶
Source for this draft and an issue tracker can be found at https://github.com/CBonnell/lamps-keyusage-crl-validation-clarification.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 8 July 2024.¶
Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
[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
keyUsage
extension with the cRLSign
bit asserted. Additionally,
[RFC5280] defines steps for the validation of CRLs. While there is a
requirement for CRL validators to verify that the cRLSign
bit is
asserted in the keyUsage
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.¶
Section 3 describes the issue in detail.¶
Section 4 describes the amended CRL validation algorithm that remediates the issue.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
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".¶
Certification Authorities delegate the issuance of CRLs
to other entities by issuing to the entity a certificate that asserts
the cRLSign
bit in the keyUsage
extension. The Certification
Authority will then issue certificates that fall within the scope of the
indirect CRL by including the crlDistributionPoints
extension and
specifying the distinguished name ("DN") of the CRL issuer in the
cRLIssuer
field of the corresponding distribution point.¶
The CRL issuer issues CRLs that assert the indirectCRL
boolean within
the issuingDistributionPoint
extension.¶
Applications which consume CRLs follow the validation algorithm as specified in Section 6.3 of [RFC5280]. In particular, Section 6.3.3 contains the following step for CRL validation:¶
(f) Obtain and validate the certification path for the issuer of
the complete CRL. The trust anchor for the certification
path MUST be the same as the trust anchor used to validate
the target certificate. If a keyUsage
extension is present
in the CRL issuer's certificate, verify that the cRLSign
bit
is set.¶
Notably, there is no requirement for certificate-consuming applications
to verify the presence of the keyUsage
extension itself.¶
Additionally, the certificate profile in [RFC5280] does not require
the inclusion of the keyUsage
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 [RFC5280] says:¶
Conforming CAs MUST include this extension in certificates that contain public keys that are used to validate digital signatures on other public key certificates or CRLs.¶
The allowance for the issuance of certificates without the keyUsage
extension and the lack of a check for the inclusion of the keyUsage
extension during CRL verification can manifest in a security issue. A
concrete example is described below.¶
The Certification Authority issues an end-entity CRL issuer
certificate to subject X
that certifies key A
for signing CRLs by
explicitly including the keyUsage
extension and asserting the
cRLSign
bit in accordance with Section 4.2.1.3 of [RFC5280].¶
The Certification Authority issues one or more certificates that
include the crlDistributionPoints extension with the DN for subject
X
included in the cRLIssuer
field. This indicates that the
CRL-based revocation information for these certificates will be
provided by subject X
.¶
The Certification Authority issues an end-entity certificate to
subject X
that certifies key B
. 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.).¶
subject X
signs a CRL using key B
and publishes the CRL at the
distributionPoint
specified in the crlDistributionPoints
extension of the certificates issued in step 2.¶
Relying parties download the CRL published in step 4. The CRL
validates successfully according to Section 6.3.3 of [RFC5280],
as the CRL issuer DN matches, and the check for the presence of the
cRLSign
bit in the keyUsage
extension is skipped because the
keyUsage
extension is absent.¶
keyUsage
extension
To remediate the security issue described in Section 3, this document specifies the following amendment to step (f) of the CRL algorithm as found in Section 6.3.3 of [RFC5280].¶
OLD:¶
(f) Obtain and validate the certification path for the issuer of
the complete CRL. The trust anchor for the certification
path MUST be the same as the trust anchor used to validate
the target certificate. If a keyUsage
extension is present
in the CRL issuer's certificate, verify that the cRLSign
bit
is set.¶
NEW:¶
(f) Obtain and validate the certification path for the issuer of
the complete CRL. The trust anchor for the certification
path MUST be the same as the trust anchor used to validate
the target certificate. Verify that the keyUsage
extension is
present in the CRL issuer's certificate and verify that the cRLSign
bit is set.¶
If a Certification Authority has issued certificates to be used for
CRL verification but do not include the keyUsage
extension in
accordance with Section 4.2.1.3 of [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.¶
It is strongly RECOMMENDED that Certification Authorities include the
keyUsage
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.¶
If it is not possible to update the profile of CRL issuer certificates, then the policy management authority of the affected Public Key Infrastructure SHOULD update the subject naming requirements to ensure that certificates to be used for different purposes contain unique DNs.¶
This document has no IANA actions.¶
TODO acknowledge.¶