summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8750.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc8750.txt')
-rw-r--r--doc/rfc/rfc8750.txt377
1 files changed, 377 insertions, 0 deletions
diff --git a/doc/rfc/rfc8750.txt b/doc/rfc/rfc8750.txt
new file mode 100644
index 0000000..4bf68ae
--- /dev/null
+++ b/doc/rfc/rfc8750.txt
@@ -0,0 +1,377 @@
+
+
+
+
+Internet Engineering Task Force (IETF) D. Migault
+Request for Comments: 8750 Ericsson
+Category: Standards Track T. Guggemos
+ISSN: 2070-1721 LMU Munich
+ Y. Nir
+ Dell Technologies
+ March 2020
+
+
+ Implicit Initialization Vector (IV) for Counter-Based Ciphers in
+ Encapsulating Security Payload (ESP)
+
+Abstract
+
+ Encapsulating Security Payload (ESP) sends an initialization vector
+ (IV) in each packet. The size of the IV depends on the applied
+ transform and is usually 8 or 16 octets for the transforms defined at
+ the time this document was written. When used with IPsec, some
+ algorithms, such as AES-GCM, AES-CCM, and ChaCha20-Poly1305, take the
+ IV to generate a nonce that is used as an input parameter for
+ encrypting and decrypting. This IV must be unique but can be
+ predictable. As a result, the value provided in the ESP Sequence
+ Number (SN) can be used instead to generate the nonce. This avoids
+ sending the IV itself and saves 8 octets per packet in the case of
+ AES-GCM, AES-CCM, and ChaCha20-Poly1305. This document describes how
+ to do this.
+
+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/rfc8750.
+
+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://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. Requirements Notation
+ 3. Terminology
+ 4. Implicit IV
+ 5. IKEv2 Initiator Behavior
+ 6. IKEv2 Responder Behavior
+ 7. Security Considerations
+ 8. IANA Considerations
+ 9. References
+ 9.1. Normative References
+ 9.2. Informative References
+ Acknowledgements
+ Authors' Addresses
+
+1. Introduction
+
+ Counter-based AES modes of operation such as AES-CCM [RFC4309] and
+ AES-GCM [RFC4106] require the specification of a nonce for each ESP
+ packet. The same applies for ChaCha20-Poly1305 [RFC7634].
+ Currently, this nonce is generated thanks to the initialization
+ vector (IV) provided in each ESP packet [RFC4303]. This practice is
+ designated in this document as "explicit IV".
+
+ In some contexts, such as the Internet of Things (IoT), it may be
+ preferable to avoid carrying the extra bytes associated to the IV and
+ instead generate it locally on each peer. The local generation of
+ the IV is designated in this document as "implicit IV".
+
+ The size of this IV depends on the specific algorithm, but all of the
+ algorithms mentioned above take an 8-octet IV.
+
+ This document defines how to compute the IV locally when it is
+ implicit. It also specifies how peers agree with the Internet Key
+ Exchange version 2 (IKEv2) [RFC7296] on using an implicit IV versus
+ an explicit IV.
+
+ This document limits its scope to the algorithms mentioned above.
+ Other algorithms with similar properties may later be defined to use
+ similar mechanisms.
+
+ This document does not consider AES-CBC [RFC3602], as AES-CBC
+ requires the IV to be unpredictable. Deriving it directly from the
+ packet counter as described below is insecure, as mentioned in
+ Section 6 of [RFC3602], and has led to real-world chosen plaintext
+ attacks such as BEAST [BEAST].
+
+ This document does not consider AES-CTR [RFC3686], as it focuses on
+ the recommended Authenticated Encryption with Associated Data (AEAD)
+ suites provided in [RFC8221].
+
+2. Requirements Notation
+
+ 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. Terminology
+
+ IoT: Internet of Things
+
+ IV: Initialization Vector
+
+ IIV: Implicit Initialization Vector
+
+ Nonce: A fixed-size octet string used only once. In this document,
+ the IV is used to generate the nonce input for the
+ encryption/decryption.
+
+4. Implicit IV
+
+ With the algorithms listed in Section 1, the 8-byte IV MUST NOT
+ repeat for a given key. The binding between an ESP packet and its IV
+ is provided using the Sequence Number or the Extended Sequence
+ Number. Figures 1 and 2 represent the IV with a regular 4-byte
+ Sequence Number and an 8-byte Extended Sequence Number, respectively.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Zero |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Sequence Number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 1: Implicit IV with a 4-Byte Sequence Number
+
+ Sequence Number:
+ The 4-byte Sequence Number carried in the ESP packet.
+
+ Zero:
+ A 4-byte array with all bits set to zero.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Extended |
+ | Sequence Number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 2: Implicit IV with an 8-Byte Extended Sequence Number
+
+ Extended Sequence Number:
+ The 8-byte Extended Sequence Number of the Security Association.
+ The four low-order bytes are carried in the ESP packet.
+
+ This document solely defines the IV generation of the algorithms
+ defined in [RFC4106] for AES-GCM, [RFC4309] for AES-CCM, and
+ [RFC7634] for ChaCha20-Poly1305. All other aspects and parameters of
+ those algorithms are unchanged and are used as defined in their
+ respective specifications.
+
+5. IKEv2 Initiator Behavior
+
+ An initiator supporting this feature SHOULD propose implicit IV (IIV)
+ algorithms in the Transform Type 1 (Encryption Algorithm)
+ Substructure of the Proposal Substructure inside the Security
+ Association (SA) payload in the IKEv2 Exchange. To facilitate
+ backward compatibility with non-supporting peers, the initiator
+ SHOULD also include those same algorithms with explicit IV as
+ separate transforms.
+
+6. IKEv2 Responder Behavior
+
+ The rules of SA payload processing require that the responder pick
+ its algorithms from the proposal sent by the initiator, thus ensuring
+ that the responder will never send an SA payload containing the IIV
+ transform to an initiator that did not propose it.
+
+7. Security Considerations
+
+ Nonce generation for these algorithms has not been explicitly
+ defined. It has been left to the implementation as long as certain
+ security requirements are met. Typically, for AES-GCM, AES-CCM, and
+ ChaCha20-Poly1305, the IV is not allowed to be repeated for one
+ particular key. This document provides an explicit and normative way
+ to generate IVs. The mechanism described in this document meets the
+ IV security requirements of all relevant algorithms.
+
+ As the IV must not repeat for one SA when Counter-Mode ciphers are
+ used, implicit IV as described in this document MUST NOT be used in
+ setups with the chance that the Sequence Number overlaps for one SA.
+ The sender's counter and the receiver's counter MUST be reset (by
+ establishing a new SA and thus a new key) prior to the transmission
+ of the 2^32nd packet for an SA that does not use an Extended Sequence
+ Number and prior to the transmission of the 2^64th packet for an SA
+ that does use an Extended Sequence Number. This prevents Sequence
+ Number overlaps for the mundane point-to-point case. Multicast as
+ described in [RFC5374], [RFC6407], and [G-IKEv2] is a prominent
+ example in which many senders share one secret and thus one SA. As
+ such, implicit IV may only be used with Multicast if some mechanisms
+ are employed that prevent the Sequence Number from overlapping for
+ one SA; otherwise, implicit IV MUST NOT be used with Multicast.
+
+ This document defines three new encryption transforms that use
+ implicit IV. Unlike most encryption transforms defined to date,
+ which can be used for both ESP and IKEv2, these transforms are
+ defined for ESP only and cannot be used in IKEv2. The reason for
+ this is that IKEv2 messages don't contain a unique per-message value
+ that can be used for IV generation. The Message-ID field in the
+ IKEv2 header is similar to the SN field in the ESP header, but recent
+ IKEv2 extensions [RFC6311] [RFC7383] do allow it to repeat, so there
+ is not an easy way to derive unique IV from IKEv2 header fields.
+
+8. IANA Considerations
+
+ IANA has updated the "Internet Key Exchange Version 2 (IKEv2)
+ Parameters" registry [RFC7296] by adding the following new code
+ points to the "Transform Type 1 - Encryption Algorithm Transform IDs"
+ subregistry under the "Transform Type Values" registry [IANA]:
+
+ +--------+----------------------------+---------------+-----------+
+ | Number | Name | ESP Reference | IKEv2 |
+ | | | | Reference |
+ +========+============================+===============+===========+
+ | 29 | ENCR_AES_CCM_8_IIV | RFC 8750 | Not |
+ | | | | allowed |
+ +--------+----------------------------+---------------+-----------+
+ | 30 | ENCR_AES_GCM_16_IIV | RFC 8750 | Not |
+ | | | | allowed |
+ +--------+----------------------------+---------------+-----------+
+ | 31 | ENCR_CHACHA20_POLY1305_IIV | RFC 8750 | Not |
+ | | | | allowed |
+ +--------+----------------------------+---------------+-----------+
+
+ Table 1: Additions to "Transform Type 1 - Encryption Algorithm
+ Transform IDs" Registry
+
+9. References
+
+9.1. Normative References
+
+ [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>.
+
+ [RFC3602] Frankel, S., Glenn, R., and S. Kelly, "The AES-CBC Cipher
+ Algorithm and Its Use with IPsec", RFC 3602,
+ DOI 10.17487/RFC3602, September 2003,
+ <https://www.rfc-editor.org/info/rfc3602>.
+
+ [RFC3686] Housley, R., "Using Advanced Encryption Standard (AES)
+ Counter Mode With IPsec Encapsulating Security Payload
+ (ESP)", RFC 3686, DOI 10.17487/RFC3686, January 2004,
+ <https://www.rfc-editor.org/info/rfc3686>.
+
+ [RFC4106] Viega, J. and D. McGrew, "The Use of Galois/Counter Mode
+ (GCM) in IPsec Encapsulating Security Payload (ESP)",
+ RFC 4106, DOI 10.17487/RFC4106, June 2005,
+ <https://www.rfc-editor.org/info/rfc4106>.
+
+ [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)",
+ RFC 4303, DOI 10.17487/RFC4303, December 2005,
+ <https://www.rfc-editor.org/info/rfc4303>.
+
+ [RFC4309] Housley, R., "Using Advanced Encryption Standard (AES) CCM
+ Mode with IPsec Encapsulating Security Payload (ESP)",
+ RFC 4309, DOI 10.17487/RFC4309, December 2005,
+ <https://www.rfc-editor.org/info/rfc4309>.
+
+ [RFC5374] Weis, B., Gross, G., and D. Ignjatic, "Multicast
+ Extensions to the Security Architecture for the Internet
+ Protocol", RFC 5374, DOI 10.17487/RFC5374, November 2008,
+ <https://www.rfc-editor.org/info/rfc5374>.
+
+ [RFC6311] Singh, R., Ed., Kalyani, G., Nir, Y., Sheffer, Y., and D.
+ Zhang, "Protocol Support for High Availability of IKEv2/
+ IPsec", RFC 6311, DOI 10.17487/RFC6311, July 2011,
+ <https://www.rfc-editor.org/info/rfc6311>.
+
+ [RFC6407] Weis, B., Rowles, S., and T. Hardjono, "The Group Domain
+ of Interpretation", RFC 6407, DOI 10.17487/RFC6407,
+ October 2011, <https://www.rfc-editor.org/info/rfc6407>.
+
+ [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T.
+ Kivinen, "Internet Key Exchange Protocol Version 2
+ (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October
+ 2014, <https://www.rfc-editor.org/info/rfc7296>.
+
+ [RFC7383] Smyslov, V., "Internet Key Exchange Protocol Version 2
+ (IKEv2) Message Fragmentation", RFC 7383,
+ DOI 10.17487/RFC7383, November 2014,
+ <https://www.rfc-editor.org/info/rfc7383>.
+
+ [RFC7634] Nir, Y., "ChaCha20, Poly1305, and Their Use in the
+ Internet Key Exchange Protocol (IKE) and IPsec", RFC 7634,
+ DOI 10.17487/RFC7634, August 2015,
+ <https://www.rfc-editor.org/info/rfc7634>.
+
+ [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>.
+
+ [RFC8221] Wouters, P., Migault, D., Mattsson, J., Nir, Y., and T.
+ Kivinen, "Cryptographic Algorithm Implementation
+ Requirements and Usage Guidance for Encapsulating Security
+ Payload (ESP) and Authentication Header (AH)", RFC 8221,
+ DOI 10.17487/RFC8221, October 2017,
+ <https://www.rfc-editor.org/info/rfc8221>.
+
+9.2. Informative References
+
+ [BEAST] Duong, T. and J. Rizzo, "Here Come The xor Ninjas", May
+ 2011, <https://www.researchgate.net/
+ publication/266529975_Here_Come_The_Ninjas>.
+
+ [G-IKEv2] Weis, B. and V. Smyslov, "Group Key Management using
+ IKEv2", Work in Progress, Internet-Draft, draft-ietf-
+ ipsecme-g-ikev2-00, 8 January 2020,
+ <https://tools.ietf.org/html/draft-ietf-ipsecme-
+ g-ikev2-00>.
+
+ [IANA] IANA, "Internet Key Exchange Version 2 (IKEv2)
+ Parameters",
+ <https://www.iana.org/assignments/ikev2-parameters>.
+
+Acknowledgements
+
+ We would like to thank Valery Smyslov, Éric Vyncke, Alexey Melnikov,
+ Adam Roach, and Magnus Nyström (security directorate) as well as our
+ three Security ADs -- Eric Rescorla, Benjamin Kaduk, and Roman
+ Danyliw -- for their valuable comments. We also would like to thank
+ David Schinazi for his implementation as well as Tero Kivinen and
+ David Waltermire (the IPSECME Chairs) for moving this work forward.
+
+Authors' Addresses
+
+ Daniel Migault
+ Ericsson
+ 8275 Trans Canada Route
+ Saint Laurent QC H4S 0B6
+ Canada
+
+ Email: daniel.migault@ericsson.com
+
+
+ Tobias Guggemos
+ LMU Munich
+ Oettingenstr. 67
+ 80538 Munich
+ Germany
+
+ Email: guggemos@nm.ifi.lmu.de
+ URI: http://mnm-team.org/~guggemos
+
+
+ Yoav Nir
+ Dell Technologies
+ 9 Andrei Sakharov St
+ Haifa 3190500
+ Israel
+
+ Email: ynir.ietf@gmail.com