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. |