<?xml version='1.0' encoding='UTF-8'?>

<!-- draft submitted in xml v3 -->

<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-norevavail-04" number="9608" category="std" consensus="true" submissionType="IETF" updates="5280" obsoletes="" tocInclude="true" sortRefs="true" symRefs="true" version="3" xml:lang="en">

  <front>
    <title abbrev="NoRevAvail for Public Key Certificates">No Revocation Available for X.509 Public Key Certificates</title>
    <seriesInfo name="RFC" value="9608"/>
    <author initials="R." surname="Housley" fullname="Russ Housley">
      <organization abbrev="Vigil Security">Vigil Security, LLC</organization>
      <address>
        <postal>
          <city>Herndon</city>
	  <region>Virginia</region>
          <country>United States of America</country>
        </postal>
        <email>housley@vigilsec.com</email>
      </address>
    </author>
    <author initials="T." surname="Okubo" fullname="Tomofumi Okubo">
      <organization abbrev="DigiCert">DigiCert, Inc.</organization>
      <address>
        <postal>
         <city>Fairfax</city>
          <region>Virginia</region>
          <country>United States of America</country>
        </postal>
        <email>tomofumi.okubo+ietf@gmail.com</email>
      </address>
    </author>
    <author initials="J." surname="Mandel" fullname="Joseph Mandel">
      <organization abbrev="AKAYLA, Inc.">AKAYLA, Inc.</organization>
      <address>
        <postal>
          <city>Tacoma</city>
	  <region>Washington</region>
          <country>United States of America</country>
        </postal>
        <email>joe@akayla.com</email>
      </address>
    </author>
    <date year="2024" month="June"/>
    <area>SEC</area>
    <workgroup>lamps</workgroup>

<keyword>Certificate Revocation</keyword>

    <abstract>
<t>X.509v3 public key certificates are profiled in RFC 5280.  Short-lived
certificates are seeing greater use in the Internet.  The Certification
Authority (CA) that issues these short-lived certificates do not publish
revocation information because the certificate lifespan that is shorter than
the time needed to detect, report, and distribute revocation information.  Some
long-lived X.509v3 public key certificates never expire, and they are never
revoked.  This specification defines the noRevAvail certificate extension so
that a relying party can readily determine that the CA does not publish
revocation information for the certificate, and it updates the certification
path validation algorithm defined in RFC 5280 so that revocation checking is skipped when the
noRevAvail certificate extension is present.</t>
    </abstract>
  </front>
  <middle>

<section anchor="intro">
      <name>Introduction</name>
      <t>X.509v3 public key certificates <xref target="RFC5280"/> with short validity periods are
seeing greater use in the Internet.  For example, Automatic Certificate
Management Environment (ACME) <xref target="RFC8555"/> provides a straightforward way
to obtain short-lived certificates.  In many cases, no revocation
information is made available for short-lived certificates by the
Certification Authority (CA).  This is because short-lived certificates
have a validity period that is shorter than the time needed to detect, report,
and distribute revocation information.  As a result, revoking a short-lived
certificate that is used for authentication or key management is unnecessary
and pointless.  On the other hand, revoking a certificate associated with a
long-lived signature, such as document signing or code signing, provides some
important information about when a compromise was discovered.</t>
      <t>Some long-lived X.509v3 public key certificates never expire, and they are
never revoked. For example, a factory might include an IDevID certificate <xref target="IEEE802.1AR"/>
to bind the factory-assigned device identity to a factory-installed public key. This
identity might include the manufacturer, model, and serial number of the device,
which never change.  To indicate that a certificate has no well-defined expiration
date, the notAfter date in the certificate validity period is set to
"99991231235959Z" <xref target="RFC5280"/>.</t>
      <t>This specification defines the noRevAvail certificate extension so that a
relying party can readily determine that the CA does not publish revocation
information for the end-entity certificate, and it updates the certification
path validation algorithm defined in <xref target="RFC5280"/> so that revocation checking is skipped when the
noRevAvail certificate extension is present.</t>
      <t>Note that the noRevAvail certificate extension provides similar functionality
