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


<!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-cooley-cnsa-dtls-tls-profile-07" number="9151" obsoletes="" updates="" submissionType="independent" category="info" xml:lang="en" tocInclude="true" tocDepth="2"
symRefs="true" sortRefs="true" version="3">


<front>

    <title abbrev="CNSA Suite Profile for (D)TLS">Commercial National Security Algorithm (CNSA) Suite Profile for TLS and DTLS 1.2 and 1.3</title>
    <seriesInfo name="RFC" value="9151"/>
    <author fullname="Dorothy Cooley" initials="D." surname="Cooley">
      <organization abbrev="NSA">National Security Agency</organization>
      <address>
        <email>decoole@nsa.gov</email>
      </address>
    </author>
    <date year="2022" month="April" />
    
<abstract>
      <t>This document defines a base profile for TLS protocol versions 1.2
      and 1.3 as well as DTLS protocol versions 1.2 and 1.3 for use with the
      US Commercial National Security Algorithm (CNSA) Suite.
      </t>
      <t>The profile applies to the capabilities, configuration, and operation
      of all components of US National Security Systems that use TLS or DTLS.
      It is also appropriate for all other US Government systems that process
      high-value information.
</t>
      <t>The profile is made publicly available here for use by developers and
      operators of these and any other system deployments.
</t>
    </abstract>
  </front>


<middle>

<section anchor="intro" numbered="true" toc="default">
      <name>Introduction</name>
      <t>This document specifies a profile of TLS version 1.2 <xref target="RFC5246" format="default"/> and TLS version 1.3 <xref target="RFC8446" format="default"/> as well as DTLS version 1.2 <xref target="RFC6347" format="default"/> and DTLS version 1.3 <xref target="RFC9147" format="default"/> for use by applications that support the National Security Agency's (NSA) Commercial National Security Algorithm (CNSA) Suite <xref target="CNSA" format="default"/>.  The profile applies to the capabilities, configuration, and operation of all components of US National Security Systems <xref target="SP80059" format="default"/>. It 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 new cipher suites; instead, it defines a CNSA-compliant profile of TLS and DTLS, and the cipher suites defined in <xref target="RFC5288" format="default"/>, <xref target="RFC5289" format="default"/>, and <xref target="RFC8446" format="default"/>.  This profile uses only algorithms in the CNSA Suite.
</t>
      <t>The reader is assumed to have familiarity with the TLS 1.2 and 1.3 as well as the DTLS 1.2 and 1.3 protocol specifications: <xref target="RFC5246" format="default"/>, <xref target="RFC8446" format="default"/>,  <xref target="RFC6347" format="default"/>, and <xref target="RFC9147" format="default"/>, respectively.  All <bcp14>MUST</bcp14>-level requirements from the protocol documents apply throughout this profile; they are generally not repeated.  This profile contains changes that elevate some <bcp14>SHOULD</bcp14>-level options to <bcp14>MUST</bcp14>-level; this profile also contains changes that elevate some <bcp14>MAY</bcp14>-level options to <bcp14>SHOULD</bcp14>-level or <bcp14>MUST</bcp14>-level.  All options that are not mentioned in this profile remain at their original requirement level.
</t>
    </section>




<section anchor="cnsa" numbered="true" toc="default">
      <name>CNSA</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 National Security Systems. To this
      end, it publishes guidance both to assist with the US Government
      transition to new algorithms and to provide vendors -- and the Internet
      community in general -- with information concerning their proper use and
      configuration.
</t>
      <t>Recently, cryptographic transition plans have become overshadowed by the prospect of the development of a cryptographically relevant quantum computer.  The NSA has established the CNSA Suite to provide vendors and IT users near-term flexibility in meeting their Information Assurance (IA) interoperability requirements. The purpose behind this flexibility is to avoid having vendors and customers make two major transitions in a relatively short timeframe, as we anticipate a need to shift to quantum-resistant cryptography in the near future.
</t>
      <t>The NSA is authoring a set of RFCs, including this one, to provide
      updated guidance concerning the use of certain commonly available
      commercial algorithms in 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 National Security Systems.
</t>
    </section>

<section anchor="terms" numbered="true" toc="default">
      <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" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they appear in all capitals, as shown here.
</t>



      <t>"ECDSA" and "ECDH" refer to the use of the Elliptic Curve Digital Signature Algorithm (ECDSA) and Elliptic Curve Diffie Hellman (ECDH), respectively. ECDSA and ECDH are used with the NIST P-384 curve (which is based on a 384-bit prime modulus) and the SHA-384 hash function.  Similarly, "RSA" and "DH" refer to Rivest-Shamir-Adleman (RSA) and Finite Field Diffie-Hellman (DH), respectively. RSA and DH are used with a 3072-bit or 4096-bit modulus.  When RSA is used for digital signature, it is used with the SHA-384 hash function.
</t>
      <t>Henceforth, this document refers to TLS versions 1.2 and 1.3 and DTLS versions 1.2 and 1.3 collectively as "(D)TLS".
</t>
    </section>



<section anchor="cnsa-suite" numbered="true" toc="default">
      <name>CNSA Suites</name>
      <t><xref target="CNSA" format="default"/> approves the use of both Finite Field and elliptic curve versions of the DH key agreement algorithm as well as RSA-based key establishment. <xref target="CNSA" format="default"/> also approves certain versions of the RSA and elliptic curve digital signature algorithms. The approved encryption techniques include the Advanced Encryption Standard (AES) used with a 256-bit key in an Authenticated Encryption with Associated Data (AEAD) mode.
</t>
      <t>In particular, CNSA includes the following:

</t>

<dl newline="true">

<dt>Encryption:
</dt>
<dd>AES <xref target="AES" format="default"/> (with key size 256 bits),
operating in Galois/Counter Mode (GCM) <xref target="GCM" format="default"/>
</dd>


<dt>Digital Signature:
</dt>
<dd><t>ECDSA <xref target="DSS" format="default"/> (using the NIST P-384
elliptic curve)</t>
            <t>RSA <xref target="DSS" format="default"/> (with a modulus of
            3072 bits or 4096 bits)</t>

</dd>


<dt>Key Establishment (includes key agreement and key transport):
</dt>
<dd>
  <t>ECDH <xref target="PWKE-A" format="default"/> (using the NIST P-384
  elliptic curve)</t>
            <t>DH <xref target="PWKE-A" format="default"/> (with a prime
            modulus of 3072 or 4096 bits)</t>
            <t>RSA <xref target="PWKE-B" format="default"/> (with a modulus of
            3072 or 4096 bits, but only in (D)TLS 1.2)</t>
</dd>

</dl>

<t><xref target="CNSA" format="default"/> also approves the use of SHA-384 <xref target="SHS" format="default"/> as the hash algorithm for mask generation, signature generation, Pseudorandom Function (PRF) in TLS 1.2 and HMAC-based Key Derivation Function (HKDF) in TLS 1.3.
</t>

      <section anchor="tls-ke" numbered="true" toc="default">
        <name>CNSA (D)TLS Key Establishment Algorithms</name>
        <t>The following combination of algorithms and key sizes are used in CNSA (D)TLS:


</t>
        <ul empty="true" spacing="normal">
          <li>AES with 256-bit key, operating in GCM mode</li>
          <li>ECDH <xref target="PWKE-A" format="default"/> using the
          Ephemeral Unified Model Scheme with cofactor set to 1 (see Section
          6.1.2.2 in <xref target="PWKE-A" format="default"/>)</li>
          <li>TLS PRF/HKDF with SHA-384 <xref target="SHS" format="default"/></li>
        </ul>
        <t>Or

</t>
        <ul empty="true" spacing="normal">
          <li>AES with 256-bit key, operating in GCM mode</li>
          <li>RSA key transport using 3072-bit or 4096-bit modulus <xref target="PWKE-B" format="default"/><xref target="RFC8017" format="default"/></li>
          <li>TLS PRF/HKDF with SHA-384 <xref target="SHS" format="default"/></li>
        </ul>
        <t>Or

</t>
        <ul empty="true" spacing="normal">
          <li>AES with 256-bit key, operating in GCM mode</li>
          <li>DH using dhEphem with domain parameters specified below in <xref target="ff-groups" format="default"/> (see Section 6.1.2.1 in <xref target="PWKE-A" format="default"/>)</li>
          <li>TLS PRF/HKDF with SHA-384 <xref target="SHS" format="default"/></li>
        </ul>
        <t>The specific CNSA-compliant cipher suites are listed in <xref target="compliance"/>.
</t>
      </section>


