<?xml version="1.0" encoding="utf-8"?>
<?xml-model href="rfc7991bis.rnc"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;"> <!-- word joiner -->
  <!ENTITY mu      "&#956;"> <!-- Greek letter mu -->
]>

<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="info"
  docName="draft-jenkins-cnsa2-pkix-profile-04"
  ipr="trust200902"
  obsoletes="8603"
  submissionType="independent"
  xml:lang="en"
  version="3">


  <front>
    <title abbrev="CNSA2 Cert and CRL Profile">Commercial National Security Algorithm (CNSA) Suite 2.0 Profile for Certificates and Certificate Revocation Lists</title>

    <seriesInfo name="Internet-Draft" value="draft-jenkins-cnsa2-pkix-profile-04"/>
   
    <author fullname="Michael Jenkins" initials="M" surname="Jenkins">
      <organization abbrev="NSA-CCSS" showOnFrontPage="true">NSA Center for Cybersecurity Standards</organization>
      <address>
        <email>mjjenki@cyber.nsa.gov</email>  
      </address>
    </author>
	
     <author fullname="Alison Becker" initials="A" surname="Becker">
      <organization></organization>
      <address>
        <email>aebecke@uwe.nsa.gov</email>
      </address>
    </author>

    <date year="2026"/>

    <area>Security</area>
    <workgroup>Network Working Group</workgroup>

    <keyword>CNSA</keyword>
    <keyword>NSS</keyword>
    <keyword>certificate</keyword>
    <keyword>crl</keyword>

    <abstract>
      <t>This document specifies a profile of X.509 v3 Certificates and X.509 v2 Certificate Revocation Lists for applications that use Commercial National Security Algorithm Suite published by the United States Government.
</t>
      <t>The profile applies to the capabilities, configuration, and operation of all components of US National Security Systems that employ such X.509 certificates.  US National Security Systems are described in NIST Special Publication 800-59. It is also appropriate for all other US Government systems that process high-value information.
</t>
      <t>This memo is not an IETF standard, and does not represent IETF community consensus. The profile is made publicly available for use by developers and operators of these and any other system deployments. This document obsoletes <xref target="RFC8603"/>, the CNSA 1.0 guidance.
</t>
    </abstract>
 
  </front>


  <middle>
    
     <section anchor="intro">
        <name>Introduction</name>

        <t>This document specifies a base profile for X.509 v3 Certificates and X.509 v2 Certificate Revocation Lists (CRLs) for use by applications that support the United States National Security Agency's Commercial National Security Algorithm (CNSA) Suite 2.0 <xref target="cnsafaq"/>. The profile applies to the capabilities, configuration, and operation of all components of US National Security Systems that employ such X.509 certificates. US National Security Systems are described in NIST Special Publication 800-59 <xref target="SP80059"/>. The profile is also appropriate for all other US Government systems that process high-value information. It is made publicly available for use by developers and operators of these and any other system deployments.</t>

        <t>This document does not define any cryptographic algorithm; instead, it defines a CNSA-compliant profile of "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile" <xref target="RFC5280"/>. It applies to all CNSA Suite solutions that make use of X.509 v3 Certificates or X.509 v2 CRLs. The reader is assumed to have familiarity with <xref target="RFC5280"/>.  All MUST-level requirements of <xref target="RFC5280"/> apply throughout this profile and are generally not repeated here. In cases where a MUST-level requirement is repeated for emphasis, the text notes the requirement is "in adherence with <xref target="RFC5280"/>".  This profile contains changes that elevate some SHOULD-level options in <xref target="RFC5280"/> to MUST-level and also contains changes that elevate some MAY-level options in <xref target="RFC5280"/> to SHOULD-level or MUST-level. All options from <xref target="RFC5280"/> that are not listed in this profile remain at the requirement level of <xref target="RFC5280"/>.</t>
		
		<t>This memo is not an IETF standard, and does not represent IETF community consensus.</t>

        <t>This document obsoletes the CSNA 1.0 guidance in RFC 8603 <xref target="RFC8603"/>.</t>

     </section>   <!-- Introduction -->

       <section anchor="terms">   
         <name>Terminology</name>

         <t>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 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here. Normative language does not apply beyond the scope of this profile.</t>
		 
		 <t>This is a profile of PKIX (<xref target="RFC5280"/> and other RFCs as cited). Therefore, the requirements language in this memo may be different than that found in the underlying standards.</t>
		 
		 <t>All references to "CNSA" in this document refer to CNSA 2.0 <xref target="cnsafaq" format="default"/>, unless stated otherwise.</t>

       </section>   <!-- Terminology -->

       <section anchor="cnsa">
         <name>The Commercial National Security Algorithm Suite</name>

         <t>The National Security Agency (NSA) profiles commercial cryptographic algorithms and protocols as part of its mission to support secure, interoperable communications for US Government National Security Systems.  To this end, it publishes guidance both to assist with transitioning the United States Government to new algorithms and to provide vendors, and the Internet community in general, with information concerning their proper use and configuration within the scope of US Government National Security Systems.</t>

         <t>The CNSA Suite is the set of approved commercial algorithms that can be used by vendors and IT users to meet cybersecurity and interoperability requirements for NSS.  The first suite of CNSA Suite algorithms, "Suite B", established a baseline for use of commercial algorithms to protect classified information. The next suite, "CNSA 1.0", served as a bridge between the original set and a fully post-quantum cryptographic capability. The current suite, "CNSA 2.0", seeks to provide fully quantum-resistant protection <xref target="cnsafaq"/>.</t>
		 
