<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" docName="draft-jenkins-cnsa-smime-profile-03" indexInclude="true" ipr="trust200902" number="8755" prepTime="2020-03-19T10:33:54" scripts="Common,Latin" sortRefs="true" submissionType="independent" symRefs="true" tocDepth="2" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-jenkins-cnsa-smime-profile-03" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc8755" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="CNSA Suite for S/MIME">Using Commercial National Security Algorithm Suite Algorithms in Secure/⁠Multipurpose Internet Mail Extensions</title>
    <seriesInfo name="RFC" value="8755" stream="independent"/>
    <author fullname="Michael Jenkins" initials="M." surname="Jenkins">
      <organization abbrev="NSA" showOnFrontPage="true">National Security Agency</organization>
      <address>
        <email>mjjenki@nsa.gov</email>
      </address>
    </author>
    <date month="03" year="2020"/>
    <area>Security</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>NSA</keyword>
    <keyword>CNSA</keyword>
    <keyword>NSS</keyword>
    <keyword>smime</keyword>
    <abstract pn="section-abstract">
      <t pn="section-abstract-1">The United States Government has published the National Security
      Agency (NSA) Commercial National Security Algorithm (CNSA) Suite, which defines cryptographic algorithm policy for national security applications. This document specifies the conventions for using the United States National Security Agency's CNSA Suite algorithms in Secure/Multipurpose Internet Mail Extensions (S/MIME) as specified in RFC 8551. It applies to the capabilities, configuration, and operation of all components of US National Security Systems that employ S/MIME messaging. 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. It is made publicly available for use by developers and operators of these and any other system deployments.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t pn="section-boilerplate.1-1">
            This document is not an Internet Standards Track specification; it is
            published for informational purposes.
        </t>
        <t pn="section-boilerplate.1-2">
            This is a contribution to the RFC Series, independently of any
            other RFC stream.  The RFC Editor has chosen to publish this
            document at its discretion and makes no statement about its value
            for implementation or deployment.  Documents approved for
            publication by the RFC Editor are not candidates for any level of
            Internet Standard; see Section 2 of RFC 7841.
        </t>
        <t pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc8755" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t pn="section-boilerplate.2-1">
            Copyright (c) 2020 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) 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.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-commercial-national-sec">The Commercial National Security Algorithm Suite</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-and-assumption">Requirements and Assumptions</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t keepWithNext="true" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sha-384-message-digest-algo">SHA-384 Message Digest Algorithm</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t keepWithNext="true" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-digital-signature">Digital Signature</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ecdsa-signature">ECDSA Signature</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-rsa-signature">RSA Signature</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t keepWithNext="true" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-key-establishment">Key Establishment</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-elliptic-curve-key-agreemen">Elliptic Curve Key Agreement</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-rsa-key-transport">RSA Key Transport</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t keepWithNext="true" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-content-encryption">Content Encryption</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-aes-gcm-content-encryption">AES-GCM Content Encryption</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-aes-cbc-content-encryption">AES-CBC Content Encryption</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t keepWithNext="true" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t keepWithNext="true" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t keepWithNext="true" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.10.2">
              <li pn="section-toc.1-1.10.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.10.2.1.1"><xref derivedContent="10.1" format="counter" sectionFormat="of" target="section-10.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.10.2.2.1"><xref derivedContent="10.2" format="counter" sectionFormat="of" target="section-10.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.11">
            <t keepWithNext="true" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-address">Author's Address</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t pn="section-1-1">This document specifies the conventions for using the United States National Security Agency's Commercial National Security Algorithm (CNSA) Suite algorithms <xref target="CNSA" format="default" sectionFormat="of" derivedContent="CNSA"/> in Secure/Multipurpose Internet Mail Extensions (S/MIME) <xref target="RFC8551" format="default" sectionFormat="of" derivedContent="RFC8551"/>. It applies to the capabilities, configuration, and operation of all components of US National Security Systems that employ S/MIME messaging. US National Security Systems are described in NIST Special Publication 800-59 <xref target="SP80059" format="default" sectionFormat="of" derivedContent="SP80059"/>. 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 pn="section-1-2">S/MIME makes use of the Cryptographic Message Syntax (CMS) <xref target="RFC5652" format="default" sectionFormat="of" derivedContent="RFC5652"/> <xref target="RFC5083" format="default" sectionFormat="of" derivedContent="RFC5083"/>. In particular, the signed-data, enveloped-data, and authenticated-enveloped-data content types are used. This document only addresses CNSA Suite compliance for S/MIME. Other applications of CMS are outside the scope of this document.
</t>
      <t pn="section-1-3">This document does not define any new cryptographic algorithm suites; instead, it defines a CNSA-compliant profile of S/MIME. Since many of the CNSA Suite algorithms enjoy uses in other environments as well, the majority of the conventions needed for these algorithms are already specified in other documents. This document references the source of these conventions, with some relevant details repeated to aid developers that choose to support the CNSA Suite. Where details have been repeated, the cited documents are authoritative.
</t>
      <section anchor="terminology" numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-terminology">Terminology</name>
        <t pn="section-1.1-1">
    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" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
    </section>
    <section anchor="cnsa" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-the-commercial-national-sec">The Commercial National Security Algorithm Suite</name>
      <t pn="section-2-1">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 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 pn="section-2-2">Recently, cryptographic transition plans have become overshadowed by
      the prospect of the development of a cryptographically relevant quantum
      computer. The NSA has established the Commercial National Security Algorithm
      (CNSA) Suite to provide vendors and IT users near-term flexibility in
      meeting their cybersecurity 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 pn="section-2-3">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 Government National Security Systems.
</t>
    </section>
    <section anchor="reqts" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-requirements-and-assumption">Requirements and Assumptions</name>
      <t pn="section-3-1">CMS values are generated using ASN.1 <xref target="X208" format="default" sectionFormat="of" derivedContent="X208"/>, the Basic Encoding Rules (BER) <xref target="X209" format="default" sectionFormat="of" derivedContent="X209"/>, and the Distinguished Encoding Rules (DER) <xref target="X509" format="default" sectionFormat="of" derivedContent="X509"/>.
</t>
      <t pn="section-3-2">The elliptic curve used in the CNSA Suite is specified in <xref target="FIPS186" format="default" sectionFormat="of" derivedContent="FIPS186"/> and appears in the literature under two different names. For the sake of clarity, we list both names below:
   
      </t>
      <table anchor="curve" align="left" pn="table-1">
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">Curve</th>
            <th align="left" colspan="1" rowspan="1">NIST Name</th>
            <th align="left" colspan="1" rowspan="1">SECG Name</th>
            <th align="left" colspan="1" rowspan="1">OID [FIPS186]</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">nistp384</td>
            <td align="left" colspan="1" rowspan="1">P-384</td>
            <td align="left" colspan="1" rowspan="1">secp384r1</td>
            <td align="left" colspan="1" rowspan="1">1.3.132.0.34</td>
          </tr>
        </tbody>
      </table>
      <t pn="section-3-4">For CNSA Suite applications, public key certificates used to verify S/MIME signatures <bcp14>MUST</bcp14> be compliant with the CNSA Suite Certificate and Certificate Revocation List (CRL) profile specified in <xref target="RFC8603" format="default" sectionFormat="of" derivedContent="RFC8603"/>.
</t>
      <t pn="section-3-5">Within the CMS signed-data content type, signature algorithm identifiers are located in the signatureAlgorithm field of SignerInfo structures contained within the SignedData. In addition, signature algorithm identifiers are located in the SignerInfo signatureAlgorithm field of countersignature attributes. Specific requirements for digital signatures are given in <xref target="digital-signature" format="default" sectionFormat="of" derivedContent="Section 5"/>; compliant implementations <bcp14>MUST</bcp14> consider signatures not meeting these requirements as invalid.
