diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc9044.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc9044.txt')
-rw-r--r-- | doc/rfc/rfc9044.txt | 353 |
1 files changed, 353 insertions, 0 deletions
diff --git a/doc/rfc/rfc9044.txt b/doc/rfc/rfc9044.txt new file mode 100644 index 0000000..8441447 --- /dev/null +++ b/doc/rfc/rfc9044.txt @@ -0,0 +1,353 @@ + + + + +Internet Engineering Task Force (IETF) R. Housley +Request for Comments: 9044 Vigil Security +Category: Standards Track June 2021 +ISSN: 2070-1721 + + +Using the AES-GMAC Algorithm with the Cryptographic Message Syntax (CMS) + +Abstract + + This document specifies the conventions for using the AES-GMAC + Message Authentication Code algorithm with the Cryptographic Message + Syntax (CMS) as specified in RFC 5652. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in 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://www.rfc-editor.org/info/rfc9044. + +Copyright Notice + + Copyright (c) 2021 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://trustee.ietf.org/license-info) 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. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + +Table of Contents + + 1. Introduction + 2. Terminology + 3. Message Authentication Code Algorithms + 3.1. AES-GMAC + 4. Implementation Considerations + 5. ASN.1 Module + 6. IANA Considerations + 7. Security Considerations + 8. References + 8.1. Normative References + 8.2. Informative References + Acknowledgements + Author's Address + +1. Introduction + + This document specifies the conventions for using the AES-GMAC [AES] + [GCM] Message Authentication Code (MAC) algorithm with the + Cryptographic Message Syntax (CMS) [RFC5652]. + +2. 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. + +3. Message Authentication Code Algorithms + + This section specifies the conventions employed by CMS [RFC5652] + implementations that support the AES-GMAC [AES] [GCM] Message + Authentication Code (MAC) algorithm. + + MAC algorithm identifiers are located in the AuthenticatedData + macAlgorithm field. + + MAC values are located in the AuthenticatedData mac field. + +3.1. AES-GMAC + + The AES-GMAC [AES] [GCM] Message Authentication Code (MAC) algorithm + uses one of the following algorithm identifiers in the + AuthenticatedData macAlgorithm field; the choice depends on the size + of the AES key, which is either 128 bits, 192 bits, or 256 bits: + + aes OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) + organization(1) gov(101) csor(3) nistAlgorithm(4) 1 } + + id-aes128-GMAC OBJECT IDENTIFIER ::= { aes 9 } + + id-aes192-GMAC OBJECT IDENTIFIER ::= { aes 29 } + + id-aes256-GMAC OBJECT IDENTIFIER ::= { aes 49 } + + For all three of these algorithm identifier values, the + AlgorithmIdentifier parameters field MUST be present, and the + parameters MUST contain GMACParameters: + + GMACParameters ::= SEQUENCE { + nonce OCTET STRING, -- recommended size is 12 octets + length MACLength DEFAULT 12 } + + MACLength ::= INTEGER (12 | 13 | 14 | 15 | 16) + + The GMACParameters nonce field is the GMAC initialization vector. + The nonce may have any number of bits between 8 and (2^64)-1, but it + MUST be a multiple of 8 bits. Within the scope of any content- + authentication key, the nonce value MUST be unique. A nonce value of + 12 octets can be processed more efficiently, so that length for the + nonce value is RECOMMENDED. + + The GMACParameters length field tells the size of the message + authentication code. It MUST match the size in octets of the value + in the AuthenticatedData mac field. A length of 12 octets is + RECOMMENDED. + +4. Implementation Considerations + + An implementation of the Advanced Encryption Standard (AES) Galois/ + Counter Mode (GCM) authenticated encryption algorithm is specified in + [GCM]. An implementation of AES-GCM can be used to compute the GMAC + message authentication code by providing the content-authentication + key as the AES key, the nonce as the initialization vector, a zero- + length plaintext content, and the content to be authenticated as the + additional authenticated data (AAD). The result of the AES-GCM + invocation is the AES-GMAC authentication code, which is called the + "authentication tag" in some implementations. In AES-GCM, the + encryption step is skipped when no input plaintext is provided; + therefore, no ciphertext is produced. + + The DEFAULT and RECOMMENDED values in GMACParameters were selected to + align with the parameters defined for AES-GCM in Section 3.2 of + [RFC5084]. + +5. ASN.1 Module + + The following ASN.1 module uses the definition for MAC-ALGORITHM from + [RFC5912]. + + CryptographicMessageSyntaxGMACAlgorithms + { iso(1) member-body(2) us(840) rsadsi(113549) + pkcs(1) pkcs-9(9) smime(16) modules(0) + id-mod-aes-gmac-alg-2020(72) } + + DEFINITIONS IMPLICIT TAGS ::= + BEGIN + + -- EXPORTS All + + IMPORTS + AlgorithmIdentifier{}, MAC-ALGORITHM + FROM AlgorithmInformation-2009 -- from [RFC5912] + { iso(1) identified-organization(3) dod(6) internet(1) + security(5) mechanisms(5) pkix(7) id-mod(0) + id-mod-algorithmInformation-02(58)} ; + + -- Object Identifiers + + aes OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) + organization(1) gov(101) csor(3) nistAlgorithm(4) 1 } + + id-aes128-GMAC OBJECT IDENTIFIER ::= { aes 9 } + + id-aes192-GMAC OBJECT IDENTIFIER ::= { aes 29 } + + id-aes256-GMAC OBJECT IDENTIFIER ::= { aes 49 } + + -- GMAC Parameters + + GMACParameters ::= SEQUENCE { + nonce OCTET STRING, -- recommended size is 12 octets + length MACLength DEFAULT 12 } + + MACLength ::= INTEGER (12 | 13 | 14 | 15 | 16) + + -- Algorithm Identifiers + + maca-aes128-GMAC MAC-ALGORITHM ::= { + IDENTIFIER id-aes128-GMAC + PARAMS TYPE GMACParameters ARE required + IS-KEYED-MAC TRUE } + + maca-aes192-GMAC MAC-ALGORITHM ::= { + IDENTIFIER id-aes192-GMAC + PARAMS TYPE GMACParameters ARE required + IS-KEYED-MAC TRUE } + + maca-aes256-GMAC MAC-ALGORITHM ::= { + IDENTIFIER id-aes256-GMAC + PARAMS TYPE GMACParameters ARE required + IS-KEYED-MAC TRUE } + + END -- of CryptographicMessageSyntaxGMACAlgorithms + +6. IANA Considerations + + IANA has registered the object identifier shown in Table 1 in the + "SMI Security for S/MIME Module Identifier (1.2.840.113549.1.9.16.0)" + registry. + + +=========+==========================+============+ + | Decimal | Description | References | + +=========+==========================+============+ + | 72 | id-mod-aes-gmac-alg-2020 | RFC 9044 | + +---------+--------------------------+------------+ + + Table 1 + +7. Security Considerations + + The CMS provides a method for authenticating data. This document + identifies the conventions for using the AES-GMAC algorithm with the + CMS. + + The key management technique employed to distribute message- + authentication keys must itself provide authentication; otherwise, + the content is delivered with integrity from an unknown source. + + When more than two parties share the same message-authentication key, + data origin authentication is not provided. Any party that knows the + message-authentication key can compute a valid MAC; therefore, the + content could originate from any one of the parties. + + Within the scope of any content-authentication key, the AES-GMAC + nonce value MUST be unique. Use of a nonce value more than once + allows an attacker to generate valid AES-GMAC authentication codes + for arbitrary messages, resulting in the loss of authentication as + described in Appendix A of [GCM]. + + Within the scope of any content-authentication key, the + authentication tag length (MACLength) MUST be fixed. + + If AES-GMAC is used as a building block in another algorithm (e.g., + as a pseudorandom function), AES-GMAC MUST be used only one time by + that algorithm. For instance, AES-GMAC MUST NOT be used as the + pseudorandom function for PBKDF2. + + When initialization vector (IV) lengths other than 96 bits are used, + the GHASH function is used to process the provided IV, which + introduces a potential for IV collisions. However, IV collisions are + not a concern with CMS AuthenticatedData because a fresh content- + authentication key is usually generated for each message. + + The probability of a successful forgery is close to 2^(-t), where t + is the number of bits in the authentication tag length (MACLength*8). + This nearly ideal authentication protection is achieved for CMS + AuthenticatedData when a fresh content-authentication key is + generated for each message. However, the strength of GMAC degrades + slightly as a function of the length of the message being + authenticated [F2005] [MV2005]. Implementations SHOULD use 16-octet + authentication tags for messages over 2^64 octets. + + Implementations must randomly generate message-authentication keys. + The use of inadequate pseudorandom number generators (PRNGs) to + generate keys can result in little or no security. An attacker may + find it much easier to reproduce the PRNG environment that produced + the keys, searching the resulting small set of possibilities, rather + than brute-force searching the whole key space. The generation of + quality random numbers is difficult. [RFC4086] offers important + guidance in this area. + + Implementers should be aware that cryptographic algorithms become + weaker with time. As new cryptanalysis techniques are developed and + computing performance improves, the work factor to break a particular + cryptographic algorithm will reduce. Therefore, cryptographic + algorithm implementations should be modular, allowing new algorithms + to be readily inserted. That is, implementers should be prepared to + regularly update the set of algorithms in their implementations. + More information is available in BCP 201 [RFC7696]. + +8. References + +8.1. Normative References + + [AES] National Institute of Standards and Technology, "Advanced + Encryption Standard (AES)", FIPS PUB 197, + DOI 10.6028/NIST.FIPS.197, November 2001, + <https://doi.org/10.6028/NIST.FIPS.197>. + + [GCM] Dworkin, M., "Recommendation for Block Cipher Modes of + Operation: Galois/Counter Mode (GCM) and GMAC", NIST + Special Publication 800-38D, DOI 10.6028/NIST.SP.800-38D, + November 2007, <https://doi.org/10.6028/NIST.SP.800-38D>. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, + DOI 10.17487/RFC2119, March 1997, + <https://www.rfc-editor.org/info/rfc2119>. + + [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, + RFC 5652, DOI 10.17487/RFC5652, September 2009, + <https://www.rfc-editor.org/info/rfc5652>. + + [RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the + Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, + DOI 10.17487/RFC5912, June 2010, + <https://www.rfc-editor.org/info/rfc5912>. + + [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC + 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, + May 2017, <https://www.rfc-editor.org/info/rfc8174>. + +8.2. Informative References + + [F2005] Ferguson, N., "Authentication weaknesses in GCM", May + 2005, <https://csrc.nist.gov/csrc/media/projects/block- + cipher-techniques/documents/bcm/comments/cwc-gcm/ + ferguson2.pdf>. + + [MV2005] McGrew, D. and J. Viega, "GCM Update", May 2005, + <https://csrc.nist.gov/CSRC/media/Projects/Block-Cipher- + Techniques/documents/BCM/Comments/CWC-GCM/gcm-update.pdf>. + + [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, + "Randomness Requirements for Security", BCP 106, RFC 4086, + DOI 10.17487/RFC4086, June 2005, + <https://www.rfc-editor.org/info/rfc4086>. + + [RFC5084] Housley, R., "Using AES-CCM and AES-GCM Authenticated + Encryption in the Cryptographic Message Syntax (CMS)", + RFC 5084, DOI 10.17487/RFC5084, November 2007, + <https://www.rfc-editor.org/info/rfc5084>. + + [RFC7696] Housley, R., "Guidelines for Cryptographic Algorithm + Agility and Selecting Mandatory-to-Implement Algorithms", + BCP 201, RFC 7696, DOI 10.17487/RFC7696, November 2015, + <https://www.rfc-editor.org/info/rfc7696>. + +Acknowledgements + + Many thanks to Hans Aschauer, Hendrik Brockhaus, Quynh Dang, Roman + Danyliw, Tim Hollebeek, Ben Kaduk, Mike Ounsworth, and Magnus + Westerlund for their careful review and thoughtful improvements. + +Author's Address + + Russ Housley + Vigil Security, LLC + 516 Dranesville Road + Herndon, VA 20170 + United States of America + + Email: housley@vigilsec.com |