Network                                                       P. Wouters
Internet-Draft                                                   Red Hat
Updates: 7296 (if approved)                                    S. Prasad
Intended status: Standards Track                               S. Prasad
Expires: September 11, 2019          Technical University of Munich
                                                          March 10,
Expires: January 9, 2020                                    July 8, 2019

            Labeled IPsec Traffic Selector support for IKEv2
                  draft-ietf-ipsecme-labeled-ipsec-00
                  draft-ietf-ipsecme-labeled-ipsec-01

Abstract

   This document defines two a new Traffic Selector (TS) Types Type for Internet
   Key Exchange version 2 to add support for negotiating Mandatory
   Access Control (MAC) security labels, labels as a traffic selector of the
   Security Policy Database (SPD).  Security Labels for IPsec are also
   known as "Labeled IPsec".  The
   two new TS Types are TS_IPV4_ADDR_RANGE_SECLABEL and
   TS_IPV6_ADDR_RANGE_SECLABEL, type is TS_SECLABEL, which are identical to their non-
   seclabel namesakes except for the addition
   consists of a variable length opaque field specifying the security
   label.  These new Traffic
   Selector Types facilitate negotiating security labels as an
   additional selector of the Security Policy Database to further
   restrict the type of traffic allowed to be send and received over  This document updates the
   IPsec SA. IKEv2 TS negotiation specified in
   RFC 7296 Section 2.9.

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 11, 2019. January 9, 2020.

Copyright Notice

   Copyright (c) 2019 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.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Requirements Language . . . . . . . . . . . . . . . . . .   3
   2.
     1.2.  Traffic Selector negotiation clarification  . . . . . . . . . . . . .   3
   2.  TS_SECLABEL Traffic Selector Type . . . . . . . . . . . . . .   3
   3.  SECLABEL Traffic Selector
     2.1.  TS_SECLABEL payload format  . . . . . . . . . . . . . . .   4
     2.2.  TS_SECLABEL properties  . . .   3
   4. . . . . . . . . . . . . . .   4
   3.  Traffic Selector matching negotiation  . . . . . . . . . . . . . . . .   5
     3.1.  Example TS negotiation  . . . . . . . . . . . . . . . . .   5
   5.
     3.2.  Considerations for using multiple TS_TYPEs in a TS  . . .   6
   4.  Security Considerations . . . . . . . . . . . . . . . . . . .   6
   6.   7
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   6
   7.   7
   6.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .   6
   8.   7
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   6
     8.1.   7
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .   6
     8.2.   7
     7.2.  Informative References  . . . . . . . . . . . . . . . . .   7
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   7   8

1.  Introduction

   In computer security, Mandatory Access Control usually refers to
   systems in which all subjects and objects are assigned a security
   label.  A security label is comprised of a set of security
   attributes.  The security labels along with a system authorization
   policy determine access.  Rules within the system authorization
   policy determine whether the access will be granted based on the
   security attributes of the subject and object.

   Traditionally, security labels used by Multilevel Systems (MLS) are
   comprised of a sensitivity level (or classification) field and a
   compartment (or category) field, as defined in [FIPS188] and
   [RFC5570].  As MAC systems evolved, other MAC models gained in
   popularity.  For example, SELinux, a Flux Advanced Security Kernel
   (FLASK) implementation, has security labels represented as colon-
   separated ASCII strings composed of values for identity, role, and
   type.  The security labels are often referred to as security
   contexts.

   Traffic Selector (TS) payloads specify the selection criteria for
   packets that will be forwarded over the newly set up IPsec SA as
   enforced by the Security Policy Database (SPD, see [RFC4301]).  This
   document updates the Traffic Selector negotiation specified in
   Section 2.9 of [RFC7296].

   This document specifies two a new Traffic Selector Types Type TS_SECLABEL for
   IKEv2 that can be used to negotiate security labels as additional
   selectors for the Security Policy Database (SPD) to further restrict
   the type of traffic allowed to be send sent and received over the IPsec
   SA.

   Traffic Selector (TS) payloads allow endpoints to communicate some of
   the information from their SPD

1.1.  Requirements Language

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to their peers.  These must be
   communicated to IKE from the SPD.  TS payloads specify the selection
   criteria for packets that will be forwarded over the newly set up SA.
   Section 2.9 interpreted as described in the Internet Key Exchange protocol version 2 [RFC7296]
   illustrates the BCP
   14 [RFC2119] [RFC8174] when, and only when, they appear in all
   captials, as shown here.