</t>
      <t pn="section-3-6">Implementations based on Elliptic Curve Cryptography (ECC) also require specification of schemes for key derivation and key wrap. Requirements for these schemes are in Sections <xref target="kdf" format="counter" sectionFormat="of" derivedContent="6.1.1"/> and <xref target="keywrap" format="counter" sectionFormat="of" derivedContent="6.1.2"/>, respectively.
</t>
      <t pn="section-3-7">RSA key pairs (public, private) are identified by the modulus size expressed in bits; RSA-3072 and RSA-4096 are computed using moduli of 3072 bits and 4096 bits, respectively.
</t>
      <t pn="section-3-8">RSA signature key pairs used in CNSA Suite-compliant implementations
      are either RSA-3072 or RSA-4096. The RSA exponent e <bcp14>MUST</bcp14>
      satisfy 2<sup>16</sup> &lt; e &lt; 2<sup>256</sup> and be odd per <xref target="FIPS186" format="default" sectionFormat="of" derivedContent="FIPS186"/>.
</t>
      <t pn="section-3-9">It is recognized that, while the vast majority of RSA signatures are currently made using the RSASSA-PKCS1-v1_5 algorithm, the preferred RSA signature scheme for new applications is RSASSA-PSS.  CNSA Suite-compliant X.509 certificates will be issued in accordance with <xref target="RFC8603" format="default" sectionFormat="of" derivedContent="RFC8603"/>, and while those certificates must be signed and validated using RSASSA-PKCS1-v1_5, the subject's RSA key pair can be used to generate and validate signatures appropriate for either signing scheme.  Where use of RSASSA-PSS is indicated in this document, the parameters in <xref target="rsa-pss" format="default" sectionFormat="of" derivedContent="Section 5.2.2"/> apply.
</t>
      <t pn="section-3-10">This document assumes that the required trust anchors have been securely provisioned to the client.
</t>
      <t pn="section-3-11">All implementations use SHA-384 for hashing and either AES-CBC or AES-GCM for encryption, the requirements for which are given in <xref target="message-digest" format="default" sectionFormat="of" derivedContent="Section 4"/> and <xref target="content-enc" format="default" sectionFormat="of" derivedContent="Section 7"/>, respectively.
</t>
    </section>
    <section anchor="message-digest" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-sha-384-message-digest-algo">SHA-384 Message Digest Algorithm</name>
      <t pn="section-4-1">SHA-384 is the sole CNSA Suite message digest algorithm. <xref target="RFC5754" format="default" sectionFormat="of" derivedContent="RFC5754"/> specifies the conventions for using SHA-384 with the Cryptographic Message Syntax (CMS). CNSA Suite-compliant S/MIME implementations <bcp14>MUST</bcp14> follow the conventions in <xref target="RFC5754" format="default" sectionFormat="of" derivedContent="RFC5754"/>.
</t>
      <t pn="section-4-2">Within the CMS signed-data content type, message digest algorithm identifiers are located in the SignedData digestAlgorithms field and the SignerInfo digestAlgorithm field.
</t>
      <t pn="section-4-3">The SHA-384 message digest algorithm is defined in FIPS Pub 180 <xref target="FIPS180" format="default" sectionFormat="of" derivedContent="FIPS180"/>. The algorithm identifier for SHA-384 is defined in <xref target="RFC5754" format="default" sectionFormat="of" derivedContent="RFC5754"/> as follows:
      </t>
      <sourcecode name="" type="asn.1" markers="false" pn="section-4-4">
      id-sha384  OBJECT IDENTIFIER  ::=  { joint-iso-itu-t(2)
          country(16) us(840) organization(1) gov(101) csor(3)
          nistalgorithm(4) hashalgs(2) 2 }
</sourcecode>
      <t pn="section-4-5">For SHA-384, the AlgorithmIdentifier parameters field is <bcp14>OPTIONAL</bcp14>, and if present, the parameters field <bcp14>MUST</bcp14> contain a NULL. As specified in <xref target="RFC5754" format="default" sectionFormat="of" derivedContent="RFC5754"/>, implementations <bcp14>MUST</bcp14> generate SHA-384 AlgorithmIdentifiers with absent parameters. Implementations <bcp14>MUST</bcp14> accept SHA-384 AlgorithmIdentifiers with absent parameters or with NULL parameters. 
</t>
    </section>
    <section anchor="digital-signature" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-digital-signature">Digital Signature</name>
      <section anchor="ecc-dig-sig" numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-ecdsa-signature">ECDSA Signature</name>
        <t pn="section-5.1-1">The Elliptic Curve Digital Signature Algorithm (ECDSA) is the CNSA Suite digital signature algorithm based on ECC. <xref target="RFC5753" format="default" sectionFormat="of" derivedContent="RFC5753"/> specifies the conventions for using ECDSA with the Cryptographic Message Syntax (CMS). CNSA Suite-compliant S/MIME implementations <bcp14>MUST</bcp14> follow the conventions in <xref target="RFC5753" format="default" sectionFormat="of" derivedContent="RFC5753"/>.
</t>
        <t pn="section-5.1-2"><xref target="RFC5480" format="default" sectionFormat="of" derivedContent="RFC5480"/> defines the signature algorithm identifier used in CMS for ECDSA with SHA-384 as follows:

        </t>
        <sourcecode name="" type="asn.1" markers="false" pn="section-5.1-3">
      ecdsa-with-SHA384  OBJECT IDENTIFIER  ::=  { iso(1)
         member-body(2) us(840) ansi-X9-62(10045) signatures(4)
         ecdsa-with-sha2(3) 3 }
</sourcecode>
        <t pn="section-5.1-4">When the ecdsa-with-SHA384 algorithm identifier is used, the AlgorithmIdentifier parameters field <bcp14>MUST</bcp14> be absent.
</t>
        <t pn="section-5.1-5">When signing, the ECDSA algorithm generates two values, commonly called r and s.  These two values <bcp14>MUST</bcp14> be encoded using the ECDSA-Sig-Value type specified in <xref target="RFC5480" format="default" sectionFormat="of" derivedContent="RFC5480"/>:

        </t>
        <sourcecode name="" type="asn.1" markers="false" pn="section-5.1-6">
      ECDSA-Sig-Value  ::=  SEQUENCE {
         r  INTEGER,
         s  INTEGER }
</sourcecode>
      </section>
      <section anchor="rsa-dig-sig" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-rsa-signature">RSA Signature</name>
        <t pn="section-5.2-1">The RSA signature generation process and the encoding of the result is either RSASSA-PKCS1-v1_5 or RSA-PSS, as described in detail in PKCS #1 version 2.2 <xref target="RFC8017" format="default" sectionFormat="of" derivedContent="RFC8017"/>.
</t>
        <section anchor="rsa-pkcs1" numbered="true" toc="exclude" removeInRFC="false" pn="section-5.2.1">
          <name slugifiedName="name-rsa-pkcs1-v1_5">RSA-PKCS1-v1_5</name>
          <t pn="section-5.2.1-1"><xref target="RFC5754" format="default" sectionFormat="of" derivedContent="RFC5754"/> defines the signature
	  algorithm identifier used in CMS for an RSA signature with SHA-384 as follows:
   
          </t>
          <sourcecode name="" type="asn.1" markers="false" pn="section-5.2.1-2">
      sha384WithRSAEncryption  OBJECT IDENTIFIER  ::= { iso(1)
        member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1) 12 }
</sourcecode>
          <t pn="section-5.2.1-3">When the sha384WithRSAEncryption algorithm identifier is used, the parameters <bcp14>MUST</bcp14> be NULL. Implementations <bcp14>MUST</bcp14> accept the parameters being absent as well as present.
