Network

Internet Engineering Task Force (IETF)                        P. Wouters
Internet-Draft
Request for Comments: 9478                                         Aiven
Intended status:
Category: Standards Track                                      S. Prasad
Expires: 16 November 2023
ISSN: 2070-1721                                                  Red Hat
                                                             15 May
                                                          September 2023

  Labeled IPsec Traffic Selector support Support for IKEv2
                  draft-ietf-ipsecme-labeled-ipsec-12 the Internet Key Exchange
                       Protocol Version 2 (IKEv2)

Abstract

   This document defines a new Traffic Selector (TS) Type (TS Type) for the
   Internet Key Exchange Protocol version 2 (IKEv2) to add support for
   negotiating Mandatory Access Control (MAC) security labels as a traffic selector
   Traffic Selector of the Security Policy Database (SPD).  Security
   Labels for IPsec are also known as "Labeled IPsec".  The new TS type is Type,
   TS_SECLABEL, which consists of a variable length opaque field specifying that
   specifies the security label.

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 an Internet Standards Track document.

   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 documents valid the IETF community.  It has
   received public review and has been approved for a maximum publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 7841.

   Information about the current status of six months 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 16 November 2023.
   https://www.rfc-editor.org/info/rfc9478.

Copyright Notice

   Copyright (c) 2023 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.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Requirements Language . . . . . . . . . . . . . . . . . .   3
     1.2.  Traffic Selector clarification  . . . . . . . . . . . . .   3 Clarification
     1.3.  Security Label Traffic Selector negotiation . . . . . . .   4 Negotiation
   2.  TS_SECLABEL Traffic Selector Type . . . . . . . . . . . . . .   4
     2.1.  TS_SECLABEL payload format  . . . . . . . . . . . . . . .   4 Payload Format
     2.2.  TS_SECLABEL properties  . . . . . . . . . . . . . . . . .   5 Properties
   3.  Traffic Selector negotiation  . . . . . . . . . . . . . . . .   5 Negotiation
     3.1.  Example TS negotiation  . . . . . . . . . . . . . . . . .   6 Negotiation
     3.2.  Considerations for using multiple TS_TYPEs Using Multiple TS Types in a TS  . . .   6
   4.  Security Considerations . . . . . . . . . . . . . . . . . . .   7
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   7
   6.  Implementation Status . . . . . . . . . . . . . . . . . . . .   7
     6.1.  Libreswan . . . . . . . . . . . . . . . . . . . . . . . .   8
   7.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .   8
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   8
     8.1.
     6.1.  Normative References  . . . . . . . . . . . . . . . . . .   9
     8.2.
     6.2.  Informative References  . . . . . . . . . . . . . . . . .   9
   Acknowledgements
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   9

1.  Introduction

   In computer security, Mandatory Access Control (MAC) usually refers
   to systems in which all subjects and objects are assigned a security
   label.  A security label is composed of a set of security attributes.
   The security labels along
   Along with a system authorization policy policy, the security labels
   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.

   Historically, security labels used by Multilevel Systems Multi-Level Secure (MLS)
   systems 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 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 Security
   Association (SA) as enforced by the Security Policy Database (SPD,
   see [RFC4301]). (SPD)
   [RFC4301].

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

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 be interpreted as described in BCP
   14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

1.2.  Traffic Selector clarification Clarification

   The negotiation of Traffic Selectors is specified in Section 2.9 of
   [RFC7296]
   [RFC7296], where it defines two TS Types (TS_IPV4_ADDR_RANGE and
   TS_IPV6_ADDR_RANGE).  The Traffic Selector TS payload format is specified in
   Section 3.13 of [RFC7296].  However, the term Traffic
   Selector "Traffic Selector" is
   used to denote the traffic selector TS payloads and individual traffic selectors Traffic Selectors of
   that payload.  Sometimes  Sometimes, the exact meaning can only be learned from
   context or if the item is written in plural ("Traffic Selectors" or "TSs").
   "TSes").  This section clarifies these terms as follows:

   A Traffic Selector (no (capitalized, no acronym) is one selector for
   traffic of a specific Traffic Selector Type (TS_TYPE). (TS Type).  For example example,
   a Traffic Selector of TS_TYPE TS Type TS_IPV4_ADDR_RANGE for UDP (protocol
   17) traffic in the IP network 198.51.100.0/24 covering all ports, ports is
   denoted as (17, 0, 198.51.100.0-198.51.100.255) 198.51.100.0-198.51.100.255).

   A Traffic Selector TS payload (TS) is a set of one or more Traffic Selectors of the same or
   different TS_TYPEs. TS Types.  It typically contains one or more of the TS_TYPE TS Type
   of TS_IPV4_ADDR_RANGE and/or TS_IPV6_ADDR_RANGE.  For example, the
   above Traffic Selector by itself in a TS payload is denoted as
   TS((17, 0, 198.51.100.0-198.51.100.255))

1.3.  Security Label Traffic Selector negotiation Negotiation

   The negotiation of Traffic Selectors is specified in Section 2.9 of
   [RFC7296] and states that the TSi/TSr payloads MUST contain at least
   one Traffic Selector type. TS Type.  This document adds a new TS_TYPE TS Type of TS_SECLABEL that is
   valid only with at least one other type of
   Traffic Selector. TS Type.  That is, it cannot be
   the only TS_TYPE TS Type present in a TSi or TSr payload.  It MUST be used
   along with an IP address selector type type, such as TS_IPV4_ADDR_RANGE
   and/or TS_IPV6_ADDR_RANGE.

2.  TS_SECLABEL Traffic Selector Type

   This document defines a new TS Type, TS_SECLABEL TS_SECLABEL, that contains a
   single new opaque Security Label.

2.1.  TS_SECLABEL payload format 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     |    Reserved   |       Selector Length         |
   +---------------+---------------+-------------------------------+
   |                                                               |
   ~                         Security Label*                       ~
   |                                                               |
   +---------------------------------------------------------------+

                  Figure 1: Labeled IPsec Traffic Selector

   *Note:

   Note: All fields other than TS Type and Selector Length depend on the
   TS Type.  The fields shown is are for TS Type TS_SECLABEL, which is the
   selector that this document defines.

   *

   TS Type (one octet) - octet):  Set to 10 for TS_SECLABEL,

   * TS_SECLABEL.

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

   *

   Security Label - Label:  An opaque byte stream of at least one octet.

2.2.  TS_SECLABEL properties Properties

   The TS_SECLABEL Traffic Selector TS Type does not support narrowing or wildcards.  It
   MUST be used as an exact match value.

   The TS_SECLABEL Traffic Selector TS Type MUST NOT be the only TS_TYPE TS Type present in the
   TS payload payload, as TS_SECLABEL is complimentary to another type of
   Traffic Selector.  There MUST be an IP address Traffic Selector type Type
   in addition to the TS_SECLABEL Traffic Selector type TS Type in the Traffic Selector Payload. TS payload.  If a TS
   payload is received with only TS_SECLABEL Traffic Selector types, TS Types, the exchange MUST
   be aborted with an Error Notify message containing TS_UNACCEPTABLE.

   The Security Label contents are opaque to the IKE implementation.
   That is, the IKE implementation might not have any knowledge of
   regarding the meaning of this selector, selector other than recognizing it as a
   type and opaque value to pass to the SPD.

   A zero length zero-length Security Label MUST NOT be used.  If a received TS
   payload contains a TS_TYPE TS Type of TS_SECLABEL with a zero length zero-length Security
   Label, that specific Traffic Selector TS payload MUST be ignored.  If no other
   Traffic Selector of TS_TYPE TS
   payload contains an acceptable TS_SECLABEL can be selected, TS Type, the exchange MUST
   be aborted with a TS_UNACCEPTABLE Error Notify message.  A zero zero-
   length Security Label MUST NOT be interpreted as a wildcard security
   label.

   If multiple Security Labels are allowed for a given Traffic Selector's IP
   address range, protocol,
   start and end address/port match, port range, the initiator includes all
   of the these acceptable TS_SECLABEL's and the Security Labels.  The responder MUST select
   exactly one of them. the Security Labels.

   A responder that selected a TS with TS_SECLABEL MUST use the Security
   Label for all selector operations on the resulting TS.  It MUST NOT
   select a TS_SECLABEL without using the specified Security Label, even
   if it deems the Security Label optional, as the initiator has
   indicated (and expects) that the Security Label will be set for all
   traffic matching the negotiated TS.