<section anchor="tls-auth" numbered="true" toc="default">
        <name>CNSA TLS Authentication</name>
        <t>For server and/or client authentication, CNSA (D)TLS <bcp14>MUST</bcp14> generate and verify either ECDSA signatures or RSA signatures.
</t>
        <t>In all cases, the client <bcp14>MUST</bcp14> authenticate the
        server.  The server <bcp14>MAY</bcp14> also authenticate the client, as
        needed by the specific application.
</t>
        <t>The public keys used to verify these signatures <bcp14>MUST</bcp14>
        be contained in a certificate (see <xref target="certs"/> for more
        information).</t>
      </section>


</section>



<section anchor="compliance" numbered="true" toc="default">
      <name>CNSA Compliance and Interoperability Requirements</name>
      <t>CNSA (D)TLS <bcp14>MUST NOT</bcp14> use TLS versions prior to (D)TLS
      1.2 in a CNSA-compliant system.  CNSA (D)TLS servers and clients
      <bcp14>MUST</bcp14> implement and use either (D)TLS version 1.2 <xref
      target="RFC5246" format="default"/> <xref target="RFC6347"
      format="default"/> or (D)TLS version 1.3 <xref target="RFC8446"
      format="default"/> <xref target="RFC9147" format="default"/>.
</t>
      <section anchor="ecc-curves" numbered="true" toc="default">
        <name>Acceptable Elliptic Curve Cryptography (ECC) Curves</name>
        <t>The elliptic curves used in the CNSA Suite appear in the literature
        under two different names <xref target="DSS" format="default"/> <xref
        target="SECG" format="default"/>.  For the sake of clarity, both names
        are listed below:
</t>




<table anchor="elliptic_curve_table"> 
  <name>Elliptic Curves in CNSA Suite</name>   
  <thead>
    <tr>
      <th>Curve</th>   
      <th>NIST name</th>
      <th>SECG name</th>
    </tr>
  </thead>
  <tbody>         
    <tr>
      <td>P-384</td>
      <td>nistp384</td>
      <td>secp384r1</td>
    </tr>

  </tbody>
</table>

        <t><xref target="RFC8422" format="default"/> defines a variety of elliptic curves.  CNSA (D)TLS connections <bcp14>MUST</bcp14> use secp384r1 (also called nistp384), and the uncompressed form <bcp14>MUST</bcp14> be used, as required by <xref target="RFC8422" format="default"/> and <xref target="RFC8446" format="default"/>.
</t>
        <t>Key pairs <bcp14>MUST</bcp14> be generated following Section 5.6.1.2 of <xref target="PWKE-A" format="default"/>.
</t>
      </section>


<section anchor="rsa-schemes" numbered="true" toc="default">
        <name>Acceptable RSA Schemes, Parameters, and Checks</name>
        <t><xref target="CNSA" format="default"/> specifies a minimum modulus size of 3072 bits; however, only two modulus sizes (3072 bits and 4096 bits) are supported by this profile. 
</t>


<dl newline="true">

<dt>For (D)TLS 1.2:
</dt>
<dd><t>For certificate signatures, RSASSA-PKCS1-v1_5 <xref target="RFC8017"           
format="default"/> <bcp14>MUST</bcp14> be supported, and RSASSA-PSS <xref target="DSS"          
format="default"/> <bcp14>SHOULD</bcp14> be supported.</t>

              <t>For signatures in TLS handshake messages, RSASSA-PKCS1-v1_5 <xref              
target="RFC8017" format="default"/> <bcp14>MUST</bcp14> be supported, and RSASSA-PSS <xref      
target="DSS" format="default"/> <bcp14>SHOULD</bcp14> be supported.</t>
              <t>For key transport, RSAES-PKCS1-v1_5 <xref target="RFC8017"                    
format="default"/> <bcp14>MUST</bcp14> be supported.</t>
</dd>


<dt>For (D)TLS 1.3:
</dt>
<dd><t>For certificate signatures, RSASSA-PKCS1-v1_5 <xref target="RFC8017"
format="default"/> <bcp14>MUST</bcp14> be supported, and RSASSA-PSS <xref
target="DSS" format="default"/> <bcp14>SHOULD</bcp14> be supported.</t>
              <t>For signatures in TLS handshake messages, RSASSA-PSS <xref
              target="DSS" format="default"/> <bcp14>MUST</bcp14> be
              supported.</t>
              <t>For key transport, TLS 1.3 does not support RSA key
              transport.</t>