</t>
        </section>
        <section anchor="rsa-pss" numbered="true" toc="exclude" removeInRFC="false" pn="section-5.2.2">
          <name slugifiedName="name-rsa-pss">RSA-PSS</name>
          <t pn="section-5.2.2-1"><xref target="RFC4056" format="default" sectionFormat="of" derivedContent="RFC4056"/> defines the signature
	  algorithm identifier used in CMS for an RSA-PSS signature as follows (presented here in expanded form):
   
          </t>
          <sourcecode name="" type="asn.1" markers="false" pn="section-5.2.2-2">
      RSASSA-PSS  OBJECT IDENTIFIER  ::= { iso(1)
        member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1) 10 }
</sourcecode>
          <t pn="section-5.2.2-3">The parameters field of an AlgorithmIdentifier that identifies RSASSA-PSS is defined in <xref target="RFC4055" format="default" sectionFormat="of" derivedContent="RFC4055"/> as follows:

          </t>
          <sourcecode name="" type="asn.1" markers="false" pn="section-5.2.2-4">
       RSASSA-PSS-params  ::=  SEQUENCE  {
          hashAlgorithm      [0] HashAlgorithm DEFAULT
                                    sha1Identifier,
          maskGenAlgorithm   [1] MaskGenAlgorithm DEFAULT
                                    mgf1SHA1Identifier,
          saltLength         [2] INTEGER DEFAULT 20,
          trailerField       [3] INTEGER DEFAULT 1  }
</sourcecode>
          <t pn="section-5.2.2-5">The AlgorithmIdentifier parameters field <bcp14>MUST</bcp14> contain RSASSA-PSS-params with the following values:

</t>
          <ul spacing="normal" bare="false" empty="false" pn="section-5.2.2-6">
            <li pn="section-5.2.2-6.1">The hash algorithm <bcp14>MUST</bcp14> be id-sha384 as defined in <xref target="RFC8017" format="default" sectionFormat="of" derivedContent="RFC8017"/>;</li>
            <li pn="section-5.2.2-6.2">The mask generation function <bcp14>MUST</bcp14> use the algorithm identifier mfg1SHA384Identifier as defined in <xref target="RFC4055" format="default" sectionFormat="of" derivedContent="RFC4055"/>;</li>
            <li pn="section-5.2.2-6.3">The salt length <bcp14>MUST</bcp14> be 48 octets (the same length as the SHA-384 output); and</li>
            <li pn="section-5.2.2-6.4">The trailerField <bcp14>MUST</bcp14> have value 1.</li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="key-establishment" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-key-establishment">Key Establishment</name>
      <section anchor="ecc-ka" numbered="true" toc="include" removeInRFC="false" pn="section-6.1">
        <name slugifiedName="name-elliptic-curve-key-agreemen">Elliptic Curve Key Agreement</name>
        <t pn="section-6.1-1">Elliptic Curve Diffie-Hellman (ECDH) is the CNSA Suite key agreement algorithm. Since S/MIME is used in store-and-forward communications, ephemeral-static ECDH is always employed. This means that the message originator possesses an ephemeral ECDH key pair and that the message recipient possesses a static ECDH key pair whose public key is provided in an X.509 certificate. The certificate used to obtain the recipient's public key <bcp14>MUST</bcp14> be compliant with <xref target="RFC8603" format="default" sectionFormat="of" derivedContent="RFC8603"/>.
</t>
        <t pn="section-6.1-2">When a key agreement algorithm is used, the following steps are performed:

</t>
        <ol spacing="normal" type="1" start="1" pn="section-6.1-3">
          <li pn="section-6.1-3.1" derivedCounter="1.">A content-encryption key (CEK) for a particular content-encryption algorithm is generated at random.</li>
          <li pn="section-6.1-3.2" derivedCounter="2.">The recipient's public key and sender's private key are used with a key agreement scheme to generate a shared secret (Z).</li>
          <li pn="section-6.1-3.3" derivedCounter="3.">The shared secret is used with a key derivation function (KDF) to produce a key-encryption key (KEK).</li>
          <li pn="section-6.1-3.4" derivedCounter="4.">The KEK is used with a key wrap algorithm to encrypt the CEK.</li>
        </ol>
        <t pn="section-6.1-4">

Key derivation is discussed in <xref target="kdf" format="default" sectionFormat="of" derivedContent="Section 6.1.1"/>. Key wrapping is discussed in <xref target="keywrap" format="default" sectionFormat="of" derivedContent="Section 6.1.2"/>.
</t>
        <t pn="section-6.1-5"><xref target="RFC5753" sectionFormat="of" section="3.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5753#section-3.1" derivedContent="RFC5753"/> specifies the conventions for using ECDH with the CMS. CNSA Suite-compliant S/MIME implementations <bcp14>MUST</bcp14> follow these conventions.
</t>
        <t pn="section-6.1-6">Within the CMS enveloped-data and authenticated-enveloped-data content types, key agreement algorithm identifiers are located in the EnvelopedData RecipientInfos KeyAgreeRecipientInfo keyEncryptionAlgorithm field.
</t>
        <t pn="section-6.1-7">The keyEncryptionAlgorithm field comprises two fields, an algorithm
	field and a parameter field. The algorithm field <bcp14>MUST</bcp14>
	identify dhSinglePass-stdDH-sha384kdf-scheme. The algorithm identifier
	for the dhSinglePass-stdDH-sha384kdf-scheme, repeated from <xref target="RFC5753" sectionFormat="of" section="7.1.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5753#section-7.1.4" derivedContent="RFC5753"/>, is (presented here in expanded form):

        </t>
        <sourcecode name="" type="asn.1" markers="false" pn="section-6.1-8">
      dhSinglePass-stdDH-sha384kdf-scheme  OBJECT IDENTIFIER  ::=
          { iso(1) identified-organization(3) certicom(132)
            schemes(1) 11 2 }
</sourcecode>
        <t pn="section-6.1-9">The keyEncryptionAlgorithm parameter field <bcp14>MUST</bcp14> be constructed as described in <xref target="keywrap" format="default" sectionFormat="of" derivedContent="Section 6.1.2"/>.
</t>
        <section anchor="kdf" numbered="true" toc="exclude" removeInRFC="false" pn="section-6.1.1">
          <name slugifiedName="name-key-derivation-functions">Key Derivation Functions</name>
          <t pn="section-6.1.1-1">KDFs based on SHA-384 are used to derive a pairwise
	  key-encryption key from the shared secret produced by
	  ephemeral-static ECDH. Sections <xref target="RFC5753" section="7.1.8" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5753#section-7.1.8" derivedContent="RFC5753"/> and <xref target="RFC5753" sectionFormat="bare" section="7.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5753#section-7.2" derivedContent="RFC5753"/> in <xref target="RFC5753" format="default" sectionFormat="of" derivedContent="RFC5753"/> specify the CMS conventions for using a KDF with the shared secret generated during ephemeral-static ECDH. CNSA Suite-compliant S/MIME implementations <bcp14>MUST</bcp14> follow these conventions.
          </t>
          <t pn="section-6.1.1-2">As specified in <xref target="RFC5753" sectionFormat="of" section="7.1.8" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5753#section-7.1.8" derivedContent="RFC5753"/>, the ANSI-X9.63-KDF described in Section 3.6.1 of <xref target="SEC1" format="default" sectionFormat="of" derivedContent="SEC1"/> and based on SHA-384 <bcp14>MUST</bcp14> be used.
          </t>
          <t pn="section-6.1.1-3">As specified in <xref target="RFC5753" sectionFormat="of" section="7.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5753#section-7.2" derivedContent="RFC5753"/>, when using ECDH with the CMS enveloped-data or authenticated-enveloped-data content type, the derivation of key-encryption keys makes use of the ECC-CMS-SharedInfo type:
      
          </t>
          <sourcecode name="" type="asn.1" markers="false" pn="section-6.1.1-4">
      ECC-CMS-SharedInfo  ::=  SEQUENCE {
         keyInfo      AlgorithmIdentifier,
         entityUInfo  [0] EXPLICIT OCTET STRING OPTIONAL,
         suppPubInfo  [2] EXPLICIT OCTET STRING }
