RFC 8755: Using Commercial National Security Algorithm Suite Algorithms in Secure/Multipurpose Internet Mail Extensions
- M. Jenkins
Abstract
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
Status of This Memo
This document is not an Internet Standards Track specification; it is published for informational purposes.¶
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.¶
Information about the current status of this document, any
errata, and how to provide feedback on it may be obtained at
https://
Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://
1. Introduction
This document specifies the conventions for using the United States National Security Agency's Commercial National Security Algorithm (CNSA) Suite algorithms [CNSA] in Secure
S/MIME makes use of the Cryptographic Message Syntax (CMS) [RFC5652] [RFC5083]. In particular, the signed-data, enveloped-data, and authenticated
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.¶
1.1. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
2. The Commercial National Security Algorithm Suite
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.¶
Recently, cryptographic transition plans have become overshadowed by
the prospect of the development of a cryptographical
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.¶
3. Requirements and Assumptions
CMS values are generated using ASN.1 [X208], the Basic Encoding Rules (BER) [X209], and the Distinguished Encoding Rules (DER) [X509].¶
The elliptic curve used in the CNSA Suite is specified in [FIPS186] and appears in the literature under two different names. For the sake of clarity, we list both names below:¶
For CNSA Suite applications, public key certificates used to verify S/MIME signatures MUST be compliant with the CNSA Suite Certificate and Certificate Revocation List (CRL) profile specified in [RFC8603].¶
Within the CMS signed-data content type, signature algorithm identifiers are located in the signature
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 6.1.1 and 6.1.2, respectively.¶
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.¶
RSA signature key pairs used in CNSA Suite-compliant implementations are either RSA-3072 or RSA-4096. The RSA exponent e MUST satisfy 216 < e < 2256 and be odd per [FIPS186].¶
It is recognized that, while the vast majority of RSA signatures are currently made using the RSASSA
This document assumes that the required trust anchors have been securely provisioned to the client.¶
All implementations use SHA-384 for hashing and either AES-CBC or AES-GCM for encryption, the requirements for which are given in Section 4 and Section 7, respectively.¶
4. SHA-384 Message Digest Algorithm
SHA-384 is the sole CNSA Suite message digest algorithm. [RFC5754] specifies the conventions for using SHA-384 with the Cryptographic Message Syntax (CMS). CNSA Suite-compliant S/MIME implementations MUST follow the conventions in [RFC5754].¶
Within the CMS signed-data content type, message digest algorithm identifiers are located in the SignedData digest
The SHA-384 message digest algorithm is defined in FIPS Pub 180 [FIPS180]. The algorithm identifier for SHA-384 is defined in [RFC5754] as follows:¶
For SHA-384, the Algorithm
5. Digital Signature
5.1. ECDSA Signature
The Elliptic Curve Digital Signature Algorithm (ECDSA) is the CNSA Suite digital signature algorithm based on ECC. [RFC5753] specifies the conventions for using ECDSA with the Cryptographic Message Syntax (CMS). CNSA Suite-compliant S/MIME implementations MUST follow the conventions in [RFC5753].¶
[RFC5480] defines the signature algorithm identifier used in CMS for ECDSA with SHA-384 as follows:¶
When the ecdsa
When signing, the ECDSA algorithm generates two values, commonly called r and s. These two values MUST be encoded using the ECDSA-Sig-Value type specified in [RFC5480]:¶
5.2. RSA Signature
The RSA signature generation process and the encoding of the result is either RSASSA
5.2.1. RSA-PKCS1-v1_5
[RFC5754] defines the signature algorithm identifier used in CMS for an RSA signature with SHA-384 as follows:¶
When the sha384With
5.2.2. RSA-PSS
[RFC4056] defines the signature algorithm identifier used in CMS for an RSA-PSS signature as follows (presented here in expanded form):¶
The parameters field of an Algorithm
The Algorithm
6. Key Establishment
6.1. Elliptic Curve Key Agreement
Elliptic Curve Diffie-Hellman (ECDH) is the CNSA Suite key agreement algorithm. Since S/MIME is used in store
When a key agreement algorithm is used, the following steps are performed:¶
Key derivation is discussed in Section 6.1.1. Key wrapping is discussed in Section 6.1.2.¶
Section 3.1 of [RFC5753] specifies the conventions for using ECDH with the CMS. CNSA Suite-compliant S/MIME implementations MUST follow these conventions.¶
Within the CMS enveloped-data and authenticated
The key
The key
6.1.1. Key Derivation Functions
KDFs based on SHA-384 are used to derive a pairwise
key-encryption key from the shared secret produced by
ephemeral
As specified in Section 7.1.8 of [RFC5753], the ANSI-X9.63-KDF described in Section 3.6.1 of [SEC1] and based on SHA-384 MUST be used.¶
As specified in Section 7.2 of [RFC5753], when using ECDH with the CMS enveloped-data or authenticated
In the CNSA Suite for S/MIME, the fields of ECC
ECC
The KDF specified in Section 3.6.1 of [SEC1] describes how to generate an essentially arbitrary amount of keying material from a shared secret, Z, produced by ephemeral
The KM blocks are concatenated left to right as they are generated, and the first (leftmost) L bits are used as the KEK:¶
In the CNSA Suite for S/MIME, the elements of the KDF are defined as follows:¶
In the CNSA Suite for S/MIME, exactly one iteration is needed; the Counter is not incremented. The key-encryption key (KEK) MUST be the first (leftmost) 256 bits of the SHA-384 output value:¶
Note that the only source of secret entropy in this computation is Z.¶
6.1.2. AES Key Wrap
The AES Key Wrap with Padding key-encryption algorithm, as specified in [RFC5649] and [SP80038F], is used to encrypt the content
Within the CMS enveloped-data content type, key wrap algorithm identifiers are located in the Key
The Key
6.2. RSA Key Transport
RSA encryption (RSA) is the CNSA Suite key transport algorithm. The RSA key transport algorithm is the RSA encryption scheme defined in [RFC8017], where the message to be encrypted is the content
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 MUST be compliant with [RFC8603]. These certificates are suitable for use with either RSAES-OAEP or RSAES
6.2.1. RSAES-PKCS1-v1_5
Section 4.2 of [RFC3370] specifies the conventions for using RSAES
Within the CMS enveloped-data and authenticated
The algorithm identifier for RSA (PKCS #1 v1.5) is:¶
The Algorithm
6.2.2. RSAES-OAEP
[RFC3560] specifies the conventions for using RSAES-OAEP with the CMS. CNSA Suite-compliant S/MIME implementations employing this form of key transport MUST follow these conventions.¶
Within the CMS enveloped-data and authenticated
The algorithm identifier for RSA (OAEP) is:¶
The parameters field of an Algorithm
The Algorithm
The SMIMECapabiliti
7. Content Encryption
AES-GCM is the preferred mode for CNSA Suite applications, as described in the Security Considerations (Section 8). AES-CBC is acceptable where AES-GCM is not yet available.¶
7.1. AES-GCM Content Encryption
CNSA Suite-compliant S/MIME implementations using the
authenticated
Within the CMS authenticated
The AES-GCM content
The Algorithm
The authentication tag length (aes-ICVlen) SHALL be 16 (indicating a tag length of 128 bits).¶
The initialization vector (aes-nonce) MUST be
generated in accordance with Section 8.2 of [SP80038D]. AES-GCM loses security catastrophicall
7.2. AES-CBC Content Encryption
CNSA Suite-compliant S/MIME implementations using the
enveloped-data content type MUST use AES-256 [FIPS197] in Cipher Block Chaining (CBC)
mode [SP80038A] as the content
Within the CMS enveloped-data content type, content
The AES-CBC content
The Algorithm
The 16-octet initialization vector is generated at random by the originator. See [RFC4086] for guidance on generation of random values.¶
8. Security Considerations
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.¶
See [RFC4086] for guidance on generation of random values.¶
The security considerations in [RFC5652] discuss the CMS as a method for digitally signing data and encrypting data.¶
The security considerations in [RFC3370] discuss cryptographic algorithm implementation concerns in the context of the CMS.¶
The security considerations in [RFC5753] discuss the use of elliptic curve cryptography (ECC) in the CMS.¶
The security considerations in [RFC3565] discuss the use of AES in the CMS.¶
The security considerations in [RFC8551] apply to this profile, particularly the recommendation to use authenticated encryption modes (i.e., use authenticated
9. IANA Considerations
This document has no IANA actions.¶
10. References
10.1. Normative References
- [CNSA]
-
Committee for National Security Systems, "Use of Public Standards for Secure Information Sharing", CNSS Policy 15, , <https://
www >..cnss .gov /CNSS /Issuances /Policies .cfm - [FIPS180]
-
National Institute of Standards and Technology, "Secure Hash Standard (SHS)", Federal Information Processing Standard 180-4, , <https://
csrc >..nist .gov /publications /detail /fips /180 /4 /final - [FIPS186]
-
National Institute of Standards and Technology, "Digital Signature Standard (DSS)", DOI 10
.6028 , FIPS PUB 186-4, , <https:///NIST .FIPS .186 -4 csrc >..nist .gov /publications /detail /fips /186 /4 /final - [FIPS197]
-
National Institute of Standards and Technology, "Advanced Encryption Standard (AES)", DOI 10
.6028 , FIPS PUB 197, , <https:///NIST .FIPS .197 csrc >..nist .gov /publications /detail /fips /197 /final - [RFC2119]
-
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10
.17487 , , <https:///RFC2119 www >..rfc -editor .org /info /rfc2119 - [RFC2631]
-
Rescorla, E., "Diffie-Hellman Key Agreement Method", RFC 2631, DOI 10
.17487 , , <https:///RFC2631 www >..rfc -editor .org /info /rfc2631 - [RFC3370]
-
Housley, R., "Cryptographic Message Syntax (CMS) Algorithms", RFC 3370, DOI 10
.17487 , , <https:///RFC3370 www >..rfc -editor .org /info /rfc3370 - [RFC3560]
-
Housley, R., "Use of the RSAES-OAEP Key Transport Algorithm in Cryptographic Message Syntax (CMS)", RFC 3560, DOI 10
.17487 , , <https:///RFC3560 www >..rfc -editor .org /info /rfc3560 - [RFC3565]
-
Schaad, J., "Use of the Advanced Encryption Standard (AES) Encryption Algorithm in Cryptographic Message Syntax (CMS)", RFC 3565, DOI 10
.17487 , , <https:///RFC3565 www >..rfc -editor .org /info /rfc3565 - [RFC4055]
-
Schaad, J., Kaliski, B., and R. Housley, "Additional Algorithms and Identifiers for RSA Cryptography for use in the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 4055, DOI 10
.17487 , , <https:///RFC4055 www >..rfc -editor .org /info /rfc4055 - [RFC4056]
-
Schaad, J., "Use of the RSASSA-PSS Signature Algorithm in Cryptographic Message Syntax (CMS)", RFC 4056, DOI 10
.17487 , , <https:///RFC4056 www >..rfc -editor .org /info /rfc4056 - [RFC5083]
-
Housley, R., "Cryptographic Message Syntax (CMS) Authenticated
-Enveloped , RFC 5083, DOI 10-Data Content Type" .17487 , , <https:///RFC5083 www >..rfc -editor .org /info /rfc5083 - [RFC5084]
-
Housley, R., "Using AES-CCM and AES-GCM Authenticated Encryption in the Cryptographic Message Syntax (CMS)", RFC 5084, DOI 10
.17487 , , <https:///RFC5084 www >..rfc -editor .org /info /rfc5084 - [RFC5480]
-
Turner, S., Brown, D., Yiu, K., Housley, R., and T. Polk, "Elliptic Curve Cryptography Subject Public Key Information", RFC 5480, DOI 10
.17487 , , <https:///RFC5480 www >..rfc -editor .org /info /rfc5480 - [RFC5649]
-
Housley, R. and M. Dworkin, "Advanced Encryption Standard (AES) Key Wrap with Padding Algorithm", RFC 5649, DOI 10
.17487 , , <https:///RFC5649 www >..rfc -editor .org /info /rfc5649 - [RFC5652]
-
Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, RFC 5652, DOI 10
.17487 , , <https:///RFC5652 www >..rfc -editor .org /info /rfc5652 - [RFC5753]
-
Turner, S. and D. Brown, "Use of Elliptic Curve Cryptography (ECC) Algorithms in Cryptographic Message Syntax (CMS)", RFC 5753, DOI 10
.17487 , , <https:///RFC5753 www >..rfc -editor .org /info /rfc5753 - [RFC5754]
-
Turner, S., "Using SHA2 Algorithms with Cryptographic Message Syntax", RFC 5754, DOI 10
.17487 , , <https:///RFC5754 www >..rfc -editor .org /info /rfc5754 - [RFC8017]
-
Moriarty, K., Ed., Kaliski, B., Jonsson, J., and A. Rusch, "PKCS #1: RSA Cryptography Specifications Version 2.2", RFC 8017, DOI 10
.17487 , , <https:///RFC8017 www >..rfc -editor .org /info /rfc8017 - [RFC8174]
-
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10
.17487 , , <https:///RFC8174 www >..rfc -editor .org /info /rfc8174 - [RFC8551]
-
Schaad, J., Ramsdell, B., and S. Turner, "Secure
/Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 Message Specification" , RFC 8551, DOI 10.17487 , , <https:///RFC8551 www >..rfc -editor .org /info /rfc8551 - [RFC8603]
-
Jenkins, M. and L. Zieglar, "Commercial National Security Algorithm (CNSA) Suite Certificate and Certificate Revocation List (CRL) Profile", RFC 8603, DOI 10
.17487 , , <https:///RFC8603 www >..rfc -editor .org /info /rfc8603 - [SEC1]
-
Standards for Efficient Cryptography Group, "SEC1: Elliptic Curve Cryptography", , <https://
www >..secg .org /sec1 -v2 .pdf - [SP80038A]
-
Dworkin, M., "Recommendation for Block Cipher Modes of Operation: Methods and Techniques", DOI 10
.6028 , Special Publication 800-38A, , <https:///NIST .SP .800 -38A csrc >..nist .gov /publications /detail /sp /800 -38a /final - [SP80038D]
-
Dworkin, M., "Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC", DOI 10
.6028 , Special Publication 800-38D, , <https:///NIST .SP .800 -38D csrc >..nist .gov /publications /detail /sp /800 -38d /final - [SP80038F]
-
Dworkin, M., "Recommendation for Block Cipher Modes of Operation: Methods for Key Wrapping", DOI 10
.6028 , Special Publication 800-38F, , <https:///NIST .SP .800 -38F csrc >..nist .gov /publications /detail /sp /800 -38f /final - [X208]
-
CCITT, "Specification of Abstract Syntax Notation One (ASN.1)", CCITT Recommendation X.208, , <https://
www >..itu .int /rec /T -REC -X .208 -198811 -W /en - [X209]
-
CCITT, "Specification of Basic Encoding Rules for Abstract Syntax Notation One (ASN.1)", CCITT Recommendation X.209, , <https://
www >..itu .int /rec /T -REC -X .209 -198811 -W /en - [X509]
-
CCITT, "The Directory - Authentication Framework", CCITT Recommendation X.509, , <https://
www >..itu .int /rec /T -REC -X .509 -198811 -S
10.2. Informative References
- [RFC4086]
-
Eastlake 3rd, D., Schiller, J., and S. Crocker, "Randomness Requirements for Security", BCP 106, RFC 4086, DOI 10
.17487 , , <https:///RFC4086 www >..rfc -editor .org /info /rfc4086 - [SP80059]
-
Barker, W., "Guideline for Identifying an Information System as a National Security System", DOI 10
.6028 , Special Publication 800-59, , <https:///NIST .SP .800 -59 csrc >..nist .gov /publications /detail /sp /800 -59 /final