Skip to main content

Minimal ESP

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft whose latest revision state is "Replaced".
Authors Daniel Migault , Tobias Guggemos
Last updated 2018-08-23 (Latest revision 2018-06-22)
Replaced by draft-ietf-lwig-minimal-esp, draft-ietf-lwig-minimal-esp, RFC 9333
RFC stream Internet Engineering Task Force (IETF)
Additional resources Mailing list discussion
Stream WG state Call For Adoption By WG Issued
Document shepherd (None)
IESG IESG state I-D Exists
Consensus boilerplate Unknown
Telechat date (None)
Responsible AD (None)
Send notices to (None)
Light-Weight Implementation Guidance (lwig)                   D. Migault
Internet-Draft                                                  Ericsson
Intended status: Informational                               T. Guggemos
Expires: December 23, 2018                                    LMU Munich
                                                           June 21, 2018

                              Minimal ESP


   This document describes a minimal implementation of the IP
   Encapsulation Security Payload (ESP) defined in RFC 4303.  Its
   purpose is to enable implementation of ESP with a minimal set of
   options to remain compatible with ESP as described in RFC 4303.  A
   minimal version of ESP is not intended to become a replacement of the
   RFC 4303 ESP, but instead to enable a limited implementation to
   interoperate with implementations of RFC 4303 ESP.

   This document describes what is required from RFC 4303 ESP as well as
   various ways to optimize compliance with RFC 4303 ESP.

   This document does not update or modify RFC 4303, but provides a
   compact description of how to implement the minimal version of the
   protocol.  If this document and RFC 4303 conflicts then RFC 4303 is
   the authoritative description.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents 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 December 23, 2018.

Migault & Guggemos      Expires December 23, 2018               [Page 1]
Internet-Draft                 Minimal ESP                     June 2018

Copyright Notice

   Copyright (c) 2018 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
   ( in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

1.  Requirements notation

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "OPTIONAL" in this document are to be interpreted as described 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 suite protocol [RFC4301].  IPsec
   is used to provide confidentiality, data origin authentication,
   connectionless integrity, an anti-replay service (a form of partial
   sequence integrity) and limited traffic flow confidentiality.

   Figure 1 describes an ESP Packet.  Currently ESP is implemented in
   the kernel of major multi purpose Operating Systems (OS).  The ESP
   and IPsec suite is usually implemented in a complete way to fit
   multiple purpose usage of these OS.  However, completeness of the
   IPsec suite as well as multi purpose scope of these OS is often
   performed at the expense of resources, or a lack of performance.  As
   a result, constrained devices are likely to have their own
   implementation of ESP optimized and adpated to their specificities.
   With the adoption of IPsec by 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], it becomes crucial that
   ESP implementation designed for constrint devices remain inter-
   operable with the standard ESP implementation to avoid a fragmented
   usage of ESP.  This document describes the the minimal properties and
   ESP implementration needs to meet.

Migault & Guggemos      Expires December 23, 2018               [Page 2]
Internet-Draft                 Minimal ESP                     June 2018

   For each field of the ESP packet represented in Figure 1 this
   document provides recommendations and guidance for minimal
   implementations.  The primary purpose of Minimal ESP is to remain
   interoperable with other nodes implementing RFC 4303 ESP, 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   (variable)                |
~                                                               ~
|                                                               |

                     Figure 1: ESP Packet Description

3.  Security Parameter Index (SPI) (32 bit)

   According to the [RFC4303], the SPI is a mandatory 32 bits field and
   is not allowed to be removed.

   The SPI has a local significance to index the Security Association
   (SA).  From [RFC4301] section 4.1, nodes supporting only unicast
   communications can index their SA only using the SPI.  On the other
   hand, nodes supporting multicast communications must also use the IP
   addresses and thus SA lookup needs to be performed using the longest

   For nodes supporting only unicast communications, it is RECOMMENDED
   to index SA with the SPI only.  Some other local constraints on the
   node may require a combination of the SPI as well as other parameters
   to index the SA.

   It is RECOMMENDED to randomly generate the SPI indexing each inbound
   session.  A random generation provides a stateless way to generate
   the SPIs, while keeping the probability of collision between SPIs

Migault & Guggemos      Expires December 23, 2018               [Page 3]
Internet-Draft                 Minimal ESP                     June 2018

   relatively low.  In case of collision, the SPI is simply re-

   However, for some constrained nodes, generating a random SPI may
   consume to much resource, in which case SPI can be generated using
   predictable functions or even a fix value.  In fact, the SPI does not
   need to the SPI does not need to be random.

   When a constrained node uses fix value for SPIs, it imposes some
   limitations on the number of inbound SA.  This limitation can be
   alleviate by how the SA look up is performed.  When fix SPI are used,
   it is RECOMMENDED that the constrained node has as many SPI values as
   ESP session per host IP address, and that SA lookup includes the IP

   Note that SPI value is used only for inbound traffic, as such the SPI
   negotiated with IKEv2 [RFC7296] or [RFC7815] by a peer, is the value
   used by the remote peer when its sends traffic.  As SPI are only used
   for inbound traffic by the peer, this allows each peer to manage the
   set of SPIs used for its inbound traffic.

   The use of fix SPI should not be considered as a way to avoid strong
   random generators.  Such generator will be required in order to
   provide strong cryptographic protection and follow the randomness
   requirements for security discribed in [RFC4086].  Instead, the use
   of a fix SPI should only considered as a way to overcome the resource
   limitations of the node, when this is feasible.

   The use of a limited number of fix SPI also come with security or
   privacy drawbacks.  Typically, a passive attacker may derive
   information such as the number of constrained devices connecting the
   remote peer, and in conjunction with data rate, the attacker may
   eventually determine the application the constrained device is
   associated to.  In addition, if the fix value SPI is fixed by a
   manufacturer or by some software application, the SPI may leak in an
   obvious way the type of sensor, the application involved or the model
   of the constrained device.  As a result, the use of a unpredictable
   SPI is preferred to provide better privacy.

   As far as security is concerned, revealing the type of application or
   model of the constrained device could be used to identify the
   vulnerabilities the constrained device is subject to.  This is
   especially sensitive for constrained device where patches or software
   updates will be challenging to operate.  As a result, these devices
   may remain vulnerable for relatively long period.  In addition,
   predictable SPI enable an attacker to forge packets with a valid SPI.
   Such packet will not be rejected due to an SPI mismatch, but instead

Migault & Guggemos      Expires December 23, 2018               [Page 4]
Internet-Draft                 Minimal ESP                     June 2018

   after the signature check which requires more resource and thus make
   DoS more efficient, especially for devices powered by batteries.

   Values 0-255 SHOULD NOT be used.  Values 1-255 are reserved and 0 is
   only allowed to be used internal and it MUST NOT be send on the wire.

   [RFC4303] mentions :

      "The SPI is an arbitrary 32-bit value that is used by a receiver
      to identify the SA to which an incoming packet is bound.  The SPI
      field is mandatory. [...]"

      "For a unicast SA, the SPI can be used by itself to specify an SA,
      or it may be used in conjunction with the IPsec protocol type (in
      this case ESP).  Because the SPI value is generated by the
      receiver for a unicast SA, whether the value is sufficient to
      identify an SA by itself or whether it must be used in conjunction
      with the IPsec protocol value is a local matter.  This mechanism
      for mapping inbound traffic to unicast SAs MUST be supported by
      all ESP implementations."