</sourcecode>
          <t pn="section-6.1.1-5">In the CNSA Suite for S/MIME, the fields of ECC-CMS-SharedInfo are used as follows:

          </t>
          <ul empty="false" bare="false" spacing="normal" pn="section-6.1.1-6">
            <li pn="section-6.1.1-6.1">keyInfo contains the object identifier of the key-encryption algorithm used to wrap the content-encryption key. If AES-256 Key Wrap is used, then the keyInfo will contain id-aes256-wrap-pad, and the parameters will be absent.
         </li>
            <li pn="section-6.1.1-6.2">entityUInfo optionally contains a random value provided by the message originator. If user keying material (ukm) is included in the KeyAgreeRecipientInfo, then the entityUInfo <bcp14>MUST</bcp14> be present, and it <bcp14>MUST</bcp14> contain the ukm value. If the ukm is not present, then the entityUInfo <bcp14>MUST</bcp14> be absent.
         </li>
            <li pn="section-6.1.1-6.3">suppPubInfo contains the length of the generated key-encryption key in bits, represented as a 32-bit unsigned number, as described in <xref target="RFC2631" format="default" sectionFormat="of" derivedContent="RFC2631"/>. When a 256-bit AES key is used, the length <bcp14>MUST</bcp14> be 0x00000100.
         </li>
          </ul>
          <t pn="section-6.1.1-7">ECC-CMS-SharedInfo is DER encoded and is used as input to the key
	  derivation function, as specified in Section 3.6.1 of <xref target="SEC1" format="default" sectionFormat="of" derivedContent="SEC1"/>.  Note that ECC-CMS-SharedInfo differs from the OtherInfo specified in <xref target="RFC2631" format="default" sectionFormat="of" derivedContent="RFC2631"/>. Here, a counter value is not included in the keyInfo field because the KDF specified in <xref target="SEC1" format="default" sectionFormat="of" derivedContent="SEC1"/> ensures that sufficient keying data is provided.
          </t>
          <t pn="section-6.1.1-8">The KDF specified in Section 3.6.1 of <xref target="SEC1" format="default" sectionFormat="of" derivedContent="SEC1"/> describes how to generate an essentially arbitrary amount of keying material from a shared secret, Z, produced by ephemeral-static ECDH. To generate an L-bit key-encryption key (KEK), blocks of key material (KM) are computed by incrementing Counter appropriately until enough material has been generated:
          </t>
          <sourcecode name="" type="pseudocode" markers="false" pn="section-6.1.1-9">
      KM(Counter) = Hash ( Z || Counter || ECC-CMS-SharedInfo )
</sourcecode>
          <t pn="section-6.1.1-10">
      The KM blocks are concatenated left to right as they are
      generated, and the first (leftmost) L bits are used as the KEK:
      
          </t>
          <sourcecode name="" type="pseudocode" markers="false" pn="section-6.1.1-11">
      KEK = the leftmost L bits of
               [KM ( counter=1 ) || KM ( counter=2 ) ...]
</sourcecode>
          <t pn="section-6.1.1-12">In the CNSA Suite for S/MIME, the elements of the KDF are defined as follows:

          </t>
          <ul empty="false" bare="false" spacing="normal" pn="section-6.1.1-13">
            <li pn="section-6.1.1-13.1">Hash is a one-way hash function. The SHA-384 hash <bcp14>MUST</bcp14> be used.
         </li>
            <li pn="section-6.1.1-13.2">Z is the shared secret value generated during ephemeral-static ECDH.
         Z <bcp14>MUST</bcp14> be exactly 384 bits, i.e., leading zero bits <bcp14>MUST</bcp14> be preserved. 
         </li>
            <li pn="section-6.1.1-13.3">Counter is a 32-bit unsigned number represented in network byte
         order.  Its initial value <bcp14>MUST</bcp14> be 0x00000001 for any key
         derivation operation.
         </li>
            <li pn="section-6.1.1-13.4">ECC-CMS-SharedInfo is composed as described above. It <bcp14>MUST</bcp14> be DER
         encoded.
         </li>
          </ul>
          <t pn="section-6.1.1-14"> In the CNSA Suite for S/MIME, exactly one iteration is needed; the Counter is not incremented. The key-encryption key (KEK) <bcp14>MUST</bcp14> be the first (leftmost) 256 bits of the SHA-384 output value:
      
          </t>
          <sourcecode name="" type="pseudocode" markers="false" pn="section-6.1.1-15">
      KEK = the leftmost 256 bits of
               SHA-384 ( Z || 0x00000001 || ECC-CMS-SharedInfo )
</sourcecode>
          <t pn="section-6.1.1-16">Note that the only source of secret entropy in this computation is Z.
          </t>
        </section>
        <section anchor="keywrap" numbered="true" toc="exclude" removeInRFC="false" pn="section-6.1.2">
          <name slugifiedName="name-aes-key-wrap">AES Key Wrap</name>
          <t pn="section-6.1.2-1">The AES Key Wrap with Padding key-encryption algorithm, as specified in <xref target="RFC5649" format="default" sectionFormat="of" derivedContent="RFC5649"/> and <xref target="SP80038F" format="default" sectionFormat="of" derivedContent="SP80038F"/>, is used to encrypt the content-encryption key with a pairwise key-encryption key that is generated using ephemeral-static ECDH. <xref target="RFC5753" sectionFormat="of" section="8" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5753#section-8" derivedContent="RFC5753"/> specifies the CMS conventions for using AES Key Wrap with a pairwise key generated through ephemeral-static ECDH. CNSA Suite-compliant S/MIME implementations <bcp14>MUST</bcp14> follow these conventions.
</t>
          <t pn="section-6.1.2-2">Within the CMS enveloped-data content type, key wrap algorithm identifiers are located in the KeyWrapAlgorithm parameters within the EnvelopedData RecipientInfos KeyAgreeRecipientInfo keyEncryptionAlgorithm field.
</t>
          <t pn="section-6.1.2-3">The KeyWrapAlgorithm <bcp14>MUST</bcp14> be id-aes256-wrap-pad. The required algorithm identifier, specified in <xref target="RFC5649" format="default" sectionFormat="of" derivedContent="RFC5649"/>, is:

          </t>
          <sourcecode name="" type="asn.1" markers="false" pn="section-6.1.2-4">
      id-aes256-wrap-pad  OBJECT IDENTIFIER ::=  { joint-iso-itu-t(2)
         country(16) us(840) organization(1) gov(101) csor(3)
         nistAlgorithm(4) aes(1) 48 }
</sourcecode>
        </section>
      </section>
      <section anchor="rsa-kt" numbered="true" toc="include" removeInRFC="false" pn="section-6.2">
        <name slugifiedName="name-rsa-key-transport">RSA Key Transport</name>
        <t pn="section-6.2-1">RSA encryption (RSA) is the CNSA Suite key transport algorithm. The RSA key transport algorithm is the RSA encryption scheme defined in <xref target="RFC8017" format="default" sectionFormat="of" derivedContent="RFC8017"/>, where the message to be encrypted is the content-encryption key.  
</t>
        <t pn="section-6.2-2">The recipient of an S/MIME message possesses an RSA key pair whose public key is represented by an X.509 certificate. The certificate used to obtain the recipient's public key <bcp14>MUST</bcp14> be compliant with <xref target="RFC8603" format="default" sectionFormat="of" derivedContent="RFC8603"/>. These certificates are suitable for use with either RSAES-OAEP or RSAES-PKCS1-v1_5. 