</dd>


<dt>For all versions of (D)TLS:
</dt>

<dd> 
  <t>RSA exponent e <bcp14>MUST</bcp14> satisfy
  2<sup>16</sup>&lt;e&lt;2<sup>256</sup> and be odd per <xref target="DSS"
  format="default"/>.</t>
   <t>If RSASSA-PSS is supported (using rsa_pss_rsae_sha384 for example), then
   the implementation <bcp14>MUST</bcp14> assert rsaEncryption as the public
   key algorithm, the hash algorithm (used for both mask generation and
   signature generation) <bcp14>MUST</bcp14> be SHA-384, the mask generation
   function 1 (MGF1) from <xref target="RFC8017" format="default"/>
   <bcp14>MUST</bcp14> be used, and the salt length <bcp14>MUST</bcp14> be 48
   octets.</t>
</dd>


</dl>


      </section>



<section anchor="ff-groups" numbered="true" toc="default">
        <name>Acceptable Finite Field Groups</name>
        <t><xref target="CNSA" format="default"/> specifies a minimum modulus size of 3072 bits; however, only two modulus sizes (3072 bits and 4096 bits) are supported by this profile. 
</t>
        <t>Ephemeral key pairs <bcp14>MUST</bcp14> be generated following Section 5.6.1.1.1 of <xref target="PWKE-A" format="default"/> using the approved safe prime groups specified in <xref target="RFC7919" format="default"/> for DH ephemeral key agreement.  The named groups are:	

</t>
        <ul empty="true" spacing="normal">
          <li>ffdhe3072 (ID=257)</li>
          <li>ffdhe4096 (ID=258)</li>
        </ul>
      </section>



<section anchor="certs" numbered="true" toc="default">
        <name>Certificates</name>
        <t>Certificates used to establish a CNSA (D)TLS connection <bcp14>MUST</bcp14> be signed with ECDSA or RSA and <bcp14>MUST</bcp14> be compliant with the CNSA Suite Certificate and Certificate Revocation List (CRL) Profile <xref target="RFC8603" format="default"/>.
</t>
      </section>


</section>
   


<section anchor="tls12-reqts" numbered="true" toc="default">
      <name>(D)TLS 1.2 Requirements</name>
      <t>Although TLS 1.2 has technically been obsoleted by the IETF in favor of TLS 1.3, many implementations and deployments of TLS 1.2 will continue to exist.  For the cases where TLS 1.2 continues to be used, implementations <bcp14>MUST</bcp14> use <xref target="RFC5246" format="default"/> and <bcp14>SHOULD</bcp14> implement the updates specified in <xref target="RFC8446" format="default"/> (outlined in Section <xref sectionFormat="bare" section="1.3" target="RFC8446"/> of that document).
</t>
      <t>The CNSA (D)TLS 1.2 client <bcp14>MUST</bcp14> offer at least one of these cipher suites:

</t>
      <ul empty="true" spacing="normal">
        <li>TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 <xref target="RFC5289" format="default"/> <xref target="RFC8422" format="default"/></li>
        <li>TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 <xref target="RFC5289" format="default"/> <xref target="RFC8422" format="default"/></li>
        <li>TLS_RSA_WITH_AES_256_GCM_SHA384 <xref target="RFC5288" format="default"/></li>
        <li>TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 <xref target="RFC5288" format="default"/> <xref target="RFC7919" format="default"/></li>
      </ul>
      <t>The CNSA cipher suites listed above <bcp14>MUST</bcp14> be the first
      (most preferred) cipher suites in the ClientHello message.
</t>
      <t>A CNSA (D)TLS client that offers interoperability with servers that are not CNSA compliant <bcp14>MAY</bcp14> offer additional cipher suites, but any additional cipher suites <bcp14>MUST</bcp14> appear after the CNSA cipher suites in the ClientHello message.
</t>
      <t>A CNSA (D)TLS server <bcp14>MUST</bcp14> accept one of the CNSA
      Suites above if they are offered in the ClientHello message before
      accepting a non-CNSA-compliant suite.
</t>
      <t>If interoperability is not desired with non-CNSA-compliant clients or
      servers, then the session <bcp14>MUST</bcp14> fail if no CNSA Suites are
      offered or accepted.
</t>
      <section anchor="ext-master-secret" numbered="true" toc="default">
        <name>The "extended_master_secret" Extension</name>
        <t>A CNSA (D)TLS client <bcp14>SHOULD</bcp14> include and a CNSA
        (D)TLS server <bcp14>SHOULD</bcp14> accept the
        "extended_master_secret" extension as specified in <xref
        target="RFC7627" format="default"/>. See <xref target="RFC7627"
        sectionFormat="of" section="1" format="default"/> for security
        concerns when this extension is not used.
</t>
      </section>


<section anchor="tls12-sig-algs" numbered="true" toc="default">
        <name>The "signature_algorithms" Extension</name>
        <t>A CNSA (D)TLS client <bcp14>MUST</bcp14> include and a CNSA (D)TLS server <bcp14>MUST</bcp14> also accept the "signature_algorithms" extension. The CNSA (D)TLS client <bcp14>MUST</bcp14> offer and the 
  CNSA (D)TLS server <bcp14>MUST</bcp14> also accept at least one of the following values in the "signature_algorithms" extensions as specified in <xref target="RFC8446" format="default"/>:

        </t>
        <ul empty="true" spacing="normal">
          <li>ecdsa_secp384r1_sha384</li>
          <li>rsa_pkcs1_sha384</li>
        </ul>
        <t>And, if supported, the client <bcp14>SHOULD</bcp14> offer and/or the server <bcp14>SHOULD</bcp14> also accept:

        </t>
        <ul empty="true" spacing="normal">
          <li>rsa_pss_pss_sha384</li>
          <li>rsa_pss_rsae_sha384</li>
        </ul>
        <t>Following the guidance in <xref target="RFC8603" format="default"/>, CNSA (D)TLS servers <bcp14>MUST</bcp14> only accept ECDSA or RSA for signatures on ServerKeyExchange messages and for certification path validation.
</t>
        <t>Other client offerings <bcp14>MAY</bcp14> be included to indicate the acceptable signature algorithms in cipher suites that are offered for interoperability with servers not compliant with CNSA and to indicate the signature algorithms that are acceptable for ServerKeyExchange messages and for certification path validation in non-compliant CNSA (D)TLS connections. These offerings <bcp14>MUST NOT</bcp14> be accepted by a CNSA-compliant (D)TLS server.
</t>
      </section>


<section anchor="tls12-sig-algs-cert-ext" numbered="true" toc="default">
        <name>The "signature_algorithms_cert" Extension</name>
        <t>A CNSA (D)TLS client <bcp14>MAY</bcp14> include the
        "signature_algorithms_cert" extension.  CNSA (D)TLS servers
        <bcp14>MUST</bcp14> process the "signature_algorithms_cert" extension
        if it is offered per <xref target="RFC8446" sectionFormat="of"
        section="4.2.3" format="default"/>.
</t>
        <t>Both CNSA (D)TLS clients and servers <bcp14>MUST</bcp14> use one of the following values for certificate path validation:

        </t>
        <ul empty="true" spacing="normal">
          <li>ecdsa_secp384r1_sha384</li>
          <li>rsa_pkcs1_sha384</li>
        </ul>
        <t>And, if supported, <bcp14>SHOULD</bcp14> offer/accept:

        </t>
        <ul empty="true" spacing="normal">
          <li>rsa_pss_pss_sha384</li>
          <li>rsa_pss_rsae_sha384</li>
        </ul>
      </section>


<section anchor="tls12-cert-request" numbered="true" toc="default">
        <name>The CertificateRequest Message</name>
        <t>When a CNSA (D)TLS server is configured to authenticate the client, the server <bcp14>MUST</bcp14> include the following values in its CertificateRequest.supported_signature_algorithms <xref target="RFC5246" format="default"/> offer:

        </t>
        <ul empty="true" spacing="normal">
          <li>ecdsa_secp384r1_sha384</li>
          <li>rsa_pkcs1_sha384</li>
        </ul>
        <t>And, if supported as specified in <xref target="RFC8446" format="default"/>, <bcp14>SHOULD</bcp14> offer/accept:

        </t>
        <ul empty="true" spacing="normal">
          <li>rsa_pss_pss_sha384</li>
          <li>rsa_pss_rsae_sha384</li>
        </ul>
      </section>


<section anchor="tls12-cert-verify" numbered="true" toc="default">
        <name>The CertificateVerify Message</name>
        <t>A CNSA (D)TLS client <bcp14>MUST</bcp14> use ECDSA or RSA when sending the CertificateVerify message.  CNSA (D)TLS servers <bcp14>MUST</bcp14> only accept ECDSA or RSA in the CertificateVerify message.	
</t>
      </section>


<section anchor="tls12-ske-message" numbered="true" toc="default">
        <name>The Signature in the ServerKeyExchange Message</name>
        <t>A CNSA (D)TLS server <bcp14>MUST</bcp14> sign the ServerKeyExchange message using ECDSA or RSA.
</t>
      </section>



<section anchor="tls12-cert-status" numbered="true" toc="default">
        <name>Certificate Status</name>
        <t>Certificate Authorities (CAs) providing certificates to a CNSA (D)TLS
        server or client <bcp14>MUST</bcp14> provide certificate revocation
        status information via a Certificate Revocation List (CRL)
        distribution point or using the Online Certificate Status Protocol
        (OCSP).  A CNSA client <bcp14>SHOULD</bcp14> request it according to
        <xref target="RFC8446" format="default" sectionFormat="of"
        section="4.4.2.1"/>.  If OCSP is supported, the (D)TLS server
        <bcp14>SHOULD</bcp14> provide OCSP responses in the
        CertificateStatus message.
</t>
      </section>



</section>



<section anchor="tls13-reqts" numbered="true" toc="default">
      <name>(D)TLS 1.3 Requirements</name>
      <t>The CNSA (D)TLS client <bcp14>MUST</bcp14> offer the following cipher
      suite in the ClientHello:

</t>
      <ul empty="true" spacing="normal">
        <li>TLS_AES_256_GCM_SHA384</li>
      </ul>


      <t>The CNSA (D)TLS client <bcp14>MUST</bcp14> include at least one of
      the following values in the "supported_groups" extension:

</t>
      <ul empty="true" spacing="normal">
        <li>ECDHE:  secp384r1</li>
        <li>DHE: ffdhe3072</li>
        <li>DHE: ffdhe4096</li>
      </ul>
      <t>The CNSA cipher suite <bcp14>MUST</bcp14> be the first (most
      preferred) cipher suite in the ClientHello message and in the
      extensions.
</t>
      <t>A CNSA (D)TLS client that offers interoperability with servers that are 
not CNSA compliant <bcp14>MAY</bcp14> offer additional cipher suites, but any additional 
cipher suites <bcp14>MUST</bcp14> appear after the CNSA-compliant cipher suites in the 
ClientHello message.
</t>
      <t>A CNSA (D)TLS server <bcp14>MUST</bcp14> accept one of the CNSA algorithms listed above if they are offered in the ClientHello message.
</t>
      <t>If interoperability is not desired with non-CNSA-compliant clients or servers, then the session <bcp14>MUST</bcp14> fail if no CNSA Suites are offered or accepted.
</t>
      <section anchor="tls13-sig-algs" numbered="true" toc="default">
        <name>The "signature_algorithms" Extension</name>
        <t>A CNSA (D)TLS client <bcp14>MUST</bcp14> include the "signature_algorithms" extension. The CNSA (D)TLS client <bcp14>MUST</bcp14> offer at least one of the following values in the "signature_algorithms" extension:

        </t>
        <ul empty="true" spacing="normal">
          <li>ecdsa_secp384r1_sha384</li>
          <li>rsa_pss_pss_sha384</li>
          <li>rsa_pss_rsae_sha384</li>
        </ul>
        <t>Clients that allow negotiating TLS 1.2 <bcp14>MAY</bcp14> offer rsa_pkcs1_sha384 for use with TLS 1.2.  Other offerings <bcp14>MAY</bcp14> be included to indicate the acceptable signature algorithms in cipher suites that are offered for interoperability with servers not compliant with CNSA in non-compliant CNSA (D)TLS connections.  These offerings <bcp14>MUST NOT</bcp14> be accepted by a CNSA-compliant (D)TLS server.
</t>
      </section>



<section anchor="tls13-sig-algs-cert" numbered="true" toc="default">
        <name>The "signature_algorithms_cert" Extension</name>
        <t>A CNSA (D)TLS client <bcp14>SHOULD</bcp14> include the "signature_algorithms_cert" extension. And, if offered, the CNSA (D)TLS client <bcp14>MUST</bcp14> offer at least one of the following values in the "signature_algorithms_cert" extension:

</t>
        <ul empty="true" spacing="normal">
          <li>ecdsa_secp384r1_sha384</li>
          <li>rsa_pkcs1_sha384</li>
        </ul>
        <t>And, if supported, <bcp14>SHOULD</bcp14> offer:
</t>
        <ul empty="true" spacing="normal">
          <li>rsa_pss_pss_sha384</li>
          <li>rsa_pss_rsae_sha384</li>
        </ul>
        <t>Following the guidance in <xref target="RFC8603" format="default"/>, CNSA (D)TLS servers <bcp14>MUST</bcp14> only accept ECDSA or RSA for certificate path validation.
</t>
        <t>Other offerings <bcp14>MAY</bcp14> be included to indicate the signature algorithms that are acceptable for certification path validation in non-compliant CNSA (D)TLS connections. These offerings <bcp14>MUST NOT</bcp14> be accepted by a CNSA-compliant (D)TLS server.
</t>
      </section>



<section anchor="tls13-early-data" numbered="true" toc="default">
        <name>The "early_data" Extension</name>
        <t>A CNSA (D)TLS client or server <bcp14>MUST NOT</bcp14> include the
        "early_data" extension.  See <xref target="RFC8446"
        format="default" sectionFormat="of" section="2.3" /> for security concerns.
</t>
      </section>


<section anchor="tls13-resumption" numbered="true" toc="default">
        <name>Resumption</name>
        <t>A CNSA (D)TLS server <bcp14>MAY</bcp14> send a CNSA (D)TLS client a
        NewSessionTicket message to enable resumption. A CNSA (D)TLS client
        <bcp14>MUST</bcp14> request "psk_dhe_ke" via the
        "psk_key_exchange_modes" ClientHello extension to resume a session. A
        CNSA (D)TLS client <bcp14>MUST</bcp14> offer Ephemeral Elliptic Curve
        Diffie-Hellman (ECDHE) with SHA-384 and/or Ephemeral Diffie-Hellman (DHE) with SHA-384 in the
        "supported_groups" and/or "key_share" extensions.
</t>
      </section>


<section anchor="tls13-cert-stat" numbered="true" toc="default">
        <name>Certificate Status</name>
        <t>Certificate Authorities (CAs) providing certificates to a CNSA (D)TLS server or client <bcp14>MUST</bcp14> provide certificate revocation status information via a Certificate Revocation List (CRL) distribution point or using the Online Certificate Status Protocol (OCSP).  A CNSA client <bcp14>SHOULD</bcp14> request it according to <xref target="RFC8446" format="default" sectionFormat="of" section="4.4.2.1"/>.  If OCSP is supported, the (D)TLS server <bcp14>SHOULD</bcp14> provide OCSP responses in the "CertificateEntry".
</t>
      </section>


</section>



<section anchor="sec-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>Most of the security considerations for this document are described
      in <xref target="RFC5246" format="default"/>, <xref target="RFC8446"
      format="default"/>, <xref target="RFC6347" format="default"/>, and <xref
      target="RFC9147" format="default"/>.  In addition, the security
      considerations for Elliptic Curve Cryptography (ECC) related to TLS are
      described in <xref target="RFC8422" format="default"/>, <xref
      target="RFC5288" format="default"/>, and <xref target="RFC5289"
      format="default"/>. Readers should consult those documents.
</t>
      <t>In order to meet the goal of a consistent security level for the entire cipher suite, CNSA (D)TLS implementations <bcp14>MUST</bcp14> only use the elliptic curves, RSA schemes, and Finite Fields defined in <xref target="ecc-curves" format="default"/>, <xref target="rsa-schemes" format="default"/>, and <xref target="ff-groups" format="default"/>, respectively.  If this is not the case, then security may be weaker than is required.
</t>
      <t>As noted in TLS version 1.3 <xref target="RFC8446" format="default"/>, TLS does not provide inherent replay protections for early data.  For this reason, this profile forbids the use of early data.
</t>
    </section>


<section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>


</middle>
  <back>





   <references>
      <name>References</name>
      <references>
        <name>Normative References</name>



        <reference anchor="AES" target="https://nvlpubs.nist.gov/nistpubs/fips/NIST.FIPS.197.pdf">
          <front>
            <title>Announcing the ADVANCED ENCRYPTION STANDARD (AES)</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date month="November" year="2001"/>
          </front>
          <seriesInfo name="FIPS" value="197"/>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.197"/>
        </reference>



