draft-ietf-lwig-minimal-esp-10.txt | draft-ietf-lwig-minimal-esp-11.txt | |||
---|---|---|---|---|
Light-Weight Implementation Guidance (lwig) D. Migault | Light-Weight Implementation Guidance (lwig) D. Migault | |||
Internet-Draft Ericsson | Internet-Draft Ericsson | |||
Intended status: Informational T. Guggemos | Intended status: Informational T. Guggemos | |||
Expires: 10 October 2022 LMU Munich | Expires: 25 November 2022 LMU Munich | |||
8 April 2022 | 24 May 2022 | |||
Minimal IP Encapsulating Security Payload (ESP) | Minimal IP Encapsulating Security Payload (ESP) | |||
draft-ietf-lwig-minimal-esp-10 | draft-ietf-lwig-minimal-esp-11 | |||
Abstract | Abstract | |||
This document describes the minimal properties IP Encapsulating | This document describes the minimal properties that an IP | |||
Security Payload (ESP) implementation needs to meet to remain | Encapsulating Security Payload (ESP) implementation needs to meet to | |||
interoperable with the standard RFC4303 ESP. Such a minimal version | remain interoperable with the standard RFC4303 ESP. Such a minimal | |||
of ESP is not intended to become a replacement of the RFC 4303 ESP. | version of ESP is not intended to become a replacement of the RFC | |||
Instead, a minimal implementation is expected to be optimized for | 4303 ESP. Instead, a minimal implementation is expected to be | |||
constrained environment while remaining interoperable with | optimized for constrained environments while remaining interoperable | |||
implementations of RFC 4303 ESP. In addition, this document also | with implementations of RFC 4303 ESP. In addition, this document | |||
provides some considerations to implement minimal ESP in a | also provides some considerations for implementing minimal ESP in a | |||
constrained environment which includes limiting the number of flash | constrained environment which includes limiting the number of flash | |||
writes, handling frequent wakeup / sleep states, limiting wakeup | writes, handling frequent wakeup / sleep states, limiting wakeup | |||
time, or reducing the use of random generation. | time, and reducing the use of random generation. | |||
This document does not update or modify RFC 4303, but provides a | This document does not update or modify RFC 4303. It provides a | |||
compact description of how to implement the minimal version of the | 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 Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on 10 October 2022. | This Internet-Draft will expire on 25 November 2022. | |||
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 (https://trustee.ietf.org/ | |||
license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
and restrictions with respect to this document. Code Components | and restrictions with respect to this document. Code Components | |||
extracted from this document must include Revised BSD License text as | extracted from this document must include Revised BSD License text as | |||
described in Section 4.e of the Trust Legal Provisions and are | described in Section 4.e of the Trust Legal Provisions and are | |||
provided without warranty as described in the Revised BSD License. | provided without warranty as described in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Requirements notation . . . . . . . . . . . . . . . . . . . . 2 | 1. Requirements notation . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
3. Security Parameter Index (SPI) (32 bit) . . . . . . . . . . . 4 | 3. Security Parameter Index (SPI) (32 bit) . . . . . . . . . . . 4 | |||
3.1. Considerations over SPI generation . . . . . . . . . . . 5 | 3.1. Considerations over SPI generation . . . . . . . . . . . 4 | |||
4. Sequence Number(SN) (32 bit) . . . . . . . . . . . . . . . . 6 | 4. Sequence Number(SN) (32 bit) . . . . . . . . . . . . . . . . 6 | |||
5. Padding . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 5. Padding . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
6. Next Header (8 bit) . . . . . . . . . . . . . . . . . . . . . 9 | 6. Next Header (8 bit) and Dummy Packets . . . . . . . . . . . . 9 | |||
7. ICV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 7. ICV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
8. Cryptographic Suites . . . . . . . . . . . . . . . . . . . . 10 | 8. Cryptographic Suites . . . . . . . . . . . . . . . . . . . . 10 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | |||
11. Privacy Considerations . . . . . . . . . . . . . . . . . . . 13 | 11. Privacy Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
12. Acknowledgment . . . . . . . . . . . . . . . . . . . . . . . 13 | 12. Acknowledgment . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
13.1. Normative References . . . . . . . . . . . . . . . . . . 13 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 13 | |||
13.2. Informative References . . . . . . . . . . . . . . . . . 14 | 13.2. Informative References . . . . . . . . . . . . . . . . . 14 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
1. Requirements notation | 1. Requirements notation | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
document are to be interpreted as described in [RFC2119]. | "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 | 2. 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 (a form of partial | connectionless integrity, an anti-replay service and limited traffic | |||
sequence integrity) and limited traffic flow confidentiality (TFC) | flow confidentiality (TFC) padding. | |||
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 major multipurpose Operating Systems (OS). The ESP and | the kernel of most major multipurpose Operating Systems (OS). ESP is | |||
IPsec suite is usually implemented in a complete way to fit multiple | usually implemented with all of its features to fit the multiple | |||
purpose usage of these OSes. However, completeness of the IPsec | purpose usage of these OSes, at the expense of resources and with no | |||
suite as well as multipurpose scope of these OSes is often performed | considerations for code size. Constrained devices are likely to have | |||
at the expense of resources, or performance. As a result, | their own implementation of ESP optimized and adapted to their | |||
constrained devices are likely to have their own implementation of | specific use, such as limiting the number of flash writes (for each | |||
ESP optimized and adapted to their specificities such as limiting the | packet or across wake time), handling frequent wakeup and sleep | |||
number of flash writes (for each packet or across wake | state, limiting wakeup time, and reducing the use of random | |||
time), handling frequent wakeup and sleep state, limiting wakeup | generation. With the adoption of IPsec by IoT devices with minimal | |||
time, or reducing the use of random generation. With the adoption of | IKEv2 [RFC7815] and ESP Header Compression (EHC) with | |||
IPsec by IoT devices with minimal IKEv2 [RFC7815] and ESP Header | [I-D.mglt-ipsecme-diet-esp] or | |||
Compression (EHC) with [I-D.mglt-ipsecme-diet-esp] or | [I-D.mglt-ipsecme-ikev2-diet-esp-extension], these ESP | |||
[I-D.mglt-ipsecme-ikev2-diet-esp-extension], it becomes crucial that | implementations MUST remain interoperable with standard ESP | |||
ESP implementation designed for constrained devices remain inter- | implementations. This document describes the minimal properties an | |||
operable with the standard ESP implementation to avoid a fragmented | ESP implementation needs to meet to remain interoperable with | |||
usage of ESP. This document describes the minimal properties an ESP | [RFC4303] ESP. In addition, this document also provides advise to | |||
implementation needs to meet to remain interoperable with [RFC4303] | implementers for implementing ESP within constrained environments. | |||
ESP. In addition, this document also provides a set of options to | This document does not update or modify RFC 4303. | |||
implement these properties under certain constrained environments. | ||||
This document does not update or modify RFC 4303, but provides a | ||||
compact description of how to implement the minimal version of the | ||||
protocol. RFC 4303 remains the authoritative description. | ||||
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 RFC 4303 ESP, 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ---- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ---- | |||
skipping to change at page 4, line 29 ¶ | skipping to change at page 4, line 7 ¶ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------ | |||
| 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) | 3. Security Parameter Index (SPI) (32 bit) | |||
According to the [RFC4303], the SPI is a mandatory 32 bits field and | [RFC4303] defines the SPI as a mandatory 32 bits field. | |||
is not allowed to be removed. | ||||
The SPI has a local significance to index the Security Association | The SPI has a local significance to index the Security Association | |||
(SA). From [RFC4301] section 4.1, nodes supporting only unicast | (SA). From [RFC4301] section 4.1, nodes supporting only unicast | |||
communications can index their SA only using the SPI. On the other | communications can index their SA using only the SPI. Nodes | |||
hand, nodes supporting multicast communications must also use the IP | supporting multicast communications also require to use the IP | |||
addresses and thus SA lookup needs to be performed using the longest | addresses and thus SA lookup need to be performed using the longest | |||
match. | match. | |||
For nodes supporting only unicast communications, this document | For nodes supporting only unicast communications, it is RECOMMENDED | |||
recommends indexing SA with the SPI only. The index may be based on | indexing the SA using only the SPI. The index may be based on the | |||
the full 32 bits of SPI or a subset of these bits. The node may | full 32 bits of SPI or a subset of these bits. The node may require | |||
require a combination of the SPI as well as other parameters (like | a combination of the SPI as well as other parameters (like the IP | |||
the IP address) to index the SA. | 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 internally | |||
and it must not be sent on the wire. | and it MUST NOT be sent over the wire. | |||
[RFC4303] does not require the SPI to be randomly generated over 32 | [RFC4303] does not require the 32 bit SPI to be randomly generated, | |||
bits. However, this is the recommended way to generate SPIs as it | although that is the RECOMMENDED way to generate SPIs as it provides | |||
provides some privacy benefits and avoids, for example, correlation | some privacy and security benefits and avoids correlation between ESP | |||
between ESP communications. To randomly generate a 32 bit SPI, the | communications. To obtain a usable random 32 bit SPI, the node | |||
node generates a random 32 bit value and checks it does not fall in | 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 SPI is re-generated until an | index the inbound session. Otherwise the generated value is | |||
acceptable value is found. | discarded and the process repeats until a valid value is found. | |||
However, some constrained nodes may be less concerned by the privacy | Some constrained devices are less concerned with the privacy | |||
properties associated to SPIs randomly generated. Examples of such | properties associated to randomly generated SPIs. Examples of such | |||
nodes might include sensors looking to reduce their code complexity, | devices might include sensors looking to reduce their code | |||
in which case 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 example of such predictable function may consider the combination | An implementation of such predictable function could use the | |||
of a fixed value and the memory address of the SAD structure. For | combination of a fixed value and the memory address of the SAD | |||
every incoming packet, the node will be able to point the SAD | structure. For every incoming packet, the node will be able to point | |||
structure directly from the SPI value. This avoids having a separate | to the SAD structure directly from the SPI value. This avoids having | |||
and additional binding between SPI and SAD entries that is involved | a separate and additional binding and lookup function for the SPI to | |||
for every incoming packet. | its SAD entry for every incoming packet. | |||
3.1. Considerations over SPI generation | 3.1. Considerations over SPI generation | |||
SPI that are not randomly generated over 32 bits may lead to 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 upon the adoption of alternative designs. | |||
Note that SPI value is used only for inbound traffic, as such the SPI | The SPI value is only looked up for inbound traffic. The SPI | |||
negotiated with IKEv2 [RFC7296] or [RFC7815] by a peer, is the value | negotiated with IKEv2 [RFC7296] or Minimal IKEv2 [RFC7815] by a peer | |||
used by the remote peer when it sends traffic. As SPI is only used | is the value used by the remote peer when it sends traffic. The main | |||
for inbound traffic by the peer, this allows each peer to manage the | advantage of using a rekeying mechanism is to enable a rekey, that is | |||
set of SPIs used for its inbound traffic. Similarly, the privacy | performed by replacing an old SA by a new SA, both indexed with | |||
concerns associated with the generation of non random SPI is also | distinct SPIs. As the SPI is only used for inbound traffic by the | |||
peer, this allows each peer to manage the set of SPIs used for its | ||||
inbound traffic. The necessary number of SPI reflects the number of | ||||
inbound SAs as well as the ability to rekey these SAs. Typically, | ||||
rekeying a SA is performed by creating a new SA (with a dedicated | ||||
SPI) before the old SA is deleted. This results in an additional SA | ||||
and the need to support an additional SPI. Similarly, the privacy | ||||
concerns associated with the generation of non-random SPIs is also | ||||
limited to the incoming traffic. | limited to the incoming traffic. | |||
When alternate designs are considered, it is likely that the number | Alternatively, some constrained devices will not implement IKEv2 or | |||
of possible SPIs will be limited. This limit should both consider | Minimal IKEv2 and as such will not be able to manage a roll-over | |||
the number of inbound SAs - possibly per IP addresses - as well as | between two distinct SAs. In addition, some of these constrained | |||
the ability for the node to rekey. SPI can typically be used to | devices are also likely to have a limited number of SAs - likely to | |||
implement a key update with the SPI indicating the key is being used. | be indexed over 3 bytes only for example. One possible way to enable | |||
For example, a SPI might be encoded with the Security Association | a rekey mechanism with these devices is to use the SPI where for | |||
Database (SAD) entry on a subset of bytes (for example 3 bytes), | example the first 3 bytes designates the SA while the remaining byte | |||
while the remaining byte indicates the rekey index. | indicates a rekey index. SPI numbers can be used to implement | |||
tracking the inbound SAs when rekeying is taking place. When | ||||
rekeying a SPI, the new SPI could use the SPI bytes to indicate the | ||||
rekeying index. | ||||
The use of a smaller number of SPIs across communications comes with | The use of a small limited set of SPI numbers across communications | |||
privacy and security concerns. Typically, some specific values or | comes with privacy and security concerns. Some specific values or | |||
subset of SPI values may reveal the models or manufacturer of the | subset of SPI values could reveal the models or manufacturer of the | |||
node implementing ESP. This may raise some privacy issues as an | node implementing ESP. It could also reveal some state such as "not | |||
observer is likely to be able to determine the constrained devices of | yet rekeyed" or "rekeyed 10 times". If a constrained host uses a | |||
the network. In some cases, these nodes may host a very limited | very limited or even just one application, the SPI itself could | |||
number of applications - typically a single application - in which | indicate what kind of traffic (eg the kind of application typically | |||
case the SPI would provide some information related to the | running) is transmitted. This could be further correlated by | |||
application of the user. In addition, the device or application may | encrypted data size to further leak information to an observer on the | |||
be associated with some vulnerabilities, in which case specific SPI | network. In addition, use of specific hardcoded SPI numbers could | |||
values may be used by an attacker to discover vulnerabilities. | reveal a manufacturer or device version. If updated devices use | |||
different SPI numbers, an attacker could locate vulnerable devices by | ||||
their use of specific SPI numbers. | ||||
While the use of randomly generated SPIs may reduce the leakage or | A privacy analysis should consider at least the type of information | |||
privacy of security related information by ESP itself, these pieces | as well the traffic pattern before deciding whether non-random SPIs | |||
of information may also be leaked otherwise. As a result, a privacy | are safe to use. Typically temperature sensors, wind sensors, used | |||
analysis should consider at least the type of information as well the | outdoors may not leak privacy sensitive information and most of its | |||
traffic pattern before determining a non random SPI can be used. | traffic is expected to be outbound traffic. When used indoors, a | |||
Typically, temperature sensors, wind sensors, used outdoors may not | sensor that reports an encrypted status of a door (closed or opened) | |||
leak privacy sensitive information and most of its traffic is | every minute, might not leak sensitive information outside the local | |||
expected to be outbound traffic. When used indoors, a sensor that | network. In these examples, the privacy aspect of the information | |||
reports every minute an encrypted status of the door (closed or | itself might be limited. Being able to determine the version of the | |||
opened) may leak truly little privacy sensitive information outside | sensor to potentially take control of it may also have some limited | |||
the local network. In these examples, the privacy aspect of the | security consequences. Of course this depends on the context these | |||
information itself might be limited. Being able to determine the | sensors are being used. If the risks associated to privacy and | |||
version of the sensor to potentially take control of it may also have | security are acceptable, a non-randomized SPI can be used. | |||
some limited security consequences. Of course this depends on the | ||||
context these sensors are being used. If the risks associated to | ||||
privacy and security are acceptable, a randomized SPI is not | ||||
necessary. In any case, for such constrained sensors, it remains | ||||
better to have secure communications with non random SPI as opposed | ||||
to no security. | ||||
4. Sequence Number(SN) (32 bit) | 4. Sequence Number(SN) (32 bit) | |||
According to [RFC4303], the Sequence Number (SN) is a mandatory 32 | The Sequence Number (SN) in [RFC4303] is a mandatory 32 bits field in | |||
bits 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: if packet B is sent after packet A, then SN of | |||
packet B is strictly greater than the SN of packet A. | 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, like a specific gateway, or nodes similar to them. As a | devices where it is known whether or not the peer implements anti- | |||
result, the sender may know whether the receiver implements anti- | replay protection. As per [RFC4303], the sender MUST still implement | |||
replay protection or not. Even though the sender may know the | a strictly increasing function to generate the SN. | |||
receiver does not implement anti-replay protection, the sender must | ||||
implement an always increasing function to generate the SN. | ||||
Usually, SN is generated by incrementing a counter for each packet | The RECOMMENDED way for multipurpose ESP implementation is to | |||
sent. A constrained device may avoid maintaining this context and | increment a counter for each packet sent. However, a constrained | |||
use another source that is known to always increase. Typically, | device may avoid maintaining this context and use another source that | |||
constrained nodes using 802.15.4 Time Slotted Channel Hopping (TSCH), | is known to always increase. Typically, constrained devices use | |||
whose communication is heavily dependent on time, can take advantage | 802.15.4 Time Slotted Channel Hopping (TSCH). This communication is | |||
of their clock to generate the SN. A lot of IoT devices are in a | heavily dependent on time. A contrained device can take advantage of | |||
sleep state most of the time wake up and are only awake to perform a | this clock mechanism to generate the SN. A lot of IoT devices are in | |||
specific operation before going back to sleep. They do have separate | a sleep state most of the time and wake up only to perform a specific | |||
hardware that allows them to wake up after a certain timeout, and | operation before going back to sleep. These devices do have separate | |||
most likely also timers that start running when the device was booted | hardware that allows them to wake up after a certain timeout and | |||
typically also timers that start running when the device was booted | ||||
up, so they might have a concept of time with certain granularity. | up, so they might have a concept of time with certain granularity. | |||
This requires to store any information in a stable storage - such as | This requires to store any information in a stable storage - such as | |||
flash memory - that can be restored across sleeps. Storing | flash memory - that can be restored across sleeps. Storing | |||
information associated with the SA such as SN requires some read and | information associated with the SA such as SN requires some read and | |||
writing operation on a stable storage after each packet is sent as | write operation on a stable storage after each packet is sent as | |||
opposed to SPI or keys that are only written at the creation of the | opposed to a SPI number or cryptographic keys that are only written | |||
SA. Such operations are likely to wear out the flash, and slow down | to stable storage at the creation of the SA. Write operations wear | |||
the system greatly, as writing to flash is not as fast as reading. | out the flash storage. Write operations also slow down the system | |||
Their internal clocks/timers might not be very accurate, but they | significantly, as writing to flash is much slower than reading from | |||
should be enough to know that each time they wake up their time is | flash. While these devices have internal clocks or timers that might | |||
greater than what it was last time they woke up. Using time for SN | not be very accurate, these are good enough to guarantee that each | |||
time the device wakes up from sleep that their time is greater than | ||||
what it was before the device went to sleep. Using time for the SN | ||||
would guarantee a strictly increasing function and avoid storing any | would guarantee a strictly increasing function and avoid storing any | |||
additional values or context related to the SN. Of course, one | additional values or context related to the SN on flash. In addition | |||
should only consider use of a clock to generate SNs if the | to the time value, a RAM based counter can be used to ensure that if | |||
application will inherently ensure that no two packets with a given | the device sends multiple packets over an SA within one wake up | |||
SA are sent with the same time value. Note however that standard | period, that the serial numbers are still increasing and unique. | |||
receivers are generally configured with incrementing counters and, if | Note that standard receivers are generally configured with | |||
not appropriately configured, the use of a significantly larger SN | incrementing counters and, if not appropriately configured, the use | |||
difference may result in the packet out of the receiver's windows and | of a significantly larger SN than the previous packet can result in | |||
that packet being discarded. | that packet falling outside of the peer's receiver window which could | |||
cause that packet to be discarded. | ||||
For inbound traffic, this document recommends that receivers | For inbound traffic, it is RECOMMENDED that receivers implement anti- | |||
implements anti-replay protection, and the size of the window depends | replay protection. The size of the window should depend on the | |||
on the ability of the network to deliver packets out of order. As a | property of the network to deliver packets out of order. In an | |||
result, in an environment where out of order packets is not possible | environment where out of order packets are not possible, the window | |||
the window size can be set to one. However, while recommended, there | size can be set to one. An ESP implementation may choose to not | |||
are no requirements to implement an anti-replay protection mechanism | implement an anti-replay protection. An implementation of anti- | |||
implemented by IPsec. Similarly to the SN the implementation of anti | ||||
replay protection may require the device to write the received SN for | replay protection may require the device to write the received SN for | |||
every packet, which may in some cases come with the same drawbacks as | every packet to stable storage. This will have the same issues as | |||
those exposed for SN. As a result, some implementations may drop a | discussed earlier with the SN. Some constrained device | |||
non required anti replay protection especially when the necessary | implementations may choose to not implement the optional anti-replay | |||
resource involved overcomes the benefit of the mechanism. These | protection. A typical example might consider an IoT device such as a | |||
resources need also to balance that absence of anti-replay mechanism, | temperature sensor that is sending a temperature measurement every 60 | |||
may lead to unnecessary integrity check operations that might be | seconds, and that receives an acknowledgment from the receiver. In | |||
significantly more expensive as well. A typical example might | such cases, the ability to spoof and replay an acknowledgement is of | |||
consider an IoT device such as a temperature sensor that is sending a | limited interest and might not justify the implementation of an anti- | |||
temperature measurement every 60 seconds, and that receives an | replay mechanism. Receiving peers may also use ESP anti-replay | |||
acknowledgment from the receiver. In such cases, the ability to | mechanism adapted to a specific application. Typically, when the | |||
spoof and replay an acknowledgement is of limited interest and might | sending peer is using SN based on time, anti-replay may be | |||
not justify the implementation of an anti replay mechanism. | implemented by discarding any packets that present a SN whose value | |||
Receiving peers may also use ESP anti-replay mechanism adapted to a | is too much in the past. Such mechanisms may consider clock drifting | |||
specific application. Typically, when the sending peer is using SN | in various ways in addition to acceptable delay induced by the | |||
based on time, anti-replay may be implemented by discarding any | network to avoid the anti replay windows rejecting legitimate | |||
packets that present a SN whose value is too much in the past. Note | packets. It could accept any SN as long as it is higher than the | |||
that such mechanisms may consider clock drifting in various ways in | previously received SN. Another mechanism could be used where only | |||
addition to acceptable delay induced by the network to avoid the anti | the received time on the device is used to consider a packet as | |||
replay windows rejecting legitimate packets. When a packet is | valid, without looking at the SN at all. | |||
received at a regular time interval, some variant of time based | ||||
mechanisms may not even use the value of the SN, but instead only | ||||
consider the receiving time of the packet. | ||||
SN can be encoded over 32 bits or 64 bits - known as Extended | The SN can be represented as a 32 bit number, or as a 64 bit number, | |||
Sequence Number (ESN). As per [RFC4303], the support of ESN is not | known as Extended Sequence Number (ESN). As per [RFC4303], support | |||
mandatory. The determination of the use of ESN is based on the | of ESN is not mandatory and its use is negotiated via IKEv2 | |||
largest possible value a SN can take over a session. When SN is | [RFC7296]. A ESN is used for high speed links to ensure there can be | |||
incremented for each packet, the number of packets sent over the | more than 2^32 packets before the SA needs to be rekeyed to prevent | |||
lifetime of a session may be considered. However, when the SN is | the SN from rolling over. This assumes the SN is incremented by 1 | |||
incremented differently - such as when time is used - the maximum | for each packet. When the SN is incremented differently - such as | |||
value SN needs to be considered instead. Note that the limit of | when time is used - rekeying needs to happen based on how the SN is | |||
messages being sent is primarily determined by the security | incremented to prevent the SN from rolling over. The security of all | |||
associated with the key rather than the SN. The security of all data | data protected under a given key decreases slightly with each message | |||
protected under a given key decreases slightly with each message and | and a node must ensure the limit is not reached - even though the SN | |||
a node must ensure the limit is not reached - even though the SN | ||||
would permit it. Estimation of the maximum number of packets to be | would permit it. Estimation of the maximum number of packets to be | |||
sent by a node is always challenging and as such should be considered | sent by a node is not always predicatable and large margins should be | |||
cautiously as nodes could be online for much more time than expected. | used espcially as nodes could be online for much more time than | |||
Even for constrained devices, this document recommends implementing | expected. Even for constrained devices, it is RECOMMENDED to | |||
some rekey mechanisms (see Section 10). | implement some rekey mechanisms (see Section 10). | |||
5. Padding | 5. Padding | |||
The purpose of padding is to respect the 32 bit alignment of ESP or | Padding is required to keep the 32 bit alignment of ESP. It is also | |||
block size expected by an encryption transform - such as AES-CBC for | required for some encryption transforms that need a specific block | |||
example. ESP must have at least one padding byte Pad Length that | size of input, such as ENCR_AES_CBC. ESP specifies padding in the | |||
indicates the padding length. ESP padding bytes are generated by a | Pad Length byte, followed by up to 255 bytes of padding. | |||
succession of unsigned bytes starting with 1, 2, 3 with the last byte | ||||
set to Pad Length, where Pad Length designates the length of the | ||||
padding bytes. | ||||
Checking the padding structure is not mandatory, so the constrained | Checking the padding structure is not mandatory, so constrained | |||
device may omit such checks, however, in order to interoperate with | devices may omit these checks on received ESP packets. For outgoing | |||
existing ESP implementations, it must build the padding bytes as | ESP packets, padding must be applied as required by ESP. | |||
recommended by ESP. | ||||
In some situation the padding bytes may take a fixed value. This | In some situation 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 Data Payload is of fixed size. | |||
ESP [RFC4303] also provides Traffic Flow Confidentiality (TFC) as a | ESP [RFC4303] additionally provides Traffic Flow Confidentiality | |||
way to perform padding to hide traffic characteristics, which differs | (TFC) as a way to perform padding to hide traffic characteristics. | |||
from respecting a 32 bit alignment. TFC is not mandatory and must be | TFC is not mandatory and is negotiated with the SA management | |||
negotiated with the SA management protocol. TFC has not been widely | protocol, such as IKEv2. TFC has been widely implemented but it is | |||
adopted for standard ESP traffic. One possible reason is that it | not widely deployed for ESP traffic. It is NOT RECOMMENDED to | |||
requires to shape the traffic according to one traffic pattern that | implement TFC for a minimal ESP. | |||
needs to be maintained. This is likely to require extra processing | ||||
as well as providing a "well recognized" traffic shape which could | ||||
end up being counterproductive. As such, this document does not | ||||
recommend that minimal ESP implementation supports TFC. | ||||
As a result, communication protection that was relying on TFC will be | As a consequence, communication protection that relies on TFC would | |||
more sensitive to traffic shaping. This could expose the application | be more sensitive to traffic patterns without TFC. This can leak | |||
as well as the devices used to a passive monitoring attacker. Such | application information as well as the manifacturor or model of the | |||
information could be used by the attacker in case a vulnerability is | device used to a passive monitoring attacker. Such information can | |||
disclosed on the specific device. In addition, some application use | be used, for example, by an attacker in case a vulnerability is known | |||
- such as health applications - may also reveal important privacy | for the specific device or application. In addition, some | |||
oriented information. | application use - such as health applications - could leak important | |||
privacy oriented information. | ||||
Some constrained nodes that have limited battery lifetime may also | Constrained devices that have limited battery lifetime may prefer to | |||
prefer avoiding sending extra padding bytes. However, the same nodes | avoid sending extra padding bytes. In most cases, the payload | |||
may also be very specific to an application and device. As a result, | carried by these devices is quite small, and the standard padding | |||
they are also likely to be the main target for traffic shaping. In | mechanism can be used as an alternative to TFC. Alternatively, any | |||
most cases, the payload carried by these nodes is quite small, and | information leak based on the size - or presence - of the packet can | |||
the standard padding mechanism may also be used as an alternative to | also be addressed at the application level, before the packet is | |||
TFC, with a sufficient tradeoff between the required energy to send | encrypted with ESP. If application packets vary between 1 to 30 | |||
additional payload and the exposure to traffic shaping attacks. In | bytes, the application could always send 32 byte responses to ensure | |||
addition, the information leaked by the traffic shaping may also be | all traffic sent is of identical length. To prevent leaking | |||
addressed by the application level. For example, it is preferred to | information that a sensor changed state, such as "temperature | |||
have a sensor sending some information at regular time interval, | changed" or "door opened", an application could send this information | |||
rather than when a specific event is happening. Typically, a sensor | at regular time interval, rather than when a specific event is | |||
monitoring the temperature, or a door is expected to send regularly | happening, even if the sensor state did not change. | |||
the information - i.e. the temperature of the room or whether the | ||||
door is closed or open) instead of only sending the information when | ||||
the temperature has raised or when the door is being opened. | ||||
6. Next Header (8 bit) | 6. Next Header (8 bit) and Dummy Packets | |||
According to [RFC4303], the Next Header is a mandatory 8 bits field | ESP [RFC4303] defines the Next Header as a mandatory 8 bits field in | |||
in the packet. Next header specifies the data contained in the | the packet. The Next header, only visible after decryption, | |||
payload as well as dummy packet, i.e. packets with the Next Header | specifies the data contained in the payload. In addition, the Next | |||
with a value 59 meaning "no next header". In addition, the Next | ||||
Header may also carry an indication on how to process the packet | Header may also carry an indication on how to process the packet | |||
[I-D.nikander-esp-beet-mode]. | [I-D.nikander-esp-beet-mode]. The Next Header can point to a dummy | |||
packet, i.e. packets with the Next Header value set to 59 meaning "no | ||||
next header". The data following to "no next header" is unstructured | ||||
dummy data. | ||||
The ability to generate and receive dummy packets is required by | The ability to generate and to receive and ignore dummy packets is | |||
[RFC4303]. For interoperability, a minimal ESP implementation must | required by [RFC4303]. An implementation can omit ever generating | |||
discard dummy packets without indicating an error. Note that such | and sending dummy packets. For interoperability, a minimal ESP | |||
recommendation only applies for nodes receiving packets, and that | implementation MUST be able to process and discard dummy packets | |||
nodes designed to only send data might not implement this capability. | without indicating an error. | |||
As the generation of dummy packets is subject to local management and | In constrained environments, sending dummy packets may have too much | |||
based on a per-SA basis, a minimal ESP implementation may not | impact on the device lifetime, in which case dummy packets should not | |||
generate such dummy packet. Specifically, in constrained environment | be generated and sent. On the other hand, Constrained devices | |||
sending dummy packets may have too much impact on the device | running specific applications that would leak too much information by | |||
lifetime, and should be avoided. On the other hand, constrained | not generating and sending dummy packets may implement this | |||
nodes may be dedicated to specific applications, in which case, | functionality or even implement something similar at the application | |||
traffic pattern may expose the application or the type of node. For | layer. Note also that similarly to padding and TFC that can be used | |||
these nodes, not sending dummy packet may have some privacy | to hide some traffic characteristics (see Section 5), dummy packet | |||
implication that needs to be measured. However, for the same reasons | may also reveal some patterns that can be used to identify the | |||
exposed in Section 5 traffic shaping at the IPsec layer may also | application. For example, an application may send dummy data to hide | |||
introduce some traffic pattern, and on constrained devices the | some traffic pattern. Suppose such such application sends a 1 byte | |||
application is probably the most appropriated layer to limit the risk | data when a change occurs. This results in sending a packet | |||
of leaking information by traffic shaping. | notifying a change has occurred. Dummy packet may be used to prevent | |||
such information to be leaked by sending a 1 byte packet every second | ||||
when the information is not changed. After an upgrade the data | ||||
becomes two bytes. At that point, the dummy packets do not hide | ||||
anything and having 1 byte regularly versus 2 bytes make even the | ||||
identification of the application, version easier to identify. This | ||||
generaly makes the use of dummy packets more appropriated 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 which 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 | [I-D.nikander-esp-beet-mode] and is expected to result from an | |||
agreement between the peers. As a result, it should not be part of a | agreement between the peers. As a result, it SHOULD NOT be part of a | |||
minimal implementation of ESP. | minimal implementation of ESP. | |||
7. ICV | 7. ICV | |||
The ICV depends on the cryptographic suite used. Currently, | The ICV depends on the cryptographic suite used. As detailed in | |||
[RFC8221] only recommends cryptographic suites with an ICV which | [RFC8221] authentication or authenticated encryption are RECOMMENDED | |||
makes the ICV a mandatory field. | and as such the ICV field must be present with a size different from | |||
zero. Its length is defined by the security recommendations only. | ||||
As detailed in [RFC8221] authentication or authenticated encryption | ||||
are recommended and as such the ICV field must be present with a size | ||||
different from zero. Its length is defined by the security | ||||
recommendations only. | ||||
8. Cryptographic Suites | 8. Cryptographic Suites | |||
The cryptographic suites implemented are an important component of | The recommended algorithms to use are expected to evolve over time | |||
ESP. The recommended algorithms to use are expected to evolve over | and implementers SHOULD follow the recommendations provided by | |||
time 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 the 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 transform. 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 or to | outdated ciphers). ESP can be used to authenticate only | |||
encrypt the communication. In the latter case, authenticated | (ENCR_NULL) or to encrypt the communication. In the latter case, | |||
encryption is RECOMMENDED [RFC8221]. | authenticated encryption (AEAD) is RECOMMENDED [RFC8221]. | |||
2. Resilience to nonce re-use: Some transforms -including AES-GCM - | 2. Resilience to nonce re-use: Some transforms -including AES-GCM - | |||
are very sensitive to nonce collision with a given key. While | are vulnerable to nonce collision with a given key. While the | |||
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 reboot. This causes an issue for devices that are | across sleep states or reboot. This causes an issue for devices | |||
configured with a key. When the key is likely to be re-used | that are configured using static keys (called manual keying) and | |||
across reboots, algorithms that are nonce misuse resistant such | manual keying should not be used with these encryption | |||
as, for example, AES-SIV [RFC5297], AES-GCM-SIV [RFC8452] or | algorithms. When the key is likely to be re-used across reboots, | |||
Deoxys-II [DeoxysII] are RECOMMENDED. Note however that | algorithms that are nonce misuse resistant such as, for example, | |||
currently none of them has yet been defined for ESP. | AES-SIV [RFC5297], AES-GCM-SIV [RFC8452] or Deoxys-II [DeoxysII] | |||
are RECOMMENDED. Note however that currently none of these are | ||||
yet defined for use with ESP. | ||||
3. Interoperability: Interoperability considers the encryption | 3. Interoperability: constrained devices usually only implement one | |||
algorithm transforms shared with the other nodes. Note that it | or very few different encryption algorithm transforms. [RFC8221] | |||
is not because an encryption algorithm transform is widely | takes the life cycle of encryption algorithm transforms and | |||
deployed that it is secured. As a result, security should not be | device manufactoring into consideration in its recommendations | |||
weakened for interoperability. [RFC8221] and successors consider | for mandatory-to-implement ("MTI") algorithms. | |||
the life cycle of encryption algorithm transforms sufficiently | ||||
long to provide interoperability. Constrained devices may have | ||||
limited interoperability requirements which makes possible to | ||||
reduces the number of encryption algorithm transforms to | ||||
implement. | ||||
4. Power Consumption and Cipher Suite Complexity: Complexity of the | 4. Power Consumption and Cipher Suite Complexity: Complexity of the | |||
encryption algorithm transform or the energy associated with it | encryption algorithm transform and the energy cost associated | |||
are especially considered when devices have limited resources or | with it are especially important considerations for devices that | |||
are using some batteries, in which case the battery determines | have limited resources or are battery powered. The battery life | |||
the life of the device. The choice of a cryptographic function | might determine the lifetime of the entire device. The choice of | |||
may consider re-using specific libraries or to take advantage of | a cryptographic function should consider re-using specific | |||
hardware acceleration provided by the device. For example, if | libraries or to take advantage of hardware acceleration provided | |||
the device benefits from AES hardware modules and uses AES-CTR, | by the device. For example, if the device benefits from AES | |||
it may prefer AUTH_AES-XCBC for its authentication. In addition, | hardware modules and uses ENCR_AES_CTR, it may prefer AUTH_AES- | |||
some devices may also embed radio modules with hardware | XCBC for its authentication. In addition, some devices may also | |||
acceleration for AES-CCM, in which case, this mode may be | embed radio modules with hardware acceleration for AES-CCM, in | |||
preferred. | which case, this transform may be preferred. | |||
5. Power Consumption and Bandwidth Consumption: Similarly to the | 5. Power Consumption and Bandwidth Consumption: Reducing the payload | |||
encryption algorithm transform complexity, 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. As a result, encryption algorithm transforms with low | strongly preferred. To reduce the overall payload size one may, | |||
overhead may be considered. To reduce the overall payload size | for example: | |||
one may, for example: | ||||
1. Use of counter-based ciphers without fixed block length (e.g. | 1. Use of 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 | 2. Use of ciphers with capability of using implicit IVs | |||
[RFC8750]. | [RFC8750]. | |||
3. Use of ciphers recommended for IoT [RFC8221]. | 3. Use of ciphers recommended for IoT [RFC8221]. | |||
4. Avoid Padding by sending payload data which are aligned to | 4. Avoid Padding by sending payload data which are aligned to | |||
the cipher block length - 2 for the ESP trailer. | the cipher block length - 2 for the ESP trailer. | |||
9. IANA Considerations | 9. IANA Considerations | |||
There are no IANA consideration for this document. | There are no IANA consideration for this document. | |||
10. Security Considerations | 10. Security Considerations | |||
Security considerations are those of [RFC4303]. In addition, this | Security Considerations are those of [RFC4303]. In addition, this | |||
document provided security recommendations and guidance over the | document provided security recommendations and guidance over the | |||
implementation choices for each ESP field. | 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. | |||
This document recommends to use ESP in conjunction with key | It is RECOMMENDED to use ESP in conjunction with key management | |||
management protocols such as for example IKEv2 [RFC7296] or minimal | protocols such as for example IKEv2 [RFC7296] or minimal IKEv2 | |||
IKEv2 [RFC7815]. Such mechanisms are responsible for negotiating | [RFC7815]. Such mechanisms are responsible for negotiating fresh | |||
fresh session keys as well as prevent a session key being use beyond | session keys as well as prevent a session key being use beyond its | |||
its lifetime. When such mechanisms cannot be implemented and the | lifetime. When such mechanisms cannot be implemented, such as when | |||
session key is, for example, provisioned, the nodes must ensure that | the the session key is provisioned, the device MUST ensure that keys | |||
keys are not used beyond their lifetime and that the appropriate use | are not used beyond their lifetime and that the the key remains used | |||
of the key remains across reboots - e.g. conditions on counters and | in compliance will all security requirements across reboots - e.g. | |||
nonces remains valid. | conditions on counters and nonces remains valid. | |||
When a node generates its key or when random value such as nonces are | When a device generates its own key or when random value such as | |||
generated, the random generation must follow [RFC4086]. In addition, | nonces are generated, the random generation MUST follow [RFC4086]. | |||
[SP-800-90A-Rev-1] provides appropriated guidance to build random | In addition, [SP-800-90A-Rev-1] provides guidance on how to build | |||
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 result 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 some minimalistic way to implement ESP. In some cases, | |||
this may result in potentially exposing privacy sensitive pieces of | this 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 designer can take the appropriate decisions given the | the implementer can take 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 risks 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 some very | |||
specific context of non randomly generated SPI might in some cases | specific context of non randomly generated SPI might in some cases | |||
ease the determination of the device of the application. Similarly, | ease the determination of the device or the application. Similarly, | |||
padding provides limited capabilities to obfuscate the traffic | padding provides limited capabilities to obfuscate the traffic | |||
compared to those provided by TFC. Such consequence on privacy as | compared to those provided by TFC. Such consequence on privacy as | |||
detailed in Section 5. | detailed in Section 5. | |||
12. Acknowledgment | 12. Acknowledgment | |||
The authors would like to thank Daniel Palomares, Scott Fluhrer, Tero | The authors would like to thank Daniel Palomares, Scott Fluhrer, Tero | |||
Kivinen, Valery Smyslov, Yoav Nir, Michael Richardson, Thomas Peyrin, | Kivinen, Valery Smyslov, Yoav Nir, Michael Richardson, Thomas Peyrin, | |||
Eric Thormarker, Nancy Cam-Winget and Bob Briscoe for their valuable | Eric Thormarker, Nancy Cam-Winget and Bob Briscoe for their valuable | |||
comments. In particular Scott Fluhrer suggested including the rekey | comments. In particular Scott Fluhrer suggested including the rekey | |||
index in the SPI. Tero Kivinen provided also multiple clarifications | index in the SPI. Tero Kivinen also provided multiple clarifications | |||
and examples of deployment ESP within constrained devices with their | and examples of deployment ESP within constrained devices with their | |||
associated optimizations. Thomas Peyrin Eric Thormarker and Scott | associated optimizations. Thomas Peyrin Eric Thormarker and Scott | |||
Fluhrer suggested and clarified the use of transform resilient to | Fluhrer suggested and clarified the use of transform resilient to | |||
nonce misuse. | nonce misuse. | |||
13. References | 13. References | |||
13.1. Normative References | 13.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 | |||
skipping to change at page 14, line 28 ¶ | skipping to change at page 13, line 39 ¶ | |||
[RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | |||
Kivinen, "Internet Key Exchange Protocol Version 2 | Kivinen, "Internet Key Exchange Protocol Version 2 | |||
(IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | |||
2014, <https://www.rfc-editor.org/info/rfc7296>. | 2014, <https://www.rfc-editor.org/info/rfc7296>. | |||
[RFC7815] Kivinen, T., "Minimal Internet Key Exchange Version 2 | [RFC7815] Kivinen, T., "Minimal Internet Key Exchange Version 2 | |||
(IKEv2) Initiator Implementation", RFC 7815, | (IKEv2) Initiator Implementation", RFC 7815, | |||
DOI 10.17487/RFC7815, March 2016, | DOI 10.17487/RFC7815, March 2016, | |||
<https://www.rfc-editor.org/info/rfc7815>. | <https://www.rfc-editor.org/info/rfc7815>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
[RFC8221] Wouters, P., Migault, D., Mattsson, J., Nir, Y., and T. | [RFC8221] Wouters, P., Migault, D., Mattsson, J., Nir, Y., and T. | |||
Kivinen, "Cryptographic Algorithm Implementation | Kivinen, "Cryptographic Algorithm Implementation | |||
Requirements and Usage Guidance for Encapsulating Security | Requirements and Usage Guidance for Encapsulating Security | |||
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, | |||
skipping to change at page 14, line 50 ¶ | skipping to change at page 14, line 20 ¶ | |||
13.2. Informative References | 13.2. Informative References | |||
[DeoxysII] Jeremy, J. J., Ivica, I. N., Thomas, T. P., and Y. S. | [DeoxysII] Jeremy, J. J., Ivica, I. N., Thomas, T. P., and Y. S. | |||
Yannick, "Deoxys v1.41", October 2016, | Yannick, "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] | [I-D.mglt-ipsecme-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-07, 11 March | Internet-Draft, draft-mglt-ipsecme-diet-esp-08, 13 May | |||
2019, <https://www.ietf.org/archive/id/draft-mglt-ipsecme- | 2022, <https://www.ietf.org/archive/id/draft-mglt-ipsecme- | |||
diet-esp-07.txt>. | diet-esp-08.txt>. | |||
[I-D.mglt-ipsecme-ikev2-diet-esp-extension] | [I-D.mglt-ipsecme-ikev2-diet-esp-extension] | |||
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-01, 26 | Draft, draft-mglt-ipsecme-ikev2-diet-esp-extension-02, 13 | |||
June 2018, <https://www.ietf.org/archive/id/draft-mglt- | May 2022, <https://www.ietf.org/archive/id/draft-mglt- | |||
ipsecme-ikev2-diet-esp-extension-01.txt>. | ipsecme-ikev2-diet-esp-extension-02.txt>. | |||
[I-D.nikander-esp-beet-mode] | [I-D.nikander-esp-beet-mode] | |||
Nikander, P. and J. Melen, "A Bound End-to-End Tunnel | Nikander, P. and J. Melen, "A Bound End-to-End Tunnel | |||
(BEET) mode for ESP", Work in Progress, Internet-Draft, | (BEET) mode for ESP", Work in Progress, Internet-Draft, | |||
draft-nikander-esp-beet-mode-09, 5 August 2008, | draft-nikander-esp-beet-mode-09, 5 August 2008, | |||
<https://www.ietf.org/archive/id/draft-nikander-esp-beet- | <https://www.ietf.org/archive/id/draft-nikander-esp-beet- | |||
mode-09.txt>. | 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 | |||
End of changes. 67 change blocks. | ||||
345 lines changed or deleted | 338 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |