| rfc9145.original | rfc9145.txt | |||
|---|---|---|---|---|
| SFC M. Boucadair | Internet Engineering Task Force (IETF) M. Boucadair | |||
| Internet-Draft Orange | Request for Comments: 9145 Orange | |||
| Intended status: Standards Track T. Reddy | Category: Standards Track T. Reddy.K | |||
| Expires: March 24, 2022 Akamai | ISSN: 2070-1721 Akamai | |||
| D. Wing | D. Wing | |||
| Citrix | Citrix | |||
| September 20, 2021 | December 2021 | |||
| Integrity Protection for the Network Service Header (NSH) and Encryption | Integrity Protection for the Network Service Header (NSH) and Encryption | |||
| of Sensitive Context Headers | of Sensitive Context Headers | |||
| draft-ietf-sfc-nsh-integrity-09 | ||||
| Abstract | Abstract | |||
| This specification presents an optional method to add integrity | This specification presents an optional method to add integrity | |||
| protection directly to the Network Service Header (NSH) used for | protection directly to the Network Service Header (NSH) used for | |||
| Service Function Chaining (SFC). Also, this specification allows for | Service Function Chaining (SFC). Also, this specification allows for | |||
| the encryption of sensitive metadata that is carried in the NSH. | the encryption of sensitive metadata (MD) that is carried in the NSH. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| 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 https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on March 24, 2022. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9145. | ||||
| 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 | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Revised BSD License text as described in Section 4.e of the | |||
| the Trust Legal Provisions and are provided without warranty as | Trust Legal Provisions and are provided without warranty as described | |||
| described in the Simplified BSD License. | in the Revised BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology | |||
| 3. Assumptions and Basic Requirements . . . . . . . . . . . . . 5 | 3. Assumptions and Basic Requirements | |||
| 4. Design Overview . . . . . . . . . . . . . . . . . . . . . . . 7 | 4. Design Overview | |||
| 4.1. Supported Security Services . . . . . . . . . . . . . . . 7 | 4.1. Supported Security Services | |||
| 4.1.1. Encrypt All or a Subset of Context Headers . . . . . 7 | 4.1.1. Encrypt All or a Subset of Context Headers | |||
| 4.1.2. Integrity Protection . . . . . . . . . . . . . . . . 8 | 4.1.2. Integrity Protection | |||
| 4.2. One Secret Key, Two Security Services . . . . . . . . . . 10 | 4.2. One Secret Key, Two Security Services | |||
| 4.3. Mandatory-to-Implement Authenticated Encryption and HMAC | 4.3. Mandatory-to-Implement Authenticated Encryption and HMAC | |||
| Algorithms . . . . . . . . . . . . . . . . . . . . . . . 11 | Algorithms | |||
| 4.4. Key Management . . . . . . . . . . . . . . . . . . . . . 11 | 4.4. Key Management | |||
| 4.5. New NSH Variable-Length Context Headers . . . . . . . . . 12 | 4.5. New NSH Variable-Length Context Headers | |||
| 4.6. Encapsulation of NSH within NSH . . . . . . . . . . . . . 12 | 4.6. Encapsulation of NSH within NSH | |||
| 5. New NSH Variable-Length Context Headers . . . . . . . . . . . 13 | 5. New NSH Variable-Length Context Headers | |||
| 5.1. MAC#1 Context Header . . . . . . . . . . . . . . . . . . 14 | 5.1. MAC#1 Context Header | |||
| 5.2. MAC#2 Context Header . . . . . . . . . . . . . . . . . . 16 | 5.2. MAC#2 Context Header | |||
| 6. Timestamp Format . . . . . . . . . . . . . . . . . . . . . . 18 | 6. Timestamp Format | |||
| 7. Processing Rules . . . . . . . . . . . . . . . . . . . . . . 19 | 7. Processing Rules | |||
| 7.1. Generic Behavior . . . . . . . . . . . . . . . . . . . . 19 | 7.1. Generic Behavior | |||
| 7.2. MAC NSH Data Generation . . . . . . . . . . . . . . . . . 20 | 7.2. MAC NSH Data Generation | |||
| 7.3. Encrypted NSH Metadata Generation . . . . . . . . . . . . 21 | 7.3. Encrypted NSH Metadata Generation | |||
| 7.4. Timestamp for Replay Attack Prevention . . . . . . . . . 21 | 7.4. Timestamp for Replay Attack Prevention | |||
| 7.5. NSH Data Validation . . . . . . . . . . . . . . . . . . . 22 | 7.5. NSH Data Validation | |||
| 7.6. Decryption of NSH Metadata . . . . . . . . . . . . . . . 23 | 7.6. Decryption of NSH Metadata | |||
| 8. MTU Considerations . . . . . . . . . . . . . . . . . . . . . 23 | 8. MTU Considerations | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 24 | 9. Security Considerations | |||
| 9.1. MAC#1 . . . . . . . . . . . . . . . . . . . . . . . . . . 26 | 9.1. MAC#1 | |||
| 9.2. MAC#2 . . . . . . . . . . . . . . . . . . . . . . . . . . 26 | 9.2. MAC#2 | |||
| 9.3. Time Synchronization . . . . . . . . . . . . . . . . . . 26 | 9.3. Time Synchronization | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 | 10. IANA Considerations | |||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27 | 11. References | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 | 11.1. Normative References | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 27 | 11.2. Informative References | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 28 | Acknowledgements | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30 | Authors' Addresses | |||
| 1. Introduction | 1. Introduction | |||
| Many advanced Service Functions (SFs) are enabled for the delivery of | Many advanced Service Functions (SFs) are enabled for the delivery of | |||
| value-added services. Typically, SFs are used to meet various | value-added services. Typically, SFs are used to meet various | |||
| service objectives such as IP address sharing, avoiding covert | service objectives such as IP address sharing, avoiding covert | |||
| channels, detecting Denial-of-Service (DoS) attacks and protecting | channels, detecting Denial-of-Service (DoS) attacks and protecting | |||
| network infrastructures against them, network slicing, etc. Because | network infrastructures against them, network slicing, etc. Because | |||
| of the proliferation of such advanced SFs together with complex | of the proliferation of such advanced SFs together with complex | |||
| service deployment constraints that demand more agile service | service deployment constraints that demand more agile service | |||
| delivery procedures, operators need to rationalize their service | delivery procedures, operators need to rationalize their service | |||
| delivery logic and control its complexity while optimising service | delivery logic and control its complexity while optimizing service | |||
| activation time cycles. The overall problem space is described in | activation time cycles. The overall problem space is described in | |||
| [RFC7498]. | [RFC7498]. | |||
| [RFC7665] presents a data plane architecture addressing the | [RFC7665] presents a data plane architecture addressing the | |||
| problematic aspects of existing service deployments, including | problematic aspects of existing service deployments, including | |||
| topological dependence and configuration complexity. It also | topological dependence and configuration complexity. It also | |||
| describes an architecture for the specification, creation, and | describes an architecture for the specification, creation, and | |||
| maintenance of Service Function Chains (SFCs) within a network. That | maintenance of Service Function Chains (SFCs) within a network, that | |||
| is, how to define an ordered set of SFs and ordering constraints that | is, how to define an ordered set of SFs and ordering constraints that | |||
| must be applied to packets/flows selected as a result of traffic | must be applied to packets/flows selected as a result of traffic | |||
| classification. [RFC8300] specifies the SFC encapsulation: Network | classification. [RFC8300] specifies the SFC encapsulation: Network | |||
| Service Header (NSH). | Service Header (NSH). | |||
| The NSH data is unauthenticated and unencrypted, forcing a service | The NSH data is unauthenticated and unencrypted, forcing a service | |||
| topology that requires security and privacy to use a transport | topology that requires security and privacy to use a transport | |||
| encapsulation that supports such features (Section 8.2 of [RFC8300]). | encapsulation that supports such features (Section 8.2 of [RFC8300]). | |||
| Note that some transport encapsulations (e.g., IPsec) only provide | Note that some transport encapsulations (e.g., IPsec) only provide | |||
| skipping to change at page 3, line 40 ¶ | skipping to change at line 129 ¶ | |||
| or SFs within a Service Function Path (SFP) that are not authorized | or SFs within a Service Function Path (SFP) that are not authorized | |||
| to access the sensitive metadata (e.g., privacy-sensitive | to access the sensitive metadata (e.g., privacy-sensitive | |||
| information) will have access to the metadata. As a reminder, the | information) will have access to the metadata. As a reminder, the | |||
| metadata referred to is information that is inserted by Classifiers | metadata referred to is information that is inserted by Classifiers | |||
| or intermediate SFs and shared with downstream SFs; such information | or intermediate SFs and shared with downstream SFs; such information | |||
| is not visible to the communication endpoints (Section 4.9 of | is not visible to the communication endpoints (Section 4.9 of | |||
| [RFC7665]). | [RFC7665]). | |||
| The lack of such capability was reported during the development of | The lack of such capability was reported during the development of | |||
| [RFC8300] and [RFC8459]. The reader may refer to Section 3.2.1 of | [RFC8300] and [RFC8459]. The reader may refer to Section 3.2.1 of | |||
| [I-D.arkko-farrell-arch-model-t] for a discussion on the need for | [INTERNET-THREAT-MODEL] for a discussion on the need for more | |||
| more awareness about attacks from within closed domains. | awareness about attacks from within closed domains. | |||
| This specification fills that gap for SFC (that is, it defines the | This specification fills that gap for SFC (that is, it defines the | |||
| "NSH Variable Header-Based Integrity" option mentioned in | "NSH Variable Header-Based Integrity" option mentioned in | |||
| Section 8.2.1 of [RFC8300]). Concretely, this document adds | Section 8.2.1 of [RFC8300]). Concretely, this document adds | |||
| integrity protection and optional encryption of sensitive metadata | integrity protection and optional encryption of sensitive metadata | |||
| directly to the NSH (Section 4). The integrity protection covers the | directly to the NSH (Section 4). The integrity protection covers the | |||
| packet payload and provides replay protection (Section 7.4). Thus, | packet payload and provides replay protection (Section 7.4). Thus, | |||
| the NSH does not have to rely upon an underlying transport | the NSH does not have to rely upon an underlying transport | |||
| encapsulation for security. | encapsulation for security. | |||
| This specification introduces new Variable-Length Context Headers to | This specification introduces new Variable-Length Context Headers to | |||
| carry fields necessary for integrity-protected NSH headers and | carry fields necessary for integrity-protected NSH headers and | |||
| encrypted Context Headers (Section 5). This specification is only | encrypted Context Headers (Section 5). This specification is only | |||
| applicable to NSH MD Type 0x02 (Section 2.5 of [RFC8300]). MTU | applicable to NSH MD Type 0x02 (Section 2.5 of [RFC8300]). MTU | |||
| considerations are discussed in Section 8. This specification is not | considerations are discussed in Section 8. This specification is not | |||
| applicable to NSH MD Type 0x01 (Section 2.4 of [RFC8300]) because | applicable to NSH MD Type 0x01 (Section 2.4 of [RFC8300]) because | |||
| that MD Type only allows a Fixed-Length Context Header whose size is | that MD Type only allows a Fixed-Length Context Header whose size is | |||
| 16-bytes; that is not sufficient to accommodate both the metadata and | 16 bytes; that is not sufficient to accommodate both the metadata and | |||
| message integrity of the NSH data. | message integrity of the NSH data. | |||
| This specification limits access to NSH-supplied information along an | This specification limits access to NSH-supplied information along an | |||
| SFP to entities that have a need to interpret it. | SFP to entities that have a need to interpret it. | |||
| The mechanism specified in this document does not preclude the use of | The mechanism specified in this document does not preclude the use of | |||
| transport security. Such considerations are deployment-specific. | transport security. Such considerations are deployment specific. | |||
| It is out of the scope of this document to specify an NSH-aware | It is out of the scope of this document to specify an NSH-aware | |||
| control plane solution. | control plane solution. | |||
| 2. Terminology | 2. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| This document makes use of the terms defined in [RFC7665] and | This document makes use of the terms defined in [RFC7665] and | |||
| [RFC8300]. The term "transport encapsulation" used in this document | [RFC8300]. The term "transport encapsulation" used in this document | |||
| refers to the outer encapsulation (e.g., Generic Routing | refers to the outer encapsulation (e.g., Generic Routing | |||
| Encapsulation (GRE), IPsec, Generic Protocol Extension for VXLAN | Encapsulation (GRE), IPsec, and Generic Protocol Extension for | |||
| (VXLAN-GPE)) that is used to carry NSH-encapsulated packets as per | Virtual eXtensible Local Area Network (VXLAN-GPE)) that is used to | |||
| Section 4 of [RFC8300]. | carry NSH-encapsulated packets as per Section 4 of [RFC8300]. | |||
| The document defines the following terms: | The document defines the following terms: | |||
| SFC data plane element: Refers to NSH-aware SF, SFF, SFC Proxy, or | SFC data plane element: Refers to NSH-aware SF, SFF, the SFC Proxy, | |||
| Classifier as defined in the SFC data plane architecture [RFC7665] | or the Classifier as defined in the SFC data plane architecture | |||
| and further refined in [RFC8300]. | [RFC7665] and further refined in [RFC8300]. | |||
| SFC control element: Is a logical entity that instructs one or more | SFC control element: Is a logical entity that instructs one or more | |||
| SFC data plane elements on how to process NSH packets within an | SFC data plane elements on how to process NSH packets within an | |||
| SFC-enabled domain. | SFC-enabled domain. | |||
| Key Identifier: Is used to identify keys to authorized entities. | Key Identifier: Is used to identify keys to authorized entities. | |||
| See, for example, 'kid' usage in [RFC7635]. | See, for example, "kid" usage in [RFC7635]. | |||
| NSH data: The NSH is composed of a Base Header, a Service Path | NSH data: The NSH is composed of a Base Header, a Service Path | |||
| Header, and optional Context Headers. NSH data refers to all the | Header, and optional Context Headers. NSH data refers to all the | |||
| above headers and the packet or frame on which the NSH is imposed | above headers and the packet or frame on which the NSH is imposed | |||
| to realize an SFP. | to realize an SFP. | |||
| NSH imposer: Refers to an SFC data plane element that is entitled to | NSH imposer: Refers to an SFC data plane element that is entitled to | |||
| impose the NSH with the Context Headers defined in this document. | impose the NSH with the Context Headers defined in this document. | |||
| 3. Assumptions and Basic Requirements | 3. Assumptions and Basic Requirements | |||
| Section 2 of [RFC8300] specifies that the NSH data can be spread over | Section 2 of [RFC8300] specifies that the NSH data can be spread over | |||
| three headers: | three headers: | |||
| o Base Header: Provides information about the service header and the | Base Header: Provides information about the service header and the | |||
| payload protocol. | payload protocol. | |||
| o Service Path Header: Provides path identification and location | Service Path Header: Provides path identification and location | |||
| within an SFP. | within an SFP. | |||
| o Context Header(s): Carries metadata (i.e., context data) along a | Context Header(s): Carries metadata (i.e., context data) along a | |||
| service path. | service path. | |||
| The NSH allows sharing context information (a.k.a., metadata) with | The NSH allows sharing context information (a.k.a. metadata) with | |||
| downstream NSH-aware data plane elements on a per SFC/SFP basis. To | downstream NSH-aware data plane elements on a per-SFC/SFP basis. To | |||
| that aim: | that aim: | |||
| The Classifier is instructed by an SFC control element about the | * The Classifier is instructed by an SFC control element about the | |||
| set of context information to be supplied for a given service | set of context information to be supplied for a given service | |||
| function chain. | function chain. | |||
| An NSH-aware SF is instructed by an SFC control element about any | * An NSH-aware SF is instructed by an SFC control element about any | |||
| metadata it needs to attach to packets for a given service | metadata it needs to attach to packets for a given service | |||
| function chain. This instruction may occur any time during the | function chain. This instruction may occur any time during the | |||
| validity lifetime of an SFC/SFP. For a given service function | validity lifetime of an SFC/SFP. For a given service function | |||
| chain, the NSH-aware SF is also provided with an order for | chain, the NSH-aware SF is also provided with an order for | |||
| consuming a set of contexts supplied in a packet. | consuming a set of contexts supplied in a packet. | |||
| An NSH-aware SF can also be instructed by an SFC control element | * An NSH-aware SF can also be instructed by an SFC control element | |||
| about the behavior it should adopt after consuming context | about the behavior it should adopt after consuming context | |||
| information that was supplied in the NSH. For example, the | information that was supplied in the NSH. For example, the | |||
| context information can be maintained, updated, or stripped. | context information can be maintained, updated, or stripped. | |||
| An SFC Proxy may be instructed by an SFC control element about the | * An SFC Proxy may be instructed by an SFC control element about the | |||
| behavior it should adopt to process the context information that | behavior it should adopt to process the context information that | |||
| was supplied in the NSH on behalf of an NSH-unaware SF (e.g., the | was supplied in the NSH on behalf of an NSH-unaware SF (e.g., the | |||
| context information can be maintained or stripped). The SFC Proxy | context information can be maintained or stripped). The SFC Proxy | |||
| may also be instructed to add some new context information into | may also be instructed to add some new context information into | |||
| the NSH on behalf of an NSH-unaware SF. | the NSH on behalf of an NSH-unaware SF. | |||
| In reference to Table 1, | In reference to Table 1: | |||
| o Classifiers, NSH-aware SFs, and SFC proxies are entitled to update | * Classifiers, NSH-aware SFs, and SFC proxies are entitled to update | |||
| the Context Header(s). | the Context Header(s). | |||
| o Only NSH-aware SFs and SFC proxies are entitled to update the | * Only NSH-aware SFs and SFC proxies are entitled to update the | |||
| Service Path Header. | Service Path Header. | |||
| o SFFs are entitled to modify the Base Header (TTL value, for | * SFFs are entitled to modify the Base Header (TTL value, for | |||
| example). Nevertheless, SFFs are not supposed to act on the | example). Nevertheless, SFFs are not supposed to act on the | |||
| Context Headers or look into the content of the Context Headers | Context Headers or look into the content of the Context Headers | |||
| (Section 4.3 of [RFC7665]). | (Section 4.3 of [RFC7665]). | |||
| Thus, the following requirements: | Thus, the following requirements: | |||
| o Only Classifiers, NSH-aware SFs, and SFC proxies must be able to | * Only Classifiers, NSH-aware SFs, and SFC proxies must be able to | |||
| encrypt and decrypt a given Context Header. | encrypt and decrypt a given Context Header. | |||
| o Both encrypted and unencrypted Context Headers may be included in | * Both encrypted and unencrypted Context Headers may be included in | |||
| the same NSH. | the same NSH. | |||
| o The solution must provide integrity protection for the Service | * The solution must provide integrity protection for the Service | |||
| Path Header. | Path Header. | |||
| o The solution must provide optional integrity protection for the | * The solution must provide optional integrity protection for the | |||
| Base Header. The implications of disabling such checks are | Base Header. The implications of disabling such checks are | |||
| discussed in Section 9.1. | discussed in Section 9.1. | |||
| +----------------+-----------------------------+-------------------+ | +=============+===========================+=======================+ | |||
| | | Insert, remove, or replace | Update the NSH | | | SFC Data | Insert, remove, or | Update the NSH | | |||
| | | the NSH | | | | Plane | replace the NSH | | | |||
| | | | | | | Element +========+========+=========+===========+===========+ | |||
| | SFC Data Plane +---------+---------+---------+---------+---------+ | | | Insert | Remove | Replace | Decrement | Update | | |||
| | Element | | | |Decrement| Update | | | | | | | Service | Context | | |||
| | | Insert | Remove | Replace | Service | Context | | | | | | | Index | Header(s) | | |||
| | | | | | Index |Header(s)| | +=============+========+========+=========+===========+===========+ | |||
| +================+=========+=========+=========+=========+=========+ | | Classifier | + | | + | | + | | |||
| | | + | | + | | + | | +-------------+--------+--------+---------+-----------+-----------+ | |||
| | Classifier | | | | | | | | Service | | + | | | | | |||
| +----------------+---------+---------+---------+---------+---------+ | | Function | | | | | | | |||
| |Service Function| | + | | | | | | Forwarder | | | | | | | |||
| |Forwarder (SFF) | | | | | | | | (SFF) | | | | | | | |||
| +----------------+---------+---------+---------+---------+---------+ | +-------------+--------+--------+---------+-----------+-----------+ | |||
| |Service Function| | | | + | + | | | Service | | | | + | + | | |||
| | (SF) | | | | | | | | Function | | | | | | | |||
| +----------------+---------+---------+---------+---------+---------+ | | (SF) | | | | | | | |||
| | | + | + | | + | + | | +-------------+--------+--------+---------+-----------+-----------+ | |||
| | SFC Proxy | | | | | | | | Service | + | + | | + | + | | |||
| +----------------+---------+---------+---------+---------+---------+ | | Function | | | | | | | |||
| | Chaining | | | | | | | ||||
| | (SFC) Proxy | | | | | | | ||||
| +-------------+--------+--------+---------+-----------+-----------+ | ||||
| Table 1: Summary of NSH Actions | Table 1: Summary of NSH Actions | |||
| 4. Design Overview | 4. Design Overview | |||
| 4.1. Supported Security Services | 4.1. Supported Security Services | |||
| This specification provides the functions described in the following | This specification provides the functions described in the following | |||
| subsections. | subsections. | |||
| 4.1.1. Encrypt All or a Subset of Context Headers | 4.1.1. Encrypt All or a Subset of Context Headers | |||
| The solution allows encrypting all or a subset of NSH Context Headers | The solution allows encrypting all or a subset of NSH Context Headers | |||
| by Classifiers, NSH-aware SFs, and SFC proxies. | by Classifiers, NSH-aware SFs, and SFC proxies. | |||
| As depicted in Table 2, SFFs are not involved in data encryption. | As depicted in Table 2, SFFs are not involved in data encryption. | |||
| +-----------------+------------------------------+------------------+ | +====================+=======================+================+ | |||
| | Data Plane | Base and Service Path | Context Header | | | Data Plane Element | Base and Service Path | Context Header | | |||
| | Element | Headers Encryption | Encryption | | | | Headers Encryption | Encryption | | |||
| +-----------------+------------------------------+------------------+ | +====================+=======================+================+ | |||
| | Classifier | No | Yes | | | Classifier | No | Yes | | |||
| | SFF | No | No | | +--------------------+-----------------------+----------------+ | |||
| | NSH-aware SF | No | Yes | | | SFF | No | No | | |||
| | SFC Proxy | No | Yes | | +--------------------+-----------------------+----------------+ | |||
| | NSH-unaware SF | No | No | | | NSH-aware SF | No | Yes | | |||
| +-----------------+------------------------------+------------------+ | +--------------------+-----------------------+----------------+ | |||
| | SFC Proxy | No | Yes | | ||||
| +--------------------+-----------------------+----------------+ | ||||
| | NSH-unaware SF | No | No | | ||||
| +--------------------+-----------------------+----------------+ | ||||
| Table 2: Encryption Function Supported by SFC Data Plane Elements | Table 2: Encryption Function Supported by SFC Data Plane | |||
| Elements | ||||
| Classifier(s), NSH-aware SFs, and SFC proxies are instructed with the | Classifier(s), NSH-aware SFs, and SFC proxies are instructed with the | |||
| set of Context Headers (privacy-sensitive metadata, typically) that | set of Context Headers (privacy-sensitive metadata, typically) that | |||
| must be encrypted. Encryption keying material is only provided to | must be encrypted. Encryption keying material is only provided to | |||
| these SFC data plane elements. | these SFC data plane elements. | |||
| The control plane may indicate the set of SFC data plane elements | The control plane may indicate the set of SFC data plane elements | |||
| that are entitled to supply a given Context Header (e.g., in | that are entitled to supply a given Context Header (e.g., in | |||
| reference to their identifiers as assigned within the SFC-enabled | reference to their identifiers as assigned within the SFC-enabled | |||
| domain). It is out of the scope of this document to elaborate on how | domain). It is out of the scope of this document to elaborate on how | |||
| such instructions are provided to the appropriate SFC data plane | such instructions are provided to the appropriate SFC data plane | |||
| elements, nor to detail the structure used to store the instructions. | elements nor to detail the structure used to store the instructions. | |||
| The Service Path Header (Section 2 of [RFC8300]) is not encrypted | The Service Path Header (Section 2 of [RFC8300]) is not encrypted | |||
| because SFFs use Service Index (SI) in conjunction with Service Path | because SFFs use the Service Index (SI) in conjunction with the | |||
| Identifier (SPI) for determining the next SF in the path. | Service Path Identifier (SPI) for determining the next SF in the | |||
| path. | ||||
| 4.1.2. Integrity Protection | 4.1.2. Integrity Protection | |||
| The solution provides integrity protection for the NSH data. Two | The solution provides integrity protection for the NSH data. Two | |||
| levels of assurance (LoAs) are supported. | levels of assurance (LoAs) are supported. | |||
| The first level of assurance is where all NSH data except the Base | The first level of assurance is where all NSH data except the Base | |||
| Header are integrity protected (Figure 1). In this case, the NSH | Header are integrity protected (Figure 1). In this case, the NSH | |||
| imposer may be a Classifier, an NSH-aware SF, or an SFC Proxy. SFFs | imposer may be a Classifier, an NSH-aware SF, or an SFC Proxy. SFFs | |||
| are not provided with authentication material. Further details are | are not provided with authentication material. Further details are | |||
| skipping to change at page 9, line 17 ¶ | skipping to change at line 364 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+... | |||
| | Base Header | | | | Base Header | | | |||
| +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ N | +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ N | |||
| | | Service Path Header | S | | | Service Path Header | S | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ H | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ H | |||
| | | Context Header(s) | | | | | Context Header(s) | | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+... | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+... | |||
| | | Original Packet | | | | Original Packet | | |||
| +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | |||
| +------Scope of integrity protected data | +------Scope of integrity-protected data | |||
| Figure 1: First Level of Assurance | Figure 1: First Level of Assurance | |||
| The second level of assurance is where all NSH data, including the | The second level of assurance is where all NSH data, including the | |||
| Base Header, are integrity protected (Figure 2). In this case, the | Base Header, are integrity protected (Figure 2). In this case, the | |||
| NSH imposer may be a Classifier, an NSH-aware SF, an SFF, or an SFC | NSH imposer may be a Classifier, an NSH-aware SF, an SFF, or an SFC | |||
| Proxy. Further details are provided in Section 5.2. | Proxy. Further details are provided in Section 5.2. | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Transport Encapsulation | | | Transport Encapsulation | | |||
| +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+... | +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+... | |||
| | | Base Header | | | | | Base Header | | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ N | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ N | |||
| | | Service Path Header | S | | | Service Path Header | S | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ H | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ H | |||
| | | Context Header(s) | | | | | Context Header(s) | | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+... | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+... | |||
| | | Original Packet | | | | Original Packet | | |||
| +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | |||
| +----Scope of integrity protected data | +----Scope of integrity-protected data | |||
| Figure 2: Second Level of Assurance | Figure 2: Second Level of Assurance | |||
| The integrity protection scope is explicitly signaled to NSH-aware | The integrity-protection scope is explicitly signaled to NSH-aware | |||
| SFs, SFFs, and SFC proxies in the NSH by means of a dedicated MD Type | SFs, SFFs, and SFC proxies in the NSH by means of a dedicated MD Type | |||
| (Section 5). | (Section 5). | |||
| In both levels of assurance, the Context Headers and the packet on | In both levels of assurance, the Context Headers and the packet on | |||
| which the NSH is imposed are subject to integrity protection. | which the NSH is imposed are subject to integrity protection. | |||
| Table 3 classifies the data plane elements as being involved in | Table 3 classifies the data plane elements as being involved or not | |||
| providing integrity protection for the NSH or not. | involved in providing integrity protection for the NSH. | |||
| +--------------------+----------------------------------+ | +====================+==================================+ | |||
| | Data Plane Element | Integrity Protection | | | Data Plane Element | Integrity Protection | | |||
| +--------------------+----------------------------------+ | +====================+==================================+ | |||
| | Classifier | Yes | | | Classifier | Yes | | |||
| | SFF | No (first LoA); Yes (second LoA) | | +--------------------+----------------------------------+ | |||
| | NSH-aware SF | Yes | | | SFF | No (first LoA); Yes (second LoA) | | |||
| | SFC Proxy | Yes | | +--------------------+----------------------------------+ | |||
| | NSH-unaware SF | No | | | NSH-aware SF | Yes | | |||
| +--------------------+----------------------------------+ | +--------------------+----------------------------------+ | |||
| | SFC Proxy | Yes | | ||||
| +--------------------+----------------------------------+ | ||||
| | NSH-unaware SF | No | | ||||
| +--------------------+----------------------------------+ | ||||
| Table 3: Integrity Protection Supported by SFC Data Plane Elements | Table 3: Integrity Protection Supported by SFC Data | |||
| Plane Elements | ||||
| 4.2. One Secret Key, Two Security Services | 4.2. One Secret Key, Two Security Services | |||
| The Authenticated Encryption with Associated Data (AEAD) interface | The Authenticated Encryption with Associated Data (AEAD) interface | |||
| defined in Section 5 of [RFC5116] is used to encrypt the Context | defined in Section 5 of [RFC5116] is used to encrypt the Context | |||
| Headers that carry sensitive metadata and to provide integrity | Headers that carry sensitive metadata and to provide integrity | |||
| protection for the encrypted Context Headers. | protection for the encrypted Context Headers. | |||
| The secondary keys MAC_KEY and ENC_KEY are generated from the input | The secondary keys "MAC_KEY" and "ENC_KEY" are generated from the | |||
| secret key (K) as follows; each of these two keys is an octet string: | input secret key (K) as follows; each of these two keys is an octet | |||
| string: | ||||
| MAC_KEY: consists of the initial MAC_KEY_LEN octets of K, in order. | MAC_KEY: Consists of the initial MAC_KEY_LEN octets of K, in order. | |||
| The MAC_KEY is used for calculating the message integrity of the | The MAC_KEY is used for calculating the message integrity of the | |||
| NSH data. In other words, the integrity protection provided by | NSH data. In other words, the integrity protection provided by | |||
| the cryptographic mechanism is extended to also provide protection | the cryptographic mechanism is extended to also provide protection | |||
| for the unencrypted Context Headers and the packet on which the | for the unencrypted Context Headers and the packet on which the | |||
| NSH is imposed. | NSH is imposed. | |||
| ENC_KEY: consists of the final ENC_KEY_LEN octets of K, in order. | ENC_KEY: Consists of the final ENC_KEY_LEN octets of K, in order. | |||
| The ENC_KEY is used as the symmetric encryption key for encrypting | The ENC_KEY is used as the symmetric encryption key for encrypting | |||
| the Context Headers. | the Context Headers. | |||
| The Hashed Message Authentication Mode (HMAC) algorithm discussed in | The Hashed Message Authentication Code (HMAC) algorithm discussed in | |||
| [RFC4868] is used to protect the integrity of the NSH data. The | [RFC4868] is used to protect the integrity of the NSH data. The | |||
| algorithm for implementing and validating HMACs is provided in | algorithm for implementing and validating HMACs is provided in | |||
| [RFC2104]. | [RFC2104]. | |||
| The advantage of using both AEAD and HMAC algorithms (instead of just | The advantage of using both AEAD and HMAC algorithms (instead of just | |||
| AEAD) is that NSH-aware SFs and SFC proxies only need to re-compute | AEAD) is that NSH-aware SFs and SFC proxies only need to recompute | |||
| the message integrity of the NSH data after decrementing the Service | the message integrity of the NSH data after decrementing the SI and | |||
| Index (SI) and do not have to re-compute the ciphertext. The other | do not have to recompute the ciphertext. The other advantage is that | |||
| advantage is that SFFs do not have access to the ENC_KEY and cannot | SFFs do not have access to the ENC_KEY and cannot act on the | |||
| act on the encrypted Context Headers and (in the case of the second | encrypted Context Headers, and (in the case of the second level of | |||
| level of assurance) SFFs do have access to the MAC_KEY. Similarly, | assurance) SFFs do have access to the MAC_KEY. Similarly, an NSH- | |||
| an NSH-aware SF or SFC Proxy not allowed to decrypt the Context | aware SF or SFC Proxy not allowed to decrypt the Context Headers will | |||
| Headers will not have access to the ENC_KEY. | not have access to the ENC_KEY. | |||
| The authenticated encryption algorithm or HMAC algorithm to be used | The authenticated encryption algorithm or HMAC algorithm to be used | |||
| by SFC data plane elements is typically controlled using the SFC | by SFC data plane elements is typically controlled using the SFC | |||
| control plane. Mandatory to implement authenticated encryption and | control plane. Mandatory-to-implement authenticated encryption and | |||
| HMAC algorithms are listed in Section 4.3. | HMAC algorithms are listed in Section 4.3. | |||
| The authenticated encryption process takes four inputs, each of which | The authenticated encryption process takes four inputs, each of which | |||
| is an octet string: a secret key (ENC_KEY, referred to as K in | is an octet string: a secret key (ENC_KEY, referred to as "K" in | |||
| [RFC5116]), a plaintext (P), associated data (A) (which contains the | [RFC5116]), a plaintext (P), associated data (A) (which contains the | |||
| data to be authenticated, but not encrypted), and a nonce (N). A | data to be authenticated but not encrypted), and a nonce (N). A | |||
| ciphertext (C) is generated as an output as discussed in Section 2.1 | ciphertext (C) is generated as an output as discussed in Section 2.1 | |||
| of [RFC5116]. | of [RFC5116]. | |||
| In order to decrypt and verify, the cipher takes as input ENC_KEY, N, | In order to decrypt and verify, the cipher takes ENC_KEY, N, A, and C | |||
| A, and C. The output is either the plaintext or an error indicating | as input. The output is either the plaintext or an error indicating | |||
| that the decryption failed as described in Section 2.2 of [RFC5116]. | that the decryption failed as described in Section 2.2 of [RFC5116]. | |||
| 4.3. Mandatory-to-Implement Authenticated Encryption and HMAC | 4.3. Mandatory-to-Implement Authenticated Encryption and HMAC | |||
| Algorithms | Algorithms | |||
| Classifiers, NSH-aware SFs, and SFC proxies MUST implement the | Classifiers, NSH-aware SFs, and SFC proxies MUST implement the | |||
| AES_128_GCM [GCM][RFC5116] algorithm and SHOULD implement the | AES_128_GCM [GCM][RFC5116] algorithm and SHOULD implement the | |||
| AES_192_GCM and AES_256_GCM algorithms. | AES_192_GCM and AES_256_GCM algorithms. | |||
| Classifiers, NSH-aware SFs, and SFC proxies MUST implement the HMAC- | Classifiers, NSH-aware SFs, and SFC proxies MUST implement the HMAC- | |||
| SHA-256-128 algorithm and SHOULD implement the HMAC-SHA-384-192 and | SHA-256-128 algorithm and SHOULD implement the HMAC-SHA-384-192 and | |||
| HMAC-SHA-512-256 algorithms. | HMAC-SHA-512-256 algorithms. | |||
| SFFs MAY implement the aforementioned cipher suites and HMAC | SFFs MAY implement the aforementioned cipher suites and HMAC | |||
| algorithms. | algorithms. | |||
| Note: The use of AES_128_CBC_HMAC_SHA_256 algorithm would have | Note: The use of the AES_128_CBC_HMAC_SHA_256 algorithm would have | |||
| avoided the need for a second 128-bit authentication tag, but due | avoided the need for a second 128-bit authentication tag, but due | |||
| to the nature of how Cipher Block Chaining (CBC) mode operates, | to the nature of how Cipher Block Chaining (CBC) mode operates, | |||
| AES_128_CBC_HMAC_SHA_256 allows for malleability of plaintexts. | AES_128_CBC_HMAC_SHA_256 allows for the malleability of | |||
| This malleability allows for attackers that know the MAC key but | plaintexts. This malleability allows for attackers that know the | |||
| not the encryption key to make changes in the ciphertext and, if | Message Authentication Code (MAC) key but not the encryption key | |||
| parts of the plaintext are known, create arbitrary blocks of | to make changes in the ciphertext and, if parts of the plaintext | |||
| plaintext. This specification mandates the use of separate AEAD | are known, create arbitrary blocks of plaintext. This | |||
| and MAC protections to prevent this type of attack. | specification mandates the use of separate AEAD and MAC | |||
| protections to prevent this type of attack. | ||||
| 4.4. Key Management | 4.4. Key Management | |||
| The procedure for the allocation/provisioning of secret keys (K) and | The procedure for the allocation/provisioning of secret keys (K) and | |||
| authenticated encryption algorithm or MAC_KEY and HMAC algorithm is | the authenticated encryption algorithm or MAC_KEY and HMAC algorithm | |||
| outside the scope of this specification. As such, this specification | is outside the scope of this specification. As such, this | |||
| does not mandate the support of any specific mechanism. | specification does not mandate the support of any specific mechanism. | |||
| The document does not assume nor preclude the following: | The document does not assume nor preclude the following: | |||
| o The same keying material is used for all the service functions | * The same keying material is used for all the service functions | |||
| used within an SFC-enabled domain. | used within an SFC-enabled domain. | |||
| o Distinct keying material is used per SFP by all involved SFC data | * Distinct keying material is used per SFP by all involved SFC data | |||
| path elements. | path elements. | |||
| o Per-tenant keys are used. | * Per-tenant keys are used. | |||
| In order to accommodate deployments relying upon keying material per | In order to accommodate deployments relying upon keying material per | |||
| SFC/SFP and also the need to update keys after encrypting NSH data | SFC/SFP and also the need to update keys after encrypting NSH data | |||
| for a certain amount of time, this document uses key identifiers to | for a certain amount of time, this document uses key identifiers to | |||
| unambiguously identify the appropriate keying material and associated | unambiguously identify the appropriate keying material and associated | |||
| algorithms for MAC and encryption. This use of in-band identifiers | algorithms for MAC and encryption. This use of in-band identifiers | |||
| addresses the problem of synchronization of keying material. | addresses the problem of the synchronization of keying material. | |||
| Additional information on manual vs. automated key management and | Additional information on manual vs. automated key management and | |||
| when one should be used over the other can be found in [RFC4107]. | when one should be used over the other can be found in [RFC4107]. | |||
| The risk involved in using a group-shared symmetric key increases | The risk involved in using a group-shared symmetric key increases | |||
| with the size of the group to which it is shared. Additional | with the size of the group to which it is shared. Additional | |||
| security issues are discussed in Section 9. | security issues are discussed in Section 9. | |||
| 4.5. New NSH Variable-Length Context Headers | 4.5. New NSH Variable-Length Context Headers | |||
| New NSH Variable-Length Context Headers are defined in Section 5 for | New NSH Variable-Length Context Headers are defined in Section 5 for | |||
| NSH data integrity protection and, optionally, encryption of Context | NSH data integrity protection and, optionally, encryption of Context | |||
| Headers carrying sensitive metadata. Concretely, an NSH imposer | Headers carrying sensitive metadata. Concretely, an NSH imposer | |||
| includes (1) the key identifier to identify the keying material, (2) | includes (1) the key identifier to identify the keying material, (2) | |||
| the timestamp to protect against replay attacks (Section 7.4), and | the timestamp to protect against replay attacks (Section 7.4), and | |||
| (3) the Message Authentication Code (MAC) for the target NSH data | (3) MAC for the target NSH data (depending on the integrity- | |||
| (depending on the integrity protection scope) calculated using the | protection scope) calculated using MAC_KEY and, optionally, Context | |||
| MAC_KEY and optionally Context Headers encrypted using ENC_KEY. | Headers encrypted using ENC_KEY. | |||
| An SFC data plane element that needs to check the integrity of the | An SFC data plane element that needs to check the integrity of the | |||
| NSH data uses MAC_KEY and the HMAC algorithm for the key identifier | NSH data uses the MAC_KEY and HMAC algorithm for the key identifier | |||
| being carried in the NSH. | being carried in the NSH. | |||
| An NSH-aware SF or SFC Proxy that needs to decrypt some Context | An NSH-aware SF or SFC Proxy that needs to decrypt some Context | |||
| Headers uses ENC_KEY and the decryption algorithm for the key | Headers uses ENC_KEY and the decryption algorithm for the key | |||
| identifier being carried in the NSH. | identifier being carried in the NSH. | |||
| Section 7 specifies the detailed procedure. | Section 7 specifies the detailed procedure. | |||
| 4.6. Encapsulation of NSH within NSH | 4.6. Encapsulation of NSH within NSH | |||
| As discussed in Section 3 of [RFC8459], an SFC-enabled domain | As discussed in Section 3 of [RFC8459], an SFC-enabled domain (called | |||
| (called, upper-level domain) may be decomposed into many sub-domains | an upper-level domain) may be decomposed into many sub-domains | |||
| (called, lower-level domains). In order to avoid maintaining state | (called lower-level domains). In order to avoid maintaining state to | |||
| to restore back upper-level NSH information at the boundaries of | restore upper-level NSH information at the boundaries of lower-level | |||
| lower-level domains, two NSH levels are used: an Upper-NSH which is | domains, two NSH levels are used: an Upper-NSH that is imposed at the | |||
| imposed at the boundaries of the upper-level domain and a Lower-NSH | boundaries of the upper-level domain and a Lower-NSH that is pushed | |||
| that is pushed by the Classifier of a lower-level domain in front of | by the Classifier of a lower-level domain in front of the original | |||
| the original NSH (Figure 3). As such, the Upper-NSH information is | NSH (Figure 3). As such, the Upper-NSH information is carried along | |||
| carried along the lower-level chain without modification. The packet | the lower-level chain without modification. The packet is forwarded | |||
| is forwarded in the top-level domain according to the Upper-NSH, | in the top-level domain according to the Upper-NSH, while it is | |||
| while it is forwarded according to the Lower-NSH in a lower-level | forwarded according to the Lower-NSH in a lower-level domain. | |||
| domain. | ||||
| +---------------------------------+ | +---------------------------------+ | |||
| | Transport Encapsulation | | | Transport Encapsulation | | |||
| +->+---------------------------------+ | +->+---------------------------------+ | |||
| | | Lower-NSH Header | | | | Lower-NSH Header | | |||
| | +---------------------------------+ | | +---------------------------------+ | |||
| | | Upper-NSH Header | | | | Upper-NSH Header | | |||
| | +---------------------------------+ | | +---------------------------------+ | |||
| | | Original Packet | | | | Original Packet | | |||
| +->+---------------------------------+ | +->+---------------------------------+ | |||
| skipping to change at page 13, line 39 ¶ | skipping to change at line 585 ¶ | |||
| SFC data plane elements of a lower-level domain include the Upper-NSH | SFC data plane elements of a lower-level domain include the Upper-NSH | |||
| when computing the MAC. | when computing the MAC. | |||
| Keying material used at the upper-level domain SHOULD NOT be the same | Keying material used at the upper-level domain SHOULD NOT be the same | |||
| as the one used by a lower-level domain. | as the one used by a lower-level domain. | |||
| 5. New NSH Variable-Length Context Headers | 5. New NSH Variable-Length Context Headers | |||
| This section specifies the format of new Variable-Length Context | This section specifies the format of new Variable-Length Context | |||
| headers that are used for NSH integrity protection and, optionally, | Headers that are used for NSH integrity protection and, optionally, | |||
| Context Headers encryption. | Context Header encryption. | |||
| In particular, this section defines two "MAC and Encrypted Metadata" | In particular, this section defines two "MAC and Encrypted Metadata" | |||
| Context Headers; each having specific deployment constraints. Unlike | Context Headers, each having specific deployment constraints. Unlike | |||
| Section 5.1, the level of assurance provided in Section 5.2 requires | Section 5.1, the level of assurance provided in Section 5.2 requires | |||
| sharing MAC_KEY with SFFs. Both Context headers have the same format | sharing MAC_KEY with SFFs. Both Context Headers have the same format | |||
| as shown in Figure 4. | as shown in Figure 4. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Metadata Class | Type |U| Length | | | Metadata Class | Type |U| Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Key Id Len | Key Identifier (Variable) ~ | | Key Id Len | Key Identifier (Variable) ~ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ~ Timestamp (8 bytes) ~ | ~ Timestamp (8 bytes) ~ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Nonce Length | Nonce (Variable) ~ | | Nonce Length | Nonce (Variable) ~ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Message Authentication Code and optional Encrypted | | | Message Authentication Code and optional Encrypted | | |||
| ~ Context Headers (Variable) ~ | ~ Context Headers (Variable) ~ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 4: MAC and Encrypted Metadata Context Header | Figure 4: MAC and Encrypted Metadata Context Header | |||
| The "MAC and Encrypted Metadata" Context Headers are padded out to a | The "MAC and Encrypted Metadata" Context Headers are padded out to a | |||
| multiple of 4 bytes as per Section 2.2 of [RFC8300]. The "MAC and | multiple of 4 bytes as per Section 2.2 of [RFC8300]. The "MAC and | |||
| Encrypted Metadata" Context Header, if included, MUST always be the | Encrypted Metadata" Context Header, if included, MUST always be the | |||
| last Context Header. | last Context Header. | |||
| 5.1. MAC#1 Context Header | 5.1. MAC#1 Context Header | |||
| MAC#1 Context Header is a variable-length Context Header that carries | The MAC#1 Context Header is a Variable-Length Context Header that | |||
| the Message Authentication Code (MAC) for the Service Path Header, | carries MAC for the Service Path Header, Context Headers, and the | |||
| Context Headers, and the inner packet on which NSH is imposed, | inner packet on which NSH is imposed, calculated using MAC_KEY and, | |||
| calculated using MAC_KEY, and optionally Context Headers encrypted | optionally, Context Headers encrypted using ENC_KEY. The scope of | |||
| using ENC_KEY. The scope of the integrity protection provided by | the integrity protection provided by this Context Header is depicted | |||
| this Context Header is depicted in Figure 5. | in Figure 5. | |||
| This MAC scheme does not require sharing MAC_KEY with SFFs. It does | This MAC scheme does not require sharing MAC_KEY with SFFs. It does | |||
| not require to re-compute the MAC by each SFF because of TTL | not require recomputing the MAC by each SFF because of TTL | |||
| processing. Section 9.1 discusses the possible threat associated | processing. Section 9.1 discusses the possible threat associated | |||
| with this level of assurance. | with this level of assurance. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |Ver|O|U| TTL | Length |U|U|U|U|MD Type| Next Protocol | | |Ver|O|U| TTL | Length |U|U|U|U|MD Type| Next Protocol | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<--+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<--+ | |||
| | Service Path Identifier | Service Index | | | | Service Path Identifier | Service Index | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| skipping to change at page 15, line 31 ¶ | skipping to change at line 657 ¶ | |||
| +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | ~ Encrypted Context Headers (opt.) ~ | | | ~ Encrypted Context Headers (opt.) ~ | | |||
| +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | ~ Message Authentication Code ~ | | | ~ Message Authentication Code ~ | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | | | | | | |||
| | ~ Inner Packet on which NSH is imposed ~ | | | ~ Inner Packet on which NSH is imposed ~ | | |||
| | | | | | | | | | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<--| | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<--| | |||
| | | | | | | |||
| | Integrity Protection Scope ----+ | | Integrity-Protection Scope ----+ | |||
| +----Encrypted Data | +----Encrypted Data | |||
| Figure 5: Scope of MAC#1 | Figure 5: Scope of MAC#1 | |||
| In reference to Figure 4, the description of the fields is as | In reference to Figure 4, the description of the fields is as | |||
| follows: | follows: | |||
| Metadata Class: MUST be set to 0x0 (Section 2.5.1 of [RFC8300]). | Metadata Class: MUST be set to 0x0 (Section 2.2 of [RFC8300]). | |||
| Type: TBD1 (See Section 10) | Type: 0x02 (see Section 10). | |||
| U: Unassigned bit (Section 2.5.1 of [RFC8300]). | U: Unassigned bit (Section 2.5.1 of [RFC8300]). | |||
| Length: Indicates the length of the variable-length metadata, in | Length: Indicates the length of the variable-length metadata in | |||
| bytes. Padding considerations are discussed in Section 2.5.1 of | bytes. Padding considerations are discussed in | |||
| [RFC8300]. | Section 2.5.1 of [RFC8300]. | |||
| Key Id Len: Variable. Carries the length of the key identifier, in | Key Id Len: Variable. Carries the length of the key identifier in | |||
| octets. | octets. | |||
| Key Identifier: Carries a variable-length Key Identifier object used | Key Identifier: Carries a variable-length Key Identifier object used | |||
| to identify and deliver keys to SFC data plane elements. This | to identify and deliver keys to SFC data plane elements. | |||
| identifier is helpful to accommodate deployments relying upon | This identifier is helpful for accommodating deployments | |||
| keying material per SFC/SFP. The key identifier helps in | relying upon keying material per SFC/SFP. The key | |||
| resolving the problem of synchronization of keying material. A | identifier helps to resolve the problem of | |||
| single key identifier is used to lookup both the ENC_KEY and the | synchronization of keying material. A single key | |||
| MAC_KEY associated with a key, and the corresponding encryption | identifier is used to look up both the ENC_KEY and the | |||
| and MAC algorithms used with those keys. | MAC_KEY associated with a key, and the corresponding | |||
| encryption and MAC algorithms used with those keys. | ||||
| Timestamp: Refer to Section 6 for more details about the structure | Timestamp: Refer to Section 6 for more details about the structure | |||
| of this field. | of this field. | |||
| Nonce Length: Carries the length of the Nonce. If the Context | Nonce Length: Carries the length of the Nonce. If the Context | |||
| Headers are only integrity protected, "Nonce Length" is set to | Headers are only integrity protected, "Nonce Length" is | |||
| zero (that is, no "Nonce" is included). | set to zero (that is, no "Nonce" is included). | |||
| Nonce: Carries the Nonce for the authenticated encryption operation | Nonce: Carries the Nonce for the authenticated encryption | |||
| (Section 3.1 of [RFC5116]). | operation (Section 3.1 of [RFC5116]). | |||
| Encrypted Context Headers: Carries the optional encrypted Context | Encrypted Context Headers: Carries the optional encrypted Context | |||
| Headers. | Headers. | |||
| Message Authentication Code: Covers the entire NSH data, excluding | Message Authentication Code: Covers the entire NSH data, excluding | |||
| the Base header. | the Base Header. | |||
| 5.2. MAC#2 Context Header | 5.2. MAC#2 Context Header | |||
| MAC#2 Context Header is a variable-length Context Header that carries | The MAC#2 Context Header is a Variable-Length Context Header that | |||
| the MAC for the entire NSH data calculated using MAC_KEY and | carries the MAC for the entire NSH data calculated using MAC_KEY and, | |||
| optionally Context Headers encrypted using ENC_KEY. The scope of the | optionally, Context Headers encrypted using ENC_KEY. The scope of | |||
| integrity protection provided by this Context Header is depicted in | the integrity protection provided by this Context Header is depicted | |||
| Figure 6. | in Figure 6. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<--+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<--+ | |||
| |Ver|O|U| TTL | Length |U|U|U|U|MD Type| Next Protocol | | | |Ver|O|U| TTL | Length |U|U|U|U|MD Type| Next Protocol | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | Service Path Identifier | Service Index | | | | Service Path Identifier | Service Index | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| ~ Variable-Length Unencrypted Context Headers (opt.) ~ | | ~ Variable-Length Unencrypted Context Headers (opt.) ~ | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| skipping to change at page 17, line 31 ¶ | skipping to change at line 738 ¶ | |||
| +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | ~ Encrypted Context Headers (opt.) ~ | | | ~ Encrypted Context Headers (opt.) ~ | | |||
| +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | ~ Message Authentication Code ~ | | | ~ Message Authentication Code ~ | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | | | | | | |||
| | ~ Inner Packet on which NSH is imposed ~ | | | ~ Inner Packet on which NSH is imposed ~ | | |||
| | | | | | | | | | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<--| | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<--| | |||
| | | | | | | |||
| | Integrity Protection Scope ----+ | | Integrity-Protection Scope ----+ | |||
| +----Encrypted Data | +----Encrypted Data | |||
| Figure 6: Scope of MAC#2 | Figure 6: Scope of MAC#2 | |||
| In reference to Figure 4, the description of the fields is as | In reference to Figure 4, the description of the fields is as | |||
| follows: | follows: | |||
| Metadata Class: MUST be set to 0x0 (Section 2.5.1 of [RFC8300]). | Metadata Class: MUST be set to 0x0 (Section 2.2 of [RFC8300]). | |||
| Type: TBD2 (See Section 10) | Type: 0x03 (see Section 10). | |||
| U: Unassigned bit (Section 2.5.1 of [RFC8300]). | U: Unassigned bit (Section 2.5.1 of [RFC8300]). | |||
| Length: Indicates the length of the variable-length metadata, in | Length: Indicates the length of the variable-length metadata in | |||
| bytes. Padding considerations are discussed in Section 2.5.1 of | bytes. Padding considerations are discussed in | |||
| [RFC8300]. | Section 2.5.1 of [RFC8300]. | |||
| Key Id Len: See Section 5.1. | Key Id Len: See Section 5.1. | |||
| Key Identifier: See Section 5.1. | Key Identifier: See Section 5.1. | |||
| Timestamp: See Section 6. | Timestamp: See Section 6. | |||
| Nonce Length: See Section 5.1. | Nonce Length: See Section 5.1. | |||
| Nonce: See Section 5.1. | Nonce: See Section 5.1. | |||
| Encrypted Context Headers: Carries the optional encrypted Context | Encrypted Context Headers: Carries the optional encrypted Context | |||
| Headers. | Headers. | |||
| Message Authentication Code: Covers the entire NSH data. | Message Authentication Code: Covers the entire NSH data. | |||
| 6. Timestamp Format | 6. Timestamp Format | |||
| This section follows the template provided in Section 3 of [RFC8877]. | This section follows the template provided in Section 3 of [RFC8877]. | |||
| The format of the Timestamp field introduced in Section 5 is depicted | The format of the Timestamp field introduced in Section 5 is depicted | |||
| in Figure 7. | in Figure 7. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Seconds | | | Seconds | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Fraction | | | Fraction | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 7: Timestamp Field Format | Figure 7: Timestamp Field Format | |||
| Timestamp field format: | Timestamp field format: | |||
| Seconds: Specifies the integer portion of the number of seconds | ||||
| since the epoch. | ||||
| Seconds: specifies the integer portion of the number of seconds | + Size: 32 bits | |||
| since the epoch. | ||||
| + Size: 32 bits. | ||||
| + Units: seconds. | + Units: Seconds | |||
| Fraction: specifies the fractional portion of the number of | Fraction: Specifies the fractional portion of the number of | |||
| seconds since the epoch. | seconds since the epoch. | |||
| + Size: 32 bits. | + Size: 32 bits | |||
| + Units: the unit is 2^(-32) seconds, which is roughly equal to | + Units: The unit is 2^(-32) seconds, which is roughly equal to | |||
| 233 picoseconds. | 233 picoseconds. | |||
| Epoch: | Epoch: | |||
| The epoch is 1970-01-01T00:00 in UTC time. Note that this epoch | ||||
| The epoch is 1970-01-01T00:00 in UTC time. Note this epoch value | value is different from the one used in Section 6 of [RFC5905] | |||
| is different from the one used in Section 6 of [RFC5905] (which | (which will wrap around in 2036). | |||
| will wrap around in 2036). | ||||
| Leap seconds: | Leap seconds: | |||
| This timestamp format is affected by leap seconds. The timestamp | This timestamp format is affected by leap seconds. The timestamp | |||
| represents the number of seconds elapsed since the epoch minus the | represents the number of seconds elapsed since the epoch minus the | |||
| number of leap seconds. | number of leap seconds. | |||
| Resolution: | Resolution: | |||
| The resolution is 2^(-32) seconds. | The resolution is 2^(-32) seconds. | |||
| Wraparound: | Wraparound: | |||
| This time format wraps around every 2^32 seconds, which is roughly | This time format wraps around every 2^32 seconds, which is roughly | |||
| 136 years. The next wraparound will occur in the year 2106. | 136 years. The next wraparound will occur in the year 2106. | |||
| Synchronization aspects: | Synchronization aspects: | |||
| It is assumed that SFC data plane elements are synchronized to UTC | It is assumed that SFC data plane elements are synchronized to UTC | |||
| using a synchronization mechanism that is outside the scope of | using a synchronization mechanism that is outside the scope of | |||
| this document. In typical deployments, SFC data plane elements | this document. In typical deployments, SFC data plane elements | |||
| use NTP [RFC5905] for synchronization. Thus, the timestamp may be | use NTP [RFC5905] for synchronization. Thus, the timestamp may be | |||
| derived from the NTP-synchronized clock, allowing the timestamp to | derived from the NTP-synchronized clock, allowing the timestamp to | |||
| be measured with respect to the clock of an NTP server. Since | be measured with respect to the clock of an NTP server. Since | |||
| this time format is specified in terms of UTC, it is affected by | this time format is specified in terms of UTC, it is affected by | |||
| leap seconds (in a manner analogous to the NTP time format, which | leap seconds (in a manner analogous to the NTP time format, which | |||
| is similar). Therefore, the value of a timestamp during or | is similar). Therefore, the value of a timestamp during or | |||
| slightly after a leap second may be temporarily inaccurate. | slightly after a leap second may be temporarily inaccurate. | |||
| 7. Processing Rules | 7. Processing Rules | |||
| The following subsections describe the processing rules for integrity | The following subsections describe the processing rules for | |||
| protected NSH and optionally encrypted Context Headers. | integrity-protected NSH and, optionally, encrypted Context Headers. | |||
| 7.1. Generic Behavior | 7.1. Generic Behavior | |||
| This document adheres to the recommendations in Section 8.1 of | This document adheres to the recommendations in Section 8.1 of | |||
| [RFC8300] for handling the Context Headers at both ingress and egress | [RFC8300] for handling the Context Headers at both ingress and egress | |||
| SFC boundary nodes (i.e., to strip the entire NSH, including Context | SFC boundary nodes (i.e., to strip the entire NSH, including Context | |||
| Headers). | Headers). | |||
| Failures of a classifier to inject the Context Headers defined in | Failures of a Classifier to inject the Context Headers defined in | |||
| this document SHOULD be logged locally while a notification alarm MAY | this document SHOULD be logged locally while a notification alarm MAY | |||
| be sent to an SFC control element. Failures of an NSH-aware node to | be sent to an SFC control element. Failures of an NSH-aware node to | |||
| validate the integrity of the NSH data MUST cause that packet to be | validate the integrity of the NSH data MUST cause that packet to be | |||
| discarded while a notification alarm MAY be sent to an SFC control | discarded while a notification alarm MAY be sent to an SFC control | |||
| element. The details of sending notification alarms (i.e., the | element. The details of sending notification alarms (i.e., the | |||
| parameters that affect the transmission of the notification alarms | parameters that affect the transmission of the notification alarms | |||
| depending on the information in the context header such as frequency, | depending on the information in the Context Header such as frequency, | |||
| thresholds, and content in the alarm) SHOULD be configurable. | thresholds, and content in the alarm) SHOULD be configurable. | |||
| NSH-aware SFs and SFC proxies MAY be instructed to strip some | NSH-aware SFs and SFC proxies MAY be instructed to strip some | |||
| encrypted Context Headers from the packet or to pass the data to the | encrypted Context Headers from the packet or to pass the data to the | |||
| next SF in the service function chain after processing the content of | next SF in the service function chain after processing the content of | |||
| the Context Headers. If no instruction is provided, the default | the Context Headers. If no instruction is provided, the default | |||
| behavior for intermediary NSH-aware nodes is to maintain such Context | behavior for intermediary NSH-aware nodes is to maintain such Context | |||
| Headers so that the information can be passed to next NSH-aware hops. | Headers so that the information can be passed to the next NSH-aware | |||
| NSH-aware SFs and SFC proxies MUST re-apply the integrity protection | hops. NSH-aware SFs and SFC proxies MUST reapply the integrity | |||
| if any modification is made to the Context Headers (e.g., strip a | protection if any modification is made to the Context Headers (e.g., | |||
| Context Header, update the content of an existing Context Header, | strip a Context Header, update the content of an existing Context | |||
| insert a new Context Header). | Header, insert a new Context Header). | |||
| An NSH-aware SF or SFC Proxy that is not allowed to decrypt any | An NSH-aware SF or SFC Proxy that is not allowed to decrypt any | |||
| Context Headers MUST NOT be given access to the ENC_KEY. | Context Headers MUST NOT be given access to the ENC_KEY. | |||
| Otherwise, an NSH-aware SF or SFC Proxy that receives encrypted | Otherwise, an NSH-aware SF or SFC Proxy that receives encrypted | |||
| Context Headers, for which it is not allowed to consume a specific | Context Headers, for which it is not allowed to consume a specific | |||
| Context Header it decrypts (but consumes others), MUST keep that | Context Header it decrypts (but consumes others), MUST keep that | |||
| Context Header unaltered when forwarding the packet upstream. | Context Header unaltered when forwarding the packet upstream. | |||
| Only one instance of "MAC and Encrypted Metadata" Context Header | Only one instance of a "MAC and Encrypted Metadata" Context Header | |||
| (Section 5) is allowed in an NSH level. If multiple instances of | (Section 5) is allowed in an NSH level. If multiple instances of a | |||
| "MAC and Encrypted Metadata" Context Header are included in an NSH | "MAC and Encrypted Metadata" Context Header are included in an NSH | |||
| level, the SFC data plane element MUST process the first instance and | level, the SFC data plane element MUST process the first instance and | |||
| ignore subsequent instances, and MAY log or increase a counter for | ignore subsequent instances and MAY log or increase a counter for | |||
| this event as per Section 2.5.1 of [RFC8300]. If NSH-in-NSH is used | this event as per Section 2.5.1 of [RFC8300]. If NSH within NSH is | |||
| (Section 4.6), distinct LoAs may be used for each NSH level. | used (Section 4.6), distinct LoAs may be used for each NSH level. | |||
| MTU and fragmentation considerations are discussed in Section 8. | MTU and fragmentation considerations are discussed in Section 8. | |||
| 7.2. MAC NSH Data Generation | 7.2. MAC NSH Data Generation | |||
| After performing any Context Header encryption, the HMAC algorithm | After performing any Context Header encryption, the HMAC algorithm | |||
| discussed in [RFC4868] is used to integrity protect the target NSH | discussed in [RFC4868] is used to integrity protect the target NSH | |||
| data. An NSH imposer inserts a "MAC and Encrypted Metadata" Context | data. An NSH imposer inserts a "MAC and Encrypted Metadata" Context | |||
| Header for integrity protection (Section 5). | Header for integrity protection (Section 5). | |||
| The NSH imposer sets the MAC field to zero and then computes the | The NSH imposer sets the MAC field to zero and then computes the | |||
| message integrity for the target NSH data (depending on the integrity | message integrity for the target NSH data (depending on the | |||
| protection scope discussed in Section 5) using MAC_KEY and HMAC | integrity-protection scope discussed in Section 5) using the MAC_KEY | |||
| algorithm. It inserts the computed digest in the MAC field of the | and HMAC algorithm. It inserts the computed digest in the MAC field | |||
| "MAC and Encrypted Metadata" Context Header. The length of the MAC | of the "MAC and Encrypted Metadata" Context Header. The length of | |||
| is decided by the HMAC algorithm adopted for the particular key | the MAC is decided by the HMAC algorithm adopted for the particular | |||
| identifier. | key identifier. | |||
| The Message Authentication Code (T) computation process for the | The Message Authentication Code (T) computation process for the | |||
| target NSH data with HMAC-SHA-256-128() can be illustrated as | target NSH data with HMAC-SHA-256-128() can be illustrated as | |||
| follows: | follows: | |||
| T = HMAC-SHA-256-128(MAC_KEY, target NSH data) | T = HMAC-SHA-256-128(MAC_KEY, target NSH data) | |||
| An entity in the SFP that updates the NSH MUST follow the above | An entity in the SFP that updates the NSH MUST follow the above | |||
| behavior to maintain message integrity of the NSH for subsequent | behavior to maintain message integrity of the NSH for subsequent | |||
| validations. | validations. | |||
| 7.3. Encrypted NSH Metadata Generation | 7.3. Encrypted NSH Metadata Generation | |||
| An NSH imposer can encrypt Context Headers carrying sensitive | An NSH imposer can encrypt Context Headers carrying sensitive | |||
| metadata, i.e., encrypted and unencrypted metadata may be carried | metadata, i.e., encrypted and unencrypted metadata may be carried | |||
| simultaneously in the same NSH packet (Sections 5 and 6). | simultaneously in the same NSH packet (Sections 5 and 6). | |||
| In order to prevent pervasive monitoring [RFC7258], it is RECOMMENDED | In order to prevent pervasive monitoring [RFC7258], it is RECOMMENDED | |||
| to encrypt all Context Headers. All Context Headers carrying | to encrypt all Context Headers. All Context Headers carrying | |||
| privacy-sensitive metadata MUST be encrypted; by doing so, privacy- | privacy-sensitive metadata MUST be encrypted; by doing so, privacy- | |||
| sensitive metadata is not revealed to attackers. Privacy specific | sensitive metadata is not revealed to attackers. Privacy-specific | |||
| threats are discussed in Section 5.2 of [RFC6973]. | threats are discussed in Section 5.2 of [RFC6973]. | |||
| Using the secret key (ENC_KEY) and authenticated encryption | Using the secret key (ENC_KEY) and authenticated encryption | |||
| algorithm, the NSH imposer encrypts the Context Headers (as set, for | algorithm, the NSH imposer encrypts the Context Headers (as set, for | |||
| example, in Section 3) and inserts the resulting payload in the "MAC | example, in Section 3) and inserts the resulting payload in the "MAC | |||
| and Encrypted Metadata" Context Header (Section 5). The additional | and Encrypted Metadata" Context Header (Section 5). The additional | |||
| authenticated data input to the AEAD function is a zero-length byte | authenticated data input to the AEAD function is a zero-length byte | |||
| string. The entire Context Header carrying a sensitive metadata is | string. The entire Context Header carrying sensitive metadata is | |||
| encrypted (that is, including the MD Class, Type, Length, and | encrypted (that is, including the MD Class, Type, Length, and | |||
| associated metadata of each Context Header). | associated metadata of each Context Header). | |||
| More details about the exact encryption procedure are provided in | More details about the exact encryption procedure are provided in | |||
| Section 2.1 of [RFC5116]. In this case, the associated data (A) | Section 2.1 of [RFC5116]. In this case, the associated data (A) | |||
| input is zero-length for AES-GCM. | input is zero length for AES Galois/Counter Mode (AES-GCM). | |||
| An authorized entity in the SFP that updates the content of an | An authorized entity in the SFP that updates the content of an | |||
| encrypted Context Header or needs to add a new encrypted Context | encrypted Context Header or needs to add a new encrypted Context | |||
| Header MUST also follow the aforementioned behavior. | Header MUST also follow the aforementioned behavior. | |||
| 7.4. Timestamp for Replay Attack Prevention | 7.4. Timestamp for Replay Attack Prevention | |||
| The Timestamp imposed by an initial Classifier is left untouched | The Timestamp imposed by an initial Classifier is left untouched | |||
| along an SFP. However, it can be updated when reclassification | along an SFP. However, it can be updated when reclassification | |||
| occurs (Section 4.8 of [RFC7665]). The same considerations for | occurs (Section 4.8 of [RFC7665]). The same considerations for | |||
| setting the Timestamp are followed in both initial classification and | setting the Timestamp are followed in both initial classification and | |||
| reclassification (Section 6). | reclassification (Section 6). | |||
| The received NSH is accepted by an NSH-aware node if the Timestamp | The received NSH is accepted by an NSH-aware node if the Timestamp | |||
| (TS) in the NSH is recent enough to the reception time of the NSH | (TS) in the NSH is recent enough to the reception time of the NSH | |||
| (TSrt). The following formula is used for this check: | (TSrt). The following formula is used for this check: | |||
| -Delta < (TSrt - TS) < +Delta | -Delta < (TSrt - TS) < +Delta | |||
| The Delta interval is a configurable parameter. The default value | The Delta interval is a configurable parameter. The default value | |||
| for the allowed Delta is 2 seconds. Special care should be taken | for the allowed Delta is 2 seconds. Special care should be taken | |||
| when setting very low Delta values as this may lead to dropping | when setting very low Delta values as this may lead to dropping | |||
| legitimate traffic. If the timestamp is not within the boundaries, | legitimate traffic. If the timestamp is not within the boundaries, | |||
| then the SFC data plane element receiving such packet MUST discard | then the SFC data plane element receiving such packets MUST discard | |||
| the NSH message. | the NSH message. | |||
| Replay attacks within the Delta window may be detected by an NSH- | Replay attacks within the Delta window may be detected by an NSH- | |||
| aware node by recording a unique value derived from the packet, for | aware node by recording a unique value derived from the packet, such | |||
| example, a unique value from the MAC field value. Such an NSH-aware | as a unique value from the MAC field value. Such an NSH-aware node | |||
| node will detect and reject duplicates. If for legitimate service | will detect and reject duplicates. If for legitimate service reasons | |||
| reasons, some flows have to be duplicated but still share portion of | some flows have to be duplicated but still share a portion of an SFP | |||
| an SFP with the original flow, legitimate duplicate packets will be | with the original flow, legitimate duplicate packets will be tagged | |||
| tagged by NSH-aware nodes involved in that segment as replay packets | by NSH-aware nodes involved in that segment as replay packets unless | |||
| unless sufficient entropy is added to the duplicate packet. How such | sufficient entropy is added to the duplicate packet. How such an | |||
| an entropy is added is implementation-specific. | entropy is added is implementation specific. | |||
| Note: Within the timestamp delta window, defining a sequence | Note: Within the timestamp Delta window, defining a sequence | |||
| number to protect against replay attacks may be considered. In | number to protect against replay attacks may be considered. In | |||
| such mode, NSH-aware nodes must discard packets with duplicate | such a mode, NSH-aware nodes must discard packets with duplicate | |||
| sequence numbers within the timestamp delta window. However, in | sequence numbers within the timestamp Delta window. However, in | |||
| deployments with several instances of the same SF (e.g., cluster | deployments with several instances of the same SF (e.g., cluster | |||
| or load-balanced SFs), a mechanism to coordinate among those | or load-balanced SFs), a mechanism to coordinate among those | |||
| instances to discard duplicate sequence numbers is required. | instances to discard duplicate sequence numbers is required. | |||
| Because the coordination mechanism to comply with this requirement | Because the coordination mechanism to comply with this requirement | |||
| is service-specific, this document does not include this | is service specific, this document does not include this | |||
| protection. | protection. | |||
| All SFC data plane elements must be synchronized among themselves. | All SFC data plane elements must be synchronized among themselves. | |||
| These elements may be synchronized to a global reference time. | These elements may be synchronized to a global reference time. | |||
| 7.5. NSH Data Validation | 7.5. NSH Data Validation | |||
| When an SFC data plane element that conforms to this specification | When an SFC data plane element that conforms to this specification | |||
| needs to check the validity of the NSH data, it MUST ensure that a | needs to check the validity of the NSH data, it MUST ensure that a | |||
| "MAC and Encrypted Metadata" Context Header is included in a received | "MAC and Encrypted Metadata" Context Header is included in a received | |||
| NSH packet. The imposer MUST silently discard the packet and MUST | NSH packet. The imposer MUST silently discard the packet and MUST | |||
| log an error at least once per the SPI if at least one of the | log an error at least once per the SPI if at least one of the | |||
| following is observed: | following is observed: | |||
| o the "MAC and Encrypted Metadata" Context Header is missing, | * the "MAC and Encrypted Metadata" Context Header is missing, | |||
| o the enclosed key identifier is unknown or invalid (e.g., the | * the enclosed key identifier is unknown or invalid (e.g., the | |||
| corresponding key expired), | corresponding key expired), or | |||
| o the timestamp is invalid (Section 7.4). | * the timestamp is invalid (Section 7.4). | |||
| If the timestamp check is successfully passed, the SFC data plane | If the timestamp check is successfully passed, the SFC data plane | |||
| element proceeds with NSH data integrity validation. After storing | element proceeds with NSH data integrity validation. After storing | |||
| the value of the MAC field in the "MAC and Encrypted Metadata" | the value of the MAC field in the "MAC and Encrypted Metadata" | |||
| Context Header, the SFC data plane element fills the MAC field with | Context Header, the SFC data plane element fills the MAC field with | |||
| zeros. Then, the SFC data plane element generates the message | zeros. Then, the SFC data plane element generates the message | |||
| integrity for the target NSH data (depending on the integrity | integrity for the target NSH data (depending on the integrity- | |||
| protection scope discussed in Section 5) using MAC_KEY and HMAC | protection scope discussed in Section 5) using the MAC_KEY and HMAC | |||
| algorithm. If the value of the newly generated digest is identical | algorithm. If the value of the newly generated digest is identical | |||
| to the stored one, the SFC data plane element is certain that the NSH | to the stored one, the SFC data plane element is certain that the NSH | |||
| data has not been tampered and validation is therefore successful. | data has not been tampered with and validation is therefore | |||
| Otherwise, the NSH packet MUST be discarded. The comparison of the | successful. Otherwise, the NSH packet MUST be discarded. The | |||
| computed HMAC value to the stored value MUST be done in a constant- | comparison of the computed HMAC value to the stored value MUST be | |||
| time manner to thwart timing attacks. | done in a constant-time manner to thwart timing attacks. | |||
| 7.6. Decryption of NSH Metadata | 7.6. Decryption of NSH Metadata | |||
| If entitled to consume a supplied encrypted Context Header, an NSH- | If entitled to consume a supplied encrypted Context Header, an NSH- | |||
| aware SF or SFC Proxy decrypts metadata using (K) and decryption | aware SF or SFC Proxy decrypts metadata using (K) and a decryption | |||
| algorithm for the key identifier in the NSH. | algorithm for the key identifier in the NSH. | |||
| Authenticated encryption algorithm has only a single output, either a | The authenticated encryption algorithm has only a single output, | |||
| plaintext or a special symbol (FAIL) that indicates that the inputs | either a plaintext or a special symbol (FAIL) that indicates that the | |||
| are not authentic (Section 2.2 of [RFC5116]). | inputs are not authentic (Section 2.2 of [RFC5116]). | |||
| 8. MTU Considerations | 8. MTU Considerations | |||
| The SFC architecture prescribes that additional information be added | The SFC architecture prescribes that additional information be added | |||
| to packets to: | to packets to: | |||
| o Identify SFPs: this is typically the NSH Base Header and Service | * Identify SFPs: this is typically the NSH Base Header and Service | |||
| Path Header. | Path Header. | |||
| o Carry metadata such as those defined in Section 5. | * Carry metadata such as that defined in Section 5. | |||
| o Steer the traffic along the SFPs: transport encapsulation. | * Steer the traffic along the SFPs: This is realized by means of | |||
| transport encapsulation. | ||||
| This added information increases the size of the packet to be carried | This added information increases the size of the packet to be carried | |||
| along an SFP. | along an SFP. | |||
| Aligned with Section 5 of [RFC8300], it is RECOMMENDED for network | Aligned with Section 5 of [RFC8300], it is RECOMMENDED that network | |||
| operators to increase the underlying MTU so that NSH traffic is | operators increase the underlying MTU so that NSH traffic is | |||
| forwarded within an SFC-enabled domain without fragmentation. The | forwarded within an SFC-enabled domain without fragmentation. The | |||
| available underlying MTU should be taken into account by network | available underlying MTU should be taken into account by network | |||
| operators when providing SFs with the required Context Headers to be | operators when providing SFs with the required Context Headers to be | |||
| injected per SFP and the size of the data to be carried in these | injected per SFP and the size of the data to be carried in these | |||
| Context Headers. | Context Headers. | |||
| If the underlying MTU cannot be increased to accommodate the NSH | If the underlying MTU cannot be increased to accommodate the NSH | |||
| overhead, network operators may rely upon a transport encapsulation | overhead, network operators may rely upon a transport encapsulation | |||
| protocol with the required fragmentation handling. The impact of | protocol with the required fragmentation handling. The impact of | |||
| activating such feature on SFFs should be carefully assessed by | activating such features on SFFs should be carefully assessed by | |||
| network operators (Section 5.6 of [RFC7665]). | network operators (Section 5.6 of [RFC7665]). | |||
| When dealing with MTU issues, network operators should consider the | When dealing with MTU issues, network operators should consider the | |||
| limitations of various tunnel mechanisms such as those discussed in | limitations of various tunnel mechanisms such as those discussed in | |||
| [I-D.ietf-intarea-tunnels]. | [INTERNET-IP-TUNNELS]. | |||
| 9. Security Considerations | 9. Security Considerations | |||
| Data plane SFC-related security considerations, including privacy, | Data plane SFC-related security considerations, including privacy, | |||
| are discussed in Section 6 of [RFC7665] and Section 8 of [RFC8300]. | are discussed in Section 6 of [RFC7665] and Section 8 of [RFC8300]. | |||
| In particular, Section 8.2.2 of [RFC8300] states that attached | In particular, Section 8.2.2 of [RFC8300] states that attached | |||
| metadata (i.e., Context Headers) should be limited to that necessary | metadata (i.e., Context Headers) should be limited to that which is | |||
| for correct operation of the SFP. Also, that section indicates that | necessary for correct operation of the SFP. Also, that section | |||
| [RFC8165] discusses metadata considerations that operators can take | indicates that [RFC8165] discusses metadata considerations that | |||
| into account when using NSH. | operators can take into account when using NSH. | |||
| The guidelines for cryptographic key management are discussed in | The guidelines for cryptographic key management are discussed in | |||
| [RFC4107]. The group key management protocol related security | [RFC4107]. The group key management protocol-related security | |||
| considerations discussed in Section 8 of [RFC4046] needs to be taken | considerations discussed in Section 8 of [RFC4046] need to be taken | |||
| into consideration. | into consideration. | |||
| The interaction between the SFC data plane elements and a key | The interaction between the SFC data plane elements and a key | |||
| management system MUST NOT be transmitted in clear since this would | management system MUST NOT be transmitted unencrypted since this | |||
| completely destroy the security benefits of the integrity protection | would completely destroy the security benefits of the integrity- | |||
| solution defined in this document. | protection solution defined in this document. | |||
| The secret key (K) must have an expiration time assigned as the | The secret key (K) must have an expiration time assigned as the | |||
| latest point in time before which the key may be used for integrity | latest point in time before which the key may be used for integrity | |||
| protection of NSH data and encryption of Context Headers. Prior to | protection of NSH data and encryption of Context Headers. Prior to | |||
| the expiration of the secret key, all participating NSH-aware nodes | the expiration of the secret key, all participating NSH-aware nodes | |||
| SHOULD have the control plane distribute a new key identifier and | SHOULD have the control plane distribute a new key identifier and | |||
| associated keying material so that when the secret key is expired, | associated keying material so that when the secret key is expired, | |||
| those nodes are prepared with the new secret key. This allows the | those nodes are prepared with the new secret key. This allows the | |||
| NSH imposer to switch to the new key identifier as soon as necessary. | NSH imposer to switch to the new key identifier as soon as necessary. | |||
| It is RECOMMENDED that the next key identifier and associated keying | It is RECOMMENDED that the next key identifier and associated keying | |||
| material be distributed by the control plane well prior to the secret | material be distributed by the control plane well prior to the secret | |||
| key expiration time. Additional guidance for users of AEAD functions | key expiration time. Additional guidance for users of AEAD functions | |||
| about rekeying can be found in [I-D.irtf-cfrg-aead-limits]. | about rekeying can be found in [AEAD-LIMITS]. | |||
| The security and integrity of the key-distribution mechanism is vital | The security and integrity of the key-distribution mechanism is vital | |||
| to the security of the SFC system as a whole. | to the security of the SFC system as a whole. | |||
| NSH data are exposed to several threats: | NSH data is exposed to several threats: | |||
| o A on-path attacker modifying the NSH data. | * An on-path attacker modifying the NSH data. | |||
| o Attacker spoofing the NSH data. | * An attacker spoofing the NSH data. | |||
| o Attacker capturing and replaying the NSH data. | * An attacker capturing and replaying the NSH data. | |||
| o Data carried in Context Headers revealing privacy-sensitive | * Data carried in Context Headers revealing privacy-sensitive | |||
| information to attackers. | information to attackers. | |||
| o Attacker replacing the packet on which the NSH is imposed with a | * An attacker replacing the packet on which the NSH is imposed with | |||
| modified or bogus packet. | a modified or bogus packet. | |||
| In an SFC-enabled domain where the above attacks are possible, (1) | In an SFC-enabled domain where the above attacks are possible, (1) | |||
| NSH data MUST be integrity-protected and replay-protected, and (2) | NSH data MUST be integrity protected and replay protected, and (2) | |||
| privacy-sensitive NSH metadata MUST be encrypted for confidentiality | privacy-sensitive NSH metadata MUST be encrypted for confidentiality | |||
| preservation purposes. The Base and Service Path headers are not | preservation purposes. The Base and Service Path Headers are not | |||
| encrypted. | encrypted. | |||
| MACs with two levels of assurance are defined in Section 5. | MACs with two levels of assurance are defined in Section 5. | |||
| Considerations specific to each level of assurance are discussed in | Considerations specific to each level of assurance are discussed in | |||
| Sections 9.1 and 9.2. | Sections 9.1 and 9.2. | |||
| The attacks discussed in [I-D.nguyen-sfc-security-architecture] are | The attacks discussed in [ARCH-SFC-THREATS] are handled based on the | |||
| handled owing to the solution specified in this document, except for | solution specified in this document, with the exception of attacks | |||
| attacks dropping packets. Such attacks can be detected relying upon | dropping packets. Such attacks can be detected by relying upon | |||
| statistical analysis; such analysis is out of the scope of this | statistical analysis; such analysis is out of the scope of this | |||
| document. Also, if SFFs are not involved in the integrity checks, a | document. Also, if SFFs are not involved in the integrity checks, a | |||
| misbehaving SFF which decrements SI while this should be done by an | misbehaving SFF that decrements SI while this should be done by an SF | |||
| SF (SF bypass attack) will be detected by an upstream SF because the | (SF bypass attack) will be detected by an upstream SF because the | |||
| integrity check will fail. | integrity check will fail. | |||
| Some events are logged locally with notification alerts sent by NSH- | Some events are logged locally with notification alerts sent by NSH- | |||
| aware nodes to a Control Element. These events SHOULD be rate- | aware nodes to a Control Element. These events SHOULD be rate | |||
| limited. | limited. | |||
| The solution specified in this document does not provide data origin | The solution specified in this document does not provide data origin | |||
| authentication. | authentication. | |||
| In order to detect compromised nodes, it is assumed that appropriate | In order to detect compromised nodes, it is assumed that appropriate | |||
| mechanisms to monitor and audit an SFC-enabled domain to detect | mechanisms to monitor and audit an SFC-enabled domain to detect | |||
| misbehavior and to deter misuse are in place. Compromised nodes can | misbehavior and to deter misuse are in place. Compromised nodes can | |||
| thus be withdrawn from active service function chains using | thus be withdrawn from active service function chains using | |||
| appropriate control plane mechanisms. | appropriate control plane mechanisms. | |||
| 9.1. MAC#1 | 9.1. MAC#1 | |||
| An active attacker can potentially modify the Base header (e.g., | An active attacker can potentially modify the Base Header (e.g., | |||
| decrement the TTL so the next SFF in the SFP discards the NSH | decrement the TTL so the next SFF in the SFP discards the NSH | |||
| packet). An active attacker can typically also drop NSH packets. As | packet). An active attacker can typically also drop NSH packets. As | |||
| such, this attack is not considered an attack against the security | such, this attack is not considered an attack against the security | |||
| mechanism specified in the document. | mechanism specified in the document. | |||
| It is expected that specific devices in the SFC-enabled domain will | It is expected that specific devices in the SFC-enabled domain will | |||
| be configured such that no device other than the classifiers (when | be configured such that no device other than the Classifiers (when | |||
| reclassification is enabled), NSH-aware SFs, and SFC proxies will be | reclassification is enabled), NSH-aware SFs, and SFC proxies will be | |||
| able to update the integrity protected NSH data (Section 7.1), and | able to update the integrity-protected NSH data (Section 7.1), and no | |||
| also such that no device other than the NSH-aware SFs and SFC proxies | device other than the NSH-aware SFs and SFC proxies will be able to | |||
| will be able to decrypt and update the Context Headers carrying | decrypt and update the Context Headers carrying sensitive metadata | |||
| sensitive metadata (Section 7.1). In other words, if the NSH-aware | (Section 7.1). In other words, it is expected that the NSH-aware SFs | |||
| SFs and SFC proxies in the SFC-enabled domain are considered fully | and SFC proxies in the SFC-enabled domain are considered fully | |||
| trusted to act on the NSH data. Only these elements can have access | trusted to act on the NSH data. Only these elements can have access | |||
| to sensitive NSH metadata and the keying material used to integrity | to sensitive NSH metadata and the keying material used to integrity | |||
| protect NSH data and encrypt Context Headers. | protect NSH data and encrypt Context Headers. | |||
| 9.2. MAC#2 | 9.2. MAC#2 | |||
| SFFs can detect whether an illegitimate node has altered the content | SFFs can detect whether an illegitimate node has altered the content | |||
| of the Base header. Such messages must be discarded with appropriate | of the Base Header. Such messages must be discarded with appropriate | |||
| logs and alarms generated (see Section 7.1). | logs and alarms generated (see Section 7.1). | |||
| Similar to Section 9.1, no device other than the NSH-aware SFs and | Similar to Section 9.1, no device other than the NSH-aware SFs and | |||
| SFC proxies in the SFC-enabled domain should be able to decrypt and | SFC proxies in the SFC-enabled domain should be able to decrypt and | |||
| update the Context Headers carrying sensitive metadata. | update the Context Headers carrying sensitive metadata. | |||
| 9.3. Time Synchronization | 9.3. Time Synchronization | |||
| [RFC8633] describes best current practices to be considered in | [RFC8633] describes best current practices to be considered in | |||
| deployments where SFC data plane elements use NTP for time | deployments where SFC data plane elements use NTP for time- | |||
| synchronization purposes. | synchronization purposes. | |||
| Also, a mechanism to provide cryptographic security for NTP is | Also, a mechanism to provide cryptographic security for NTP is | |||
| specified in [RFC8915]. | specified in [RFC8915]. | |||
| 10. IANA Considerations | 10. IANA Considerations | |||
| This document requests IANA to assign the following types from the | IANA has added the following types to the "NSH IETF-Assigned Optional | |||
| "NSH IETF-Assigned Optional Variable-Length Metadata Types" (0x0000 | Variable-Length Metadata Types" registry (0x0000 IETF Base NSH MD | |||
| IETF Base NSH MD Class) registry available at: | Class) at <https://www.iana.org/assignments/nsh>. | |||
| https://www.iana.org/assignments/nsh/nsh.xhtml#optional-variable- | ||||
| length-metadata-types. | ||||
| +-------+-------------------------------+----------------+ | ||||
| | Value | Description | Reference | | ||||
| +=======+===============================+================+ | ||||
| | TBD1 | MAC and Encrypted Metadata #1 | [ThisDocument] | | ||||
| | TBD2 | MAC and Encrypted Metadata #2 | [ThisDocument] | | ||||
| +-------+-------------------------------+----------------+ | ||||
| 11. Acknowledgements | ||||
| This document was edited as a follow-up to the discussion in | ||||
| IETF#104: https://datatracker.ietf.org/meeting/104/materials/slides- | ||||
| 104-sfc-sfc-chair-slides-01 (slide 7). | ||||
| Thanks to Joel Halpern, Christian Jacquenet, Dirk von Hugo, Tal | ||||
| Mizrahi, Daniel Migault, Diego Lopez, Greg Mirsky, and Dhruv Dhody | ||||
| for the comments. | ||||
| Many thanks to Steve Hanna for the valuable secdir review and Juergen | ||||
| Schoenwaelder for the opsdir review. | ||||
| Thanks to Greg Mirsky for the Shepherd review. | +=======+===============================+===========+ | |||
| | Value | Description | Reference | | ||||
| +=======+===============================+===========+ | ||||
| | 0x02 | MAC and Encrypted Metadata #1 | RFC 9145 | | ||||
| +-------+-------------------------------+-----------+ | ||||
| | 0x03 | MAC and Encrypted Metadata #2 | RFC 9145 | | ||||
| +-------+-------------------------------+-----------+ | ||||
| Thanks to Alvaro Retana, Lars Eggert, Martin Duke, Erik Kline, | Table 4: Additions to the NSH IETF-Assigned | |||
| Zaheduzzaman Sarker, Eric Vyncke, Roman Danyliw, Murray Kucherawy, | Optional Variable-Length Metadata Types Registry | |||
| John Scudder, and Benjamin Kaduk for the IESG review. | ||||
| 12. References | 11. References | |||
| 12.1. Normative References | 11.1. Normative References | |||
| [GCM] Dworkin, M., "Recommendation for Block Cipher Modes of | [GCM] Dworkin, M., "Recommendation for Block Cipher Modes of | |||
| Operation: Galois/Counter Mode (GCM) and GMAC", | Operation: Galois/Counter Mode (GCM) and GMAC", | |||
| NIST Special Publication 800-38D, November 2007. | NIST Special Publication 800-38D, | |||
| DOI 10.6028/NIST.SP.800-38D, November 2007, | ||||
| <https://doi.org/10.6028/NIST.SP.800-38D>. | ||||
| [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- | [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- | |||
| Hashing for Message Authentication", RFC 2104, | Hashing for Message Authentication", RFC 2104, | |||
| DOI 10.17487/RFC2104, February 1997, | DOI 10.17487/RFC2104, February 1997, | |||
| <https://www.rfc-editor.org/info/rfc2104>. | <https://www.rfc-editor.org/info/rfc2104>. | |||
| [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>. | |||
| skipping to change at page 28, line 28 ¶ | skipping to change at line 1242 ¶ | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8300] Quinn, P., Ed., Elzur, U., Ed., and C. Pignataro, Ed., | [RFC8300] Quinn, P., Ed., Elzur, U., Ed., and C. Pignataro, Ed., | |||
| "Network Service Header (NSH)", RFC 8300, | "Network Service Header (NSH)", RFC 8300, | |||
| DOI 10.17487/RFC8300, January 2018, | DOI 10.17487/RFC8300, January 2018, | |||
| <https://www.rfc-editor.org/info/rfc8300>. | <https://www.rfc-editor.org/info/rfc8300>. | |||
| 12.2. Informative References | 11.2. Informative References | |||
| [I-D.arkko-farrell-arch-model-t] | [AEAD-LIMITS] | |||
| Arkko, J. and S. Farrell, "Challenges and Changes in the | Günther, F., Thomson, M., and C. A. Wood, "Usage Limits on | |||
| Internet Threat Model", draft-arkko-farrell-arch-model- | AEAD Algorithms", Work in Progress, Internet-Draft, draft- | |||
| t-04 (work in progress), July 2020. | irtf-cfrg-aead-limits-03, 12 July 2021, | |||
| <https://datatracker.ietf.org/doc/html/draft-irtf-cfrg- | ||||
| aead-limits-03>. | ||||
| [I-D.ietf-intarea-tunnels] | [ARCH-SFC-THREATS] | |||
| Touch, J. and M. Townsley, "IP Tunnels in the Internet | THANG, N. C. and M. Park, "A Security Architecture Against | |||
| Architecture", draft-ietf-intarea-tunnels-10 (work in | Service Function Chaining Threats", Work in Progress, | |||
| progress), September 2019. | Internet-Draft, draft-nguyen-sfc-security-architecture-00, | |||
| 24 November 2019, <https://datatracker.ietf.org/doc/html/ | ||||
| draft-nguyen-sfc-security-architecture-00>. | ||||
| [I-D.irtf-cfrg-aead-limits] | [INTERNET-IP-TUNNELS] | |||
| Guenther, F., Thomson, M., and C. A. Wood, "Usage Limits | Touch, J. and M. Townsley, "IP Tunnels in the Internet | |||
| on AEAD Algorithms", draft-irtf-cfrg-aead-limits-03 (work | Architecture", Work in Progress, Internet-Draft, draft- | |||
| in progress), July 2021. | ietf-intarea-tunnels-10, 12 September 2019, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-intarea- | ||||
| tunnels-10>. | ||||
| [I-D.nguyen-sfc-security-architecture] | [INTERNET-THREAT-MODEL] | |||
| THANG, N. C. and M. Park, "A Security Architecture Against | Arkko, J. and S. Farrell, "Challenges and Changes in the | |||
| Service Function Chaining Threats", draft-nguyen-sfc- | Internet Threat Model", Work in Progress, Internet-Draft, | |||
| security-architecture-00 (work in progress), November | draft-arkko-farrell-arch-model-t-04, 13 July 2020, | |||
| 2019. | <https://datatracker.ietf.org/doc/html/draft-arkko- | |||
| farrell-arch-model-t-04>. | ||||
| [RFC4046] Baugher, M., Canetti, R., Dondeti, L., and F. Lindholm, | [RFC4046] Baugher, M., Canetti, R., Dondeti, L., and F. Lindholm, | |||
| "Multicast Security (MSEC) Group Key Management | "Multicast Security (MSEC) Group Key Management | |||
| Architecture", RFC 4046, DOI 10.17487/RFC4046, April 2005, | Architecture", RFC 4046, DOI 10.17487/RFC4046, April 2005, | |||
| <https://www.rfc-editor.org/info/rfc4046>. | <https://www.rfc-editor.org/info/rfc4046>. | |||
| [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, | [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, | |||
| "Network Time Protocol Version 4: Protocol and Algorithms | "Network Time Protocol Version 4: Protocol and Algorithms | |||
| Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, | Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, | |||
| <https://www.rfc-editor.org/info/rfc5905>. | <https://www.rfc-editor.org/info/rfc5905>. | |||
| skipping to change at page 30, line 15 ¶ | skipping to change at line 1327 ¶ | |||
| [RFC8877] Mizrahi, T., Fabini, J., and A. Morton, "Guidelines for | [RFC8877] Mizrahi, T., Fabini, J., and A. Morton, "Guidelines for | |||
| Defining Packet Timestamps", RFC 8877, | Defining Packet Timestamps", RFC 8877, | |||
| DOI 10.17487/RFC8877, September 2020, | DOI 10.17487/RFC8877, September 2020, | |||
| <https://www.rfc-editor.org/info/rfc8877>. | <https://www.rfc-editor.org/info/rfc8877>. | |||
| [RFC8915] Franke, D., Sibold, D., Teichel, K., Dansarie, M., and R. | [RFC8915] Franke, D., Sibold, D., Teichel, K., Dansarie, M., and R. | |||
| Sundblad, "Network Time Security for the Network Time | Sundblad, "Network Time Security for the Network Time | |||
| Protocol", RFC 8915, DOI 10.17487/RFC8915, September 2020, | Protocol", RFC 8915, DOI 10.17487/RFC8915, September 2020, | |||
| <https://www.rfc-editor.org/info/rfc8915>. | <https://www.rfc-editor.org/info/rfc8915>. | |||
| Acknowledgements | ||||
| This document was created as a follow-up to the discussion in IETF | ||||
| 104: <https://datatracker.ietf.org/meeting/104/materials/slides-104- | ||||
| sfc-sfc-chair-slides-01> (slide 7). | ||||
| Thanks to Joel Halpern, Christian Jacquenet, Dirk von Hugo, Tal | ||||
| Mizrahi, Daniel Migault, Diego Lopez, Greg Mirsky, and Dhruv Dhody | ||||
| for the comments. | ||||
| Many thanks to Steve Hanna for the valuable secdir review and Juergen | ||||
| Schoenwaelder for the opsdir review. | ||||
| Thanks to Greg Mirsky for the Shepherd review. | ||||
| Thanks to Alvaro Retana, Lars Eggert, Martin Duke, Erik Kline, | ||||
| Zaheduzzaman Sarker, Éric Vyncke, Roman Danyliw, Murray Kucherawy, | ||||
| John Scudder, and Benjamin Kaduk for the IESG review. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Mohamed Boucadair | Mohamed Boucadair | |||
| Orange | Orange | |||
| Rennes 35000 | 35000 Rennes | |||
| France | France | |||
| Email: mohamed.boucadair@orange.com | Email: mohamed.boucadair@orange.com | |||
| Tirumaleswar Reddy | Tirumaleswar Reddy.K | |||
| Akamai | Akamai | |||
| Embassy Golf Link Business Park | Embassy Golf Link Business Park | |||
| Bangalore, Karnataka 560071 | Bangalore 560071 | |||
| Karnataka | ||||
| India | India | |||
| Email: kondtir@gmail.com | Email: kondtir@gmail.com | |||
| Dan Wing | Dan Wing | |||
| Citrix Systems, Inc. | Citrix Systems, Inc. | |||
| USA | United States of America | |||
| Email: dwing-ietf@fuggles.com | Email: dwing-ietf@fuggles.com | |||
| End of changes. 172 change blocks. | ||||
| 405 lines changed or deleted | 424 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/ | ||||