</t>
        <section anchor="rsaes-PKCS1" numbered="true" toc="exclude" removeInRFC="false" pn="section-6.2.1">
          <name slugifiedName="name-rsaes-pkcs1-v1_5">RSAES-PKCS1-v1_5</name>
          <t pn="section-6.2.1-1"><xref target="RFC3370" sectionFormat="of" section="4.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc3370#section-4.2" derivedContent="RFC3370"/> specifies the conventions for using RSAES-PKCS1-v1_5 with the CMS. S/MIME implementations employing this form of key transport <bcp14>MUST</bcp14> follow these conventions.
</t>
          <t pn="section-6.2.1-2">Within the CMS enveloped-data and authenticated-enveloped-data content types, key transport algorithm identifiers are located in the EnvelopedData RecipientInfos KeyTransRecipientInfo keyEncryptionAlgorithm field.
</t>
          <t pn="section-6.2.1-3">The algorithm identifier for RSA (PKCS #1 v1.5) is:
   
          </t>
          <sourcecode name="" type="asn.1" markers="false" pn="section-6.2.1-4">
      rsaEncryption OBJECT IDENTIFIER ::= { iso(1) member-body(2)
          us(840) rsadsi(113549) pkcs(1) pkcs-1(1) 1 }
</sourcecode>
          <t pn="section-6.2.1-5">The AlgorithmIdentifier parameters field <bcp14>MUST</bcp14> be present, and the parameters field <bcp14>MUST</bcp14> contain NULL.
</t>
        </section>
        <section anchor="rsaes-OAEP" numbered="true" toc="exclude" removeInRFC="false" pn="section-6.2.2">
          <name slugifiedName="name-rsaes-oaep">RSAES-OAEP</name>
          <t pn="section-6.2.2-1"><xref target="RFC3560" format="default" sectionFormat="of" derivedContent="RFC3560"/> specifies the conventions for using RSAES-OAEP with the CMS. CNSA Suite-compliant S/MIME implementations employing this form of key transport <bcp14>MUST</bcp14> follow these conventions.
</t>
          <t pn="section-6.2.2-2">Within the CMS enveloped-data and authenticated-enveloped-data content types, key transport algorithm identifiers are located in the EnvelopedData RecipientInfos KeyTransRecipientInfo keyEncryptionAlgorithm field.
</t>
          <t pn="section-6.2.2-3">The algorithm identifier for RSA (OAEP) is:
   
          </t>
          <sourcecode name="" type="asn.1" markers="false" pn="section-6.2.2-4">
      id-RSAES-OAEP  OBJECT IDENTIFIER  ::=  { iso(1) member-body(2)
          us(840) rsadsi(113549) pkcs(1) pkcs-1(1) 7 }
</sourcecode>
          <t pn="section-6.2.2-5">The parameters field of an AlgorithmIdentifier that identifies RSAES-OAEP is defined in <xref target="RFC4055" format="default" sectionFormat="of" derivedContent="RFC4055"/> as follows:

          </t>
          <sourcecode name="" type="asn.1" markers="false" pn="section-6.2.2-6">

       RSAES-OAEP-params  ::=  SEQUENCE  {
          hashFunc          [0] AlgorithmIdentifier DEFAULT
                                   sha1Identifier,
          maskGenFunc       [1] AlgorithmIdentifier DEFAULT
                                   mgf1SHA1Identifier,
          pSourceFunc       [2] AlgorithmIdentifier DEFAULT
                                   pSpecifiedEmptyIdentifier  }

       pSpecifiedEmptyIdentifier  AlgorithmIdentifier  ::=
                            { id-pSpecified, nullOctetString }

       nullOctetString  OCTET STRING (SIZE (0))  ::=  { ''H }
</sourcecode>
          <t pn="section-6.2.2-7">The AlgorithmIdentifier parameters field <bcp14>MUST</bcp14> be present, and the parameters field <bcp14>MUST</bcp14> contain RSAES-OAEP-params with values as follows:

</t>
          <ul spacing="normal" bare="false" empty="false" pn="section-6.2.2-8">
            <li pn="section-6.2.2-8.1">The hashFunc algorithm must be id-sha384 as defined in <xref target="RFC8017" format="default" sectionFormat="of" derivedContent="RFC8017"/>;</li>
            <li pn="section-6.2.2-8.2">The mask generation function must use the algorithm identifier mfg1SHA384Identifier as defined in <xref target="RFC4055" format="default" sectionFormat="of" derivedContent="RFC4055"/>;</li>
            <li pn="section-6.2.2-8.3">The pSourceFunc field must be absent.</li>
          </ul>
          <t pn="section-6.2.2-9">The SMIMECapabilities signed attribute is used to specify a
	  partial list of algorithms that the software announcing the
	  SMIMECapabilities can support. If the SMIMECapabilities signed
	  attribute is included to announce support for the RSAES-OAEP
	  algorithm, it <bcp14>MUST</bcp14> be constructed as defined in <xref target="RFC3560" sectionFormat="of" section="5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc3560#section-5" derivedContent="RFC3560"/>, with the sequence representing the rSAES-OAEP-SHA384-Identifier.
</t>
        </section>
      </section>
    </section>
    <section anchor="content-enc" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-content-encryption">Content Encryption</name>
      <t pn="section-7-1">AES-GCM is the preferred mode for CNSA Suite applications, as described in the <xref target="sec-considerations" format="default" sectionFormat="of" derivedContent="Section 8">Security Considerations</xref>. AES-CBC is acceptable where AES-GCM is not yet available.
</t>
      <section anchor="aes-gcm-enc" numbered="true" toc="include" removeInRFC="false" pn="section-7.1">
        <name slugifiedName="name-aes-gcm-content-encryption">AES-GCM Content Encryption</name>
        <t pn="section-7.1-1">CNSA Suite-compliant S/MIME implementations using the
	authenticated-enveloped-data content type <xref target="RFC5083" format="default" sectionFormat="of" derivedContent="RFC5083"/> <bcp14>MUST</bcp14> use AES <xref target="FIPS197" format="default" sectionFormat="of" derivedContent="FIPS197"/> in Galois Counter Mode (GCM) <xref target="SP80038D" format="default" sectionFormat="of" derivedContent="SP80038D"/> as the content-authenticated encryption algorithm and <bcp14>MUST</bcp14> follow the conventions for using AES-GCM with the CMS defined in <xref target="RFC5084" format="default" sectionFormat="of" derivedContent="RFC5084"/>.
</t>
        <t pn="section-7.1-2">Within the CMS authenticated-enveloped-data content type, content-authenticated encryption algorithm identifiers are located in the AuthEnvelopedData EncryptedContentInfo contentEncryptionAlgorithm field.  The content-authenticated encryption algorithm is used to encipher the content located in the AuthEnvelopedData EncryptedContentInfo encryptedContent field.
</t>
        <t pn="section-7.1-3">The AES-GCM content-authenticated encryption algorithm is described in <xref target="FIPS197" format="default" sectionFormat="of" derivedContent="FIPS197"/> and <xref target="SP80038D" format="default" sectionFormat="of" derivedContent="SP80038D"/>.  The algorithm identifier for AES-256 in GCM mode is:

        </t>
        <sourcecode name="" type="asn.1" markers="false" pn="section-7.1-4">
         id-aes256-GCM  OBJECT IDENTIFIER  ::=  { joint-iso-itu-t(2)
            country(16) us(840) organization(1) gov(101) csor(3)
            nistAlgorithm(4) aes(1) 46 }
</sourcecode>
        <t pn="section-7.1-5">The AlgorithmIdentifier parameters field <bcp14>MUST</bcp14> be present, and the parameters field must contain GCMParameters:
        </t>
        <sourcecode name="" type="asn.1" markers="false" pn="section-7.1-6">
      GCMParameters ::= SEQUENCE {
        aes-nonce        OCTET STRING,
        aes-ICVlen       AES-GCM-ICVlen DEFAULT 12 }
</sourcecode>
        <t pn="section-7.1-7">The authentication tag length (aes-ICVlen) <bcp14>SHALL</bcp14> be 16 (indicating a tag length of 128 bits). 
</t>
        <t pn="section-7.1-8">The initialization vector (aes-nonce) <bcp14>MUST</bcp14> be
	generated in accordance with Section 8.2 of <xref target="SP80038D" format="default" sectionFormat="of" derivedContent="SP80038D"/>. AES-GCM loses security catastrophically if a nonce is reused with a given key on more than one distinct set of input data. Therefore, a fresh content-authenticated encryption key <bcp14>MUST</bcp14> be generated for each message.
</t>
      </section>
      <section anchor="aes-cbc-enc" numbered="true" toc="include" removeInRFC="false" pn="section-7.2">
        <name slugifiedName="name-aes-cbc-content-encryption">AES-CBC Content Encryption</name>
        <t pn="section-7.2-1">CNSA Suite-compliant S/MIME implementations using the
	enveloped-data content type <bcp14>MUST</bcp14> use AES-256 <xref target="FIPS197" format="default" sectionFormat="of" derivedContent="FIPS197"/> in Cipher Block Chaining (CBC)
	mode <xref target="SP80038A" format="default" sectionFormat="of" derivedContent="SP80038A"/> as the content-encryption algorithm and <bcp14>MUST</bcp14> follow the conventions for using AES with the CMS defined in <xref target="RFC3565" format="default" sectionFormat="of" derivedContent="RFC3565"/>.
</t>
        <t pn="section-7.2-2">Within the CMS enveloped-data content type, content-encryption algorithm identifiers are located in the EnvelopedData EncryptedContentInfo contentEncryptionAlgorithm field. The content-encryption algorithm is used to encipher the content located in the EnvelopedData EncryptedContentInfo encryptedContent field.
</t>
        <t pn="section-7.2-3">The AES-CBC content-encryption algorithm is described in <xref target="FIPS197" format="default" sectionFormat="of" derivedContent="FIPS197"/> and <xref target="SP80038A" format="default" sectionFormat="of" derivedContent="SP80038A"/>. The algorithm identifier for AES-256 in CBC mode is:

        </t>
        <sourcecode name="" type="asn.1" markers="false" pn="section-7.2-4">
      id-aes256-CBC  OBJECT IDENTIFIER  ::=  { joint-iso-itu-t(2)
         country(16) us(840) organization(1) gov(101) csor(3)
         nistAlgorithm(4) aes(1) 42 }
</sourcecode>
        <t pn="section-7.2-5">The AlgorithmIdentifier parameters field <bcp14>MUST</bcp14> be present, and the parameters field must contain AES-IV:

        </t>
        <sourcecode name="" type="asn.1" markers="false" pn="section-7.2-6">
      AES-IV  ::=  OCTET STRING (SIZE(16))
</sourcecode>
        <t pn="section-7.2-7">The 16-octet initialization vector is generated at random by the originator. See <xref target="RFC4086" format="default" sectionFormat="of" derivedContent="RFC4086"/> for guidance on generation of random values.
</t>
      </section>
    </section>
    <section anchor="sec-considerations" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t pn="section-8-1">This document specifies the conventions for using the NSA's CNSA Suite algorithms in S/MIME. All of the algorithms and algorithm identifiers have been specified in previous documents.
      </t>
      <t pn="section-8-2">See <xref target="RFC4086" format="default" sectionFormat="of" derivedContent="RFC4086"/> for guidance on generation of random values.
      </t>
      <t pn="section-8-3">The security considerations in <xref target="RFC5652" format="default" sectionFormat="of" derivedContent="RFC5652"/> discuss the CMS as a method for digitally signing data and encrypting data.
      </t>
      <t pn="section-8-4">The security considerations in <xref target="RFC3370" format="default" sectionFormat="of" derivedContent="RFC3370"/> discuss cryptographic algorithm implementation concerns in the context of the CMS.
      </t>
      <t pn="section-8-5">The security considerations in <xref target="RFC5753" format="default" sectionFormat="of" derivedContent="RFC5753"/> discuss the use of elliptic curve cryptography (ECC) in the CMS.
      </t>
      <t pn="section-8-6">The security considerations in <xref target="RFC3565" format="default" sectionFormat="of" derivedContent="RFC3565"/> discuss the use of AES in the CMS.
      </t>
      <t pn="section-8-7">The security considerations in <xref target="RFC8551" format="default" sectionFormat="of" derivedContent="RFC8551"/> apply to this profile, particularly the recommendation to use authenticated encryption modes (i.e., use authenticated-enveloped-data with AES-GCM rather than enveloped-data with AES-CBC).
      </t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="include" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t pn="section-9-1">This document has no IANA actions.
      </t>
    </section>
  </middle>
  <back>
    <references pn="section-10">
      <name slugifiedName="name-references">References</name>
      <references pn="section-10.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="CNSA" target="https://www.cnss.gov/CNSS/Issuances/Policies.cfm" quoteTitle="true" derivedAnchor="CNSA">
          <front>
            <title>Use of Public Standards for Secure Information Sharing</title>
            <seriesInfo name="CNSS Policy" value="15"/>
            <author>
              <organization showOnFrontPage="true">Committee for National Security Systems</organization>
            </author>
            <date month="October" year="2016"/>
          </front>
        </reference>
        <reference anchor="FIPS180" target="https://csrc.nist.gov/publications/detail/fips/180/4/final" quoteTitle="true" derivedAnchor="FIPS180">
          <front>
            <title>Secure Hash Standard (SHS)</title>
            <seriesInfo name="Federal Information Processing Standard" value="180-4"/>
            <author>
              <organization showOnFrontPage="true">National Institute of Standards and Technology</organization>
            </author>
            <date month="August" year="2015"/>
          </front>
        </reference>
        <reference anchor="FIPS186" target="https://csrc.nist.gov/publications/detail/fips/186/4/final" quoteTitle="true" derivedAnchor="FIPS186">
          <front>
            <title>Digital Signature Standard (DSS)</title>
            <seriesInfo name="DOI" value="10.6028/NIST.FIPS.186-4"/>
            <seriesInfo name="FIPS PUB" value="186-4"/>
            <author>
              <organization showOnFrontPage="true">National Institute of Standards and Technology</organization>
            </author>
            <date month="July" year="2013"/>
          </front>
        </reference>
        <reference anchor="FIPS197" target="https://csrc.nist.gov/publications/detail/fips/197/final" quoteTitle="true" derivedAnchor="FIPS197">
          <front>
            <title>Advanced Encryption Standard (AES)</title>
            <seriesInfo name="DOI" value="10.6028/NIST.FIPS.197"/>
            <seriesInfo name="FIPS PUB" value="197"/>
            <author>
              <organization showOnFrontPage="true">National Institute of Standards and Technology</organization>
            </author>
            <date month="November" year="2001"/>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <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="RFC2631" target="https://www.rfc-editor.org/info/rfc2631" quoteTitle="true" derivedAnchor="RFC2631">
          <front>
            <title>Diffie-Hellman Key Agreement Method</title>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1999" month="June"/>
            <abstract>
              <t>This document standardizes one particular Diffie-Hellman variant, based on the ANSI X9.42 draft, developed by the ANSI X9F1 working group. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2631"/>
          <seriesInfo name="DOI" value="10.17487/RFC2631"/>
        </reference>
        <reference anchor="RFC3370" target="https://www.rfc-editor.org/info/rfc3370" quoteTitle="true" derivedAnchor="RFC3370">
          <front>
            <title>Cryptographic Message Syntax (CMS) Algorithms</title>
            <author initials="R." surname="Housley" fullname="R. Housley">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2002" month="August"/>
          </front>
          <seriesInfo name="RFC" value="3370"/>
          <seriesInfo name="DOI" value="10.17487/RFC3370"/>
        </reference>
        <reference anchor="RFC3560" target="https://www.rfc-editor.org/info/rfc3560" quoteTitle="true" derivedAnchor="RFC3560">
          <front>
            <title>Use of the RSAES-OAEP Key Transport Algorithm in Cryptographic Message Syntax (CMS)</title>
            <author initials="R." surname="Housley" fullname="R. Housley">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2003" month="July"/>
            <abstract>
              <t>This document describes the conventions for using the RSAES-OAEP key transport algorithm with the Cryptographic Message Syntax (CMS).  The CMS specifies the enveloped-data content type, which consists of an encrypted content and encrypted content-encryption keys for one or more recipients.  The RSAES-OAEP key transport algorithm can be used to encrypt content-encryption keys for intended recipients.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3560"/>
          <seriesInfo name="DOI" value="10.17487/RFC3560"/>
        </reference>
        <reference anchor="RFC3565" target="https://www.rfc-editor.org/info/rfc3565" quoteTitle="true" derivedAnchor="RFC3565">
          <front>
            <title>Use of the Advanced Encryption Standard (AES) Encryption Algorithm in Cryptographic Message Syntax (CMS)</title>
            <author initials="J." surname="Schaad" fullname="J. Schaad">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2003" month="July"/>
            <abstract>
              <t>This document specifies the conventions for using the Advanced Encryption Standard (AES) algorithm for encryption with the Cryptographic Message Syntax (CMS).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3565"/>
          <seriesInfo name="DOI" value="10.17487/RFC3565"/>
        </reference>
        <reference anchor="RFC4055" target="https://www.rfc-editor.org/info/rfc4055" quoteTitle="true" derivedAnchor="RFC4055">
          <front>
            <title>Additional Algorithms and Identifiers for RSA Cryptography for use in the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author initials="J." surname="Schaad" fullname="J. Schaad">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Kaliski" fullname="B. Kaliski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Housley" fullname="R. Housley">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2005" month="June"/>
            <abstract>
              <t>This document supplements RFC 3279.  It describes the conventions for using the RSA Probabilistic Signature Scheme (RSASSA-PSS) signature algorithm, the RSA Encryption Scheme - Optimal Asymmetric Encryption Padding (RSAES-OAEP) key transport algorithm and additional one-way hash functions with the Public-Key Cryptography Standards (PKCS) #1 version 1.5 signature algorithm in the Internet X.509 Public Key Infrastructure (PKI).  Encoding formats, algorithm identifiers, and parameter formats are specified.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4055"/>
          <seriesInfo name="DOI" value="10.17487/RFC4055"/>
        </reference>
        <reference anchor="RFC4056" target="https://www.rfc-editor.org/info/rfc4056" quoteTitle="true" derivedAnchor="RFC4056">
          <front>
            <title>Use of the RSASSA-PSS Signature Algorithm in Cryptographic Message Syntax (CMS)</title>
            <author initials="J." surname="Schaad" fullname="J. Schaad">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2005" month="June"/>
            <abstract>
              <t>This document specifies the conventions for using the RSASSA-PSS (RSA Probabilistic Signature Scheme) digital signature algorithm with the Cryptographic Message Syntax (CMS).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4056"/>
          <seriesInfo name="DOI" value="10.17487/RFC4056"/>
        </reference>
        <reference anchor="RFC5083" target="https://www.rfc-editor.org/info/rfc5083" quoteTitle="true" derivedAnchor="RFC5083">
          <front>
            <title>Cryptographic Message Syntax (CMS) Authenticated-Enveloped-Data Content Type</title>
            <author initials="R." surname="Housley" fullname="R. Housley">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2007" month="November"/>
            <abstract>
              <t>This document describes an additional content type for the Cryptographic Message Syntax (CMS).  The authenticated-enveloped-data content type is intended for use with authenticated encryption modes. All of the various key management techniques that are supported in the CMS enveloped-data content type are also supported by the CMS authenticated-enveloped-data content type.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5083"/>
          <seriesInfo name="DOI" value="10.17487/RFC5083"/>
        </reference>
        <reference anchor="RFC5084" target="https://www.rfc-editor.org/info/rfc5084" quoteTitle="true" derivedAnchor="RFC5084">
          <front>
            <title>Using AES-CCM and AES-GCM Authenticated Encryption in the Cryptographic Message Syntax (CMS)</title>
            <author initials="R." surname="Housley" fullname="R. Housley">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2007" month="November"/>
            <abstract>
              <t>This document specifies the conventions for using the AES-CCM and the AES-GCM authenticated encryption algorithms with the Cryptographic Message Syntax (CMS) authenticated-enveloped-data content type.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5084"/>
          <seriesInfo name="DOI" value="10.17487/RFC5084"/>
        </reference>
        <reference anchor="RFC5480" target="https://www.rfc-editor.org/info/rfc5480" quoteTitle="true" derivedAnchor="RFC5480">
          <front>
            <title>Elliptic Curve Cryptography Subject Public Key Information</title>
            <author initials="S." surname="Turner" fullname="S. Turner">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Brown" fullname="D. Brown">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Yiu" fullname="K. Yiu">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Housley" fullname="R. Housley">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Polk" fullname="T. Polk">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2009" month="March"/>
            <abstract>
              <t>This document specifies the syntax and semantics for the Subject Public Key Information field in certificates that support Elliptic Curve Cryptography.  This document updates Sections 2.3.5 and 5, and the ASN.1 module of "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 3279.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5480"/>
          <seriesInfo name="DOI" value="10.17487/RFC5480"/>
        </reference>
        <reference anchor="RFC5649" target="https://www.rfc-editor.org/info/rfc5649" quoteTitle="true" derivedAnchor="RFC5649">
          <front>
            <title>Advanced Encryption Standard (AES) Key Wrap with Padding Algorithm</title>
            <author initials="R." surname="Housley" fullname="R. Housley">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Dworkin" fullname="M. Dworkin">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2009" month="September"/>
            <abstract>
              <t>This document specifies a padding convention for use with the AES Key Wrap algorithm specified in RFC 3394.  This convention eliminates the requirement that the length of the key to be wrapped be a multiple of 64 bits, allowing a key of any practical length to be wrapped.  This  memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5649"/>
          <seriesInfo name="DOI" value="10.17487/RFC5649"/>
        </reference>
        <reference anchor="RFC5652" target="https://www.rfc-editor.org/info/rfc5652" quoteTitle="true" derivedAnchor="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author initials="R." surname="Housley" fullname="R. Housley">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2009" month="September"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS).  This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="RFC5753" target="https://www.rfc-editor.org/info/rfc5753" quoteTitle="true" derivedAnchor="RFC5753">
          <front>
            <title>Use of Elliptic Curve Cryptography (ECC) Algorithms in Cryptographic Message Syntax (CMS)</title>
            <author initials="S." surname="Turner" fullname="S. Turner">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Brown" fullname="D. Brown">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2010" month="January"/>
            <abstract>
              <t>This document describes how to use Elliptic Curve Cryptography (ECC) public key algorithms in the Cryptographic Message Syntax (CMS).  The ECC algorithms support the creation of digital signatures and the exchange of keys to encrypt or authenticate content.  The definition of the algorithm processing is based on the NIST FIPS 186-3 for digital signature, NIST SP800-56A and SEC1 for key agreement, RFC 3370 and RFC 3565 for key wrap and content encryption, NIST FIPS 180-3 for message digest, SEC1 for key derivation, and RFC 2104 and RFC 4231 for message authentication code standards.  This document obsoletes RFC 3278.  This document is not an Internet Standards Track  specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5753"/>
          <seriesInfo name="DOI" value="10.17487/RFC5753"/>
        </reference>
        <reference anchor="RFC5754" target="https://www.rfc-editor.org/info/rfc5754" quoteTitle="true" derivedAnchor="RFC5754">
          <front>
            <title>Using SHA2 Algorithms with Cryptographic Message Syntax</title>
            <author initials="S." surname="Turner" fullname="S. Turner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2010" month="January"/>
            <abstract>
              <t>This document describes the conventions for using the Secure Hash Algorithm (SHA) message digest algorithms (SHA-224, SHA-256, SHA-384, SHA-512) with the Cryptographic Message Syntax (CMS).  It also describes the conventions for using these algorithms with the CMS and the Digital Signature Algorithm (DSA), Rivest Shamir Adleman (RSA), and Elliptic Curve DSA (ECDSA) signature algorithms.  Further, it provides SMIMECapabilities attribute values for each algorithm.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5754"/>
          <seriesInfo name="DOI" value="10.17487/RFC5754"/>
        </reference>
        <reference anchor="RFC8017" target="https://www.rfc-editor.org/info/rfc8017" quoteTitle="true" derivedAnchor="RFC8017">
          <front>
            <title>PKCS #1: RSA Cryptography Specifications Version 2.2</title>
            <author initials="K." surname="Moriarty" fullname="K. Moriarty" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Kaliski" fullname="B. Kaliski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Jonsson" fullname="J. Jonsson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Rusch" fullname="A. Rusch">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="November"/>
            <abstract>
              <t>This document provides recommendations for the implementation of public-key cryptography based on the RSA algorithm, covering cryptographic primitives, encryption schemes, signature schemes with appendix, and ASN.1 syntax for representing keys and for identifying the schemes.</t>
              <t>This document represents a republication of PKCS #1 v2.2 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series.  By publishing this RFC, change control is transferred to the IETF.</t>
              <t>This document also obsoletes RFC 3447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8017"/>
          <seriesInfo name="DOI" value="10.17487/RFC8017"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <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>
        <reference anchor="RFC8551" target="https://www.rfc-editor.org/info/rfc8551" quoteTitle="true" derivedAnchor="RFC8551">
          <front>
            <title>Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 Message Specification</title>
            <author initials="J." surname="Schaad" fullname="J. Schaad">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Ramsdell" fullname="B. Ramsdell">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Turner" fullname="S. Turner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2019" month="April"/>
            <abstract>
              <t>This document defines Secure/Multipurpose Internet Mail Extensions (S/MIME) version 4.0.  S/MIME provides a consistent way to send and receive secure MIME data.  Digital signatures provide authentication, message integrity, and non-repudiation with proof of origin. Encryption provides data confidentiality.  Compression can be used to reduce data size.  This document obsoletes RFC 5751.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8551"/>
          <seriesInfo name="DOI" value="10.17487/RFC8551"/>
        </reference>
        <reference anchor="RFC8603" target="https://www.rfc-editor.org/info/rfc8603" quoteTitle="true" derivedAnchor="RFC8603">
          <front>
            <title>Commercial National Security Algorithm (CNSA) Suite Certificate and Certificate Revocation List (CRL) Profile</title>
            <author initials="M." surname="Jenkins" fullname="M. Jenkins">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Zieglar" fullname="L. Zieglar">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2019" month="May"/>
            <abstract>
              <t>This document specifies a base profile for X.509 v3 Certificates and X.509 v2 Certificate Revocation Lists (CRLs) for use with the United States National Security Agency's Commercial National Security Algorithm (CNSA) Suite.  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.  It is made publicly available for use by developers and operators of these and any other system deployments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8603"/>
          <seriesInfo name="DOI" value="10.17487/RFC8603"/>
        </reference>
        <reference anchor="SEC1" target="https://www.secg.org/sec1-v2.pdf" quoteTitle="true" derivedAnchor="SEC1">
          <front>
            <title>SEC1: Elliptic Curve Cryptography</title>
            <author>
              <organization showOnFrontPage="true">Standards for Efficient Cryptography Group</organization>
            </author>
            <date month="May" year="2009"/>
          </front>
        </reference>
        <reference anchor="SP80038A" target="https://csrc.nist.gov/publications/detail/sp/800-38a/final" quoteTitle="true" derivedAnchor="SP80038A">
          <front>
            <title>Recommendation for Block Cipher Modes of Operation: Methods and Techniques</title>
            <seriesInfo name="DOI" value="10.6028/NIST.SP.800-38A"/>
            <seriesInfo name="Special Publication" value="800-38A"/>
            <author fullname="Morris Dworkin" initials="M." surname="Dworkin"/>
            <date month="December" year="2001"/>
          </front>
        </reference>
        <reference anchor="SP80038D" target="https://csrc.nist.gov/publications/detail/sp/800-38d/final" quoteTitle="true" derivedAnchor="SP80038D">
          <front>
            <title>Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC</title>
            <seriesInfo name="DOI" value="10.6028/NIST.SP.800-38D"/>
            <seriesInfo name="Special Publication" value="800-38D"/>
            <author fullname="Morris Dworkin" initials="M." surname="Dworkin"/>
            <date month="November" year="2007"/>
          </front>
        </reference>
        <reference anchor="SP80038F" target="https://csrc.nist.gov/publications/detail/sp/800-38f/final" quoteTitle="true" derivedAnchor="SP80038F">
          <front>
            <title>Recommendation for Block Cipher Modes of Operation: Methods for Key Wrapping</title>
            <seriesInfo name="DOI" value="10.6028/NIST.SP.800-38F"/>
            <seriesInfo name="Special Publication" value="800-38F"/>
            <author fullname="Morris Dworkin" initials="M." surname="Dworkin"/>
            <date month="December" year="2012"/>
          </front>
        </reference>
        <reference anchor="X208" target="https://www.itu.int/rec/T-REC-X.208-198811-W/en" quoteTitle="true" derivedAnchor="X208">
          <front>
            <title>Specification of Abstract Syntax Notation One (ASN.1)</title>
            <seriesInfo name="CCITT Recommendation" value="X.208"/>
            <author>
              <organization showOnFrontPage="true">CCITT</organization>
            </author>
            <date year="1988"/>
          </front>
        </reference>
        <reference anchor="X209" target="https://www.itu.int/rec/T-REC-X.209-198811-W/en" quoteTitle="true" derivedAnchor="X209">
          <front>
            <title>Specification of Basic Encoding Rules for Abstract Syntax Notation One (ASN.1)</title>
            <seriesInfo name="CCITT Recommendation" value="X.209"/>
            <author>
              <organization showOnFrontPage="true">CCITT</organization>
            </author>
            <date year="1988"/>
          </front>
        </reference>
        <reference anchor="X509" target="https://www.itu.int/rec/T-REC-X.509-198811-S" quoteTitle="true" derivedAnchor="X509">
          <front>
            <title>The Directory - Authentication Framework</title>
            <seriesInfo name="CCITT Recommendation" value="X.509"/>
            <author>
              <organization showOnFrontPage="true">CCITT</organization>
            </author>
            <date year="1988"/>
          </front>
        </reference>
      </references>
      <references pn="section-10.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC4086" target="https://www.rfc-editor.org/info/rfc4086" quoteTitle="true" derivedAnchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author initials="D." surname="Eastlake 3rd" fullname="D. Eastlake 3rd">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Schiller" fullname="J. Schiller">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Crocker" fullname="S. Crocker">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2005" month="June"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts.  However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities.  The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult.  This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities.  It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications.  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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="SP80059" target="https://csrc.nist.gov/publications/detail/sp/800-59/final" quoteTitle="true" derivedAnchor="SP80059">
          <front>
            <title>Guideline for Identifying an Information System as a National Security System</title>
            <seriesInfo name="DOI" value="10.6028/NIST.SP.800-59"/>
            <seriesInfo name="Special Publication" value="800-59"/>
            <author fullname="William Barker" initials="W." surname="Barker"/>
            <date month="August" year="2003"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-authors-address">Author's Address</name>
      <author fullname="Michael Jenkins" initials="M." surname="Jenkins">
        <organization abbrev="NSA" showOnFrontPage="true">National Security Agency</organization>
        <address>
          <email>mjjenki@nsa.gov</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