to the ocsp-nocheck certificate extension <xref target="RFC6960"/>.  The ocsp-nocheck
certificate extension is appropriate for inclusion only in certificates issued to
Online Certificate Status Protocol (OCSP) responders, whereas the noRevAvail certificate extension is appropriate in any
end-entity certificate for which the CA will not publish revocation information.  To
avoid disruption to the OCSP ecosystem, implementers should not think of the
noRevAvail certificate extension a substitute for the ocsp-nocheck certificate
extension; however, the noRevAvail certificate extension could be included in
certificates issued to OCSP responders in addition to the ocsp-nocheck
certificate extension.</t>
      <section anchor="terms">
        <name>Terminology</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&nbsp;14 <xref target="RFC2119"/> <xref
    target="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
        </t>

</section>
      <section anchor="asn1">
        <name>ASN.1</name>
        <t>X.509 certificates are generated using ASN.1 <xref target="X.680"/>, using the Basic
Encoding Rules (BER) and the Distinguished Encoding Rules (DER) <xref target="X.690"/>.</t>
      </section>
      <section anchor="history">
        <name>History</name>
        <t>In 1988, CCITT defined the X.509v1 certificate <xref target="X.509-1988"/>.</t>
        <t>In 1997, ITU-T defined the X.509v3 certificate and the attribute
certificate <xref target="X.509-1997"/>.</t>
        <t>In 1999, the IETF first profiled the X.509v3 certificate for use in the
Internet <xref target="RFC2459"/>.</t>
        <t>In 2000, ITU-T defined the noRevAvail certificate extension for use with
attribute certificates <xref target="X.509-2000"/>.</t>
        <t>In 2002, the IETF first profiled the attribute certificate for use in the
Internet <xref target="RFC3281"/>, and this profile included support for the
noRevAvail certificate extension.</t>
        <t>In 2019, ITU-T published an update to ITU-T Recommendation X.509
<xref target="X.509-2019"/>.</t>
        <t>With greater use of short-lived certificates in the Internet, the recent
Technical Corrigendum to ITU-T Recommendation X.509 <xref target="X.509-2019-TC2"/> allows
the noRevAvail certificate extension to be used with public key certificates
as well as attribute certificates.</t>
      </section>
    </section>
    <section anchor="the-norevavail-certificate-extension">
      <name>The noRevAvail Certificate Extension</name>
      <t>The noRevAvail extension, defined in <xref target="X.509-2019-TC2"/>, allows a CA to indicate that
no revocation information will be made available for this certificate.</t>
      <t>This extension <bcp14>MUST NOT</bcp14> be present in CA public key certificates.</t>
      <t>Conforming CAs <bcp14>MUST</bcp14> include this extension in certificates for which no
revocation information will be published.  When present, conforming CAs
<bcp14>MUST</bcp14> mark this extension as non-critical.</t>

<artwork><![CDATA[
name           id-ce-noRevAvail
OID            { id-ce 56 }
syntax         NULL (i.e. '0500'H is the DER encoding)
criticality    MUST be FALSE
]]></artwork>

      <t>A relying party that does not understand this extension might be able to
find a Certificate Revocation List (CRL) from the CA, but the CRL will
never include an entry for the certificate containing this extension.</t>
    </section>
    <section anchor="other-x509-certificate-extensions">
      <name>Other X.509 Certificate Extensions</name>
      <t>Certificates for CAs <bcp14>MUST NOT</bcp14> include the noRevAvail extension.
Certificates that include the noRevAvail extension <bcp14>MUST NOT</bcp14> include
certificate extensions that point to CRL
repositories or provide locations of OCSP responders.  If the noRevAvail extension is present in a
certificate, then:</t>
      <ul spacing="normal">
        <li>
          <t>The certificate <bcp14>MUST NOT</bcp14> also include the basic constraints certificate extension with the cA BOOLEAN set to TRUE; see <xref target="RFC5280" sectionFormat="of" section="4.2.1.9"/>.</t>
        </li>
        <li>
          <t>The certificate <bcp14>MUST NOT</bcp14> also include the CRL Distribution Points certificate extension; see <xref target="RFC5280" sectionFormat="of" section="4.2.1.13"/>.</t>
        </li>
        <li>
          <t>The certificate <bcp14>MUST NOT</bcp14> also include the Freshest CRL certificate extension; see <xref target="RFC5280" sectionFormat="of" section="4.2.1.15"/>.</t>
        </li>
        <li>
          <t>The Authority Information Access certificate extension, if present, <bcp14>MUST NOT</bcp14> include an id-ad-ocsp accessMethod; see <xref target="RFC5280" sectionFormat="of" section="4.2.2.1"/>.</t>
        </li>
      </ul>
      <t>If any of the above are violated in a certificate, then
