| rfc9333.original | rfc9333.txt | |||
|---|---|---|---|---|
| Light-Weight Implementation Guidance (lwig) D. Migault | Internet Engineering Task Force (IETF) D. Migault | |||
| Internet-Draft Ericsson | Request for Comments: 9333 Ericsson | |||
| Intended status: Informational T. Guggemos | Category: Informational T. Guggemos | |||
| Expires: 27 March 2023 LMU Munich | ISSN: 2070-1721 LMU Munich | |||
| 23 September 2022 | December 2022 | |||
| Minimal IP Encapsulating Security Payload (ESP) | Minimal IP Encapsulating Security Payload (ESP) | |||
| draft-ietf-lwig-minimal-esp-12 | ||||
| Abstract | Abstract | |||
| This document describes the minimal properties that an IP | This document describes the minimal properties that an IP | |||
| Encapsulating Security Payload (ESP) implementation needs to meet to | Encapsulating Security Payload (ESP) implementation needs to meet to | |||
| remain interoperable with the standard RFC4303 ESP. Such a minimal | remain interoperable with the standard ESP as defined in RFC 4303. | |||
| version of ESP is not intended to become a replacement of the RFC | Such a minimal version of ESP is not intended to become a replacement | |||
| 4303 ESP. Instead, a minimal implementation is expected to be | of ESP in RFC 4303. Instead, a minimal implementation is expected to | |||
| optimized for constrained environments while remaining interoperable | be optimized for constrained environments while remaining | |||
| with implementations of RFC 4303 ESP. In addition, this document | interoperable with implementations of ESP. In addition, this | |||
| also provides some considerations for implementing minimal ESP in a | document provides some considerations for implementing minimal ESP in | |||
| constrained environment which includes limiting the number of flash | a constrained environment, such as limiting the number of flash | |||
| writes, handling frequent wakeup / sleep states, limiting wakeup | writes, handling frequent wakeup and sleep states, limiting wakeup | |||
| time, and reducing the use of random generation. | time, and reducing the use of random generation. | |||
| This document does not update or modify RFC 4303. It provides a | This document does not update or modify RFC 4303. It provides a | |||
| compact description of how to implement the minimal version of that | compact description of how to implement the minimal version of that | |||
| protocol. RFC 4303 remains the authoritative description. | protocol. RFC 4303 remains the authoritative description. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
| provisions of BCP 78 and BCP 79. | published for informational purposes. | |||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Not all documents | |||
| approved by the IESG are candidates for any level of Internet | ||||
| Standard; see Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 27 March 2023. | 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/rfc9333. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Requirements notation . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
| 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 2. Requirements Notation | |||
| 3. Security Parameter Index (SPI) (32 bit) . . . . . . . . . . . 4 | 3. Security Parameters Index (SPI) | |||
| 3.1. Considerations over SPI generation . . . . . . . . . . . 4 | 3.1. Considerations for SPI Generation | |||
| 4. Sequence Number(SN) (32 bit) . . . . . . . . . . . . . . . . 6 | 4. Sequence Number (SN) | |||
| 5. Padding . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 5. Padding | |||
| 6. Next Header (8 bit) and Dummy Packets . . . . . . . . . . . . 9 | 6. Next Header and "Dummy" Packets | |||
| 7. ICV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 7. ICV | |||
| 8. Cryptographic Suites . . . . . . . . . . . . . . . . . . . . 10 | 8. Cryptographic Suites | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | 9. IANA Considerations | |||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 10. Security Considerations | |||
| 11. Privacy Considerations . . . . . . . . . . . . . . . . . . . 12 | 11. Privacy Considerations | |||
| 12. Acknowledgment . . . . . . . . . . . . . . . . . . . . . . . 12 | 12. References | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 12.1. Normative References | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 13 | 12.2. Informative References | |||
| 13.2. Informative References . . . . . . . . . . . . . . . . . 14 | Acknowledgments | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 | Authors' Addresses | |||
| 1. 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. | ||||
| 2. Introduction | 1. Introduction | |||
| ESP [RFC4303] is part of the IPsec protocol suite [RFC4301]. IPsec | ESP [RFC4303] is part of the IPsec protocol suite [RFC4301]. IPsec | |||
| is used to provide confidentiality, data origin authentication, | is used to provide confidentiality, data origin authentication, | |||
| connectionless integrity, an anti-replay service and limited traffic | connectionless integrity, an anti-replay service, and limited Traffic | |||
| flow confidentiality (TFC) padding. | Flow Confidentiality (TFC) padding. | |||
| Figure 1 describes an ESP Packet. Currently, ESP is implemented in | Figure 1 describes an ESP packet. Currently, ESP is implemented in | |||
| the kernel of most major multipurpose Operating Systems (OS). ESP is | the kernel of most major multipurpose Operating Systems (OSes). ESP | |||
| usually implemented with all of its features to fit the multiple | is usually implemented with all of its features to fit the | |||
| purpose usage of these OSes, at the expense of resources and with no | multipurpose usage of these OSes, at the expense of resources and | |||
| considerations for code size. Constrained devices are likely to have | with no considerations for code size. Constrained devices are likely | |||
| their own implementation of ESP optimized and adapted to their | to have their own implementation of ESP optimized and adapted to | |||
| specific use, such as limiting the number of flash writes (for each | their specific use, such as limiting the number of flash writes (for | |||
| packet or across wake time), handling frequent wakeup and sleep | each packet or across wake time), handling frequent wakeup and sleep | |||
| state, limiting wakeup time, and reducing the use of random | states, limiting wakeup time, and reducing the use of random | |||
| generation. With the adoption of IPsec by IoT devices with minimal | generation. With the adoption of IPsec by Internet of Things (IoT) | |||
| IKEv2 [RFC7815] and ESP Header Compression (EHC) with | devices with minimal IKEv2 [RFC7815] and ESP Header Compression (EHC) | |||
| [I-D.mglt-ipsecme-diet-esp] or | [EHC-DIET-ESP] [EHC-IKEv2], these ESP implementations MUST remain | |||
| [I-D.mglt-ipsecme-ikev2-diet-esp-extension], these ESP | interoperable with standard ESP implementations. This document | |||
| implementations MUST remain interoperable with standard ESP | describes the minimal properties an ESP implementation needs to meet | |||
| implementations. This document describes the minimal properties an | to remain interoperable with ESP [RFC4303]. In addition, this | |||
| ESP implementation needs to meet to remain interoperable with | document provides advice to implementers for implementing ESP within | |||
| [RFC4303] ESP. In addition, this document also provides advise to | constrained environments. This document does not update or modify | |||
| implementers for implementing ESP within constrained environments. | [RFC4303]. | |||
| This document does not update or modify RFC 4303. | ||||
| For each field of the ESP packet represented in Figure 1 this | For each field of the ESP packet represented in Figure 1, this | |||
| document provides recommendations and guidance for minimal | document provides recommendations and guidance for minimal | |||
| implementations. The primary purpose of Minimal ESP is to remain | implementations. The primary purpose of minimal ESP is to remain | |||
| interoperable with other nodes implementing RFC 4303 ESP, while | interoperable with other nodes implementing ESP [RFC4303], while | |||
| limiting the standard complexity of the implementation. | limiting the standard complexity of the implementation. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ---- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ---- | |||
| | Security Parameters Index (SPI) | ^Int. | | Security Parameters Index (SPI) | ^Int. | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov- | |||
| | Sequence Number | |ered | | Sequence Number | |ered | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ---- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ---- | |||
| | Payload Data* (variable) | | ^ | | Payload Data* (variable) | | ^ | |||
| ~ ~ | | | ~ ~ | | | |||
| | | |Conf. | | | |Conf. | |||
| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov- | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov- | |||
| | | Padding (0-255 bytes) | |ered* | | | Padding (0-255 bytes) | |ered* | |||
| +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | |||
| | | Pad Length | Next Header | v v | | | Pad Length | Next Header | v v | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------ | |||
| | Integrity Check Value-ICV (variable) | | | Integrity Check Value (ICV) (variable) | | |||
| ~ ~ | ~ ~ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 1: ESP Packet Description | Figure 1: ESP Packet Description | |||
| 3. Security Parameter Index (SPI) (32 bit) | 2. Requirements Notation | |||
| [RFC4303] defines the SPI as a mandatory 32 bits field. | 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. | ||||
| The SPI has a local significance to index the Security Association | 3. Security Parameters Index (SPI) | |||
| (SA). From [RFC4301] section 4.1, nodes supporting only unicast | ||||
| communications can index their SA using only the SPI. Nodes | [RFC4303] defines the SPI as a mandatory 32-bit field. | |||
| supporting multicast communications also require to use the IP | ||||
| addresses and thus SA lookup need to be performed using the longest | The SPI has local significance to index the Security Association | |||
| (SA). As described in Section 4.1 of [RFC4301], nodes supporting | ||||
| only unicast communications can index their SA using only the SPI. | ||||
| Nodes supporting multicast communications also require the use of IP | ||||
| addresses; thus, SA lookup needs to be performed using the longest | ||||
| match. | match. | |||
| For nodes supporting only unicast communications, it is RECOMMENDED | For nodes supporting only unicast communications, indexing the SA | |||
| indexing the SA using only the SPI. The index may be based on the | using only the SPI is RECOMMENDED. The index may be based on the | |||
| full 32 bits of SPI or a subset of these bits. The node may require | full 32 bits of the SPI or a subset of these bits. The node may | |||
| a combination of the SPI as well as other parameters (like the IP | require a combination of the SPI as well as other parameters (like | |||
| address) to index the SA. | the IP address) to index the SA. | |||
| Values 0-255 MUST NOT be used. As per section 2.1 of [RFC4303], | Values 0-255 MUST NOT be used. As per Section 2.1 of [RFC4303], | |||
| values 1-255 are reserved and 0 is only allowed to be used internally | values 1-255 are reserved, and 0 is only allowed to be used | |||
| and it MUST NOT be sent over the wire. | internally and MUST NOT be sent over the wire. | |||
| [RFC4303] does not require the 32 bit SPI to be randomly generated, | [RFC4303] does not require the 32-bit SPI to be randomly generated, | |||
| although that is the RECOMMENDED way to generate SPIs as it provides | although that is the RECOMMENDED way to generate SPIs as it provides | |||
| some privacy and security benefits and avoids correlation between ESP | some privacy and security benefits and avoids correlation between ESP | |||
| communications. To obtain a usable random 32 bit SPI, the node | communications. To obtain a usable random 32-bit SPI, the node | |||
| generates a random 32 bit value and checks it does not fall within | generates a random 32-bit value and checks it does not fall within | |||
| the 0-255 range. If the SPI has an acceptable value, it is used to | the 0-255 range. If the SPI has an acceptable value, it is used to | |||
| index the inbound session. Otherwise the generated value is | index the inbound session. Otherwise, the generated value is | |||
| discarded and the process repeats until a valid value is found. | discarded, and the process repeats until a valid value is found. | |||
| Some constrained devices are less concerned with the privacy | Some constrained devices are less concerned with the privacy | |||
| properties associated to randomly generated SPIs. Examples of such | properties associated with randomly generated SPIs. Examples of such | |||
| devices might include sensors looking to reduce their code | devices might include sensors looking to reduce their code | |||
| complexity. The use of a predictive function to generate the SPI | complexity. The use of a predictive function to generate the SPI | |||
| might be preferred over the generation and handling of random values. | might be preferred over the generation and handling of random values. | |||
| An implementation of such predictable function could use the | An implementation of such predictable function could use the | |||
| combination of a fixed value and the memory address of the SAD | combination of a fixed value and the memory address of the Security | |||
| structure. For every incoming packet, the node will be able to point | Association Database (SAD) structure. For every incoming packet, the | |||
| to the SAD structure directly from the SPI value. This avoids having | node will be able to point to the SAD structure directly from the SPI | |||
| a separate and additional binding and lookup function for the SPI to | value. This avoids having a separate and additional binding and | |||
| its SAD entry for every incoming packet. | lookup function for the SPI to its SAD entry for every incoming | |||
| packet. | ||||
| 3.1. Considerations over SPI generation | 3.1. Considerations for SPI Generation | |||
| SPIs that are not randomly generated over 32 bits may have privacy | SPIs that are not randomly generated over 32 bits may have privacy | |||
| and security concerns. As a result, the use of alternative designs | and security concerns. As a result, the use of alternative designs | |||
| requires careful security and privacy reviews. This section provides | requires careful security and privacy reviews. This section provides | |||
| some considerations upon the adoption of alternative designs. | some considerations for the adoption of alternative designs. | |||
| The SPI value is only looked up for inbound traffic. The SPI | The SPI value is only looked up for inbound traffic. The SPI | |||
| negotiated with IKEv2 [RFC7296] or Minimal IKEv2 [RFC7815] by a peer | negotiated with IKEv2 [RFC7296] or minimal IKEv2 [RFC7815] by a peer | |||
| is the value used by the remote peer when it sends traffic. The main | is the value used by the remote peer when it sends traffic. The main | |||
| advantage of using a rekeying mechanism is to enable a rekey, that is | advantage of using a rekeying mechanism is to enable a rekey, which | |||
| performed by replacing an old SA by a new SA, both indexed with | is performed by replacing an old SA with a new SA, both indexed with | |||
| distinct SPIs. As the SPI is only used for inbound traffic by the | distinct SPIs. The SPI is only used for inbound traffic by the peer, | |||
| peer, this allows each peer to manage the set of SPIs used for its | which allows each peer to manage the set of SPIs used for its inbound | |||
| inbound traffic. The necessary number of SPI reflects the number of | traffic. The necessary number of SPIs reflects the number of inbound | |||
| inbound SAs as well as the ability to rekey these SAs. Typically, | SAs as well as the ability to rekey those SAs. Typically, rekeying | |||
| rekeying a SA is performed by creating a new SA (with a dedicated | an SA is performed by creating a new SA (with a dedicated SPI) before | |||
| SPI) before the old SA is deleted. This results in an additional SA | the old SA is deleted. This results in an additional SA and the need | |||
| and the need to support an additional SPI. Similarly, the privacy | to support an additional SPI. Similarly, the privacy concerns | |||
| concerns associated with the generation of non-random SPIs is also | associated with the generation of non-random SPIs is also limited to | |||
| limited to the incoming traffic. | the incoming traffic. | |||
| Alternatively, some constrained devices will not implement IKEv2 or | Alternatively, some constrained devices will not implement IKEv2 or | |||
| Minimal IKEv2 and as such will not be able to manage a roll-over | minimal IKEv2 and, as such, will not be able to manage a rollover | |||
| between two distinct SAs. In addition, some of these constrained | between two distinct SAs. In addition, some of these constrained | |||
| devices are also likely to have a limited number of SAs - likely to | devices are likely to have a limited number of SAs; for example, they | |||
| be indexed over 3 bytes only for example. One possible way to enable | are likely to be indexed over 3 bytes only. One possible way to | |||
| a rekey mechanism with these devices is to use the SPI where for | enable a rekeying mechanism with these devices is to use the SPI | |||
| example the first 3 bytes designates the SA while the remaining byte | where, for example, the first 3 bytes designates the SA while the | |||
| indicates a rekey index. SPI numbers can be used to implement | remaining byte indicates a rekey index. SPI numbers can be used to | |||
| tracking the inbound SAs when rekeying is taking place. When | implement tracking the inbound SAs when rekeying is taking place. | |||
| rekeying a SPI, the new SPI could use the SPI bytes to indicate the | When rekeying an SPI, the new SPI could use the SPI bytes to indicate | |||
| rekeying index. | the rekeying index. | |||
| The use of a small limited set of SPI numbers across communications | The use of a small, limited set of SPI numbers across communications | |||
| comes with privacy and security concerns. Some specific values or | comes with privacy and security concerns. Some specific values or | |||
| subset of SPI values could reveal the models or manufacturer of the | subsets of SPI values could reveal the model or manufacturer of the | |||
| node implementing ESP. It could also reveal some state such as "not | node implementing ESP or reveal a state such as "not yet rekeyed" or | |||
| yet rekeyed" or "rekeyed 10 times". If a constrained host uses a | "rekeyed 10 times". If a constrained host uses a very limited number | |||
| very limited or even just one application, the SPI itself could | of applications, eventually a single one, the SPI itself could | |||
| indicate what kind of traffic (eg the kind of application typically | indicate what kind of traffic is transmitted (e.g., the kind of | |||
| running) is transmitted. This could be further correlated by | application typically running). This could also be correlated with | |||
| encrypted data size to further leak information to an observer on the | encrypted data size to further leak information to an observer on the | |||
| network. In addition, use of specific hardcoded SPI numbers could | network. In addition, use of specific hardcoded SPI numbers could | |||
| reveal a manufacturer or device version. If updated devices use | reveal a manufacturer or device version. If updated devices use | |||
| different SPI numbers, an attacker could locate vulnerable devices by | different SPI numbers, an attacker could locate vulnerable devices by | |||
| their use of specific SPI numbers. | their use of specific SPI numbers. | |||
| A privacy analysis should consider at least the type of information | A privacy analysis should consider at least the type of information | |||
| as well the traffic pattern before deciding whether non-random SPIs | as well as the traffic pattern before deciding whether non-random | |||
| are safe to use. Typically temperature sensors, wind sensors, used | SPIs are safe to use. Typically, temperature and wind sensors that | |||
| outdoors may not leak privacy sensitive information and most of its | are used outdoors do not leak privacy-sensitive information, and most | |||
| traffic is expected to be outbound traffic. When used indoors, a | of their traffic is expected to be outbound traffic. When used | |||
| sensor that reports an encrypted status of a door (closed or opened) | indoors, a sensor that reports an encrypted status of a door (closed | |||
| every minute, might not leak sensitive information outside the local | or opened) every minute might not leak sensitive information outside | |||
| network. In these examples, the privacy aspect of the information | the local network. In these examples, the privacy aspect of the | |||
| itself might be limited. Being able to determine the version of the | information itself might be limited. Being able to determine the | |||
| sensor to potentially take control of it may also have some limited | version of the sensor to potentially take control of it may also have | |||
| security consequences. Of course this depends on the context these | some limited security consequences. Of course, this depends on the | |||
| sensors are being used. If the risks associated to privacy and | context in which these sensors are being used. If the risks | |||
| security are acceptable, a non-randomized SPI can be used. | associated to privacy and security are acceptable, a non-randomized | |||
| SPI can be used. | ||||
| 4. Sequence Number(SN) (32 bit) | 4. Sequence Number (SN) | |||
| The Sequence Number (SN) in [RFC4303] is a mandatory 32 bits field in | The Sequence Number (SN) in [RFC4303] is a mandatory 32-bit field in | |||
| the packet. | the packet. | |||
| The SN is set by the sender so the receiver can implement anti-replay | The SN is set by the sender so the receiver can implement anti-replay | |||
| protection. The SN is derived from any strictly increasing function | protection. The SN is derived from any strictly increasing function | |||
| that guarantees: if packet B is sent after packet A, then SN of | that guarantees the following: if packet B is sent after packet A, | |||
| packet B is higher than the SN of packet A. | then the SN of packet B is higher than the SN of packet A. | |||
| Some constrained devices may establish communication with specific | Some constrained devices may establish communication with specific | |||
| devices where it is known whether or not the peer implements anti- | devices where it is known whether or not the peer implements anti- | |||
| replay protection. As per [RFC4303], the sender MUST still implement | replay protection. As per [RFC4303], the sender MUST still implement | |||
| a strictly increasing function to generate the SN. | a strictly increasing function to generate the SN. | |||
| The RECOMMENDED way for multipurpose ESP implementation is to | It is RECOMMENDED that multipurpose ESP implementations increment a | |||
| increment a counter for each packet sent. However, a constrained | counter for each packet sent. However, a constrained device may | |||
| device may avoid maintaining this context and use another source that | avoid maintaining this context and use another source that is known | |||
| is known to always increase. Typically, constrained devices use | to always increase. Typically, constrained devices use 802.15.4 Time | |||
| 802.15.4 Time Slotted Channel Hopping (TSCH). This communication is | Slotted Channel Hopping (TSCH). This communication is heavily | |||
| heavily dependent on time. A contrained device can take advantage of | dependent on time. A constrained device can take advantage of this | |||
| this clock mechanism to generate the SN. A lot of IoT devices are in | clock mechanism to generate the SN. A lot of IoT devices are in a | |||
| a sleep state most of the time and wake up only to perform a specific | sleep state most of the time and wake up only to perform a specific | |||
| operation before going back to sleep. These devices do have separate | operation before going back to sleep. These devices have separate | |||
| hardware that allows them to wake up after a certain timeout and | hardware that allows them to wake up after a certain timeout and | |||
| typically also timers that start running when the device was booted | typically also have timers that start running when the device is | |||
| up, so they might have a concept of time with certain granularity. | booted up, so they might have a concept of time with certain | |||
| This requires to store any information in a stable storage - such as | granularity. This requires devices to store any information in | |||
| flash memory - that can be restored across sleeps. Storing | stable storage that can be restored across sleeps (e.g., flash | |||
| information associated with the SA such as SN requires some read and | memory). Storing information associated with the SA (such as the SN) | |||
| write operation on a stable storage after each packet is sent as | requires some read and write operations on stable storage after each | |||
| opposed to a SPI number or cryptographic keys that are only written | packet is sent as opposed to an SPI number or cryptographic keys that | |||
| to stable storage at the creation of the SA. Write operations wear | are only written to stable storage at the creation of the SA. Write | |||
| out the flash storage. Write operations also slow down the system | operations wear out the flash storage. Write operations also slow | |||
| significantly, as writing to flash is much slower than reading from | down the system significantly, as writing to flash is much slower | |||
| flash. While these devices have internal clocks or timers that might | than reading from flash. While these devices have internal clocks or | |||
| not be very accurate, these are good enough to guarantee that each | timers that might not be very accurate, they are good enough to | |||
| time the device wakes up from sleep that their time is greater than | guarantee that each time the device wakes up from sleep, the time is | |||
| what it was before the device went to sleep. Using time for the SN | greater than what it was before the device went to sleep. Using time | |||
| would guarantee a strictly increasing function and avoid storing any | for the SN would guarantee a strictly increasing function and avoid | |||
| additional values or context related to the SN on flash. In addition | storing any additional values or context related to the SN on flash. | |||
| to the time value, a RAM based counter can be used to ensure that if | In addition to the time value, a RAM-based counter can be used to | |||
| the device sends multiple packets over an SA within one wake up | ensure that the serial numbers are still increasing and unique if the | |||
| period, that the serial numbers are still increasing and unique. | device sends multiple packets over an SA within one wakeup period. | |||
| For inbound traffic, it is RECOMMENDED that receivers implement anti- | For inbound traffic, it is RECOMMENDED that receivers implement anti- | |||
| replay protection. The size of the window should depend on the | replay protection. The size of the window should depend on the | |||
| property of the network to deliver packets out of order. In an | network characteristic to deliver packets out of order. In an | |||
| environment where out of order packets are not possible, the window | environment where out-of-order packets are not possible, the window | |||
| size can be set to one. An ESP implementation may choose to not | size can be set to one. An ESP implementation may choose to not | |||
| implement an anti-replay protection. An implementation of anti- | implement anti-replay protection. An implementation of anti-replay | |||
| replay protection may require the device to write the received SN for | protection may require the device to write the received SN for every | |||
| every packet to stable storage. This will have the same issues as | packet to stable storage. This will have the same issues as | |||
| discussed earlier with the SN. Some constrained device | discussed earlier with the SN. Some constrained device | |||
| implementations may choose to not implement the optional anti-replay | implementations may choose to not implement the optional anti-replay | |||
| protection. A typical example might consider an IoT device such as a | protection. A typical example is an IoT device such as a temperature | |||
| temperature sensor that is sending a temperature measurement every 60 | sensor that sends a temperature measurement every 60 seconds and | |||
| seconds, and that receives an acknowledgment from the receiver. In | receives an acknowledgment from the receiver. In a case like this, | |||
| such cases, the ability to spoof and replay an acknowledgement is of | the ability to spoof and replay an acknowledgement is of limited | |||
| limited interest and might not justify the implementation of an anti- | interest and might not justify the implementation of an anti-replay | |||
| replay mechanism. Receiving peers may also use ESP anti-replay | mechanism. Receiving peers may also use an ESP anti-replay mechanism | |||
| mechanism adapted to a specific application. Typically, when the | adapted to a specific application. Typically, when the sending peer | |||
| sending peer is using SN based on time, anti-replay may be | is using an SN based on time, anti-replay may be implemented by | |||
| implemented by discarding any packets that present a SN whose value | discarding any packets that present an SN whose value is too much in | |||
| is too much in the past. Such mechanisms may consider clock drifting | the past. Such mechanisms may consider clock drifting in various | |||
| in various ways in addition to acceptable delay induced by the | ways in addition to acceptable delay induced by the network to avoid | |||
| network to avoid the anti replay windows rejecting legitimate | the anti-replay windows rejecting legitimate packets. Receiving | |||
| packets. It could accept any SN as long as it is higher than the | peers could accept any SN as long as it is higher than the previously | |||
| previously received SN. Another mechanism could be used where only | received SN. Another mechanism could be used where only the received | |||
| the received time on the device is used to consider a packet as | time on the device is used to consider a packet to be valid, without | |||
| valid, without looking at the SN at all. | looking at the SN at all. | |||
| The SN can be represented as a 32 bit number, or as a 64 bit number, | The SN can be represented as a 32-bit number or as a 64-bit number, | |||
| known as Extended Sequence Number (ESN). As per [RFC4303], support | known as an "Extended Sequence Number (ESN)". As per [RFC4303], | |||
| of ESN is not mandatory and its use is negotiated via IKEv2 | support of ESN is not mandatory, and its use is negotiated via IKEv2 | |||
| [RFC7296]. A ESN is used for high speed links to ensure there can be | [RFC7296]. An ESN is used for high-speed links to ensure there can | |||
| more than 2^32 packets before the SA needs to be rekeyed to prevent | be more than 2^32 packets before the SA needs to be rekeyed to | |||
| the SN from rolling over. This assumes the SN is incremented by 1 | prevent the SN from rolling over. This assumes the SN is incremented | |||
| for each packet. When the SN is incremented differently - such as | by 1 for each packet. When the SN is incremented differently -- such | |||
| when time is used - rekeying needs to happen based on how the SN is | as when time is used -- rekeying needs to happen based on how the SN | |||
| incremented to prevent the SN from rolling over. The security of all | is incremented to prevent the SN from rolling over. The security of | |||
| data protected under a given key decreases slightly with each message | all data protected under a given key decreases slightly with each | |||
| and a node must ensure the limit is not reached - even though the SN | message, and a node must ensure the limit is not reached, even though | |||
| would permit it. Estimation of the maximum number of packets to be | the SN would permit it. Estimation of the maximum number of packets | |||
| sent by a node is not always predicatable and large margins should be | to be sent by a node is not always predictable, and large margins | |||
| used espcially as nodes could be online for much more time than | should be used, especially as nodes could be online for much more | |||
| expected. Even for constrained devices, it is RECOMMENDED to | time than expected. Even for constrained devices, it is RECOMMENDED | |||
| implement some rekey mechanisms (see Section 10). | to implement some rekeying mechanisms (see Section 10). | |||
| 5. Padding | 5. Padding | |||
| Padding is required to keep the 32 bit alignment of ESP. It is also | Padding is required to keep the 32-bit alignment of ESP. It is also | |||
| required for some encryption transforms that need a specific block | required for some encryption transforms that need a specific block | |||
| size of input, such as ENCR_AES_CBC. ESP specifies padding in the | size of input, such as ENCR_AES_CBC. ESP specifies padding in the | |||
| Pad Length byte, followed by up to 255 bytes of padding. | Pad Length byte, followed by up to 255 bytes of padding. | |||
| Checking the padding structure is not mandatory, so constrained | Checking the padding structure is not mandatory, so constrained | |||
| devices may omit these checks on received ESP packets. For outgoing | devices may omit these checks on received ESP packets. For outgoing | |||
| ESP packets, padding must be applied as required by ESP. | ESP packets, padding must be applied as required by ESP. | |||
| In some situation the padding bytes may take a fixed value. This | In some situations, the padding bytes may take a fixed value. This | |||
| would typically be the case when the Data Payload is of fixed size. | would typically be the case when the Payload Data is of fixed size. | |||
| ESP [RFC4303] additionally provides Traffic Flow Confidentiality | ESP [RFC4303] additionally provides Traffic Flow Confidentiality | |||
| (TFC) as a way to perform padding to hide traffic characteristics. | (TFC) as a way to perform padding to hide traffic characteristics. | |||
| TFC is not mandatory and is negotiated with the SA management | TFC is not mandatory and is negotiated with the SA management | |||
| protocol, such as IKEv2. TFC has been widely implemented but it is | protocol, such as IKEv2. TFC has been widely implemented, but it is | |||
| not widely deployed for ESP traffic. It is NOT RECOMMENDED to | not widely deployed for ESP traffic. It is NOT RECOMMENDED to | |||
| implement TFC for a minimal ESP. | implement TFC for minimal ESP. | |||
| As a consequence, communication protection that relies on TFC would | As a consequence, communication protection that relies on TFC would | |||
| be more sensitive to traffic patterns without TFC. This can leak | be more sensitive to traffic patterns without TFC. This can leak | |||
| application information as well as the manifacturor or model of the | application information as well as the manufacturer or model of the | |||
| device used to a passive monitoring attacker. Such information can | device used to a passive monitoring attacker. Such information can | |||
| be used, for example, by an attacker in case a vulnerability is known | be used, for example, by an attacker if a vulnerability is known for | |||
| for the specific device or application. In addition, some | the specific device or application. In addition, some applications | |||
| application use - such as health applications - could leak important | (such as health applications) could leak important privacy-oriented | |||
| privacy oriented information. | information. | |||
| Constrained devices that have limited battery lifetime may prefer to | Constrained devices that have a limited battery lifetime may prefer | |||
| avoid sending extra padding bytes. In most cases, the payload | to avoid sending extra padding bytes. In most cases, the payload | |||
| carried by these devices is quite small, and the standard padding | carried by these devices is quite small, and the standard padding | |||
| mechanism can be used as an alternative to TFC. Alternatively, any | mechanism can be used as an alternative to TFC. Alternatively, any | |||
| information leak based on the size - or presence - of the packet can | information leak based on the size -- or presence -- of the packet | |||
| also be addressed at the application level, before the packet is | can also be addressed at the application level before the packet is | |||
| encrypted with ESP. If application packets vary between 1 to 30 | encrypted with ESP. If application packets vary between 1 to 30 | |||
| bytes, the application could always send 32 byte responses to ensure | bytes, the application could always send 32-byte responses to ensure | |||
| all traffic sent is of identical length. To prevent leaking | all traffic sent is of identical length. To prevent leaking | |||
| information that a sensor changed state, such as "temperature | information that a sensor changed state, such as "temperature | |||
| changed" or "door opened", an application could send this information | changed" or "door opened", an application could send this information | |||
| at regular time interval, rather than when a specific event is | at regular time intervals, rather than when a specific event is | |||
| happening, even if the sensor state did not change. | happening, even if the sensor state did not change. | |||
| 6. Next Header (8 bit) and Dummy Packets | 6. Next Header and "Dummy" Packets | |||
| ESP [RFC4303] defines the Next Header as a mandatory 8 bits field in | ESP [RFC4303] defines the Next Header as a mandatory 8-bit field in | |||
| the packet. The Next header, only visible after decryption, | the packet. The Next Header, only visible after decryption, | |||
| specifies the data contained in the payload. In addition, the Next | specifies the data contained in the payload. In addition, the Next | |||
| Header may also carry an indication on how to process the packet | Header may carry an indication on how to process the packet | |||
| [I-D.nikander-esp-beet-mode]. The Next Header can point to a dummy | [BEET-ESP]. The Next Header can point to a "dummy" packet, i.e., a | |||
| packet, i.e. packets with the Next Header value set to 59 meaning "no | packet with the Next Header value set to 59, meaning "no next | |||
| next header". The data following to "no next header" is unstructured | header". The data following "no next header" is unstructured "dummy" | |||
| dummy data. | data. (Note that this document uses the term "dummy" for consistency | |||
| with [RFC4303].) | ||||
| The ability to generate and to receive and ignore dummy packets is | The ability to generate, receive, and ignore "dummy" packets is | |||
| required by [RFC4303]. An implementation can omit ever generating | required by [RFC4303]. An implementation can omit ever generating | |||
| and sending dummy packets. For interoperability, a minimal ESP | and sending "dummy" packets. For interoperability, a minimal ESP | |||
| implementation MUST be able to process and discard dummy packets | implementation MUST be able to process and discard "dummy" packets | |||
| without indicating an error. | without indicating an error. | |||
| In constrained environments, sending dummy packets may have too much | In constrained environments, sending "dummy" packets may have too | |||
| impact on the device lifetime, in which case dummy packets should not | much impact on the device lifetime, in which case, "dummy" packets | |||
| be generated and sent. On the other hand, Constrained devices | should not be generated and sent. On the other hand, constrained | |||
| running specific applications that would leak too much information by | devices running specific applications that would leak too much | |||
| not generating and sending dummy packets may implement this | information by not generating and sending "dummy" packets may | |||
| functionality or even implement something similar at the application | implement this functionality or even implement something similar at | |||
| layer. Note also that similarly to padding and TFC that can be used | the application layer. Note also that similarly to padding and TFC | |||
| to hide some traffic characteristics (see Section 5), dummy packet | that can be used to hide some traffic characteristics (see | |||
| may also reveal some patterns that can be used to identify the | Section 5), "dummy" packets may also reveal some patterns that can be | |||
| application. For example, an application may send dummy data to hide | used to identify the application. For example, an application may | |||
| some traffic pattern. Suppose such such application sends a 1 byte | send "dummy" data to hide a traffic pattern. Suppose such an | |||
| data when a change occurs. This results in sending a packet | application sends a 1-byte data when a change occurs. This results | |||
| notifying a change has occurred. Dummy packet may be used to prevent | in sending a packet notifying a change has occurred. "Dummy" packets | |||
| such information to be leaked by sending a 1 byte packet every second | may be used to prevent such information from being leaked by sending | |||
| when the information is not changed. After an upgrade the data | a 1-byte packet every second when the information is not changed. | |||
| becomes two bytes. At that point, the dummy packets do not hide | After an upgrade, the data becomes 2 bytes. At that point, the | |||
| anything and having 1 byte regularly versus 2 bytes make even the | "dummy" packets do not hide anything, and having 1 byte regularly | |||
| identification of the application, version easier to identify. This | versus 2 bytes makes even the identification of the application | |||
| generaly makes the use of dummy packets more appropriated on high | version easier to identify. This generally makes the use of "dummy" | |||
| speed links. | packets more appropriate on high-speed links. | |||
| In some cases, devices are dedicated to a single application or a | In some cases, devices are dedicated to a single application or a | |||
| single transport protocol, in which case, the Next Header has a fixed | single transport protocol. In this case, the Next Header has a fixed | |||
| value. | value. | |||
| Specific processing indications have not been standardized yet | Specific processing indications have not been standardized yet | |||
| [I-D.nikander-esp-beet-mode] and is expected to result from an | [BEET-ESP] and are expected to result from an agreement between the | |||
| agreement between the peers. As a result, it SHOULD NOT be part of a | peers. As a result, they SHOULD NOT be part of a minimal | |||
| minimal implementation of ESP. | implementation of ESP. | |||
| 7. ICV | 7. ICV | |||
| The ICV depends on the cryptographic suite used. As detailed in | The ICV depends on the cryptographic suite used. As detailed in | |||
| [RFC8221] authentication or authenticated encryption are RECOMMENDED | [RFC8221], authentication or authenticated encryption is RECOMMENDED, | |||
| and as such the ICV field must be present with a size different from | and as such, the ICV field must be present with a size different from | |||
| zero. Its length is defined by the security recommendations only. | zero. Its length is defined by the security recommendations only. | |||
| 8. Cryptographic Suites | 8. Cryptographic Suites | |||
| The recommended algorithms to use are expected to evolve over time | The recommended algorithms to use are expected to evolve over time, | |||
| and implementers SHOULD follow the recommendations provided by | and implementers SHOULD follow the recommendations provided by | |||
| [RFC8221] and updates. | [RFC8221] and updates. | |||
| This section lists some of the criteria that may be considered to | This section lists some of the criteria that may be considered to | |||
| select an appropriate cryptographic suite. The list is not expected | select an appropriate cryptographic suite. The list is not expected | |||
| to be exhaustive and may also evolve over time: | to be exhaustive and may also evolve over time. | |||
| 1. Security: Security is the criteria that should be considered | 1. Security: Security is the criteria that should be considered | |||
| first for the selection of encryption algorithm transform. The | first for the selection of encryption algorithm transforms. The | |||
| security of encryption algorithm transforms is expected to evolve | security of encryption algorithm transforms is expected to evolve | |||
| over time, and it is of primary importance to follow up-to-date | over time, and it is of primary importance to follow up-to-date | |||
| security guidance and recommendations. The chosen encryption | security guidance and recommendations. The chosen encryption | |||
| algorithm MUST NOT be vulnerable or weak (see [RFC8221] for | algorithm MUST NOT be vulnerable or weak (see [RFC8221] for | |||
| outdated ciphers). ESP can be used to authenticate only | outdated ciphers). ESP can be used to authenticate only | |||
| (ENCR_NULL) or to encrypt the communication. In the latter case, | (ENCR_NULL) or to encrypt the communication. In the latter case, | |||
| authenticated encryption (AEAD) is RECOMMENDED [RFC8221]. | Authenticated Encryption with Associated Data (AEAD) is | |||
| RECOMMENDED [RFC8221]. | ||||
| 2. Resilience to nonce re-use: Some transforms -including AES-GCM - | 2. Resilience to Nonce Reuse: Some transforms, including AES-GCM, | |||
| are vulnerable to nonce collision with a given key. While the | are vulnerable to nonce collision with a given key. While the | |||
| generation of the nonce may prevent such collision during a | generation of the nonce may prevent such collision during a | |||
| session, the mechanisms are unlikely to provide such protection | session, the mechanisms are unlikely to provide such protection | |||
| across sleep states or reboot. This causes an issue for devices | across sleep states or reboot. This causes an issue for devices | |||
| that are configured using static keys (called manual keying) and | that are configured using static keys (called "manual keying"), | |||
| manual keying should not be used with these encryption | and manual keying should not be used with these encryption | |||
| algorithms. When the key is likely to be re-used across reboots, | algorithms. When the key is likely to be reused across reboots, | |||
| algorithms that are nonce misuse resistant such as, for example, | algorithms that are resistant to nonce misuse (for example, AES- | |||
| AES-SIV [RFC5297], AES-GCM-SIV [RFC8452] or Deoxys-II [DeoxysII] | SIV [RFC5297], AES-GCM-SIV [RFC8452], and Deoxys-II [DeoxysII]) | |||
| are RECOMMENDED. Note however that currently none of these are | are RECOMMENDED. Note, however, that none of these are currently | |||
| yet defined for use with ESP. | defined for use with ESP. | |||
| 3. Interoperability: constrained devices usually only implement one | 3. Interoperability: Constrained devices usually only implement one | |||
| or very few different encryption algorithm transforms. [RFC8221] | or very few different encryption algorithm transforms. [RFC8221] | |||
| takes the life cycle of encryption algorithm transforms and | takes the life cycle of encryption algorithm transforms and | |||
| device manufactoring into consideration in its recommendations | device manufacturing into consideration in its recommendations | |||
| for mandatory-to-implement ("MTI") algorithms. | for mandatory-to-implement (MTI) algorithms. | |||
| 4. Power Consumption and Cipher Suite Complexity: Complexity of the | 4. Power Consumption and Cipher Suite Complexity: Complexity of the | |||
| encryption algorithm transform and the energy cost associated | encryption algorithm transform and the energy cost associated | |||
| with it are especially important considerations for devices that | with it are especially important considerations for devices that | |||
| have limited resources or are battery powered. The battery life | have limited resources or are battery powered. The battery life | |||
| might determine the lifetime of the entire device. The choice of | might determine the lifetime of the entire device. When choosing | |||
| a cryptographic function should consider re-using specific | a cryptographic function, reusing specific libraries or taking | |||
| libraries or to take advantage of hardware acceleration provided | advantage of hardware acceleration provided by the device should | |||
| by the device. For example, if the device benefits from AES | be considered. For example, if the device benefits from AES | |||
| hardware modules and uses ENCR_AES_CTR, it may prefer AUTH_AES- | hardware modules and uses ENCR_AES_CTR, it may prefer AUTH_AES- | |||
| XCBC for its authentication. In addition, some devices may also | XCBC for its authentication. In addition, some devices may embed | |||
| embed radio modules with hardware acceleration for AES-CCM, in | radio modules with hardware acceleration for AES-CCM, in which | |||
| which case, this transform may be preferred. | case, this transform may be preferred. | |||
| 5. Power Consumption and Bandwidth Consumption: Reducing the payload | 5. Power Consumption and Bandwidth Consumption: Reducing the payload | |||
| sent may significantly reduce the energy consumption of the | sent may significantly reduce the energy consumption of the | |||
| device. Encryption algorithm transforms with low overhead are | device. Encryption algorithm transforms with low overhead are | |||
| strongly preferred. To reduce the overall payload size one may, | strongly preferred. To reduce the overall payload size, one may, | |||
| for example: | for example: | |||
| 1. Use of counter-based ciphers without fixed block length (e.g. | * Use counter-based ciphers without fixed block length (e.g., | |||
| AES-CTR, or ChaCha20-Poly1305). | AES-CTR or ChaCha20-Poly1305). | |||
| 2. Use of ciphers with capability of using implicit IVs | * Use ciphers capable of using implicit Initialization Vectors | |||
| [RFC8750]. | (IVs) [RFC8750]. | |||
| 3. Use of ciphers recommended for IoT [RFC8221]. | * Use ciphers recommended for IoT [RFC8221]. | |||
| 4. Avoid Padding by sending payload data which are aligned to | * Avoid padding by sending payload data that are aligned to the | |||
| the cipher block length - 2 for the ESP trailer. | cipher block length -- 2 bytes for the ESP trailer. | |||
| 9. IANA Considerations | 9. IANA Considerations | |||
| There are no IANA consideration for this document. | This document has no IANA actions. | |||
| 10. Security Considerations | 10. Security Considerations | |||
| Security Considerations are those of [RFC4303]. In addition, this | The security considerations in [RFC4303] apply to this document as | |||
| document provided security recommendations and guidance over the | well. In addition, this document provides security recommendations | |||
| implementation choices for each ESP field. | and guidance for the implementation choices for each ESP field. | |||
| The security of a communication provided by ESP is closely related to | The security of a communication provided by ESP is closely related to | |||
| the security associated with the management of that key. This | the security associated with the management of that key. This | |||
| usually includes mechanisms to prevent a nonce from repeating, for | usually includes mechanisms to prevent a nonce from repeating, for | |||
| example. When a node is provisioned with a session key that is used | example. When a node is provisioned with a session key that is used | |||
| across reboot, the implementer MUST ensure that the mechanisms put in | across reboot, the implementer MUST ensure that the mechanisms put in | |||
| place remain valid across reboot as well. | place remain valid across reboot as well. | |||
| It is RECOMMENDED to use ESP in conjunction with key management | It is RECOMMENDED to use ESP in conjunction with key management | |||
| protocols such as for example IKEv2 [RFC7296] or minimal IKEv2 | protocols such as, for example, IKEv2 [RFC7296] or minimal IKEv2 | |||
| [RFC7815]. Such mechanisms are responsible for negotiating fresh | [RFC7815]. Such mechanisms are responsible for negotiating fresh | |||
| session keys as well as prevent a session key being use beyond its | session keys as well as preventing a session key being used beyond | |||
| lifetime. When such mechanisms cannot be implemented, such as when | its lifetime. When such mechanisms cannot be implemented, such as | |||
| the the session key is provisioned, the device MUST ensure that keys | when the session key is provisioned, the device MUST ensure that keys | |||
| are not used beyond their lifetime and that the the key remains used | are not used beyond their lifetime and that the key remains used in | |||
| in compliance will all security requirements across reboots - e.g. | compliance with all security requirements across reboots (e.g., | |||
| conditions on counters and nonces remains valid. | conditions on counters and nonces remain valid). | |||
| When a device generates its own key or when random value such as | When a device generates its own key or when random values such as | |||
| nonces are generated, the random generation MUST follow [RFC4086]. | nonces are generated, the random generation MUST follow [RFC4086]. | |||
| In addition, [SP-800-90A-Rev-1] provides guidance on how to build | In addition, [SP-800-90A-Rev-1] provides guidance on how to build | |||
| random generators based on deterministic random functions. | random generators based on deterministic random functions. | |||
| 11. Privacy Considerations | 11. Privacy Considerations | |||
| Preventing the leakage of privacy sensitive information is a hard | Preventing the leakage of privacy-sensitive information is a hard | |||
| problem to solve and usually result in balancing the information | problem to solve and usually results in balancing the information | |||
| potentially being leaked to the cost associated with the counter | potentially being leaked to the cost associated with the counter | |||
| measures. This problem is not inherent to the minimal ESP described | measures. This problem is not inherent to the minimal ESP described | |||
| in this document and also concerns the use of ESP in general. | in this document and also concerns the use of ESP in general. | |||
| This document targets minimal implementations of ESP and as such | This document targets minimal implementations of ESP and, as such, | |||
| describes some minimalistic way to implement ESP. In some cases, | describes a minimalistic way to implement ESP. In some cases, this | |||
| this may result in potentially revealing privacy sensitive pieces of | may result in potentially revealing privacy-sensitive pieces of | |||
| information. This document describes these privacy implications so | information. This document describes these privacy implications so | |||
| the implementer can take the appropriate decisions given the | the implementer can make the appropriate decisions given the | |||
| specificities of a given environment and deployment. | specificities of a given environment and deployment. | |||
| The main risks associated with privacy is the ability to identify an | The main risk associated with privacy is the ability to identify an | |||
| application or a device by analyzing the traffic which is designated | application or a device by analyzing the traffic, which is designated | |||
| as traffic shaping. As discussed in Section 3, the use in some very | as "traffic shaping". As discussed in Section 3, the use in a very | |||
| specific context of non randomly generated SPI might in some cases | specific context of non-randomly generated SPIs might ease the | |||
| ease the determination of the device or the application. Similarly, | determination of the device or the application in some cases. | |||
| padding provides limited capabilities to obfuscate the traffic | Similarly, padding provides limited capabilities to obfuscate the | |||
| compared to those provided by TFC. Such consequence on privacy as | traffic compared to those provided by TFC. Such consequences on | |||
| detailed in Section 5. | privacy are detailed in Section 5. | |||
| 12. Acknowledgment | ||||
| The authors would like to thank Daniel Palomares, Scott Fluhrer, Tero | ||||
| Kivinen, Valery Smyslov, Yoav Nir, Michael Richardson, Thomas Peyrin, | ||||
| Eric Thormarker, Nancy Cam-Winget and Bob Briscoe for their valuable | ||||
| comments. In particular Scott Fluhrer suggested including the rekey | ||||
| index in the SPI. Tero Kivinen also provided multiple clarifications | ||||
| and examples of deployment ESP within constrained devices with their | ||||
| associated optimizations. Thomas Peyrin Eric Thormarker and Scott | ||||
| Fluhrer suggested and clarified the use of transform resilient to | ||||
| nonce misuse. | ||||
| 13. References | 12. References | |||
| 13.1. Normative References | 12.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, | [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, | |||
| "Randomness Requirements for Security", BCP 106, RFC 4086, | "Randomness Requirements for Security", BCP 106, RFC 4086, | |||
| DOI 10.17487/RFC4086, June 2005, | DOI 10.17487/RFC4086, June 2005, | |||
| <https://www.rfc-editor.org/info/rfc4086>. | <https://www.rfc-editor.org/info/rfc4086>. | |||
| skipping to change at page 14, line 11 ¶ | skipping to change at line 610 ¶ | |||
| Payload (ESP) and Authentication Header (AH)", RFC 8221, | Payload (ESP) and Authentication Header (AH)", RFC 8221, | |||
| DOI 10.17487/RFC8221, October 2017, | DOI 10.17487/RFC8221, October 2017, | |||
| <https://www.rfc-editor.org/info/rfc8221>. | <https://www.rfc-editor.org/info/rfc8221>. | |||
| [RFC8750] Migault, D., Guggemos, T., and Y. Nir, "Implicit | [RFC8750] Migault, D., Guggemos, T., and Y. Nir, "Implicit | |||
| Initialization Vector (IV) for Counter-Based Ciphers in | Initialization Vector (IV) for Counter-Based Ciphers in | |||
| Encapsulating Security Payload (ESP)", RFC 8750, | Encapsulating Security Payload (ESP)", RFC 8750, | |||
| DOI 10.17487/RFC8750, March 2020, | DOI 10.17487/RFC8750, March 2020, | |||
| <https://www.rfc-editor.org/info/rfc8750>. | <https://www.rfc-editor.org/info/rfc8750>. | |||
| 13.2. Informative References | 12.2. Informative References | |||
| [DeoxysII] Jeremy, J. J., Ivica, I. N., Thomas, T. P., and Y. S. | [BEET-ESP] Nikander, P. and J. Melen, "A Bound End-to-End Tunnel | |||
| Yannick, "Deoxys v1.41", October 2016, | (BEET) mode for ESP", Work in Progress, Internet-Draft, | |||
| draft-nikander-esp-beet-mode-09, 5 August 2008, | ||||
| <https://datatracker.ietf.org/doc/html/draft-nikander-esp- | ||||
| beet-mode-09>. | ||||
| [DeoxysII] Jean, J., Nikolić, I., Peyrin, T., and Y. Seurin, "Deoxys | ||||
| v1.41", October 2016, | ||||
| <https://competitions.cr.yp.to/round3/deoxysv141.pdf>. | <https://competitions.cr.yp.to/round3/deoxysv141.pdf>. | |||
| [I-D.mglt-ipsecme-diet-esp] | [EHC-DIET-ESP] | |||
| Migault, D., Guggemos, T., Bormann, C., and D. Schinazi, | Migault, D., Guggemos, T., Bormann, C., and D. Schinazi, | |||
| "ESP Header Compression and Diet-ESP", Work in Progress, | "ESP Header Compression and Diet-ESP", Work in Progress, | |||
| Internet-Draft, draft-mglt-ipsecme-diet-esp-08, 13 May | Internet-Draft, draft-mglt-ipsecme-diet-esp-08, 13 May | |||
| 2022, <https://www.ietf.org/archive/id/draft-mglt-ipsecme- | 2022, <https://datatracker.ietf.org/doc/html/draft-mglt- | |||
| diet-esp-08.txt>. | ipsecme-diet-esp-08>. | |||
| [I-D.mglt-ipsecme-ikev2-diet-esp-extension] | [EHC-IKEv2] | |||
| Migault, D., Guggemos, T., and D. Schinazi, "Internet Key | Migault, D., Guggemos, T., and D. Schinazi, "Internet Key | |||
| Exchange version 2 (IKEv2) extension for the ESP Header | Exchange version 2 (IKEv2) extension for the ESP Header | |||
| Compression (EHC) Strategy", Work in Progress, Internet- | Compression (EHC) Strategy", Work in Progress, Internet- | |||
| Draft, draft-mglt-ipsecme-ikev2-diet-esp-extension-02, 13 | Draft, draft-mglt-ipsecme-ikev2-diet-esp-extension-02, 13 | |||
| May 2022, <https://www.ietf.org/archive/id/draft-mglt- | May 2022, <https://datatracker.ietf.org/doc/html/draft- | |||
| ipsecme-ikev2-diet-esp-extension-02.txt>. | mglt-ipsecme-ikev2-diet-esp-extension-02>. | |||
| [I-D.nikander-esp-beet-mode] | ||||
| Nikander, P. and J. Melen, "A Bound End-to-End Tunnel | ||||
| (BEET) mode for ESP", Work in Progress, Internet-Draft, | ||||
| draft-nikander-esp-beet-mode-09, 5 August 2008, | ||||
| <https://www.ietf.org/archive/id/draft-nikander-esp-beet- | ||||
| mode-09.txt>. | ||||
| [RFC5297] Harkins, D., "Synthetic Initialization Vector (SIV) | [RFC5297] Harkins, D., "Synthetic Initialization Vector (SIV) | |||
| Authenticated Encryption Using the Advanced Encryption | Authenticated Encryption Using the Advanced Encryption | |||
| Standard (AES)", RFC 5297, DOI 10.17487/RFC5297, October | Standard (AES)", RFC 5297, DOI 10.17487/RFC5297, October | |||
| 2008, <https://www.rfc-editor.org/info/rfc5297>. | 2008, <https://www.rfc-editor.org/info/rfc5297>. | |||
| [RFC8452] Gueron, S., Langley, A., and Y. Lindell, "AES-GCM-SIV: | [RFC8452] Gueron, S., Langley, A., and Y. Lindell, "AES-GCM-SIV: | |||
| Nonce Misuse-Resistant Authenticated Encryption", | Nonce Misuse-Resistant Authenticated Encryption", | |||
| RFC 8452, DOI 10.17487/RFC8452, April 2019, | RFC 8452, DOI 10.17487/RFC8452, April 2019, | |||
| <https://www.rfc-editor.org/info/rfc8452>. | <https://www.rfc-editor.org/info/rfc8452>. | |||
| [SP-800-90A-Rev-1] | [SP-800-90A-Rev-1] | |||
| Elain, E. B. and J. K. Kelsey, "Recommendation for Random | Barker, E. and J. Kelsey, "Recommendation for Random | |||
| Number Generation Using Deterministic Random Bit | Number Generation Using Deterministic Random Bit | |||
| Generators", <https://csrc.nist.gov/publications/detail/ | Generators", NIST SP 800-90A Rev 1, | |||
| sp/800-90a/rev-1/final>. | DOI 10.6028/NIST.SP.800-90Ar1, June 2015, | |||
| <https://csrc.nist.gov/publications/detail/sp/800-90a/rev- | ||||
| 1/final>. | ||||
| Acknowledgments | ||||
| The authors would like to thank Daniel Palomares, Scott Fluhrer, Tero | ||||
| Kivinen, Valery Smyslov, Yoav Nir, Michael Richardson, Thomas Peyrin, | ||||
| Eric Thormarker, Nancy Cam-Winget, and Bob Briscoe for their valuable | ||||
| comments. In particular, Scott Fluhrer suggested including the rekey | ||||
| index in the SPI. Tero Kivinen also provided multiple clarifications | ||||
| and examples of ESP deployment within constrained devices with their | ||||
| associated optimizations. Thomas Peyrin, Eric Thormarker, and Scott | ||||
| Fluhrer suggested and clarified the use of transform resilient to | ||||
| nonce misuse. The authors would also like to thank Mohit Sethi for | ||||
| his support as the LWIG Working Group Chair. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Daniel Migault | Daniel Migault | |||
| Ericsson | Ericsson | |||
| 8400 boulevard Decarie | 8275 Rte Transcanadienne | |||
| Montreal, QC H4P 2N2 | Saint-Laurent QC H4S 0B6 | |||
| Canada | Canada | |||
| Email: daniel.migault@ericsson.com | Email: daniel.migault@ericsson.com | |||
| Tobias Guggemos | Tobias Guggemos | |||
| LMU Munich | LMU Munich | |||
| MNM-Team | MNM-Team | |||
| Oettingenstr. 67 | Oettingenstr. 67 | |||
| 80538 Munich | 80538 Munich | |||
| Germany | Germany | |||
| Email: guggemos@mnm-team.org | Email: guggemos@mnm-team.org | |||
| End of changes. 96 change blocks. | ||||
| 365 lines changed or deleted | 369 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||