4.  Sequence Number(SN) (32 bit)

   According to [RFC4303], the sequence number is a mandatory 32 bits
   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: if packet B is sent after packet A, then SN of
   packet B is strictly greater then the SN of packet A.

   Some constrained devices may establish communication with specific
   devices, like a specific gateway, or nodes similar to them.  As a
   result, the sender may know whereas the receiver implements anti-
   replay protection or not.  Even though the sender may know the
   receiver does not implement anti replay protection, the sender MUST
   implement a always increasing function to generate the SN.

   Usually, SN is generated by incrementing a counter for each packet
   sent.  A constrained device may avoid maintaining this context.  If
   the device has a clock, it may use the time indicated by the clock
   has a SN.  This guarantees a strictly increasing function, and avoid
   storing any additional values or context related to the SN.  When the
   use of a clock is considered, one should take care that packets
   associated to a given SA are not sent with the same time value.

   [RFC4303] mentions :

Migault & Guggemos      Expires December 23, 2018               [Page 5]
Internet-Draft                 Minimal ESP                     June 2018

      "This unsigned 32-bit field contains a counter value that
      increases by one for each packet sent, i.e., a per-SA packet
      sequence number.  For a unicast SA or a single-sender multicast
      SA, the sender MUST increment this field for every transmitted
      packet.  Sharing an SA among multiple senders is permitted, though
      generally not recommended. [...] The field is mandatory and MUST
      always be present even if the receiver does not elect to enable
      the anti-replay service for a specific SA."

5.  Padding

   The purpose of padding is to respect the 32 bit alignment of ESP.
   ESP MUST have at least one padding byte Pad Length that indicates the
   padding length.  ESP padding bytes are generated by a 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
   device may not proceed to such checks, however, in order to
   interoperate with existing ESP implementations, it MUST build the
   padding bytes as recommended by ESP.

   In some situation the padding bytes may take a fix value.  This would
   typically be the case when the Data Payload is of fix size.

   [RFC4303] mentions :

      "If Padding bytes are needed but the encryption algorithm does not
      specify the padding contents, then the following default
      processing MUST be used.  The Padding bytes are initialized with a
      series of (unsigned, 1-byte) integer values.  The first padding
      byte appended to the plaintext is numbered 1, with subsequent
      padding bytes making up a monotonically increasing sequence: 1, 2,
      3, .... When this padding scheme is employed, the receiver SHOULD
      inspect the Padding field.  (This scheme was selected because of
      its relative simplicity, ease of implementation in hardware, and
      because it offers limited protection against certain forms of "cut
      and paste" attacks in the absence of other integrity measures, if
      the receiver checks the padding values upon decryption.)"

   ESP [RFC4303] also provides Traffic Flow Confidentiality (TFC) as a
   way to perform padding to hide traffic characteristics, which differs
   from respecting a 32 bit alignment.  TFC is not mandatory and MUST be
   negotiated with the SA management protocol.  As a result, TFC is not
   expected to be supported by a minimal ESP implementation.  On the
   other hand, disabling TFC should be carefully measured and understood
   as it exposes the node to traffic shaping.  This could expose the
   application as well as the devices used to a passive monitoring

Migault & Guggemos      Expires December 23, 2018               [Page 6]
Internet-Draft                 Minimal ESP                     June 2018

   attacker.  Such information could be used by the attacker in case a
   vulnerability is disclosed on the specific device.  In addition, some
   application use - such as health applications - may also reveal
   important privacy oriented informations.

   Some constrained nodes that have limited battery life time may also
   prefer avoiding sending extra padding bytes.  However the same nodes
   may also be very specific to an application and device.  As a result,
   they are also likely to be the main target for traffic shaping.  In
   most cases, the payload carried by these nodes is quite small, and
   the standard padding mechanism may also be used as an alternative to
   TFC, with a sufficient trade off between the require energy to send
   additional payload and the exposure to traffic shaping attacks.