the relying party <bcp14>MUST</bcp14> consider the certificate invalid.</t>
    </section>
    <section anchor="certification-path-validation">
      <name>Certification Path Validation</name>
      <t><xref section="6.1.3" sectionFormat="of" target="RFC5280"/> describes basic certificate processing within
the certification path validation procedures.  In particular, Step (a)(3) says:</t>
<blockquote>
At the current time, the certificate is not revoked.  This
may be determined by obtaining the appropriate CRL
(Section <xref target="RFC5280" section="6.3" sectionFormat="bare"/>), by status information, or by out-of-band
mechanisms.
</blockquote>
      <t>If the noRevAvail certificate extension specified in this document
is present or the ocsp-nocheck certificate extension <xref target="RFC6960"/> is present,
then Step (a)(3) is skipped.  Otherwise, revocation status determination of the
certificate is performed.</t>
    </section>
    <section anchor="asn1-mod">
      <name>ASN.1 Module</name>
      <t>This section provides an ASN.1 module <xref target="X.680"/> for the noRevAvail
certificate extension, and it follows the conventions established
in <xref target="RFC5912"/> and <xref target="RFC6268"/>.</t>
      <sourcecode type="asn.1" markers="true"><![CDATA[
  NoRevAvailExtn
    { iso(1) identified-organization(3) dod(6) internet(1)
      security(5) mechanisms(5) pkix(7) id-mod(0)
      id-mod-noRevAvail(110) }

  DEFINITIONS IMPLICIT TAGS ::=
  BEGIN

  IMPORTS
    EXTENSION
    FROM PKIX-CommonTypes-2009  -- RFC 5912
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-pkixCommon-02(57) } ;

  -- noRevAvail Certificate Extension

  ext-noRevAvail EXTENSION ::= {
    SYNTAX NULL
    IDENTIFIED BY id-ce-noRevAvail
    CRITICALITY { FALSE } }

  -- noRevAvail Certificate Extension OID

  id-ce OBJECT IDENTIFIER ::= { joint-iso-ccitt(2) ds(5) 29 }

  id-ce-noRevAvail OBJECT IDENTIFIER ::= { id-ce 56 }
 
  END
]]></sourcecode>
    </section>
    <section anchor="sec-cons">
      <name>Security Considerations</name>
      <t>The Security Considerations in <xref target="RFC5280"/> are relevant.</t>
      <t>When the noRevAvail certificate extension is included in a certificate,
all revocation checking is bypassed.  CA policies and practices <bcp14>MUST</bcp14> ensure
that the noRevAvail certificate extension is included only when appropriate, as any misuse or
misconfiguration could result in a relying party continuing to trust
a revoked certificate.  When such misuse is discovered, the only possible
remediation is the revocation of the CA.</t>
      <t>Some applications may have dependencies on revocation information or assume
its availability. The absence of revocation information may require modifications
or alternative configuration settings to ensure proper application security and
functionality.</t>
      <t>The absence of revocation information limits the ability of relying
parties to detect compromise of end-entity keying material or malicious
certificates. It also limits their ability to detect CAs that are not following
the security practices, certificate issuance policies, and operational
controls that are specified in the Certificate Policy (CP) or the
Certification Practices Statement (CPS) <xref target="RFC3647"/>.</t>

      <t>Since the absence of revocation information may limit the ability to
detect compromised keying material or malicious certificates, relying
parties need confidence that the CA is following security practices,
implementing certificate issuance policies, and properly using
operational controls.  Relying parties may evaluate CA reliability,
monitor CA performance, and observe CA incident response capabilities.</t>
      <section anchor="short-lived-certificates">
        <name>Short-Lived Certificates</name>
        <t>No revocation information is made available for short-lived certificates
because the certificate validity period is shorter than the time needed to
detect, report, and distribute revocation information. If the noRevAvail
certificate extension is incorrectly used for a certificate validity
period that is not adequately short, it creates a window of opportunity for
attackers to exploit a compromised private key. Therefore, it is crucial
to carefully assess and set an appropriate certificate validity period
before implementing the noRevAvail certificate extension.</t>
      </section>
      <section anchor="long-lived-certificates">
        <name>Long-Lived Certificates</name>
        <t>No revocation information is made available for some long-lived certificates