1.2.  Traffic Selector clarification

   The negotiation procedure.

   Two TS payloads appear in each of the messages Traffic Selectors is specified in the exchange that
   creates a Child SA pair.  Each Section 2.9 of
   [RFC7296] where it defines two TS payload contains one or more
   Traffic Selectors.  Currently, each Types (TS_IPV4_ADDR_RANGE and
   TS_IPV6_ADDR_RANGE).  The Traffic Selector consists of an
   address range (IPv4 or IPv6), a port range, and an IP protocol ID.
   However, a security context or a label payload format is missing.  Therefore this
   document extends the section 2.9
   specified in Section 3.13 of [RFC7296].  However, the Internet Key Exchange
   protocol version 2 [RFC7296] to add support for a new traffic
   selector type which would be term Traffic
   Selector is used to negotiate denote the security label or
   context.

   Negotiating traffic selector payloads and verifying
   individual traffic selectors of that payload.  Sometimes the security exact
   meaning can only be learned from context or label in the new TS
   types will act as an additional criteria that has to match along with if the previously mentioned Traffic Selectors.

1.1.  Requirements Language

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" item is written in this
   document are to be interpreted
   plural ("Traffic Selectors" or "TSs").  This section clarifies these
   terms as described in RFC 2119 [RFC2119].

2. follows:

   A Traffic Selector negotiation

   The negotiation of Traffic Selectors (no acronym) is specified in Section 2.9 one selector for traffic of
   [RFC7296].  The initiating IKE peer sends a
   specific Traffic Selector payload
   for the initiator side (TSi) and Type (TS_TYPE).  For example a Traffic
   Selector payload of TS_TYPE TS_IPV4_ADDR_RANGE for UDP traffic in the
   responder side (TSr).  The TSi and TSr payloads contain IP
   network 198.51.100.0/24 covering all ports, is denoted as (17, 0,
   198.51.100.0-198.51.100.255)

   A Traffic Selector payload (TS) is a list set of one or more Traffic
   Selectors (TS).  The responder picks one TS from of the
   TSi list and same or different TS_TYPEs, but MUST include at
   least one TS from the TSr list and returns these in their own
   TSi/TSr payloads to the initiator in the IKE response as confirmation TS_TYPE of the chosen traffic selectors.  [RFC7296] defines two TS Types, TS_IPV4_ADDR_RANGE and or TS_IPV6_ADDR_RANGE.  These TS payloads contain  For
   example, the TS Type, IP protocol ID, above Traffic Selector Length, Start and End Port and
   Start and End Address.

3.  SECLABEL by itself in a TS payload is
   denotated as TS((17, 0, 198.51.100.0-198.51.100.255))

2.  TS_SECLABEL Traffic Selector Type

   This document defines two a new TS Types, TS_IPV4_ADDR_RANGE_SECLABEL
   and TS_IPV6_ADDR_RANGE_SECLABEL.  In addition to the above mentioned
   selectors, it Type, TS_SECLABEL that contains a
   single new opaque Security Label selector. Label.

2.1.  TS_SECLABEL payload format

                           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
      +---------------+---------------+-------------------------------+
      |   TS Type     |IP Protocol ID*|     |    Reserved   |       Selector Length         |
      +---------------+---------------+-------------------------------+
      |           Start Port*         |           End Port*           |
      +-------------------------------+-------------------------------+
      |                                                               |
      ~                         Starting Address*                     ~
      |                                                               |
      +---------------------------------------------------------------+
      |                                                               |
      ~                         Ending Address*                       ~
      |                                                               |
      +---------------------------------------------------------------+
      |                                                               |
      ~                         Security Label*                       ~
      |                                                               |
      +---------------------------------------------------------------+

                 Figure 1: Labeled IPsec Traffic Selector

   *Note: All fields other than TS Type and Selector Length depend on
   the TS Type.  The fields shown are is for TS Types [TBD] and [TBD], Type TS_SECLABEL, the
   two values
   selector this document defines.

   o  TS Type (one octet) - Specifies the type of Traffic Selector.

   o  IP protocol ID (1 octet) - Value specifying an associated IP
      protocol ID (such as UDP, TCP, and ICMP).  A value of zero means
      that the protocol ID is not relevant Set to this Traffic Selector --
      the SA can carry all protocols. [TBD] for TS_SECLABEL,

   o  Selector Length (2 octets, unsigned integer) - Specifies the
      length of this Traffic Selector substructure including the header.

   o  Start Port (2 octets, unsigned integer)  Security Label - Value specifying the
      smallest port number allowed by this An opaque byte stream of at least one octet.