<!-- Pursuant to the "National Security Memorandum on Promoting United States Leadership in Quantum Computing While Mitigating Risks to Vulnerable Cryptographic Systems" <xref target="NSM-10"/>, t -->

         <t>The National Institute for Standards and Technology (NIST) has standardized several post-quantum asymmetric algorithms. From these, NSA has selected two: ML-DSA-87 <xref target="FIPS204"/> for signing and ML-KEM-1024 <xref target="FIPS203"/> for key establishment. With SHA-384 (preferred, or alternatively SHA-512), AES-256, and LMS/XMSS, these comprise the CNSA Suite 2.0.</t>

         <t>The NSA is authoring a set of RFCs, including this one, to provide updated guidance for using CNSA 2.0 algorithms in certain IETF protocols.  These RFCs can be used in conjunction with other RFCs and cryptographic guidance (e.g., NIST Special Publications) to properly protect Internet traffic and data-at-rest for US Government National Security Systems.</t>

      </section>   <!-- The Commercial National Security Algorithm Suite -->


      <section anchor="genreq">
         <name>General Requirements</name>

         <t>The goal of this document is to define a base set of requirements for certificates and CRLs to support interoperability among CNSA Suite solutions.  Specific communities, such as those associated with US National Security Systems, may define community profiles that further restrict certificate and CRL contents by mandating the presence of extensions that are optional in this base profile, defining new optional or critical extension types, or restricting the values and/or presence of fields within existing extensions.  However, communications between distinct communities MUST conform with the requirements specified in this document when interoperability is desired.  Applications MAY add requirements for additional non-critical extensions, but they MUST NOT assume that a remote peer will be able to process them.</t>

        <t>The reader is assumed to have familiarity with these documents:</t>

        <ul>

           <li><xref target="RFC9881"/> for the algorithm identifier, and the syntax and semantics for the Subject Public Key Information field in certificates that support ML-DSA-87 and</li>

           <li><xref target="RFC9935"/> for the algorithm identifier, and the syntax and semantics for the Subject Public Key Information field in certificates that support ML-KEM-1024.</li>

        </ul>
		
         <t>Every CNSA Suite certificate MUST use the X.509 v3 format and contain one of the following as its subject public key:</t>

         <ul>
            <li>A ML-DSA-87 signature verification key.</li>
            <li>A ML-KEM-1024 public encapsulation key.</li>
         </ul>

         <t>The signature applied to all CNSA Suite certificates and CRLs MUST be made with a ML-DSA-87 signing key. The ML-DSA algorithm incorporates an internal hashing function, so there is no need to apply a hashing algorithm before signing. Where an application or implementation makes it more efficient to perform hashing externally, the external-μ mechanism described in Step 6 of Algorithm 7 of <xref target="FIPS204" /> and Section 8 of <xref target="RFC9881" /> MAY be used. Any other hashing outside of ML-DSA or ML-KEM MUST use either SHA-384 or SHA-512; SHA-384 SHOULD be used. HashML-DSA is not permitted.</t>
		
      </section>   <!-- General Requirements and Assumptions -->

      <section anchor="oids">
         <name>CNSA Suite Object Identifiers</name>

         <t>The object identifiers for use of CNSA 2.0 Suite in certificates and CRLs are defined in <xref target="RFC9881"/> and <xref target="RFC9935"/>. These OIDs are used to identify both the algorithm associated with the public key (as part of the Subject Public Key Info field) and the signature on a certificate or CRL (as part of the signatureAlgorithm field in a Certificate or CertificateList and part of the signature field in a TBSCertificate and TBSCertList). They are repeated here for convenience:</t>

         <sourcecode>
            <![CDATA[
   id-ml-dsa-87 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) 
      country(16) us(840) organization(1) gov(101) csor(3) 
      nistAlgorithm(4) sigAlgs(3) 19 }

   id-alg-ml-kem-1024 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) 
      country(16) us(840) organization(1) gov(101) csor(3) 
      nistAlgorithm(4) kems(4) 3 }
            ]]>
         </sourcecode>
      </section>   <!-- CNSA Suite Object Identifiers -->

      <section anchor="reqval">
         <name>CNSA Suite Base Certificate Required Values</name>

         <t>This section specifies changes to the basic requirements in <xref target="RFC5280"/> for applications that create or use CNSA Suite certificates. Note that <xref target="RFC5280"/> has varying mandates for marking extensions as critical or non-critical. This profile changes some of those mandates for extensions that are included in CNSA Suite certificates.</t>

         <section anchor="sigalg">
            <name>signature and signatureAlgorithm</name>

            <t>ML-DSA is indicated by the id-ml-dsa-87 OID in the AlgorithmIdentifier of the signature field in a TBSCertificate and TBSCertList, and by the signatureAlgorithm field in a Certificate and CertificateList.</t>
      
            <t> The contents of the parameters component for each algorithm MUST be absent.</t>
         </section>   <!-- signatureAlgorithm -->

         <section anchor="sigval">
            <name>signatureValue</name>

            <t>ML-DSA digital signature generation is described in <xref target="FIPS204"/>. It is converted from a byte string to a DER encoded BIT STRING in the signatureValue field of a Certificate or CertificateList. Stipulations for signature generation from <xref target="RFC9881"/> MUST be followed.</t>
         </section>   <!-- signatureValue -->

         <section anchor="ver">
            <name>version</name>

            <t>For this profile, the version field MUST be set to INTEGER value 0x02, indicating that the certificate conforms to X.509 version 3.</t>
         </section>   <!-- version -->

         <section anchor="spki">
            <name>subjectPublicKeyInfo</name>
            <t>For signature verification keys, the algorithm ID id-ml-dsa-87 MUST be used.</t>
            <t>For key establishment keys, the algorithm ID id-alg-ml-kem-1024 MUST be used.</t>
            <t>In either case, the contents of the parameters component of the AlgorithmIdentifier in this field MUST be absent.</t>
         </section>   <!-- subjectPublicKeyInfo -->

      </section>   <!-- CNSA Suite Base Certificate Required Values -->

      <section anchor="cexttypes">
         <name>Certificate Extensions for Particular Types of Certificates</name>

         <t>Different types of certificates in this profile have different required and recommended extensions.  Those are listed in this section. Those extensions from <xref target="RFC5280"/> not explicitly listed in this profile remain at the requirement levels of <xref target="RFC5280"/>.</t>

         <section anchor="ssCA">
            <name>CNSA Suite Self-Signed CA Certificates</name>

            <t>In adherence with <xref target="RFC5280"/>, self-signed CA certificates in this profile MUST contain the subjectKeyIdentifier, keyUsage, and basicConstraints extensions.</t>

            <t>The keyUsage extension MUST be marked as critical. The keyCertSign and cRLSign bits MUST be set.  The digitalSignature and nonRepudiation bits MAY be set. All other bits MUST NOT be set.</t>

            <t>In adherence with <xref target="RFC5280"/>, the basicConstraints extension MUST be marked as critical. The cA boolean MUST be set to indicate that the subject is a CA, and the pathLenConstraint MUST NOT be present.</t>

         </section>   <!-- CNSA Suite Self-Signed CA Certificates -->

         <section anchor="nonssCA">
            <name>CNSA Suite Non-Self-Signed CA Certificates</name>

            <t>Non-self-signed CA Certificates in this profile MUST contain the authorityKeyIdentifier, keyUsage, and basicConstraints extensions. If there is a policy to be asserted, then the certificatePolicies extension MUST be included.</t>

            <t>The keyUsage extension MUST be marked as critical.  The keyCertSign and CRLSign bits MUST be set.  The digitalSignature and nonRepudiation bits MAY be set.  All other bits MUST NOT be set.</t>

            <t>In adherence with <xref target="RFC5280"/>, the basicConstraints extension MUST be marked as critical.  The cA boolean MUST be set to indicate that the subject is a CA, and the pathLenConstraint subfield is OPTIONAL.</t>

            <t>If a policy is asserted, the certificatePolicies extension MUST be marked as non-critical, MUST contain the OIDs for the applicable certificate policies, and SHOULD NOT use the policyQualifiers option. If a policy is not asserted, the certificatePolicies extension MUST be omitted.</t>

            <t>Relying party applications conforming to this profile MUST be prepared to process the policyMappings, policyConstraints, and inhibitAnyPolicy extensions, regardless of criticality, following the  guidance in <xref target="RFC5280"/> when they appear in non-self-signed CA certificates.</t>

         </section>   <!-- CNSA Suite Non-Self-Signed CA Certificates -->

         <section anchor="eecert">
            <name>CNSA Suite End-Entity Signature and Key Establishment Certificates</name>

            <t>In adherence with <xref target="RFC5280"/>, end-entity certificates in this profile MUST contain the authorityKeyIdentifier and keyUsage extensions. End-entity certificates SHOULD contain the subjectKeyIdentifier extension.</t>

            <t>The keyUsage extension MUST be marked as critical.</t>

            <t>For end-entity digital signature certificates, the keyUsage extension MUST be set for digitalSignature.  The nonRepudiation bit MAY be set. All other bits in the keyUsage extension MUST NOT be set.</t>

            <t>For end-entity key establishment certificates, the keyUsage extension MUST be set for keyEncipherment. All other bits in the keyUsage extension MUST NOT be set.</t>
			
			<t>For all end-entity certificates, the extended key usage extension MUST be present to indicate the intended use of the certificate. The intended use MUST be consistent with the keyUsage extension. The anyExtendedKeyUsage MUST NOT be asserted.</t>

            <t>If a policy is asserted, the certificatePolicies extension MUST be marked as non-critical, MUST contain the OIDs for the applicable certificate policies, and SHOULD NOT use the policyQualifiers option. If a policy is not asserted, the certificatePolicies extension MUST be omitted.</t>

         </section>   <!-- CNSA Suite End-Entity Signature and Key Establishment Certificates -->

      </section>   <!-- Certificate Extensions for Particular Types of Certificates -->

      <section anchor="crlreq">
         <name>CNSA Suite CRL Requirements</name>

         <t>This CNSA Suite CRL profile is a profile of <xref target="RFC5280"/>.  There are changes in the requirements from <xref target="RFC5280"/> for the signatures on CRLs of this profile.</t>

         <t>The signatures on CRLs in this profile MUST follow the same rules from this profile that apply to signatures in the certificates. See <xref target="genreq"/> and <xref target="sigval"/>.</t>

      </section>   <!-- CNSA Suite CRL Requirements -->

      <section anchor="ocspreq">
         <name>Requirements for Other Revocation Notification Methods</name>

         <t>Revocation notification methods of any type MUST enable authentication of the issuing CA as the source of the revocation information. Specifically, an OCSP response MUST be signed conformant with <xref target="genreq"/>, and with section 4.2.2.2 of <xref target="RFC6960"/>.</t>

      </section>   <!-- Requirements for Other Revocation Notification Methods -->

      <section anchor="seccons">
         <name>Security Considerations</name>

         <t>This document introduces no security considerations beyond those in <xref target="RFC5280"/>, of which it is a profile.</t>

      </section>   <!-- Security Considerations -->

      <section anchor="ianacons">
         <name>IANA Considerations</name>

         <t>This document has no IANA actions.</t>

      </section>   <!-- IANA Considerations -->

  </middle>

  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        
        <reference anchor="cnsafaq" target="https://media.defense.gov/2022/Sep/07/2003071836/-1/-1/0/CSI_CNSA_2.0_FAQ_.PDF">
          <front>
            <title>The Commercial National Security Algorithm Suite 2.0 and Quantum Computing FAQ</title>
            <author>
              <organization>National Security Agency</organization>
            </author>
            <date year="2024" month="December"/>
          </front>
        </reference>

        <reference anchor="FIPS203" target="https://doi.org/10.6028/NIST.FIPS.203">
          <front>
            <title>Module-Lattice-Based Key Establishment Mechanism Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2023" month="August"/>
          </front>
          <seriesInfo name="Federal Information Processing Standard" value="203"/>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.203"/>
        </reference>       

        <reference anchor="FIPS204" target="https://doi.org/10.6028/NIST.FIPS.204">
          <front>
            <title>Module-Lattice-Based Digital Signature Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2023" month="August"/>
          </front>
          <seriesInfo name="Federal Information Processing Standard" value="204"/>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.204"/>
        </reference>       


        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/> <!-- RFC terms -->
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml"/> <!-- PKIX profile -->
		<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6960.xml"/> <!-- OCSP -->
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/> <!-- RFC terms2 -->
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8603.xml"/> <!-- CNSA1 PKIX -->
		<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9881.xml"/> <!-- ML-DSA certificates -->
		<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9935.xml"/> <!-- ML-KEM certificates -->
	
      </references>
 
      <references>
        <name>Informative References</name>
<!--       
        <reference anchor="NSM-10" target="https://www.whitehouse.gov/briefing-room/statements-releases/2022/05/04/national-security-memorandum-on-promoting-united-states-leadership-in-quantum-computing-while-mitigating-risks-to-vulnerable-cryptographic-systems/">
          <front>
            <title>National Security Memorandum on Promoting United States Leadership in Quantum Computing While Mitigating Risks to Vulnerable Cryptographic Systems</title>
            <author>
              <organization>United States, The White House</organization>
            </author>
            <date year="2022" month="May"/>
          </front>
          <seriesInfo name="NSM" value="10"/>
        </reference>
-->

        <reference anchor="SP80059" target="https://csrc.nist.gov/publications/detail/sp/800-59/final">
          <front>
            <title>Guideline for Identifying an Information System as a National Security System</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2003" month="August"/>
          </front>
          <seriesInfo name="Special Publication" value="59"/>
          <seriesInfo name="DOI" value="10.6028/NIST.SP.800-59"/>
        </reference>
      
      </references>
    </references>
    
 </back>
</rfc>