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