2.2.  TS_SECLABEL properties

   The TS_SECLABEL Traffic Selector.  For
      protocols for which port is undefined (including protocol 0), Selector Type does not support narrowing or
      if all ports are allowed, this field
   wildcards.  It MUST be zero.  ICMP and
      ICMPv6 Type and Code values, as well as Mobile IP version 6
      (MIPv6) mobility header (MH) Type values, are represented in this
      field used as specified in Section 4.4.1.1 of [RFC4301].  ICMP Type and
      Code values an exact match value.

   The Security Label contents are treated as a single 16-bit integer port number,
      with Type in opague to the most significant eight bits and Code in IKE implementation.
   That is, the least
      significant eight bits.  MIPv6 MH Type values are treated IKE implementation might not have any knowledge of the
   meaning of this selector, other than as a
      single 16-bit integer port number, with Type in the most
      significant eight bits type and the least significant eight bits set opaque value to
   pass to
      zero.

   o  End Port (2 octets, unsigned integer) - Value specifying the
      largest port number allowed by this Traffic Selector.  For
      protocols for which port is undefined (including protocol 0), or
      if all ports are allowed, this field SPD.

   A zero length Security Label MUST NOT be 65535.  ICMP and
      ICMPv6 Type and Code values, as well used.  If a received TS
   payload contains a TS_TYPE of TS_SECLABEL with a zero length Security
   Label, that specific Traffic Selector MUST be ignored.  If no other
   Traffic Selector of TS_TYPE TS_SECLABEL can be selected, a
   TS_UNACCEPTABLE Error Notify message MUST be returned.  A zero length
   Security Label MUST NOT be interpreted as MIPv6 MH Type values, a wildcard security label.

   If multiple Security Labels are
      represented in this field as specified allowed for a given IP protocol,
   start and end address/port match, multiple TS_SECLABEL can be
   included in Section 4.4.1.1 a TS payload.

   If the Security Label traffic selector is optional from a
   configuration point of
      [RFC4301].  ICMP Type view, the initiator will have to choose which
   TS payload to attempt first.  If it includes the Security Label and Code values are treated as
   receives a single
      16-bit integer port number, TS_UNAVAILABLE, it can attempt a new Child SA negotiation
   without that Security Label .

   A responder that selected a TS with Type in TS_SECLABEL MUST use the most significant
      eight bits and Code in Security
   Label for all selector operations on the least significant eight bits.  MIPv6 MH
      Type values are treated as resulting IPsec SA.  It MUST
   NOT select a single 16-bit integer port number, TS_set with Type in a TS_SECLABEL without using the most significant eight bits and specified
   Security Label, even if it deems the least
      significant eight bits set to zero.

   o  Starting Address - The smallest address included in this Traffic
      Selector (length determined by TS Type).

   o  Ending Address - The largest address included in this Security Label optional, as the
   initiator TS_set with TS_SECLABEL means the initiator mandates using
   that Security Label.

3.  Traffic Selector (length determined by negotiation

   This document updates the [RFC7296] specification as follows:

   Each TS Type).

   o  Security Label - An opaque byte stream of payload (TSi and TSr) MUST contain at least one octet.

4.  Traffic Selector matching

   Matching TS_TYPE of the IP protocol, start and end address, and start and end
   port is performed the same way
   TS_IPV4_ADDR_RANGE or TS_IPV6_ADDR_RANGE.

   Each TS payload (TSi or TSr) MAY contain one or more other TS_TYPEs,
   such as for TS_SECLABEL.

   A responder MUST create its TS response by selecting one of each
   TS_TYPE present in the offered TS by the initiator.  If it cannot
   select one of each TS_TYPE, it MUST return a TS_UNAVAILABLE Error
   Notify payload.

   If a specific TS_TYPE (other than TS_IPV4_ADDR_RANGE and or
   TS_IPV6_ADDR_RANGE which are mandatory) is deemed optional, the
   initiator SHOULD first try to negotiate the Child SA with the TS types.  Additionally,
   payload including the Security Label is
   compared for an exact match as well.  Label matching optional TS_TYPE.  Upon receiving
   TS_UNAVAILABLE, it SHOULD attempt a new Child SA negotiation using
   the same TS but without the optional TS_TYPE.

   Some TS_TYPE's support narrowing, where the responder is done by
   comparing allowed to
   select a subset of the opaque bytestream. original TS.  Narrowing MUST NOT result in an
   empty selector for that TS_TYPE.