3.  Traffic Selector negotiation Negotiation

   If the TSi Payload payload contains a traffic selector for TS_TYPE of Traffic Selector with TS Type
   TS_SECLABEL (along with another TS_TYPE), TS Type), the responder MUST create
   each TS response for the other TS_TYPEs TS Types using its normal rules
   specified for each of those TS_TYPE, TS Types, such as narrowing them
   following the rules specified for that TS_TYPE, TS Type and then add adding
   exactly one for the TS_TYPE TS Type of TS_SECLABEL to the TS Payload(s). payload(s).  If
   this is not possible, it MUST return a TS_UNACCEPTABLE Error Notify
   payload.

   If the Security Label traffic selector TS Type is optional from a configuration point
   of view, an initiator will add the TS_SECLABEL to the TSi/TSr Payloads.
   payloads.  If the responder replies with TSi/TSr Payloads payloads that
   include the TS_SECLABEL, then the Child SA MUST be created
   including and
   include the negotiated Security Label.  If the responder did not
   include a TS_SECLABEL in its response, then the initiator (which
   deemed the Security Label optional) will install the Child SA without
   including any Security Label.  If the initiator required the
   TS_SECLABEL, it MUST NOT install the Child SA and it MUST send a
   Delete notification for the Child SA so the responder can uninstall
   its Child SA.

3.1.  Example TS negotiation Negotiation

   An initiator could send: send the following:

   TSi = ((17,24233,198.51.100.12-198.51.100.12),
          (0,0,198.51.100.0-198.51.100.255),
          (0,0,192.0.2.0-192.0.2.255),
          TS_SECLABEL1, TS_SECLABEL2)

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

                  Figure 2: initiator Initiator TS payloads example Payloads Example

   The responder could answer with the following example: following:

   TSi = ((0,0,198.51.100.0-198.51.100.255),
          TS_SECLABEL1)

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

                  Figure 3: responder Responder TS payloads example Payloads Example

3.2.  Considerations for using multiple TS_TYPEs Using Multiple TS Types in a TS

   It would be unlikely that the traffic for TSi and TSr would have a
   different Security Label, but this specification does allow allows this to be
   specified.  If the initiator does not support this, this and wants to
   prevent the responder from picking different labels for the TSi / TSr TSi/TSr
   payloads, it should attempt a Child SA negotiation and start with only the
   first Security Label first, and upon failure only.  Upon failure, the initiator should retry
   a new Child SA negotiation with only the second Security Label.

   If different IP ranges can only use different specific Security
   Labels, then these should be negotiated in two different Child SA
   negotiations.  If in  In the example above, if the initiator only allows
   192.0.2.0/24 with TS_SECLABEL1, TS_SECLABEL1 and 198.51.100.0/24 with TS_SECLABEL2, than
   then it MUST NOT combine these two ranges and security labels into
   one Child SA negotiation.

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
   implementation itself cannot interpret the Security Label value.

   A packet that matches an SPD entry for all components components, except the
   Security Label Label, would be treated as "not matching".  If no other SPD
   entries match, the (mis-labeled) (mislabeled) traffic might end up being
   transmitted in the clear.  It is presumed that other Mandatory Access
   Control MAC methods are
   in place to prevent mis-labeled mislabeled traffic from reaching the IPsec subsystem,
   subsystem or that the IPsec subsystem itself would install a REJECT/DISCARD REJECT/
   DISCARD rule in the SPD to prevent unlabeled traffic otherwise
   matching a labeled security SPD rule from being transmitted without
   IPsec protection.