6.  Next Header (8 bit)

   According to [RFC4303], the Next Header is a mandatory 8 bits field
   in the packet.  Next header is intended to specify the data contained
   in the payload as well as dummy packet.  In addition, the Next Header
   may also carry an indication on how to process the packet

   The ability to generate and receive dummy packet is required by
   [RFC4303].  For interoperability, it is RECOMMENDED a minimal ESP
   implementation discards dummy packets.  Note that such recommendation
   only applies for nodes receiving packets, and that nodes designed to
   only send data may not implement this capability.

   As the generation of dummy packets is subject to local management and
   based on a per-SA basis, a minimal ESP implementation may not
   generate such dummy packet.  More especially, in constrained
   environments sending dummy packets may have too much impact on the
   device life time, and so may be avoided.  On the other hand,
   constrained nodes may be dedicated to specific applications, in which
   case, traffic pattern may expose the application or the type of node.
   For these nodes, not sending dummy packet may have some privacy
   implication that needs to be measured.

   In some cases, devices are dedicated to a single application or a
   single transport protocol, in which case, the Next Header has a fix

   Specific processing indications have not been standardized yet
   [I-D.nikander-esp-beet-mode] and is expected to result from an
   agreement between the peers.  As a result, it is not expected to be
   part of a minimal implementation of ESP.

   [RFC4303] mentions :

Migault & Guggemos      Expires December 23, 2018               [Page 7]
Internet-Draft                 Minimal ESP                     June 2018

      "The Next Header is a mandatory, 8-bit field that identifies the
      type of data contained in the Payload Data field, e.g., an IPv4 or
      IPv6 packet, or a next layer header and data.  [...] the protocol
      value 59 (which means "no next header") MUST be used to designate
      a "dummy" packet.  A transmitter MUST be capable of generating
      dummy packets marked with this value in the next protocol field,
      and a receiver MUST be prepared to discard such packets, without
      indicating an error."

7.  ICV

   The ICV depends on the crypto-suite used.  Currently recommended
   [RFC8221] only recommend crypto-suites with an ICV which makes the
   ICV a mandatory field.

   As detailed in Section 8 we recommend to use authentication, the ICV
   field is expected to be present that is to say with a size different
   from zero.  This makes it a mandatory field which size is defined by
   the security recommendations only.

   [RFC4303] mentions :

      "The Integrity Check Value is a variable-length field computed
      over the ESP header, Payload, and ESP trailer fields.  Implicit
      ESP trailer fields (integrity padding and high-order ESN bits, if
      applicable) are included in the ICV computation.  The ICV field is
      optional.  It is present only if the integrity service is selected
      and is provided by either a separate integrity algorithm or a
      combined mode algorithm that uses an ICV.  The length of the field
      is specified by the integrity algorithm selected and associated
      with the SA.  The integrity algorithm specification MUST specify
      the length of the ICV and the comparison rules and processing
      steps for validation."

8.  Cryptographic Suites

   The cryptographic suites implemented are an important component of
   ESP.  The recommended suites to use are expect to evolve over time
   and implementer SHOULD follow the recommendations provided by
   [RFC8221] and updates.  Recommendations are provided for standard
   nodes as well as constrained nodes.

   This section lists some of the criteria that may be considered.  The
   list is not expected to be exhaustive and may also evolve overtime.
   As a result, the list is provided as indicative:

   1.  Security: Security is the criteria that should be considered
       first for the selection of cipher suites.  The security of cipher

Migault & Guggemos      Expires December 23, 2018               [Page 8]
Internet-Draft                 Minimal ESP                     June 2018

       suites is expected to evolve over time, and it is of primary
       importance to follow up-to-date security guidances and
       recommendations.  The chosen cipher suites MUST NOT be known
       vulnerable or weak (see [RFC8221] for outdated ciphers).  ESP can
       be used to authenticate only or to encrypt the communication.  In
       the later case, authenticated encryption must always be
       considered [RFC8221].

   2.  Interoperability: Interoperability considers the cipher suites
       shared with the other nodes.  Note that it is not because a
       cipher suite is widely deployed that is secured.  As a result,
       security SHOULD NOT be weaken for interoperability.  [RFC8221]
       and successors consider the life cycle of cipher suites
       sufficiently long to provide interoperability. constrained
       devices may have limited interoperability requirements which
       makes possible to reduces the number of cipher suites to

   3.  Power Consumption and Cipher Suite Complexity: Complexity of the
       cipher suite or the energy associated to it are especially
       considered when devices have limited resources or are using some
       batteries, in which case the battery determines the life of the
       device.  The choice of a cryptographic function may consider re-
       using specific libraries or to take advantage of hardware
       acceleration provided by the device.  For example if the device
       benefits from AES hardware modules and uses 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 mode may be preferred.

   4.  Power Consumption and Bandwidth Consumption: Similarly to the
       cipher suite complexity, reducing the payload sent, may
       significantly reduce the energy consumption of the device.  As a
       result, cipher suites with low overhead may be considered.  To
       reduce the overall payload size one may for example:

       1.  Use of counter-based ciphers without fixed block length (e.g.
           AES-CTR, or ChaCha20-Poly1305).

       2.  Use of ciphers with capability of using implicit IVs

       3.  Use of ciphers recommended for IoT [RFC8221].

       4.  Avoid Padding by sending payload data which are aligned to
           the cipher block length - 2 for the ESP trailer.