3.1.  Example TS negotiation

   An initiator could send:

         TSi = ((17,0,192.0.2.0-192.0.2.255),
                (0,0,198.51.0-198.51.255),
                TS_SECLABEL1, TS_SECLABEL2)

         TSr = ((17,0,203.0.113.0-203.0.113.255),
                (0,0,203.0.113.0-203.0.113.255),
                TS_SECLABEL1, TS_SECLABEL2)

                  Figure 2: initiator TS payloads example

   The Security Label responder could answer with the following example:

         TSi = ((0,0,198.51.0-198.51.255),
                TS_SECLABEL1)

         TSr = (((0,0,203.0.113.0-203.0.113.255),
                TS_SECLABEL1)

                  Figure 3: responder TS payloads example

3.2.  Considerations for using multiple TS_TYPEs in a TS

   It would be unlikely that the traffic for TSi and TSr MUST would have a
   different Security Label, but this specification does allow this to
   be identical. specified.  If the
   responder's policy initiator does not allow it support this, and wants to accept any part of
   prevent the
   proposed Traffic Selector including responder from picking different labels for the Security Label, TSi / TSr
   payloads, it MUST
   ignore should attempt a Child SA negotiation with only the TS
   first Security Label first, and look for another matching TS in upon failure retry a new Child SA
   negotiation with only the list. second Security Label.

   If no
   list entry matches, a TS_UNACCEPTABLE Notify message is returned.

   A zero length different IP ranges can only use different specific Security Label MUST NOT
   Labels, than these should be sent. negotiated in two different Child SA
   negotiations.  If in the SPD policy
   contains no Security Label selectors, example above, the TS Types
   TS_IPV4_ADDR_RANGE_SECLABEL and TS_IPV6_ADDR_RANGE_SECLABEL should
   not be used and TS_IPV4_ADDR_RANGE and TS_IPV6_ADDR_RANGE should be
   used instead.  Any received Traffic Selector initiator only allows
   192.0.2.0/24 with a zero length
   Security Label MUST be ignored, TS_SECLABEL1, and if no valid TS can be selected,
   an TS_UNACCEPTABLE Error Notify message is returned.  A zero length
   Security Label 198.51.0/24 with TS_SECLABEL2,
   than it MUST NOT be interpreted as a wildcard security label.

   If multiple Security Labels are allowed for a given IP protocol,
   start combine these two ranges and end address/port match, multiple
   TS_IPV4_ADDR_RANGE_SECLABEL or TS_IPV6_ADDR_RANGE_SECLABEL Traffic
   Selectors must be included that only differ in the Security Label. security labels into
   one Child SA negotiation.

   Narrowing of Traffic Selectors currenrtly only applies only to TS_IPV4_ADDR_RANGE_SECLABEL
   TS_IPV4_ADDR_RANGE and TS_IPV6_ADDR_RANGE_SECLABEL TS_IPV6_ADDR_RANGE and not to TS_SECLABEL as well, but
   the Security Label itself is not interpreted and cannot itself be
   narrowed.  It MUST be matched exactly.  Rekey of an IPsec SA MUST
   only use identical Traffic Selectors, which means the same TS Type
   and selectors MUST be used.  This guarantees that a Security Label
   once negotiated, remains part of the IPsec SA after a rekey.

5.

4.  Security Considerations

   It is assumed that the Security Label can be matched by the IKE
   implementation to its own configured value, even if the IKE
   implemention itself cannot interpret the Security Label value.

6.

5.  IANA Considerations

   This document defines two new entries in the IKEv2 Traffic Selector
   Types registry:

      Value   TS Type                      Reference
      -----   ---------------------------  -----------------
      TBD     TS_IPV4_ADDR_RANGE_SECLABEL   [this document]
   TBD     TS_IPV6_ADDR_RANGE_SECLABEL     TS_SECLABEL   [this document]

                                 Figure 2

7. 4

6.  Acknowledgements

   A large part of the introduction text was taken verbatim from
   [draft-jml-ipsec-ikev2-security-label] whose authors are J Latten, D.
   Quigley and J.  Lu.  Part of the Traffic Selector description is
   reproduced from [RFC7296].

8.

7.  References

8.1.

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

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

8.2.

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

7.2.  Informative References

   [draft-jml-ipsec-ikev2-security-label]
              Latten, J., Quigley, D., and J. Lu, "Security Label
              Extension to IKE", draft-wouters-edns-tcp-keeaplive (work
              in progress), January 2011.

   [FIPS188]  NIST, "National Institute of Standards and Technology,
              "Standard Security Label for Information Transfer"",
              Federal Information Processing Standard (FIPS) Publication
              188, September 1994.

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

   [RFC5570]  StJohns, M., Atkinson, R., and G. Thomas, "Common
              Architecture Label IPv6 Security Option (CALIPSO)",
              RFC 5570, DOI 10.17487/RFC5570, July 2009,
              <https://www.rfc-editor.org/info/rfc5570>.

Authors' Addresses

   Paul Wouters
   Red Hat

   Email: pwouters@redhat.com

   Sahana Prasad
   Technical University of Munich

   Email: sahana.prasad07@gmail.com