5.  IANA Considerations

   This document defines one

   IANA has added a new entry in the IKEv2 "IKEv2 Traffic Selector
   Types registry:

   [Note to RFC Editor (please remove before publication): This value
   has already been added via Early Allocation.] Types"
   registry [RFC7296] as follows.

                    +=======+=============+===========+
                    | Value | TS Type     | Reference
      -----   ---------------------------  ----------------- |
                    +=======+=============+===========+
                    | 10    | TS_SECLABEL   [this document]

                                  Figure 4

6.  Implementation Status

   [Note to RFC Editor: Please remove this section and the reference to
   [RFC7942] before publication.]

   This section records the status of known implementations of the
   protocol defined by this specification at the time of posting of this
   Internet-Draft, and is based on a proposal described in [RFC7942].
   The description of implementations in this section is intended to
   assist the IETF in its decision processes in progressing drafts to
   RFCs.  Please note that the listing of any individual implementation
   here does not imply endorsement by the IETF.  Furthermore, no effort
   has been spent to verify the information presented here that was
   supplied by IETF contributors.  This is not intended as, and must not
   be construed to be, a catalog of available implementations or their
   features.  Readers are advised to note that other implementations may
   exist.

   According to [RFC7942], "this will allow reviewers and working groups
   to assign due consideration to documents that have the benefit of
   running code, which may serve as evidence of valuable experimentation
   and feedback that have made the implemented protocols more mature.
   It is up to the individual working groups to use this information as
   they see fit".

   Authors are requested to add a note to the | RFC Editor at the top of
   this section, advising the Editor to remove the entire section before
   publication, as well as the reference to [RFC7942].

6.1.  Libreswan

   Organization:  The Libreswan Project

   Name:  https://lists.libreswan.org/mailman/listinfo/swan-dev/

   Description:  Implementation was introduced in 4.4, but 4.6 or newer
      should be used

   Level of maturity:  beta

   Coverage:  Implements the entire draft using SElinux based labels

   Licensing:  GPLv2

   Implementation experience:  No interop testing has been done yet.
      The code works including different labeled on-demand kernel
      ACQUIRES.

   Contact:  Libreswan Development: swan-dev@libreswan.org

7.  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.  Valery Smyslov provided valuable input regarding 9478  |
                    +-------+-------------+-----------+

                      Table 1: IKEv2 Traffic Selector semantics.

8.
                               Types Registry

6.  References

8.1.

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

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

8.2.

6.2.  Informative References

   [draft-jml-ipsec-ikev2-security-label]

   [IPSEC-IKEV2-SECURITY-LABEL]
              Latten, J., Quigley, D., and J. Lu, "Security Label
              Extension to IKE", Work in Progress, Internet-Draft,
              draft-jml-ipsec-ikev2-security-label-01, 28 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,
              <https://csrc.nist.gov/publications/detail/fips/188/
              archive/1994-09-06>. 2011,
              <https://datatracker.ietf.org/doc/html/draft-jml-ipsec-
              ikev2-security-label-01>.

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

   [RFC7942]  Sheffer, Y. and A. Farrel, "Improving Awareness

Acknowledgements

   A large part of Running
              Code: The Implementation Status Section", BCP 205,
              RFC 7942, DOI 10.17487/RFC7942, July 2016,
              <https://www.rfc-editor.org/info/rfc7942>. the introduction text was taken verbatim from
   [IPSEC-IKEV2-SECURITY-LABEL], whose authors are Joy Latten, David
   Quigley, and Jarrett Lu.  Valery Smyslov provided valuable input
   regarding IKEv2 Traffic Selector semantics.

Authors' Addresses

   Paul Wouters
   Aiven
   Email: paul.wouters@aiven.io

   Sahana Prasad
   Red Hat
   Email: sahana@redhat.com