| < draft-ietf-ipsecme-labeled-ipsec-05.txt | draft-ietf-ipsecme-labeled-ipsec-06.txt > | |||
|---|---|---|---|---|
| Network P. Wouters | Network P. Wouters | |||
| Internet-Draft Aiven | Internet-Draft Aiven | |||
| Updates: 7296 (if approved) S. Prasad | Updates: 7296 (if approved) S. Prasad | |||
| Intended status: Standards Track Red Hat | Intended status: Standards Track Red Hat | |||
| Expires: 5 November 2021 4 May 2021 | Expires: 28 April 2022 25 October 2021 | |||
| Labeled IPsec Traffic Selector support for IKEv2 | Labeled IPsec Traffic Selector support for IKEv2 | |||
| draft-ietf-ipsecme-labeled-ipsec-05 | draft-ietf-ipsecme-labeled-ipsec-06 | |||
| Abstract | Abstract | |||
| This document defines a new Traffic Selector (TS) Type for Internet | This document defines a new Traffic Selector (TS) Type for Internet | |||
| Key Exchange version 2 to add support for negotiating Mandatory | Key Exchange version 2 to add support for negotiating Mandatory | |||
| Access Control (MAC) security labels as a traffic selector of the | Access Control (MAC) security labels as a traffic selector of the | |||
| Security Policy Database (SPD). Security Labels for IPsec are also | Security Policy Database (SPD). Security Labels for IPsec are also | |||
| known as "Labeled IPsec". The new TS type is TS_SECLABEL, which | known as "Labeled IPsec". The new TS type is TS_SECLABEL, which | |||
| consists of a variable length opaque field specifying the security | consists of a variable length opaque field specifying the security | |||
| label. This document updates the IKEv2 TS negotiation specified in | label. This document updates the IKEv2 TS negotiation specified in | |||
| skipping to change at page 1, line 38 ¶ | skipping to change at page 1, line 38 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on 5 November 2021. | This Internet-Draft will expire on 28 April 2022. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| skipping to change at page 2, line 24 ¶ | skipping to change at page 2, line 24 ¶ | |||
| 2. TS_SECLABEL Traffic Selector Type . . . . . . . . . . . . . . 4 | 2. TS_SECLABEL Traffic Selector Type . . . . . . . . . . . . . . 4 | |||
| 2.1. TS_SECLABEL payload format . . . . . . . . . . . . . . . 4 | 2.1. TS_SECLABEL payload format . . . . . . . . . . . . . . . 4 | |||
| 2.2. TS_SECLABEL properties . . . . . . . . . . . . . . . . . 4 | 2.2. TS_SECLABEL properties . . . . . . . . . . . . . . . . . 4 | |||
| 3. Traffic Selector negotiation . . . . . . . . . . . . . . . . 5 | 3. Traffic Selector negotiation . . . . . . . . . . . . . . . . 5 | |||
| 3.1. Example TS negotiation . . . . . . . . . . . . . . . . . 6 | 3.1. Example TS negotiation . . . . . . . . . . . . . . . . . 6 | |||
| 3.2. Considerations for using multiple TS_TYPEs in a TS . . . 6 | 3.2. Considerations for using multiple TS_TYPEs in a TS . . . 6 | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 6. Implementation Status . . . . . . . . . . . . . . . . . . . . 7 | 6. Implementation Status . . . . . . . . . . . . . . . . . . . . 7 | |||
| 6.1. Libreswan . . . . . . . . . . . . . . . . . . . . . . . . 8 | 6.1. Libreswan . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 9 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 9 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 9 | 8.2. Informative References . . . . . . . . . . . . . . . . . 9 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 1. Introduction | 1. Introduction | |||
| In computer security, Mandatory Access Control usually refers to | In computer security, Mandatory Access Control usually refers to | |||
| systems in which all subjects and objects are assigned a security | systems in which all subjects and objects are assigned a security | |||
| label. A security label is comprised of a set of security | label. A security label is comprised of a set of security | |||
| attributes. The security labels along with a system authorization | attributes. The security labels along with a system authorization | |||
| skipping to change at page 5, line 5 ¶ | skipping to change at page 5, line 5 ¶ | |||
| * Selector Length (2 octets, unsigned integer) - Specifies the | * Selector Length (2 octets, unsigned integer) - Specifies the | |||
| length of this Traffic Selector substructure including the header. | length of this Traffic Selector substructure including the header. | |||
| * Security Label - An opaque byte stream of at least one octet. | * Security Label - An opaque byte stream of at least one octet. | |||
| 2.2. TS_SECLABEL properties | 2.2. TS_SECLABEL properties | |||
| The TS_SECLABEL Traffic Selector Type does not support narrowing or | The TS_SECLABEL Traffic Selector Type does not support narrowing or | |||
| wildcards. It MUST be used as an exact match value. | wildcards. It MUST be used as an exact match value. | |||
| If the TS_SECLABEL is present in a TSi/TSr, at least one Traffic | ||||
| Selector of type TS_IPV4_ADDR_RANGE or TS_IPV6_ADDR_RANGE MUST also | ||||
| be present in that TSi/TSr. | ||||
| The Security Label contents are opaque to the IKE implementation. | The Security Label contents are opaque to the IKE implementation. | |||
| That is, the IKE implementation might not have any knowledge of the | 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 | meaning of this selector, other than as a type and opaque value to | |||
| pass to the SPD. | pass to the SPD. | |||
| A zero length Security Label MUST NOT be used. If a received TS | 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 | payload contains a TS_TYPE of TS_SECLABEL with a zero length Security | |||
| Label, that specific Traffic Selector MUST be ignored. If no other | Label, that specific Traffic Selector MUST be ignored. If no other | |||
| Traffic Selector of TS_TYPE TS_SECLABEL can be selected, a | Traffic Selector of TS_TYPE TS_SECLABEL can be selected, a | |||
| TS_UNACCEPTABLE Error Notify message MUST be returned. A zero length | TS_UNACCEPTABLE Error Notify message MUST be returned. A zero length | |||
| Security Label MUST NOT be interpreted as a wildcard security label. | Security Label MUST NOT be interpreted as a wildcard security label. | |||
| If multiple Security Labels are allowed for a given IP protocol, | If multiple Security Labels are allowed for a given IP protocol, | |||
| start and end address/port match, multiple TS_SECLABEL can be | start and end address/port match, the initiator includes all of the | |||
| included in a TS payload. | acceptable TS_SECLABEL's and the responder MUST select one of them. | |||
| If the Security Label traffic selector is optional from a | If the Security Label traffic selector is optional from a | |||
| configuration point of view, the initiator will have to choose which | configuration point of view, the initiator will have to choose which | |||
| TS payload to attempt first. If it includes the Security Label and | TS payload to attempt first. If it includes the Security Label and | |||
| receives a TS_UNACCEPTABLE, it can attempt a new Child SA negotiation | receives a TS_UNACCEPTABLE, it can attempt a new Child SA negotiation | |||
| without that Security Label. | without that Security Label. | |||
| A responder that selected a TS with TS_SECLABEL MUST use the Security | 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 | Label for all selector operations on the resulting TS. It MUST NOT | |||
| NOT select a TS_set with a TS_SECLABEL without using the specified | select a TS_SECLABEL without using the specified Security Label, even | |||
| Security Label, even if it deems the Security Label optional, as the | if it deems the Security Label optional, as the initiator has | |||
| initiator TS_set with TS_SECLABEL means the initiator mandates using | indicated (and expects) that Security Label will be set for all | |||
| that Security Label. | traffic matching the negotiated TS. | |||
| 3. Traffic Selector negotiation | 3. Traffic Selector negotiation | |||
| This document updates the [RFC7296] specification as follows: | This document updates the [RFC7296] specification as follows: | |||
| Each TS payload (TSi and TSr) MUST contain at least one TS_TYPE of | Each TS payload (TSi and TSr) MUST contain at least one TS_TYPE of | |||
| TS_IPV4_ADDR_RANGE or TS_IPV6_ADDR_RANGE. | TS_IPV4_ADDR_RANGE or TS_IPV6_ADDR_RANGE. | |||
| Each TS payload (TSi or TSr) MAY contain one or more other TS_TYPEs, | Each TS payload (TSi or TSr) MAY contain one or more other TS_TYPEs, | |||
| such as TS_SECLABEL. | such as TS_SECLABEL. | |||
| A responder MUST create its TS response by selecting one of each | A responder MUST create each TS response by creating one of more | |||
| TS_TYPE present in the offered TS by the initiator. If it cannot | (narrowed or not) TS_IPV4_ADDR_RANGE or TS_IPV6_ADDR_RANGE entries, | |||
| select one of each TS_TYPE, it MUST return a TS_UNACCEPTABLE Error | plus one of each further TS_TYPE present in the offered TS by the | |||
| Notify payload. | initiator. If this is not possible, it MUST return a TS_UNACCEPTABLE | |||
| Error Notify payload. | ||||
| If a specific TS_TYPE (other than TS_IPV4_ADDR_RANGE or | If a specific TS_TYPE (other than TS_IPV4_ADDR_RANGE or | |||
| TS_IPV6_ADDR_RANGE which are mandatory) is deemed optional, the | TS_IPV6_ADDR_RANGE which are mandatory) is deemed optional, the | |||
| initiator SHOULD first try to negotiate the Child SA with the TS | initiator SHOULD first try to negotiate the Child SA with the TS | |||
| payload including the optional TS_TYPE. Upon receiving | payload including the optional TS_TYPE. Upon receiving | |||
| TS_UNACCEPTABLE, it SHOULD attempt a new Child SA negotiation using | TS_UNACCEPTABLE, it SHOULD attempt a new Child SA negotiation using | |||
| the same TS but without the optional TS_TYPE. | 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 | 3.1. Example TS negotiation | |||
| An initiator could send: | An initiator could send: | |||
| TSi = ((17,0,192.0.2.0-192.0.2.255), | TSi = ((17,0,192.0.2.0-192.0.2.255), | |||
| (0,0,198.51.0-198.51.255), | (0,0,198.51.0-198.51.255), | |||
| TS_SECLABEL1, TS_SECLABEL2) | TS_SECLABEL1, TS_SECLABEL2) | |||
| TSr = ((17,0,203.0.113.0-203.0.113.255), | TSr = ((17,0,203.0.113.0-203.0.113.255), | |||
| (0,0,203.0.113.0-203.0.113.255), | (0,0,203.0.113.0-203.0.113.255), | |||
| skipping to change at page 7, line 15 ¶ | skipping to change at page 7, line 8 ¶ | |||
| If different IP ranges can only use different specific Security | If different IP ranges can only use different specific Security | |||
| Labels, than these should be negotiated in two different Child SA | Labels, than these should be negotiated in two different Child SA | |||
| negotiations. If in the example above, the initiator only allows | 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, | 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 | than it MUST NOT combine these two ranges and security labels into | |||
| one Child SA negotiation. | one Child SA negotiation. | |||
| The mechanism of narrowing of Traffic Selectors with | The mechanism of narrowing of Traffic Selectors with | |||
| TS_IPV4_ADDR_RANGE and TS_IPV6_ADDR_RANGE does not apply to | TS_IPV4_ADDR_RANGE and TS_IPV6_ADDR_RANGE does not apply to | |||
| TS_SECLABEL as the Security Label itself is not interpreted and | TS_SECLABEL as the Security Label itself is not interpreted and | |||
| cannot itself be narrowed. It MUST be matched exactly. Rekey of an | cannot be narrowed. It MUST be matched exactly. Since a rekey MUST | |||
| IPsec SA MUST only use identical Traffic Selectors, which means the | NOT narrow down the Traffic Selectors narrower than the scope | |||
| same TS Type and selectors MUST be used. This guarantees that a | currently in use, the only valid choice of TS_SECLABEL for a rekey is | |||
| Security Label once negotiated, remains part of the IPsec SA after a | the identical TS_SECLABEL that is in use by the Child SA being | |||
| rekey. | rekeyed. If the TS_LABEL is missing from the TS during the rekey | |||
| negotiation, the negotiation MUST fail with TS_UNACCEPTABLE. | ||||
| 4. Security Considerations | 4. Security Considerations | |||
| It is assumed that the Security Label can be matched by the IKE | It is assumed that the Security Label can be matched by the IKE | |||
| implementation to its own configured value, even if the IKE | implementation to its own configured value, even if the IKE | |||
| implementation itself cannot interpret the Security Label value. | implementation itself cannot interpret the Security Label value. | |||
| A packet that matches an SPD entry for all components except the | A packet that matches an SPD entry for all components except the | |||
| Security Label would be treated as "not matching". If no other SPD | Security Label would be treated as "not matching". If no other SPD | |||
| entries match, the (mis-labeled) traffic might end up being | entries match, the (mis-labeled) traffic might end up being | |||
| skipping to change at page 9, line 9 ¶ | skipping to change at page 8, line 48 ¶ | |||
| The code works as proof of concept, but is not yet production | The code works as proof of concept, but is not yet production | |||
| ready when using multiple different labels with on-demand kernel | ready when using multiple different labels with on-demand kernel | |||
| ACQUIRES. | ACQUIRES. | |||
| Contact: Libreswan Development: swan-dev@libreswan.org | Contact: Libreswan Development: swan-dev@libreswan.org | |||
| 7. Acknowledgements | 7. Acknowledgements | |||
| A large part of the introduction text was taken verbatim from | A large part of the introduction text was taken verbatim from | |||
| [draft-jml-ipsec-ikev2-security-label] whose authors are J Latten, D. | [draft-jml-ipsec-ikev2-security-label] whose authors are J Latten, D. | |||
| Quigley and J. Lu. | Quigley and J. Lu. Valery Smyslov provided valuable input regarding | |||
| IKEv2 Traffic Selector semantics. | ||||
| 8. References | 8. References | |||
| 8.1. Normative References | 8.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | |||
| Kivinen, "Internet Key Exchange Protocol Version 2 | Kivinen, "Internet Key Exchange Protocol Version 2 | |||
| (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | |||
| End of changes. 12 change blocks. | ||||
| 31 lines changed or deleted | 25 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||