<reference anchor="CNSA" target="https://www.cnss.gov/CNSS/issuances/Policies.cfm">
          <front>
            <title>Use of Public Standards for Secure Information Sharing</title>
            <author>
              <organization>Committee for National Security Systems</organization>
            </author>
            <date month="October" year="2016"/>
          </front>
          <seriesInfo name="CNSSP" value="15"/>
        </reference>


<reference anchor="DSS" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf">
          <front>
            <title>Digital Signature Standard (DSS)</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date month="July" year="2013"/>
          </front>
          <seriesInfo name="FIPS PUB" value="186-4"/>
<seriesInfo name="DOI" value="10.6028/NIST.FIPS.186-4"/>
        </reference>


<reference anchor="GCM" target="https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf">
          <front>
            <title>Recommendation for Block Cipher Modes of Operation:
            Galois/Counter Mode (GCM) and GMAC</title>
            <author fullname="Morris Dworkin" initials="M" surname="Dworkin"/>
            <date month="November" year="2007"/>
          </front>
          <seriesInfo name="NIST Special Publication" value="800-38D"/>
	  <seriesInfo name="DOI" value="10.6028/NIST.SP.800-38D"/>
        </reference>


<reference anchor="PWKE-A" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf">
          <front>
            <title>Recommendation for Pair-Wise Key Establishment Schemes
            Using Discrete Logarithm Cryptography</title>
            <author fullname="Elaine Barker" initials="E" surname="Barker"/>
            <author fullname="Lily Chen" initials="L" surname="Chen"/>
            <author fullname="Allen Roginsky" initials="A" surname="Roginsky"/>
            <author fullname="Apostol Vassilev" initials="A" surname="Vassilev"/>
            <author fullname="Richard Davis" initials="R" surname="Davis"/>
            <date month="April" year="2018"/>
          </front>
          <seriesInfo name="NIST Special Publication" value="800-56A Revision 3"/>
	  <seriesInfo name="DOI" value="10.6028/NIST.SP.800-56Ar3"/>
        </reference>


<reference anchor="PWKE-B" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Br2.pdf">
          <front>
            <title>Recommendation for Pair-Wise Key Establishment Schemes Using Integer Factorization Cryptography</title>
            <author fullname="Elaine Barker" initials="E" surname="Barker"/>
            <author fullname="Lily Chen" initials="L" surname="Chen"/>
            <author fullname="Allen Roginsky" initials="A" surname="Roginsky"/>
            <author fullname="Apostol Vassilev" initials="A" surname="Vassilev"/>
            <author fullname="Richard Davis" initials="R" surname="Davis"/>
	    <author fullname="Scott Simon" initials="S" surname="Simon"/>
            <date month="March" year="2019"/>
          </front>
          <seriesInfo name="NIST Special Publication" value="800-56B Revision 2"/>
<seriesInfo name="DOI" value="10.6028/NIST.SP.800-56Br2"/>
        </reference>


<reference anchor="SHS" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">
          <front>
            <title>Secure Hash Standard (SHS)</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date month="August" year="2015"/>
          </front>
	  <seriesInfo name="DOI" value="10.6028/NIST.FIPS.180-4"/>
          <seriesInfo name="FIPS PUB" value="180-4"/>
        </reference>


	<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5246.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5288.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5289.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6347.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7627.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7919.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8017.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8422.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8603.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9147.xml"/>

</references>
       <references>
        <name>Informative References</name>

        <reference anchor="SP80059" target="https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-59.pdf">
          <front>
            <title>Guideline for Identifying an Information System as a
            National Security System</title>
            <author fullname="William Barker" initials="W" surname="Barker"/>                       
            <date month="August" year="2003"/>
          </front>
<seriesInfo name="DOI" value="10.6028/NIST.SP.800-59"/>
          <seriesInfo name="NIST Special Publication" value="800-59"/>
        </reference>
    
<reference anchor="SECG" target="https://www.secg.org/sec2-v2.pdf">
          <front>
            <title>SEC 2: Recommended Elliptic Curve Domain Parameters</title>
            <author fullname="Daniel Brown" initials="D." surname="Brown"/>
            <date month="February" year="2010"/>
          </front>
	  <seriesInfo name="Version" value="2.0"/>
        </reference>



    </references>
    </references>
  </back>

</rfc>