Migault & Guggemos      Expires December 23, 2018               [Page 9]
Internet-Draft                 Minimal ESP                     June 2018

9.  IANA Considerations

   There are no IANA consideration for this document.

10.  Security Considerations

   Security considerations are those of [RFC4303].  In addition, this
   document provided security recommendations an guidances over the
   implementation choices for each fields.

11.  Acknowledgment

   The authors would like to thank Daniel Palomares, Scott Fluhrer, Tero
   Kivinen, Valery Smyslov, Yoav Nir, Michael Richardson for their
   valuable comments.

12.  References

12.1.  Normative References

              Migault, D., Guggemos, T., and Y. Nir, "Implicit IV for
              Counter-based Ciphers in Encapsulating Security Payload
              (ESP)", draft-ietf-ipsecme-implicit-iv-04 (work in
              progress), May 2018.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,

   [RFC4086]  Eastlake 3rd, D., Schiller, J., and S. Crocker,
              "Randomness Requirements for Security", BCP 106, RFC 4086,
              DOI 10.17487/RFC4086, June 2005,

   [RFC4301]  Kent, S. and K. Seo, "Security Architecture for the
              Internet Protocol", RFC 4301, DOI 10.17487/RFC4301,
              December 2005, <>.

   [RFC4303]  Kent, S., "IP Encapsulating Security Payload (ESP)",
              RFC 4303, DOI 10.17487/RFC4303, December 2005,

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

Migault & Guggemos      Expires December 23, 2018              [Page 10]
Internet-Draft                 Minimal ESP                     June 2018

   [RFC7815]  Kivinen, T., "Minimal Internet Key Exchange Version 2
              (IKEv2) Initiator Implementation", RFC 7815,
              DOI 10.17487/RFC7815, March 2016,

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <>.

   [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,

12.2.  Informative References

              Migault, D., Guggemos, T., Bormann, C., and D. Schinazi,
              "ESP Header Compression and Diet-ESP", draft-mglt-ipsecme-
              diet-esp-06 (work in progress), May 2018.

              Migault, D. and T. Guggemos, "Internet Key Exchange
              version 2 (IKEv2) extension for the ESP Header Compression
              (EHC) Strategy", draft-mglt-ipsecme-ikev2-diet-esp-
              extension-00 (work in progress), October 2017.

              Nikander, P. and J. Melen, "A Bound End-to-End Tunnel
              (BEET) mode for ESP", draft-nikander-esp-beet-mode-09
              (work in progress), August 2008.

Appendix A.  Document Change Log

   [RFC Editor: This section is to be removed before publication]

   -00: First version published.

   -01: Clarified description

   -02: Clarified description

Migault & Guggemos      Expires December 23, 2018              [Page 11]
Internet-Draft                 Minimal ESP                     June 2018

Authors' Addresses

   Daniel Migault
   8400 boulevard Decarie
   Montreal, QC H4P 2N2


   Tobias Guggemos
   LMU Munich
   Oettingenstr. 67
   80538 Munich, Bavaria


Migault & Guggemos      Expires December 23, 2018              [Page 12]