--- 1/draft-ietf-ipsecme-labeled-ipsec-00.txt 2019-07-08 17:19:24.113501489 -0700 +++ 2/draft-ietf-ipsecme-labeled-ipsec-01.txt 2019-07-08 17:19:24.137502096 -0700 @@ -1,80 +1,81 @@ Network P. Wouters Internet-Draft Red Hat -Intended status: Standards Track S. Prasad -Expires: September 11, 2019 Technical University of Munich - March 10, 2019 +Updates: 7296 (if approved) S. Prasad +Intended status: Standards Track Technical University of Munich +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 new Traffic Selector (TS) Types for - Internet Key Exchange version 2 to add support for Mandatory Access - Control (MAC) security labels, also known as "Labeled IPsec". The - two new TS Types are TS_IPV4_ADDR_RANGE_SECLABEL and - TS_IPV6_ADDR_RANGE_SECLABEL, which are identical to their non- - seclabel namesakes except for the addition 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 the - IPsec SA. + This document defines a new Traffic Selector (TS) Type for Internet + Key Exchange version 2 to add support for negotiating Mandatory + Access Control (MAC) security labels as a traffic selector of the + Security Policy Database (SPD). Security Labels for IPsec are also + known as "Labeled IPsec". The new TS type is TS_SECLABEL, which + consists of a variable length opaque field specifying the security + label. This document updates the 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. + This Internet-Draft will expire on 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. Traffic Selector negotiation . . . . . . . . . . . . . . . . 3 - 3. SECLABEL Traffic Selector . . . . . . . . . . . . . . . . . . 3 - 4. Traffic Selector matching . . . . . . . . . . . . . . . . . . 5 - 5. Security Considerations . . . . . . . . . . . . . . . . . . . 6 - 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 - 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6 - 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 6 - 8.1. Normative References . . . . . . . . . . . . . . . . . . 6 - 8.2. Informative References . . . . . . . . . . . . . . . . . 7 - Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 7 + 1.2. Traffic Selector clarification . . . . . . . . . . . . . 3 + 2. TS_SECLABEL Traffic Selector Type . . . . . . . . . . . . . . 3 + 2.1. TS_SECLABEL payload format . . . . . . . . . . . . . . . 4 + 2.2. TS_SECLABEL properties . . . . . . . . . . . . . . . . . 4 + 3. Traffic Selector negotiation . . . . . . . . . . . . . . . . 5 + 3.1. Example TS negotiation . . . . . . . . . . . . . . . . . 5 + 3.2. Considerations for using multiple TS_TYPEs in a TS . . . 6 + 4. Security Considerations . . . . . . . . . . . . . . . . . . . 7 + 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 + 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 + 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 + 7.1. Normative References . . . . . . . . . . . . . . . . . . 7 + 7.2. Informative References . . . . . . . . . . . . . . . . . 7 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 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. @@ -82,219 +83,245 @@ 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. - This document specifies two new Traffic Selector Types 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 and received over the IPsec SA. - - Traffic Selector (TS) payloads allow endpoints to communicate some of - the information from their SPD 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 in the Internet Key Exchange protocol version 2 [RFC7296] - illustrates the Traffic Selector negotiation procedure. - - Two TS payloads appear in each of the messages in the exchange that - creates a Child SA pair. Each TS payload contains one or more - Traffic Selectors. Currently, each 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 is missing. Therefore this - document extends the section 2.9 in the Internet Key Exchange - protocol version 2 [RFC7296] to add support for a new traffic - selector type which would be used to negotiate the security label or - context. + 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]. - Negotiating and verifying the security context or label in the new TS - types will act as an additional criteria that has to match along with - the previously mentioned Traffic Selectors. + This document specifies a new Traffic Selector 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 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", "MAY", and "OPTIONAL" in this - document are to be interpreted as described in RFC 2119 [RFC2119]. + "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 + captials, as shown here. -2. Traffic Selector negotiation +1.2. Traffic Selector clarification The negotiation of Traffic Selectors is specified in Section 2.9 of - [RFC7296]. The initiating IKE peer sends a Traffic Selector payload - for the initiator side (TSi) and a Traffic Selector payload for the - responder side (TSr). The TSi and TSr payloads contain a list of one - or more Traffic Selectors (TS). The responder picks one TS from the - TSi list and one TS from the TSr list and returns these in their own - TSi/TSr payloads to the initiator in the IKE response as confirmation - of the chosen traffic selectors. [RFC7296] defines two TS Types, - TS_IPV4_ADDR_RANGE and TS_IPV6_ADDR_RANGE. These TS payloads contain - the TS Type, IP protocol ID, Selector Length, Start and End Port and - Start and End Address. + [RFC7296] where it defines two TS Types (TS_IPV4_ADDR_RANGE and + TS_IPV6_ADDR_RANGE). The Traffic Selector payload format is + specified in Section 3.13 of [RFC7296]. However, the term Traffic + Selector is used to denote the traffic selector payloads and + individual traffic selectors of that payload. Sometimes the exact + meaning can only be learned from context or if the item is written in + plural ("Traffic Selectors" or "TSs"). This section clarifies these + terms as follows: -3. SECLABEL Traffic Selector + A Traffic Selector (no acronym) is one selector for traffic of a + specific Traffic Selector Type (TS_TYPE). For example a Traffic + Selector of TS_TYPE TS_IPV4_ADDR_RANGE for UDP traffic in the IP + network 198.51.100.0/24 covering all ports, is denoted as (17, 0, + 198.51.100.0-198.51.100.255) - This document defines two new TS Types, TS_IPV4_ADDR_RANGE_SECLABEL - and TS_IPV6_ADDR_RANGE_SECLABEL. In addition to the above mentioned - selectors, it contains a single new opaque Security Label selector. + A Traffic Selector payload (TS) is a set of one or more Traffic + Selectors of the same or different TS_TYPEs, but MUST include at + least one TS_TYPE of TS_IPV4_ADDR_RANGE or TS_IPV6_ADDR_RANGE. For + example, the above Traffic Selector 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 a new TS Type, TS_SECLABEL that contains a + single new opaque Security 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*| Selector Length | + | TS Type | 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 for TS Types [TBD] and [TBD], the - two values this document defines. - - o TS Type (one octet) - Specifies the type of Traffic Selector. + the TS Type. The fields shown is for TS Type TS_SECLABEL, the + selector this document defines. - 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 to this Traffic Selector -- - the SA can carry all protocols. + o TS Type (one octet) - Set to [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) - Value specifying the - smallest 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 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 as specified in Section 4.4.1.1 of [RFC4301]. ICMP Type and - Code values are treated as a single 16-bit integer port number, - with Type in the most significant eight bits and Code in the least - significant eight bits. MIPv6 MH Type values are treated as a - single 16-bit integer port number, with Type in the most - significant eight bits and the least significant eight bits set to - zero. + o Security Label - An opaque byte stream of at least one octet. - 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 MUST be 65535. ICMP and - ICMPv6 Type and Code values, as well as MIPv6 MH Type values, are - represented in this field as specified in Section 4.4.1.1 of - [RFC4301]. ICMP Type and Code values are treated as a single - 16-bit integer port number, with Type in the most significant - eight bits and Code in the least significant eight bits. MIPv6 MH - Type values are treated as a single 16-bit integer port number, - with Type in the most significant eight bits and the least - significant eight bits set to zero. +2.2. TS_SECLABEL properties - o Starting Address - The smallest address included in this Traffic - Selector (length determined by TS Type). + The TS_SECLABEL Traffic Selector Type does not support narrowing or + wildcards. It MUST be used as an exact match value. - o Ending Address - The largest address included in this Traffic - Selector (length determined by TS Type). + The Security Label contents are opague to the IKE implementation. + That is, the IKE implementation might not have any knowledge of the + meaning of this selector, other than as a type and opaque value to + pass to the SPD. - o Security Label - An opaque byte stream of at least one octet. + A zero length Security Label MUST NOT be 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 a wildcard security label. -4. Traffic Selector matching + If multiple Security Labels are allowed for a given IP protocol, + start and end address/port match, multiple TS_SECLABEL can be + included in a TS payload. - Matching of the IP protocol, start and end address, and start and end - port is performed the same way as for the TS_IPV4_ADDR_RANGE and - TS_IPV6_ADDR_RANGE TS types. Additionally, the Security Label is - compared for an exact match as well. Label matching is done by - comparing the opaque bytestream. + If the Security Label traffic selector is optional from a + configuration point of view, the initiator will have to choose which + TS payload to attempt first. If it includes the Security Label and + receives a TS_UNAVAILABLE, it can attempt a new Child SA negotiation + without that Security Label . - The Security Label in the TSi and TSr MUST be identical. If the - responder's policy does not allow it to accept any part of the - proposed Traffic Selector including the Security Label, it MUST - ignore the TS and look for another matching TS in the list. If no - list entry matches, a TS_UNACCEPTABLE Notify message is returned. + A responder that selected a TS with TS_SECLABEL MUST use the Security + Label for all selector operations on the resulting IPsec SA. It MUST + NOT select a TS_set with a TS_SECLABEL without using the specified + Security Label, even if it deems the Security Label optional, as the + initiator TS_set with TS_SECLABEL means the initiator mandates using + that Security Label. - A zero length Security Label MUST NOT be sent. If the SPD policy - contains no Security Label selectors, 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 with a zero length - Security Label MUST be ignored, and if no valid TS can be selected, - an TS_UNACCEPTABLE Error Notify message is returned. A zero length - Security Label MUST NOT be interpreted as a wildcard security label. +3. Traffic Selector negotiation - If multiple Security Labels are allowed for a given IP protocol, - start 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. + This document updates the [RFC7296] specification as follows: - Narrowing of Traffic Selectors applies to TS_IPV4_ADDR_RANGE_SECLABEL - and TS_IPV6_ADDR_RANGE_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. + Each TS payload (TSi and TSr) MUST contain at least one TS_TYPE of + TS_IPV4_ADDR_RANGE or TS_IPV6_ADDR_RANGE. -5. Security Considerations + Each TS payload (TSi or TSr) MAY contain one or more other TS_TYPEs, + such as 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 or + TS_IPV6_ADDR_RANGE which are mandatory) is deemed optional, the + initiator SHOULD first try to negotiate the Child SA with the TS + payload including the 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 allowed to + select a subset of the 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 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 would have a + different Security Label, but this specification does allow this to + be specified. If the initiator does not support this, and wants to + prevent the responder from picking different labels for the TSi / TSr + payloads, it should attempt a Child SA negotiation with only the + first Security Label first, and upon failure retry a new Child SA + negotiation with only the second Security Label. + + If different IP ranges can only use different specific Security + Labels, than these should be negotiated in two different Child SA + negotiations. If in the example above, the initiator only allows + 192.0.2.0/24 with TS_SECLABEL1, and 198.51.0/24 with TS_SECLABEL2, + than it MUST NOT combine these two ranges and security labels into + one Child SA negotiation. + + Narrowing of Traffic Selectors currenrtly only applies only to + TS_IPV4_ADDR_RANGE and TS_IPV6_ADDR_RANGE and not to TS_SECLABEL as + 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. + +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. IANA Considerations +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 [this document] + TBD TS_SECLABEL [this document] - Figure 2 + Figure 4 -7. Acknowledgements +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]. + Quigley and J. Lu. -8. References +7. References -8.1. Normative References +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, . [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, . -8.2. Informative References + [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC + 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, + May 2017, . + +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.