that contain information that never changes.  For example, IDevID certificates
<xref target="IEEE802.1AR"/> are included in devices at the factory, and they are used to
obtain LDevID certificates <xref target="IEEE802.1AR"/> in an operational environment. In this
case, cryptographic algorithms that are expected to remain secure
for the expected lifetime of the device need to be chosen. If the noRevAvail certificate extension is
used, the CA has no means of notifying the relying party about compromise of the
factory-installed keying material.</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>IANA has assigned the following object identifier (OID) for the ASN.1 module (see <xref target="asn1-mod"/>) within the "SMI Security for PKIX Module Identifier"
(1.3.6.1.5.5.7.0) registry:</t>

<table anchor="iana-table"> 
  <name></name> 
  <thead>
    <tr>
      <th>Decimal</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>110</td>
      <td>id-mod-noRevAvail</td>
    </tr>
  </tbody>
</table>

    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>

	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml"/>

        <reference anchor="X.509-2019-TC2" target="https://www.itu.int/rec/T-REC-X.509-202310-I!Cor2">
          <front>
            <title>Information Technology -- Open Systems Interconnection -- The Directory: Public-key and attribute certificate frameworks -- Technical Corrigendum 2</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2023" month="October"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.509-2019/Cor.2-2023"/>
        </reference>

        <reference anchor="X.680" target="https://www.itu.int/rec/T-REC-X.680">
          <front>
            <title>Information technology -- Abstract Syntax Notation One (ASN.1): Specification of basic notation</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.680"/>
          <seriesInfo name="ISO/IEC" value="8824-1:2021"/>
        </reference>

        <reference anchor="X.690" target="https://www.itu.int/rec/T-REC-X.690">
          <front>
            <title>Information technology -- ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.690"/>
          <seriesInfo name="ISO/IEC" value="8825-1-2021"/>
        </reference>

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>

      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>

        <reference anchor="IEEE802.1AR" target="https://ieeexplore.ieee.org/document/8423794">
          <front>
            <title>IEEE Standard for Local and Metropolitan Area Networks - Secure Device Identity</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date year="2018" month="August" day="02"/>
          </front>
          <seriesInfo name="IEEE" value="802.1AR-2018"/>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2018.8423794"/>
        </reference>

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2459.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3281.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3647.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5912.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6268.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6960.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8555.xml"/>

        <reference anchor="X.509-1988" target="https://www.itu.int/rec/T-REC-X.509-198811-S">
          <front>
            <title>The Directory - Authentication Framework</title>
            <author>
              <organization>CCITT</organization>
            </author>
            <date year="1988" month="November"/>
          </front>
          <seriesInfo name="CCITT Recommendation" value="X.509-1988"/>
        </reference>

        <reference anchor="X.509-1997" target="https://www.itu.int/rec/T-REC-X.509-199708-S">
          <front>
            <title>Information technology -- Open Systems Interconnection -- The Directory: Authentication framework</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="1997" month="August"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.509-1997"/>
        </reference>

        <reference anchor="X.509-2000" target="https://www.itu.int/rec/T-REC-X.509-200003-S">
          <front>
            <title>Information Technology -- Open Systems Interconnection -- The Directory: Public-key and attribute certificate frameworks</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2000" month="March"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.509-2000"/>
        </reference>

        <reference anchor="X.509-2019" target="https://www.itu.int/rec/T-REC-X.509-201910-I">
          <front>
            <title>Information Technology -- Open Systems Interconnection -- The Directory: Public-key and attribute certificate frameworks</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2019" month="October"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.509-2019"/>
        </reference>

      </references>
    </references>
    <section anchor="acknowledgements" numbered="false">
      <name>Acknowledgements</name>
      <t>Many thanks to <contact fullname="Erik Anderson"/> for his efforts to make the noRevAvail
certificate extension available for use with public key end-entity
certificates as well as attribute certificates.</t>
      <t>Many thanks to (in alphabetical order)
<contact fullname="Corey Bonnell"/>,
<contact fullname="Hendrik Brockhaus"/>,
<contact fullname="Tim Hollebeek"/>,
<contact fullname="Mike Ounsworth"/>,
<contact fullname="Seo Suchan"/>,
<contact fullname="Carl Wallace"/>,
<contact fullname="Éric Vyncke"/>, and 
<contact fullname="Paul Wouters"/>
for their review and insightful comments.</t>
    </section>
  </back>

</rfc>
