Light-Weight Implementation Guidance (lwig)              D. Migault, Ed.
Internet-Draft                                                  Ericsson
Intended status: Informational                               T. Guggemos
Expires: September 22, 2016                                   LMU Munich
                                                            D. Palomares
                                                                  Orange
                                                          March 21, 2016


                              Minimal ESP
                   draft-mglt-lwig-minimal-esp-02.txt

Abstract

   This document describes a minimal version of the IP Encapsulation
   Security Payload (ESP) described in RFC 4303 which is part of the
   IPsec suite.

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

   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 http://datatracker.ietf.org/drafts/current/.

   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 September 22, 2016.








Migault, et al.        Expires September 22, 2016               [Page 1]

Internet-Draft                 Minimal ESP                    March 2016


Copyright Notice

   Copyright (c) 2016 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
   (http://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 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.

Table of Contents

   1.  Requirements notation . . . . . . . . . . . . . . . . . . . .   2
   2.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   3.  Security Parameter Index (SPI) (32 bit) . . . . . . . . . . .   3
   4.  Sequence Number(SN) (32 bit)  . . . . . . . . . . . . . . . .   4
   5.  Padding . . . . . . . . . . . . . . . . . . . . . . . . . . .   5
   6.  Next Header (8 bit) . . . . . . . . . . . . . . . . . . . . .   5
   7.  ICV . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   6
   8.  Cryptographic Suites  . . . . . . . . . . . . . . . . . . . .   6
   9.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   7
   10. Security Considerations . . . . . . . . . . . . . . . . . . .   8
   11. Acknowledgment  . . . . . . . . . . . . . . . . . . . . . . .   8
   12. References  . . . . . . . . . . . . . . . . . . . . . . . . .   8
     12.1.  Normative References . . . . . . . . . . . . . . . . . .   8
     12.2.  Informative References . . . . . . . . . . . . . . . . .   8
   Appendix A.  Document Change Log  . . . . . . . . . . . . . . . .   9
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   9

1.  Requirements notation

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

2.  Introduction

   ESP [RFC4303]  is part of the IPsec suite protocol [RFC4301] .  It 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.





Migault, et al.        Expires September 22, 2016               [Page 2]

Internet-Draft                 Minimal ESP                    March 2016


   Figure 1 describes an ESP Packet.  Currently ESP is implemented in
   the kernel of IPsec aware devices.  This document provides a minimal
   ESP implementation guideline so that smaller devices like sensors
   without kernel and with hardware restrictions can implement ESP and
   benefit from IPsec.

   For each field of the ESP packet represented in Figure 1 this
   document provides recommendations and guidance for minimal
   implementations.

 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 is used to index the Security Association.  The SPI MUST be
   unique so that any incoming ESP packet can appropriately be bound to
   its association.  Uniqueness of the SPI may be provided by random
   functions.  However, the SPI does not need to be unpredictable.  As a
   result, if random functions are too costly for some constraint
   devices, the SPI can be generated using predictable functions or even
   fixed values.

   If a constraint device is designed to set a single ESP connection
   with a single remote device, it can use a fix value for the SPI.
   Since the constraint device uses a single connection, there is no



Migault, et al.        Expires September 22, 2016               [Page 3]

Internet-Draft                 Minimal ESP                    March 2016


   risk of SPI collision by using a fix value.  More specifically, the
   collision does not affect the remote device.  In fact, when the SPI
   is proposed, it is used by the proposing entity to index inbound
   traffic.  In the case two different constraint devices are using the
   same SPI, the remote device ends up with two outbound traffic
   identified by the same SPI.  Should SPI collision for outbound
   traffic does not affect the remote device as the SPI will not be used
   by this device to index the traffic.

   Similarly, if a constraint device establishes a single ESP connection
   with multiple remote devices, it may use the IPv4 or the interface ID
   of IPv6 addresses for example.

   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.

   In IoT, constraint devices are expected to 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.



Migault, et al.        Expires September 22, 2016               [Page 4]

Internet-Draft                 Minimal ESP                    March 2016


   Usually, SN is generated by incrementing a counter for each packet
   sent.  A constraint 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.

   [RFC4303] mentions :

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

   [RFC4303] does not specify any way on how Padding bytes should be
   generated.  These bytes may for example, be generated randomly or
   each byte may be numbered from \x01 to \xpad-length.  A simplified
   implementation may consider a fix value, and consider all Padding
   bytes set to zero.

   Note that Padding can also be defined by the encryption algorithm
   like AES in CBC mode [RFC3602].  In that case, Padding MUST be
   performed as described in [RFC3602].  However, [RFC3602] does not
   specify how Padding bytes are generated, and AES in CTR [RFC3686] or
   GCM[RFC4106] or CCM [RFC4309] mode do not consider Padding.

6.  Next Header (8 bit)

   According to [RFC4303], the Next Header is a mandatory 8 bits field
   in the packet.  In some cases, devices are dedicated to a single
   application or a single transport protocol, in which case, the Next
   Header has a fix value.

   [RFC4303] mentions :

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



Migault, et al.        Expires September 22, 2016               [Page 5]

Internet-Draft                 Minimal ESP                    March 2016


7.  ICV

   The ICV is an optional value with variable length.  Unless the
   crypto-suite provides authentication without the use of the ICV
   field, the ICV field is often use to host the authentication part of
   the packet.

   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

   Light implementations of ESP will probably implement a reduce number
   of cipher suites.  When choosing the cipher suites it is recommended
   to balance the number of cipher suites as well as the cipher itself
   with other criteria.  This section attempts to provide some generic
   guidances for choosing the appropriated cipher suites.

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

   - Security :   Security is the criteria that should be considered
         first when a selection of cipher suites is performed.  The
         security of cipher 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.  ESP can be used to
         authenticate only a communication or the encrypt the
         communication.  In the later case, encryption should be always
         considered in conjunction with authentication.  [RFC4303]
         allows combined encryption and authentication ciphers, which



Migault, et al.        Expires September 22, 2016               [Page 6]

Internet-Draft                 Minimal ESP                    March 2016


         enables the use of modes like GCM [RFC4106]  or CCM.  Note that
         the use of AES-CTR for encryption requires the authentication
         with a non zero length ICV.

   - Interoperability :   Interoperability considers the cipher suites
         shared by the greatest number of 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.
         Life cycle of cipher suites is expected to be long enough so
         interoperability can still be provided with secure cipher
         suites.

   - 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 main determine 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 over a SHA2 based function 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.

   - 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,
         consider the length of the ICV associated to the cipher suite,
         the use of implicit IV [I-D.mglt-6lo-aes-implicit-iv], the
         block size used by the cipher suite.  Note that the size of the
         payload must not be performed at the expense of acceptable
         security.  As a result, reducing the size of the ICV MUST
         follow the security recommendations.  Regarding the block size,
         AES-CBC consumes a lot of bandwidth compared to other proposed
         modes.  AES in CBC mode has a 128 bit alignment which for small
         packets of a few bytes length generates a large overhead in
         term of extra padding bytes.

9.  IANA Considerations

   There are no IANA consideration for this document.







Migault, et al.        Expires September 22, 2016               [Page 7]

Internet-Draft                 Minimal ESP                    March 2016


10.  Security Considerations

   Security considerations are those of [RFC4303].

11.  Acknowledgment

12.  References

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,
              <http://www.rfc-editor.org/info/rfc2119>.

   [RFC3602]  Frankel, S., Glenn, R., and S. Kelly, "The AES-CBC Cipher
              Algorithm and Its Use with IPsec", RFC 3602,
              DOI 10.17487/RFC3602, September 2003,
              <http://www.rfc-editor.org/info/rfc3602>.

   [RFC3686]  Housley, R., "Using Advanced Encryption Standard (AES)
              Counter Mode With IPsec Encapsulating Security Payload
              (ESP)", RFC 3686, DOI 10.17487/RFC3686, January 2004,
              <http://www.rfc-editor.org/info/rfc3686>.

   [RFC4106]  Viega, J. and D. McGrew, "The Use of Galois/Counter Mode
              (GCM) in IPsec Encapsulating Security Payload (ESP)",
              RFC 4106, DOI 10.17487/RFC4106, June 2005,
              <http://www.rfc-editor.org/info/rfc4106>.

   [RFC4301]  Kent, S. and K. Seo, "Security Architecture for the
              Internet Protocol", RFC 4301, DOI 10.17487/RFC4301,
              December 2005, <http://www.rfc-editor.org/info/rfc4301>.

   [RFC4303]  Kent, S., "IP Encapsulating Security Payload (ESP)",
              RFC 4303, DOI 10.17487/RFC4303, December 2005,
              <http://www.rfc-editor.org/info/rfc4303>.

   [RFC4309]  Housley, R., "Using Advanced Encryption Standard (AES) CCM
              Mode with IPsec Encapsulating Security Payload (ESP)",
              RFC 4309, DOI 10.17487/RFC4309, December 2005,
              <http://www.rfc-editor.org/info/rfc4309>.

12.2.  Informative References







Migault, et al.        Expires September 22, 2016               [Page 8]

Internet-Draft                 Minimal ESP                    March 2016


   [I-D.mglt-6lo-aes-implicit-iv]
              Migault, D. and T. Guggemos, "Implicit IV for AES-CBC,
              AES-CTR, AES-CCM and AES-GCM", draft-mglt-6lo-aes-
              implicit-iv-01 (work in progress), February 2015.

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

Authors' Addresses

   Daniel Migault (editor)
   Ericsson
   8400 boulevard Decarie
   Montreal, QC H4P 2N2
   Canada

   Email: daniel.migault@ericsson.com


   Tobias Guggemos
   LMU Munich
   MNM-Team
   Oettingenstr. 67
   80538 Munich, Bavaria
   Germany

   Email: guggemos@mnm-team.org


   Daniel Palomares
   Orange
   6 place d'Alleray
   75015 Paris
   France

   Email: daniel.palomares@orange.com








Migault, et al.        Expires September 22, 2016               [Page 9]