| rfc9303.original | rfc9303.txt | |||
|---|---|---|---|---|
| Network Working Group F. Maino | Internet Engineering Task Force (IETF) F. Maino | |||
| Internet-Draft Cisco Systems | Request for Comments: 9303 Cisco Systems | |||
| Intended status: Standards Track V. Ermagan | Category: Standards Track V. Ermagan | |||
| Expires: January 8, 2023 Google | ISSN: 2070-1721 Google, Inc. | |||
| A. Cabellos | A. Cabellos | |||
| Universitat Politecnica de Catalunya | Universitat Politecnica de Catalunya | |||
| D. Saucez | D. Saucez | |||
| Inria | Inria | |||
| July 7, 2022 | October 2022 | |||
| LISP-Security (LISP-SEC) | Locator/ID Separation Protocol Security (LISP-SEC) | |||
| draft-ietf-lisp-sec-29 | ||||
| Abstract | Abstract | |||
| This memo specifies LISP-SEC, a set of security mechanisms that | This memo specifies Locator/ID Separation Protocol Security (LISP- | |||
| provides origin authentication, integrity and anti-replay protection | SEC), a set of security mechanisms that provides origin | |||
| to LISP's EID-to-RLOC mapping data conveyed via the mapping lookup | authentication, integrity, and anti-replay protection to the LISP's | |||
| process. LISP-SEC also enables verification of authorization on EID- | Endpoint-ID-to-Routing-Locator (EID-to-RLOC) mapping data conveyed | |||
| prefix claims in Map-Reply messages. | via the mapping lookup process. LISP-SEC also enables verification | |||
| of authorization on EID-Prefix claims in Map-Reply messages. | ||||
| 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 January 8, 2023. | 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/rfc9303. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 2. Requirements Notation . . . . . . . . . . . . . . . . . . . . 3 | 2. Requirements Notation | |||
| 3. Definition of Terms . . . . . . . . . . . . . . . . . . . . . 4 | 3. Definitions of Terms | |||
| 4. LISP-SEC Threat Model . . . . . . . . . . . . . . . . . . . . 4 | 4. LISP-SEC Threat Model | |||
| 5. Protocol Operations . . . . . . . . . . . . . . . . . . . . . 5 | 5. Protocol Operations | |||
| 6. LISP-SEC Control Messages Details . . . . . . . . . . . . . . 7 | 6. LISP-SEC Control Messages Details | |||
| 6.1. Encapsulated Control Message LISP-SEC Extensions . . . . 7 | 6.1. Encapsulated Control Message LISP-SEC Extensions | |||
| 6.2. Map-Reply LISP-SEC Extensions . . . . . . . . . . . . . . 10 | 6.2. Map-Reply LISP-SEC Extensions | |||
| 6.3. Map-Register LISP-SEC Extensions . . . . . . . . . . . . 11 | 6.3. Map-Register LISP-SEC Extensions | |||
| 6.4. ITR Processing: Generating a Map-Request . . . . . . . . 11 | 6.4. ITR Processing: Generating a Map-Request | |||
| 6.5. Encrypting and Decrypting an OTK . . . . . . . . . . . . 12 | 6.5. Encrypting and Decrypting an OTK | |||
| 6.5.1. Unencrypted OTK . . . . . . . . . . . . . . . . . . . 14 | 6.5.1. Unencrypted OTK | |||
| 6.6. Map-Resolver Processing . . . . . . . . . . . . . . . . . 14 | 6.6. Map-Resolver Processing | |||
| 6.7. Map-Server Processing . . . . . . . . . . . . . . . . . . 15 | 6.7. Map-Server Processing | |||
| 6.7.1. Generating a LISP-SEC Protected Encapsulated Map- | 6.7.1. Generating a LISP-SEC-Protected Encapsulated | |||
| Request . . . . . . . . . . . . . . . . . . . . . . . 16 | Map-Request | |||
| 6.7.2. Generating a Proxy Map-Reply . . . . . . . . . . . . 17 | 6.7.2. Generating a Proxy Map-Reply | |||
| 6.8. ETR Processing . . . . . . . . . . . . . . . . . . . . . 17 | 6.8. ETR Processing | |||
| 6.9. ITR Processing: Receiving a Map-Reply . . . . . . . . . . 18 | 6.9. ITR Processing: Receiving a Map-Reply | |||
| 6.9.1. Map-Reply Record Validation . . . . . . . . . . . . . 20 | 6.9.1. Map-Reply Record Validation | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 21 | 7. Security Considerations | |||
| 7.1. Mapping System Security . . . . . . . . . . . . . . . . . 21 | 7.1. Mapping System Security | |||
| 7.2. Random Number Generation . . . . . . . . . . . . . . . . 21 | 7.2. Random Number Generation | |||
| 7.3. Map-Server and ETR Colocation . . . . . . . . . . . . . . 21 | 7.3. Map-Server and ETR Colocation | |||
| 7.4. Deploying LISP-SEC . . . . . . . . . . . . . . . . . . . 22 | 7.4. Deploying LISP-SEC | |||
| 7.5. Shared Keys Provisioning . . . . . . . . . . . . . . . . 22 | 7.5. Shared Keys Provisioning | |||
| 7.6. Replay Attacks . . . . . . . . . . . . . . . . . . . . . 22 | 7.6. Replay Attacks | |||
| 7.7. Message Privacy . . . . . . . . . . . . . . . . . . . . . 22 | 7.7. Message Privacy | |||
| 7.8. Denial of Service and Distributed Denial of Service | 7.8. Denial-of-Service and Distributed Denial-of-Service Attacks | |||
| Attacks . . . . . . . . . . . . . . . . . . . . . . . . . 23 | 8. IANA Considerations | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23 | 8.1. ECM AD Type Registry | |||
| 8.1. ECM AD Type Registry . . . . . . . . . . . . . . . . . . 23 | 8.2. Map-Reply AD Types Registry | |||
| 8.2. Map-Reply AD Type Registry . . . . . . . . . . . . . . . 24 | 8.3. HMAC Functions | |||
| 8.3. HMAC Functions . . . . . . . . . . . . . . . . . . . . . 24 | 8.4. Key Wrap Functions | |||
| 8.4. Key Wrap Functions . . . . . . . . . . . . . . . . . . . 24 | 8.5. Key Derivation Functions | |||
| 8.5. Key Derivation Functions . . . . . . . . . . . . . . . . 25 | 9. References | |||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 25 | 9.1. Normative References | |||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 25 | 9.2. Informative References | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . 25 | Acknowledgments | |||
| 10.2. Informational References . . . . . . . . . . . . . . . . 27 | Authors' Addresses | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 | ||||
| 1. Introduction | 1. Introduction | |||
| The Locator/ID Separation Protocol | The Locator/ID Separation Protocol (LISP) [RFC9300] [RFC9301] is a | |||
| [I-D.ietf-lisp-rfc6830bis],[I-D.ietf-lisp-rfc6833bis] is a network- | network-layer-based protocol that enables separation of IP addresses | |||
| layer-based protocol that enables separation of IP addresses into two | into two new numbering spaces: Endpoint Identifiers (EIDs) and | |||
| new numbering spaces: Endpoint Identifiers (EIDs) and Routing | Routing Locators (RLOCs). EID-to-RLOC mappings are stored in a | |||
| Locators (RLOCs). EID-to-RLOC mappings are stored in a database, the | database and the LISP Mapping System, and they are made available via | |||
| LISP Mapping System, and made available via the Map-Request/Map-Reply | the Map-Request/Map-Reply lookup process. If these EID-to-RLOC | |||
| lookup process. If these EID-to-RLOC mappings, carried through Map- | mappings, carried through Map-Reply messages, are transmitted without | |||
| Reply messages, are transmitted without integrity protection, an | integrity protection, an adversary can manipulate them and hijack the | |||
| adversary can manipulate them and hijack the communication, | communication, impersonate the requested EID, or mount Denial-of- | |||
| impersonate the requested EID, or mount Denial of Service or | Service (DoS) or Distributed Denial-of-Service (DDoS) attacks. Also, | |||
| Distributed Denial of Service attacks. Also, if the Map-Reply | if the Map-Reply message is transported unauthenticated, an | |||
| message is transported unauthenticated, an adversarial LISP entity | adversarial LISP entity can overclaim an EID-Prefix and maliciously | |||
| can overclaim an EID-prefix and maliciously redirect traffic. The | redirect traffic. The LISP-SEC threat model, described in Section 4, | |||
| LISP-SEC threat model, described in Section 4, is built on top of the | is built on top of the LISP threat model defined in [RFC7835], which | |||
| LISP threat model defined in [RFC7835], that includes a detailed | includes a detailed description of an "overclaiming" attack. | |||
| description of "overclaiming" attack. | ||||
| This memo specifies LISP-SEC, a set of security mechanisms that | This memo specifies LISP-SEC, a set of security mechanisms that | |||
| provides origin authentication, integrity and anti-replay protection | provides origin authentication, integrity, and anti-replay protection | |||
| to LISP's EID-to-RLOC mapping data conveyed via mapping lookup | to LISP's EID-to-RLOC mapping data conveyed via the mapping lookup | |||
| process. LISP-SEC also enables verification of authorization on EID- | process. LISP-SEC also enables verification of authorization on EID- | |||
| prefix claims in Map-Reply messages, ensuring that the sender of a | Prefix claims in Map-Reply messages, ensuring that the sender of a | |||
| Map-Reply that provides the location for a given EID-prefix is | Map-Reply that provides the location for a given EID-Prefix is | |||
| entitled to do so according to the EID prefix registered in the | entitled to do so according to the EID-Prefix registered in the | |||
| associated Map-Server. Map-Register/Map-Notify security, including | associated Map-Server. Map-Register/Map-Notify security, including | |||
| the right for a LISP entity to register an EID-prefix or to claim | the right for a LISP entity to register an EID-Prefix or to claim | |||
| presence at an RLOC, is out of the scope of LISP-SEC as those | presence at an RLOC, is out of the scope of LISP-SEC, as those | |||
| protocols are protected by the security mechanisms specified in | protocols are protected by the security mechanisms specified in | |||
| [I-D.ietf-lisp-rfc6833bis]. However, LISP-SEC extends the Map- | [RFC9301]. However, LISP-SEC extends the Map-Register message to | |||
| Register message to allow an ITR to downgrade to non LISP-SEC Map- | allow an Ingress Tunnel Router (ITR) to downgrade to non-LISP-SEC | |||
| Requests. Additional security considerations are described in | Map-Requests. Additional security considerations are described in | |||
| Section 6. | Section 7. | |||
| 2. Requirements Notation | 2. Requirements Notation | |||
| 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 BCP | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 3. Definition of Terms | 3. Definitions of Terms | |||
| One-Time Key (OTK): An ephemeral randomly generated key that must | One-Time Key (OTK): An ephemeral randomly generated key that must be | |||
| be used for a single Map-Request/Map-Reply exchange. | used for a single Map-Request/Map-Reply exchange. | |||
| ITR One-Time Key (ITR-OTK): The One-Time Key generated at the | ITR One-Time Key (ITR-OTK): The One-Time Key generated at the | |||
| Ingress Tunnel Router (ITR). | Ingress Tunnel Router (ITR). | |||
| MS One-Time Key (MS-OTK): The One-Time Key generated at the Map- | MS One-Time Key (MS-OTK): The One-Time Key generated at the Map- | |||
| Server. | Server. | |||
| Authentication Data (AD): Metadata that is included either in a | Authentication Data (AD): Metadata that is included either in a LISP | |||
| LISP Encapsulated Control Message (ECM) header, as defined in | Encapsulated Control Message (ECM) header as defined in [RFC9301], | |||
| [I-D.ietf-lisp-rfc6833bis], or in a Map-Reply message to support | or in a Map-Reply message to support confidentiality, integrity | |||
| confidentiality, integrity protection, and verification of EID- | protection, and verification of EID-Prefix authorization. | |||
| prefix authorization. | ||||
| OTK Authentication Data (OTK-AD): The portion of ECM | OTK Authentication Data (OTK-AD): The portion of ECM Authentication | |||
| Authentication Data that contains a One-Time Key. | Data that contains a One-Time Key. | |||
| EID Authentication Data (EID-AD): The portion of ECM and Map-Reply | EID Authentication Data (EID-AD): The portion of ECM and Map-Reply | |||
| Authentication Data used for verification of EID-prefix | Authentication Data used for verification of EID-Prefix | |||
| authorization. | authorization. | |||
| Packet Authentication Data (PKT-AD): The portion of Map-Reply | Packet Authentication Data (PKT-AD): The portion of Map-Reply | |||
| Authentication Data used to protect the integrity of the Map-Reply | Authentication Data used to protect the integrity of the Map-Reply | |||
| message. | message. | |||
| For definitions of other terms, notably Map-Request, Map-Reply, | For definitions of other terms, notably Map-Request, Map-Reply, | |||
| Ingress Tunnel Router (ITR), Egress Tunnel Router (ETR), Map-Server | Ingress Tunnel Router (ITR), Egress Tunnel Router (ETR), Map-Server | |||
| (MS), and Map-Resolver (MR) please consult the LISP specification | (MS), and Map-Resolver (MR), please consult the LISP specification | |||
| [I-D.ietf-lisp-rfc6833bis]. | [RFC9301]. | |||
| 4. LISP-SEC Threat Model | 4. LISP-SEC Threat Model | |||
| LISP-SEC addresses the control plane threats, described in section | LISP-SEC addresses the control plane threats, described in Sections | |||
| 3.7 and 3.8 of [RFC7835], that target EID-to-RLOC mappings, including | 3.7 and 3.8 of [RFC7835], that target EID-to-RLOC mappings, including | |||
| manipulations of Map-Request and Map-Reply messages, and malicious | manipulations of Map-Request and Map-Reply messages and malicious ETR | |||
| ETR EID prefix overclaiming. LISP-SEC makes two main assumptions: | EID-Prefix overclaiming. LISP-SEC makes two main assumptions: (1) | |||
| (1) the LISP mapping system is expected to deliver a Map-Request | the LISP Mapping System is expected to deliver a Map-Request message | |||
| message to their intended destination ETR as identified by the EID, | to their intended destination ETR as identified by the EID, and (2) | |||
| and (2) no on-path attack can be mounted within the LISP Mapping | no on-path attack can be mounted within the LISP Mapping System. How | |||
| System. How the Mapping System is protected from on-path attacks | the Mapping System is protected from on-path attacks depends on the | |||
| depends from the particular Mapping System used, and is out of the | particular Mapping System used and is out of the scope of this memo. | |||
| scope of this memo. Furthermore, while LISP-SEC enables detection of | Furthermore, while LISP-SEC enables detection of EID-Prefix | |||
| EID prefix overclaiming attacks, it assumes that Map-Servers can | overclaiming attacks, it assumes that Map-Servers can verify the EID- | |||
| verify the EID prefix authorization at registration time. | Prefix authorization at registration time. | |||
| According to the threat model described in [RFC7835] LISP-SEC assumes | According to the threat model described in [RFC7835], LISP-SEC | |||
| that any kind of attack, including on-path attacks, can be mounted | assumes that any kind of attack, including on-path attacks, can be | |||
| outside of the boundaries of the LISP mapping system. An on-path | mounted outside of the boundaries of the LISP Mapping System. An on- | |||
| attacker, outside of the LISP mapping system can, for example, hijack | path attacker outside of the LISP Mapping System can, for example, | |||
| Map-Request and Map-Reply messages, spoofing the identity of a LISP | hijack Map-Request and Map-Reply messages, spoofing the identity of a | |||
| node. Another example of on-path attack, called overclaiming attack, | LISP node. Another example of an on-path attack, called an | |||
| can be mounted by a malicious Egress Tunnel Router (ETR), by | overclaiming attack, can be mounted by a malicious ETR by | |||
| overclaiming the EID-prefixes for which it is authoritative. In this | overclaiming the EID-Prefixes for which it is authoritative. In this | |||
| way the ETR can maliciously redirect traffic. | way, the ETR can maliciously redirect traffic. | |||
| 5. Protocol Operations | 5. Protocol Operations | |||
| The goal of the security mechanisms defined in | The goal of the security mechanisms defined in [RFC9301] is to | |||
| [I-D.ietf-lisp-rfc6833bis] is to prevent unauthorized insertion of | prevent unauthorized insertion of mapping data by providing origin | |||
| mapping data by providing origin authentication and integrity | authentication and integrity protection for the Map-Register and by | |||
| protection for the Map-Register, and by using the nonce to detect | using the nonce to detect an unsolicited Map-Reply sent by off-path | |||
| unsolicited Map-Reply sent by off-path attackers. | attackers. | |||
| LISP-SEC builds on top of the security mechanisms defined in to | LISP-SEC builds on top of the security mechanisms defined in | |||
| address the threats described in Section 4 by leveraging the trust | [RFC9301] to address the threats described in Section 4 by leveraging | |||
| relationships existing among the LISP entities | the trust relationships existing among the LISP entities [RFC9301] | |||
| ([I-D.ietf-lisp-rfc6833bis]) participating in the exchange of the | participating in the exchange of the Map-Request/Map-Reply messages. | |||
| Map-Request/Map-Reply messages. Those trust relationships (see also | Those trust relationships (see also Section 7 and [RFC9301]) are used | |||
| Section 7 and [I-D.ietf-lisp-rfc6833bis]) are used to securely | to securely distribute, as described in Section 8.4, a per-message | |||
| distribute, as described in Section 8.4, a per-message One-Time Key | One-Time Key (OTK) that provides origin authentication, integrity, | |||
| (OTK) that provides origin authentication, integrity and anti-replay | and anti-replay protection to mapping data conveyed via the mapping | |||
| protection to mapping data conveyed via the mapping lookup process, | lookup process and that effectively prevents overclaiming attacks. | |||
| and that effectively prevent overclaiming attacks. The processing of | The processing of security parameters during the Map-Request/Map- | |||
| security parameters during the Map-Request/Map-Reply exchange is as | Reply exchange is as follows: | |||
| follows: | ||||
| o Per each Map-Request message a new ITR-OTK is generated and stored | * Per each Map-Request message, a new ITR-OTK is generated and | |||
| at the ITR, and securely transported to the Map-Server. | stored at the ITR and is securely transported to the Map-Server. | |||
| o The Map-Server uses the ITR-OTK to compute a Keyed-Hashing for | * The Map-Server uses the ITR-OTK to compute a Hashed Message | |||
| Message Authentication (HMAC) [RFC2104] that protects the | Authentication Code (HMAC) [RFC2104] that protects the integrity | |||
| integrity of the mapping data known to the Map-Server to prevent | of the mapping data known to the Map-Server to prevent | |||
| overclaiming attacks. The Map-Server also derives a new OTK, the | overclaiming attacks. The Map-Server also derives a new OTK, the | |||
| MS-OTK, that is passed to the ETR, by applying a Key Derivation | MS-OTK, that is passed to the ETR by applying a Key Derivation | |||
| Function (KDF) (e.g. [RFC5869]) to the ITR-OTK. | Function (KDF) (e.g., [RFC5869]) to the ITR-OTK. | |||
| o The ETR uses the MS-OTK to compute an HMAC that protects the | * The ETR uses the MS-OTK to compute an HMAC that protects the | |||
| integrity of the Map-Reply sent to the ITR. | integrity of the Map-Reply sent to the ITR. | |||
| o Finally, the ITR uses the stored ITR-OTK to verify the integrity | * Finally, the ITR uses the stored ITR-OTK to verify the integrity | |||
| of the mapping data provided by both the Map-Server and the ETR, | of the mapping data provided by both the Map-Server and the ETR, | |||
| and to verify that no overclaiming attacks were mounted along the | and to verify that no overclaiming attacks were mounted along the | |||
| path between the Map-Server and the ITR. | path between the Map-Server and the ITR. | |||
| Section 6 provides the detailed description of the LISP-SEC control | Section 6 provides the detailed description of the LISP-SEC control | |||
| messages and their processing, while the rest of this section | messages and their processing, while the rest of this section | |||
| describes the flow of LISP protocol operations at each entity | describes the flow of LISP protocol operations at each entity | |||
| involved in the Map-Request/Map-Reply exchange: | involved in the Map-Request/Map-Reply exchange: | |||
| 1. The ITR, upon needing to transmit a Map-Request message, | 1. The ITR, upon needing to transmit a Map-Request message, | |||
| generates and stores an OTK (ITR-OTK). This ITR-OTK is encrypted | generates and stores an OTK (ITR-OTK). This ITR-OTK is encrypted | |||
| and included into the Encapsulated Control Message (ECM) that | and included into the Encapsulated Control Message (ECM) that | |||
| contains the Map-Request sent to the Map-Resolver. | contains the Map-Request sent to the Map-Resolver. | |||
| 2. The Map-Resolver decapsulates the ECM message, decrypts the ITR- | 2. The Map-Resolver decapsulates the ECM, decrypts the ITR-OTK (if | |||
| OTK, if needed, and forwards through the Mapping System the | needed), and forwards through the Mapping System the received | |||
| received Map-Request and the ITR-OTK, as part of a new ECM | Map-Request and the ITR-OTK, as part of a new ECM. The LISP | |||
| message. The LISP Mapping System delivers the ECM to the | Mapping System delivers the ECM to the appropriate Map-Server, as | |||
| appropriate Map-Server, as identified by the EID destination | identified by the EID destination address of the Map-Request. | |||
| address of the Map-Request. | ||||
| 3. The Map-Server is configured with the location mappings and | 3. The Map-Server is configured with the location mappings and | |||
| policy information for the ETR responsible for the EID | policy information for the ETR responsible for the EID | |||
| destination address. Using this preconfigured information, the | destination address. Using this preconfigured information, the | |||
| Map-Server, after the decapsulation of the ECM message, finds the | Map-Server, after the decapsulation of the ECM, finds the | |||
| longest match EID-prefix that covers the requested EID in the | longest-match EID-Prefix that covers the requested EID in the | |||
| received Map-Request. The Map-Server adds this EID-prefix, | received Map-Request. The Map-Server adds this EID-Prefix, | |||
| together with an HMAC computed using the ITR-OTK, to a new | together with an HMAC computed using the ITR-OTK, to a new ECM | |||
| Encapsulated Control Message that contains the received Map- | that contains the received Map-Request. | |||
| Request. | ||||
| 4. The Map-Server derives a new OTK, the MS-OTK, by applying a Key | 4. The Map-Server derives a new OTK, the MS-OTK, by applying a KDF | |||
| Derivation Function (KDF) to the ITR-OTK. This MS-OTK is | to the ITR-OTK. This MS-OTK is included in the ECM that the Map- | |||
| included in the Encapsulated Control Message that the Map-Server | Server uses to forward the Map-Request to the ETR. | |||
| uses to forward the Map-Request to the ETR. | ||||
| 5. If the Map-Server is acting in proxy mode, as specified in | 5. If the Map-Server is acting in proxy mode, as specified in | |||
| [I-D.ietf-lisp-rfc6833bis], the ETR is not involved in the | [RFC9301], the ETR is not involved in the generation of the Map- | |||
| generation of the Map-Reply and steps 6 and 7 are skipped. In | Reply and steps 6 and 7 are skipped. In this case, the Map- | |||
| this case the Map-Server generates the Map-Reply on behalf of the | Server generates the Map-Reply on behalf of the ETR, as described | |||
| ETR as described in Section 6.7.2. | in Section 6.7.2. | |||
| 6. The ETR, upon receiving the ECM encapsulated Map-Request from the | 6. The ETR, upon receiving the ECM-Encapsulated Map-Request from the | |||
| Map-Server, decrypts the MS-OTK, if needed, and originates a Map- | Map-Server, decrypts the MS-OTK (if needed), and originates a | |||
| Reply that contains the EID-to-RLOC mapping information as | Map-Reply that contains the EID-to-RLOC mapping information as | |||
| specified in [I-D.ietf-lisp-rfc6833bis]. | specified in [RFC9301]. | |||
| 7. The ETR computes an HMAC over the Map-Reply, keyed with MS-OTK to | 7. The ETR computes an HMAC over the Map-Reply, keyed with MS-OTK to | |||
| protect the integrity of the whole Map-Reply. The ETR also | protect the integrity of the whole Map-Reply. The ETR also | |||
| copies the EID-prefix authorization data that the Map-Server | copies the EID-Prefix authorization data that the Map-Server | |||
| included in the ECM encapsulated Map-Request into the Map-Reply | included in the ECM-Encapsulated Map-Request into the Map-Reply | |||
| message. The ETR then sends the complete Map-Reply message to | message. The ETR then sends the complete Map-Reply message to | |||
| the requesting ITR. | the requesting ITR. | |||
| 8. The ITR, upon receiving the Map-Reply, uses the locally stored | 8. The ITR, upon receiving the Map-Reply, uses the locally stored | |||
| ITR-OTK to verify the integrity of the EID-prefix authorization | ITR-OTK to verify the integrity of the EID-Prefix authorization | |||
| data included in the Map-Reply by the Map-Server. The ITR | data included in the Map-Reply by the Map-Server. The ITR | |||
| computes the MS-OTK by applying the same KDF (as specified in the | computes the MS-OTK by applying the same KDF (as specified in the | |||
| ECM encapsulated Map-Reply) used by the Map-Server, and verifies | ECM-Encapsulated Map-Reply) used by the Map-Server and verifies | |||
| the integrity of the Map-Reply. | the integrity of the Map-Reply. | |||
| 6. LISP-SEC Control Messages Details | 6. LISP-SEC Control Messages Details | |||
| LISP-SEC metadata associated with a Map-Request is transported within | LISP-SEC metadata associated with a Map-Request is transported within | |||
| the Encapsulated Control Message that contains the Map-Request. | the Encapsulated Control Message that contains the Map-Request. | |||
| LISP-SEC metadata associated with the Map-Reply is transported within | LISP-SEC metadata associated with the Map-Reply is transported within | |||
| the Map-Reply itself. | the Map-Reply itself. | |||
| These specifications use Keyed-Hashing for Message Authentication | These specifications use an HMAC in various places (as described in | |||
| (HMAC) in various places (as described in the following). The HMAC | the following). The HMAC function AUTH-HMAC-SHA-256-128 [RFC6234] | |||
| function AUTH-HMAC-SHA-256-128 [RFC6234] MUST be supported in LISP- | MUST be supported in LISP-SEC implementations. LISP-SEC deployments | |||
| SEC implementations. LISP-SEC deployments SHOULD use AUTH-HMAC-SHA- | SHOULD use the AUTH-HMAC-SHA-256-128 HMAC function, except when | |||
| 256-128 HMAC function, except when communicating with older | communicating with older implementations that only support AUTH-HMAC- | |||
| implementations that only support AUTH-HMAC-SHA-1-96 [RFC2104]. | SHA-1-96 [RFC2104]. | |||
| 6.1. Encapsulated Control Message LISP-SEC Extensions | 6.1. Encapsulated Control Message LISP-SEC Extensions | |||
| LISP-SEC uses the ECM defined in [I-D.ietf-lisp-rfc6833bis] with S | LISP-SEC uses the ECM defined in [RFC9301] with the S-bit set to 1 to | |||
| bit set to 1 to indicate that the LISP header includes Authentication | indicate that the LISP header includes Authentication Data (AD). The | |||
| Data (AD). The format of the LISP-SEC ECM Authentication Data is | format of the LISP-SEC ECM AD is defined in Figure 1. OTK-AD stands | |||
| defined in Figure 1 . OTK-AD stands for One-Time Key Authentication | for One-Time Key Authentication Data and EID-AD stands for EID | |||
| Data and EID-AD stands for EID Authentication Data. | Authentication Data. | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | ECM AD Type | Unassigned | Requested HMAC ID | | | ECM AD Type | Unassigned | Requested HMAC ID | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ | |||
| | OTK Length | Key ID | OTK Wrap. ID | | | | OTK Length | Key ID | OTK Wrap. ID | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | One-Time-Key Preamble ... | | | | One-Time-Key Preamble ... | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+OTK-AD | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+OTK-AD | |||
| | ... One-Time-Key Preamble | | | | ... One-Time-Key Preamble | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| ~ One-Time Key (128 bits) ~/ | ~ One-Time Key (128 bits) ~/ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <---+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <---+ | |||
| | EID-AD Length | KDF ID | | | | EID-AD Length | KDF ID | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | Record Count |E| Unassigned | EID HMAC ID |EID-AD | | Record Count |E| Unassigned | EID HMAC ID |EID-AD | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ | | |||
| | Unassigned | EID mask-len | EID-AFI | | | | | Unassigned | EID mask-len | EID-AFI | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Rec | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Rec | | |||
| ~ EID-prefix ... ~ | | | ~ EID-Prefix ... ~ | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+/ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+/ | | |||
| ~ EID HMAC ~ | | ~ EID HMAC ~ | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <---+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <---+ | |||
| Figure 1: LISP-SEC ECM Authentication Data | Figure 1: LISP-SEC ECM Authentication Data | |||
| ECM AD Type: 1 (LISP-SEC Authentication Data). See Section 8. | ECM AD Type: 1 (LISP-SEC Authentication Data). See Section 8. | |||
| Unassigned: Set to 0 on transmission and ignored on receipt. | Unassigned: Set to 0 on transmission and ignored on receipt. | |||
| Requested HMAC ID: The HMAC algorithm, that will be used to | Requested HMAC ID: The HMAC algorithm, which will be used to protect | |||
| protect the mappings, requested by the ITR. Permitted values are | the mappings, requested by the ITR. Permitted values are | |||
| registered in the LISP-SEC Authentication Data HMAC ID (see | registered in the LISP-SEC Authentication Data HMAC ID (see | |||
| Section 8.3). Refer to Section 6.4 for more details. | Section 8.3). Refer to Section 6.4 for more details. | |||
| OTK Length: The length (in bytes) of the OTK Authentication Data | OTK Length: The length (in bytes) of the OTK Authentication Data | |||
| (OTK-AD), that contains the OTK Preamble and the OTK. | (OTK-AD), which contains the OTK Preamble and the OTK. | |||
| Key ID: The identifier of the pre-shared secret shared by an ITR | Key ID: The identifier of the pre-shared secret shared by an ITR and | |||
| and the Map-Resolver, and by the Map-Server and an ETR. Per- | the Map-Resolver, and by the Map-Server and an ETR. Per-message | |||
| message keys are derived from the pre-shared secret to encrypt, | keys are derived from the pre-shared secret to encrypt, | |||
| authenticate the origin and protect the integrity of the OTK. The | authenticate the origin, and protect the integrity of the OTK. | |||
| Key ID allows to rotate between multiple pre-shared secrets in a | The Key ID allows to rotate between multiple pre-shared secrets in | |||
| non disruptive way. | a nondisruptive way. | |||
| OTK Wrapping ID (OTK Wrap. ID): The identifier of the key | OTK Wrapping ID (OTK Wrap. ID): The identifier of the Key Derivation | |||
| derivation function and of the key wrapping algorithm used to | Function and of the key wrapping algorithm used to encrypt the | |||
| encrypt the One-Time-Key. Permitted values are registered in the | One-Time-Key. Permitted values are registered in the LISP-SEC | |||
| LISP-SEC Authentication Data Key Wrap ID (see Section 8.4). Refer | Authentication Data Key Wrap ID (see Section 8.4). Refer to | |||
| to Section 6.5 for more details. | Section 6.5 for more details. | |||
| One-Time-Key Preamble: set to 0 if the OTK is not encrypted. When | One-Time-Key Preamble: Set to 0 if the OTK is not encrypted. When | |||
| the OTK is encrypted, this field MAY carry additional metadata | the OTK is encrypted, this field MAY carry additional metadata | |||
| resulting from the key wrapping operation. When a 128-bit OTK is | resulting from the key wrapping operation. When a 128-bit OTK is | |||
| sent unencrypted by a Map-Resolver, the OTK Preamble is set to | sent unencrypted by a Map-Resolver, the OTK Preamble is set to | |||
| 0x0000000000000000 (64 bits). See Section 6.5.1 for details. | 0x0000000000000000 (64 bits). See Section 6.5.1 for details. | |||
| One-Time-Key: the OTK wrapped as specified by OTK Wrapping ID. | One-Time-Key: The OTK wrapped as specified by OTK Wrapping ID. See | |||
| See Section 6.5 for details. | Section 6.5 for details. | |||
| EID-AD Length: length (in bytes) of the EID Authentication Data | EID-AD Length: Length (in bytes) of the EID Authentication Data | |||
| (EID-AD). The ITR MUST set the EID-AD Length to 4 bytes, as it | (EID-AD). The ITR MUST set the EID-AD Length to 4 bytes, as it | |||
| only fills the KDF ID field, and all the remaining fields part of | only fills the 'KDF ID' field, and all the remaining fields part | |||
| the EID-AD are not present. An EID-AD MAY contain multiple EID- | of the EID-AD are not present. An EID-AD MAY contain multiple | |||
| records. Each EID-record is 4-byte long plus the length of the | EID-Records. Each EID-Record is 4 bytes long, plus the length of | |||
| AFI-encoded EID-prefix. | the AFI-encoded EID-Prefix. | |||
| KDF ID: Identifier of the Key Derivation Function used to derive | KDF ID: Identifier of the Key Derivation Function used to derive the | |||
| the MS-OTK. Permitted values are registered in the LISP-SEC | MS-OTK. Permitted values are registered in the LISP-SEC | |||
| Authentication Data Key Derivation Function ID (see Section 8.5). | Authentication Data Key Derivation Function ID (see Section 8.5). | |||
| Refer to Section 6.7 for more details. | Refer to Section 6.7 for more details. | |||
| Record Count: As defined in Section 5.2 of | Record Count: As defined in Section 5.2 of [RFC9301]. | |||
| [I-D.ietf-lisp-rfc6833bis]. | ||||
| E: ETR-Cant-Sign bit. If this bit is set to 1, it signals to the | E: ETR-Cant-Sign bit. If this bit is set to 1, it signals to the | |||
| ITR that at least one of the ETRs authoritative for the EID | ITR that at least one of the ETRs that is authoritative for the | |||
| prefixes of this Map-Reply has not enabled LISP-SEC. Only a Map- | EID-Prefixes of this Map-Reply has not enabled LISP-SEC. Only a | |||
| Server can set this bit. See Section 6.7 for more details. | Map-Server can set this bit. See Section 6.7 for more details. | |||
| Unassigned: Set to 0 on transmission and ignored on receipt. | Unassigned: Set to 0 on transmission and ignored on receipt. | |||
| EID HMAC ID: Identifier of the HMAC algorithm used to protect the | EID HMAC ID: Identifier of the HMAC algorithm used to protect the | |||
| integrity of the EID-AD. This field is filled by the Map-Server | integrity of the EID-AD. This field is filled by the Map-Server | |||
| that computed the EID-prefix HMAC. See Section 6.7.1 for more | that computed the EID-Prefix HMAC. See Section 6.7.1 for more | |||
| details. | details. | |||
| EID mask-len: As defined in Section 5.2 of | EID mask-len: As defined in Section 5.2 of [RFC9301]. | |||
| [I-D.ietf-lisp-rfc6833bis]. | ||||
| EID-AFI: As defined in Section 5.2 of [I-D.ietf-lisp-rfc6833bis]. | EID-AFI: As defined in Section 5.2 of [RFC9301]. | |||
| EID-prefix: As defined in Section 5.2 of | EID-Prefix: As defined in Section 5.2 of [RFC9301]. | |||
| [I-D.ietf-lisp-rfc6833bis]. | ||||
| EID HMAC: HMAC of the EID-AD computed and inserted by a Map-Server | EID HMAC: HMAC of the EID-AD computed and inserted by a Map-Server. | |||
| See Section 6.7.1 for more details. | See Section 6.7.1 for more details. | |||
| 6.2. Map-Reply LISP-SEC Extensions | 6.2. Map-Reply LISP-SEC Extensions | |||
| LISP-SEC uses the Map-Reply defined in [I-D.ietf-lisp-rfc6833bis], | LISP-SEC uses the Map-Reply defined in [RFC9301], with Type set to 2 | |||
| with Type set to 2, and S-bit set to 1 to indicate that the Map-Reply | and S-bit set to 1 to indicate that the Map-Reply message includes | |||
| message includes Authentication Data (AD). The format of the LISP- | Authentication Data (AD). The format of the LISP-SEC Map-Reply | |||
| SEC Map-Reply Authentication Data is defined in Figure 2. PKT-AD is | Authentication Data is defined in Figure 2. PKT-AD is the Packet | |||
| the Packet Authentication Data that covers the Map-Reply payload. | Authentication Data that covers the Map-Reply payload. | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MR AD Type | Unassigned | | | MR AD Type | Unassigned | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <---+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <---+ | |||
| | EID-AD Length | KDF ID | | | | EID-AD Length | KDF ID | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | Record Count | Unassigned | EID HMAC ID |EID-AD | | Record Count | Unassigned | EID HMAC ID |EID-AD | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ | | |||
| | Unassigned | EID mask-len | EID-AFI | | | | | Unassigned | EID mask-len | EID-AFI | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Rec | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Rec | | |||
| ~ EID-prefix ... ~ | | | ~ EID-Prefix ... ~ | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+/ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+/ | | |||
| ~ EID HMAC ~ | | ~ EID HMAC ~ | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <---+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <---+ | |||
| | PKT-AD Length | PKT HMAC ID |\ | | PKT-AD Length | PKT HMAC ID |\ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| ~ PKT HMAC ~PKT-AD | ~ PKT HMAC ~PKT-AD | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+/ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+/ | |||
| Figure 2: LISP-SEC Map-Reply Authentication Data | Figure 2: LISP-SEC Map-Reply Authentication Data | |||
| MR AD Type: 1 (LISP-SEC Authentication Data). See Section 8. | MR AD Type: 1 (LISP-SEC Authentication Data). See Section 8. | |||
| EID-AD Length: length (in bytes) of the EID-AD (see Section 6.1). | EID-AD Length: Length (in bytes) of the EID-AD (see Section 6.1). | |||
| KDF ID: Identifier of the Key Derivation Function used to derive | KDF ID: Identifier of the Key Derivation Function used to derive MS- | |||
| MS-OTK (see Section 6.1). | OTK (see Section 6.1). | |||
| Record Count: The number of records in this Map-Reply message (see | Record Count: The number of records in this Map-Reply message (see | |||
| Section 6.1). | Section 6.1). | |||
| Unassigned: Set to 0 on transmission and ignored on receipt. | Unassigned: Set to 0 on transmission and ignored on receipt. | |||
| EID HMAC ID: Identifier of the HMAC algorithm used to protect the | EID HMAC ID: Identifier of the HMAC algorithm used to protect the | |||
| integrity of the EID-AD (see Section 6.1). | integrity of the EID-AD (see Section 6.1). | |||
| EID mask-len: Mask length for EID-prefix (see Section 6.1). | EID mask-len: Mask length for EID-Prefix (see Section 6.1). | |||
| EID-AFI: See Section 6.1. . | EID-AFI: See Section 6.1. | |||
| EID-prefix: See Section 6.1. | EID-Prefix: See Section 6.1. | |||
| EID HMAC: See Section 6.1. | EID HMAC: See Section 6.1. | |||
| PKT-AD Length: length (in bytes) of the Packet Authentication Data | PKT-AD Length: Length (in bytes) of the Packet Authentication Data | |||
| (PKT-AD). | (PKT-AD). | |||
| PKT HMAC ID: Identifier of the HMAC algorithm used to protect the | PKT HMAC ID: Identifier of the HMAC algorithm used to protect the | |||
| integrity of the Map-Reply (see Section 6.5). | integrity of the Map-Reply (see Section 6.5). | |||
| PKT HMAC: HMAC of the whole Map-Reply packet, so to protect its | PKT HMAC: HMAC of the whole Map-Reply packet to protect its | |||
| integrity; including the LISP-SEC Authentication Data (from the | integrity, including the LISP-SEC Authentication Data (from the | |||
| Map-Reply Type field to the PKT HMAC field), which allow message | 'Map-Reply Type' field to the 'PKT HMAC' field), which allow | |||
| authetification. | message authentication. | |||
| 6.3. Map-Register LISP-SEC Extensions | 6.3. Map-Register LISP-SEC Extensions | |||
| The S bit in the Map-Register message (see | The S-bit in the Map-Register message (see [RFC9301]) indicates to | |||
| [I-D.ietf-lisp-rfc6833bis]) indicates to the Map-Server that the | the Map-Server that the registering ETR is LISP-SEC enabled. An ETR | |||
| registering ETR is LISP-SEC enabled. An ETR that supports LISP-SEC | that supports LISP-SEC MUST set the S-bit in its Map-Register | |||
| MUST set the S bit in its Map-Register messages. | messages. | |||
| 6.4. ITR Processing: Generating a Map-Request | 6.4. ITR Processing: Generating a Map-Request | |||
| Upon creating a Map-Request, the ITR generates a random ITR-OTK that | Upon creating a Map-Request, the ITR generates a random ITR-OTK that | |||
| is stored locally, until the corresponding Map-Reply is received (see | is stored locally, until the corresponding Map-Reply is received (see | |||
| Section 6.9), together with the nonce generated as specified in | Section 6.9), together with the nonce generated as specified in | |||
| [I-D.ietf-lisp-rfc6833bis]. | [RFC9301]. | |||
| The ITR MAY use the KDF ID field to indicate the recommended KDF | The ITR MAY use the 'KDF ID' field to indicate the recommended KDF | |||
| algorithm, according to local policy. The Map-Server can overwrite | algorithm according to local policy. The Map-Server can overwrite | |||
| the KDF ID if it does not support the KDF ID recommended by the ITR | the KDF ID if it does not support the KDF ID recommended by the ITR | |||
| (see Section 6.7). A KDF value of NOPREF (0) may be used to specify | (see Section 6.7). A KDF value of NOPREF (0) may be used to specify | |||
| that the ITR has no preferred KDF ID. | that the ITR has no preferred KDF ID. | |||
| ITR-OTK confidentiality and integrity protection MUST be provided in | ITR-OTK confidentiality and integrity protection MUST be provided in | |||
| the path between the ITR and the Map-Resolver. This can be achieved | the path between the ITR and the Map-Resolver. This can be achieved | |||
| either by encrypting the ITR-OTK with the pre-shared secret known to | either by encrypting the ITR-OTK with the pre-shared secret known to | |||
| the ITR and the Map-Resolver (see Section 6.5), or by enabling DTLS | the ITR and the Map-Resolver (see Section 6.5) or by enabling DTLS | |||
| [RFC9147] between the ITR and the Map-Resolver. | [RFC9147] between the ITR and the Map-Resolver. | |||
| The Map-Request (as defined in [I-D.ietf-lisp-rfc6833bis]) MUST be | The Map-Request (as defined in [RFC9301]) MUST be encapsulated as a | |||
| encapsulated as a LISP Control Message in an ECM, with the S-bit set | LISP Control Message in an ECM, with the S-bit set to 1, to indicate | |||
| to 1, to indicate the presence of Authentication Data. Such a | the presence of Authentication Data. Such a message is also called a | |||
| message is also called "Protected Map-Request" in this memo. | "Protected Map-Request" in this memo. | |||
| The ITR-OTK is wrapped with the algorithm specified by the OTK | The ITR-OTK is wrapped with the algorithm specified by the 'OTK | |||
| Wrapping ID field. See Section 6.5 for further details on OTK | Wrapping ID' field. See Section 6.5 for further details on OTK | |||
| encryption. If the NULL-KEY-WRAP-128 algorithm (see Section 8.4) is | encryption. If the NULL-KEY-WRAP-128 algorithm (see Section 8.4) is | |||
| selected, and no other encryption mechanism (e.g. DTLS) is enabled | selected, and no other encryption mechanism (e.g., DTLS) is enabled | |||
| in the path between the ITR and the Map-Resolver, the Map-Request | in the path between the ITR and the Map-Resolver, the Map-Request | |||
| MUST be dropped, and an appropriate log action SHOULD be taken. | MUST be dropped, and an appropriate log action SHOULD be taken. | |||
| Implementations may include mechanisms (which are beyond the scope of | Implementations may include mechanisms (which are beyond the scope of | |||
| this document) to avoid log resource exhaustion attacks. | this document) to avoid log resource exhaustion attacks. | |||
| The Requested HMAC ID field contains the suggested HMAC algorithm to | The 'Requested HMAC ID' field contains the suggested HMAC algorithm | |||
| be used by the Map-Server and the ETR to protect the integrity of the | to be used by the Map-Server and the ETR to protect the integrity of | |||
| ECM Authentication data and of the Map-Reply. A HMAC ID Value of | the ECM Authentication Data and of the Map-Reply. A HMAC ID value of | |||
| NONE (0), MAY be used to specify that the ITR has no preferred HMAC | NONE (0) MAY be used to specify that the ITR has no preferred HMAC | |||
| ID. | ID. | |||
| The KDF ID field specifies the suggested key derivation function to | The 'KDF ID' field specifies the suggested Key Derivation Function to | |||
| be used by the Map-Server to derive the MS-OTK. A KDF Value of NONE | be used by the Map-Server to derive the MS-OTK. A KDF value of NONE | |||
| (0) may be used to specify that the ITR has no preferred KDF ID. | (0) may be used to specify that the ITR has no preferred KDF ID. | |||
| The EID-AD length is set to 4 bytes, since the Authentication Data | The EID-AD Length is set to 4 bytes, since the Authentication Data | |||
| does not contain EID-prefix Authentication Data, and the EID-AD | does not contain EID-Prefix Authentication Data, and the EID-AD | |||
| contains only the KDF ID field. | contains only the 'KDF ID' field. | |||
| If the ITR is directly connected to a Mapping System, such as | If the ITR is directly connected to a Mapping System, such as | |||
| LISP+ALT [RFC6836], it performs the functions of both the ITR and the | LISP+ALT [RFC6836], it performs the functions of both the ITR and the | |||
| Map-Resolver, forwarding the Protected Map-Request as described in | Map-Resolver, forwarding the Protected Map-Request as described in | |||
| Section 6.6. | Section 6.6. | |||
| The processing performed by Proxy ITRs (PITRs) is equivalent to the | The processing performed by Proxy ITRs (PITRs) is equivalent to the | |||
| processing of an ITR, hence the procedure described above applies. | processing of an ITR; hence, the procedure described above applies. | |||
| 6.5. Encrypting and Decrypting an OTK | 6.5. Encrypting and Decrypting an OTK | |||
| MS-OTK confidentiality and integrity protection MUST be provided in | MS-OTK confidentiality and integrity protection MUST be provided in | |||
| the path between the Map-Server and the ETR. This can be achieved | the path between the Map-Server and the ETR. This can be achieved | |||
| either by enabling DTLS between the Map-Server and the ETR or by | either by enabling DTLS between the Map-Server and the ETR or by | |||
| encrypting the MS-OTK with the pre-shared secret known to the Map- | encrypting the MS-OTK with the pre-shared secret known to the Map- | |||
| Server and the ETR [I-D.ietf-lisp-rfc6833bis]. | Server and the ETR [RFC9301]. | |||
| Similarly, ITR-OTK confidentiality and integrity protection MUST be | Similarly, ITR-OTK confidentiality and integrity protection MUST be | |||
| provided in the path between the ITR and the Map-Resolver. This can | provided in the path between the ITR and the Map-Resolver. This can | |||
| be achieved either by enabling DTLS between the Map-Server and the | be achieved either by enabling DTLS between the Map-Server and the | |||
| ITR, or by encrypting the ITR-OTK with the pre-shared secret known to | ITR or by encrypting the ITR-OTK with the pre-shared secret known to | |||
| the ITR and the Map-Resolver. The ITR/Map-Resolver pre-shared key is | the ITR and the Map-Resolver. The ITR/Map-Resolver pre-shared key is | |||
| similar to the Map-Server/ETR pre-shared key. | similar to the Map-Server/ETR pre-shared key. | |||
| This section describes OTK processing in the ITR/Map-Resolver path, | This section describes OTK processing in the ITR/Map-Resolver path, | |||
| as well as in the Map-Server/ETR path. | as well as in the Map-Server/ETR path. | |||
| It's important to note that, to prevent ETR's overclaiming attacks, | It's important to note that, to prevent ETR's overclaiming attacks, | |||
| the ITR/Map-Resolver pre-shared secret MUST be independent from the | the ITR/Map-Resolver pre-shared secret MUST be independent from the | |||
| Map-Server/ETR pre-shared secret. | Map-Server/ETR pre-shared secret. | |||
| The OTK is wrapped using the algorithm specified in the OTK Wrapping | The OTK is wrapped using the algorithm specified in the 'OTK Wrapping | |||
| ID field. This field identifies both the: | ID' field. This field identifies both the: | |||
| o Key Encryption Algorithm used to encrypt the wrapped OTK. | * Key Encryption Algorithm used to encrypt the wrapped OTK and | |||
| o Key Derivation Function used to derive a per-message encryption | * Key Derivation Function used to derive a per-message encryption | |||
| key. | key. | |||
| Implementations of this specification MUST support OTK Wrapping ID | Implementations of this specification MUST support the OTK Wrapping | |||
| AES-KEY-WRAP-128+HKDF-SHA256 that specifies the use of the HKDF- | ID AES-KEY-WRAP-128+HKDF-SHA256, which specifies the use of the HKDF- | |||
| SHA256 Key Derivation Function specified in [RFC5869] to derive a | SHA256 Key Derivation Function specified in [RFC5869] to derive a | |||
| per-message encryption key (per-msg-key), as well as the AES-KEY- | per-message encryption key (per-msg-key), as well as the AES-KEY- | |||
| WRAP-128 Key Wrap algorithm used to encrypt a 128-bit OTK, according | WRAP-128 key wrap algorithm used to encrypt a 128-bit OTK, according | |||
| to [RFC3394]. | to [RFC3394]. | |||
| Implementations of this specification MUST support OTK Wrapping NULL- | Implementations of this specification MUST support OTK Wrapping NULL- | |||
| KEY-WRAP-128. NULL-KEY-WRAP-128 is used to carry an unencrypted | KEY-WRAP-128. NULL-KEY-WRAP-128 is used to carry an unencrypted | |||
| 128-bit OTK, with a 64-bit preamble set to 0x0000000000000000 (64 | 128-bit OTK, with a 64-bit preamble set to 0x0000000000000000 (64 | |||
| bits). | bits). | |||
| The key wrapping process for OTK Wrapping ID AES-KEY-WRAP-128+HKDF- | The key wrapping process for OTK Wrapping ID AES-KEY-WRAP-128+HKDF- | |||
| SHA256 is described below: | SHA256 is described below: | |||
| 1. The KDF and Key Wrap algorithms are identified by the value of | 1. The KDF and key wrap algorithms are identified by the value of | |||
| the 'OTK Wrapping ID' field. The initial values are documented | the 'OTK Wrapping ID' field. The initial values are documented | |||
| in Table 5. | in Table 5. | |||
| 2. If the NULL-KEY-WRAP-128 algorithm (see Section 8.4) is selected | 2. If the NULL-KEY-WRAP-128 algorithm (see Section 8.4) is selected | |||
| and DTLS is not enabled, the Map-Request MUST be dropped and an | and DTLS is not enabled, the Map-Request MUST be dropped and an | |||
| appropriate log action SHOULD be taken. Implementations may | appropriate log action SHOULD be taken. Implementations may | |||
| include mechanisms (which are beyond the scope of this document) | include mechanisms (which are beyond the scope of this document) | |||
| to avoid log resource exhaustion attacks. | to avoid log resource exhaustion attacks. | |||
| 3. The pre-shared secret used to derive the per-msg-key is | 3. The pre-shared secret used to derive the per-msg-key is | |||
| represented by PSK[Key ID], that is the pre-shared secret | represented by PSK[Key ID], which is the pre-shared secret | |||
| identified by the 'Key ID'. | identified by the 'Key ID'. | |||
| 4. The 128-bits long per-message encryption key is computed as: | 4. The 128-bit-long per-message encryption key is computed as: | |||
| * per-msg-key = KDF( nonce + s + PSK[Key ID] ) | per-msg-key = KDF( nonce + s + PSK[Key ID] ) | |||
| where the nonce is the value in the Nonce field of the Map- | ||||
| where the nonce is the value in the 'Nonce' field of the Map- | ||||
| Request, 's' is the string "OTK-Key-Wrap", and the operation'+' | Request, 's' is the string "OTK-Key-Wrap", and the operation'+' | |||
| just indicates string concatenation. | just indicates string concatenation. | |||
| 5. According to [RFC3394] the per-msg-key is used to wrap the OTK | 5. The per-msg-key is then used to wrap the OTK with AES-KEY-WRAP- | |||
| with AES-KEY-WRAP-128. The AES Key Wrap Initialization Value | 128, as specified in Section 2.2.1 of [RFC3394]. The AES Key | |||
| MUST be set to 0xA6A6A6A6A6A6A6A6 (64 bits). The output of the | Wrap Initialization Value MUST be set to 0xA6A6A6A6A6A6A6A6 (64 | |||
| AES Key Wrap operation is 192-bit long. The most significant | bits). The output of the AES key wrap operation is 192 bits | |||
| 64-bit are copied in the One-Time Key Preamble field, while the | long. The most significant 64 bits are copied in the 'One-Time | |||
| 128 less significant bits are copied in the One-Time Key field of | Key Preamble' field, while the 128 least significant bits are | |||
| the LISP-SEC Authentication Data. | copied in the 'One-Time Key' field of the LISP-SEC Authentication | |||
| Data. | ||||
| When decrypting an encrypted OTK the receiver MUST verify that the | When decrypting an encrypted OTK, the receiver MUST verify that the | |||
| Initialization Value resulting from the AES Key Wrap decryption | Initialization Value resulting from the AES key wrap decryption | |||
| operation is equal to 0xA6A6A6A6A6A6A6A6. If this verification fails | operation is equal to 0xA6A6A6A6A6A6A6A6. If this verification | |||
| the receiver MUST discard the entire message. | fails, the receiver MUST discard the entire message. | |||
| 6.5.1. Unencrypted OTK | 6.5.1. Unencrypted OTK | |||
| However, when DTLS is enabled the OTK MAY be sent unencrypted as | However, when DTLS is enabled, the OTK MAY be sent unencrypted as | |||
| transport layer security is providing confidentiality and integrity | transport layer security is providing confidentiality and integrity | |||
| protection. | protection. | |||
| When a 128-bit OTK is sent unencrypted the OTK Wrapping ID is set to | When a 128-bit OTK is sent unencrypted, the OTK Wrapping ID is set to | |||
| NULL_KEY_WRAP_128, and the OTK Preamble is set to 0x0000000000000000 | NULL_KEY_WRAP_128, and the OTK Preamble is set to 0x0000000000000000 | |||
| (64 bits). | (64 bits). | |||
| 6.6. Map-Resolver Processing | 6.6. Map-Resolver Processing | |||
| Upon receiving a Protected Map-Request, the Map-Resolver decapsulates | Upon receiving a Protected Map-Request, the Map-Resolver decapsulates | |||
| the ECM message. The ITR-OTK, if encrypted, is decrypted as | the ECM. The ITR-OTK, if encrypted, is decrypted as specified in | |||
| specified in Section 6.5. | Section 6.5. | |||
| Protecting the confidentiality of the ITR-OTK and, in general, the | Protecting the confidentiality of the ITR-OTK and, in general, the | |||
| security of how the Map-Request is handed by the Map-Resolver to the | security of how the Map-Request is handed by the Map-Resolver to the | |||
| Map-Server, is specific to the particular Mapping System used, and | Map-Server is specific to the particular Mapping System used and is | |||
| outside of the scope of this memo. | outside of the scope of this memo. | |||
| In Mapping Systems where the Map-Server is compliant with | In Mapping Systems where the Map-Server is compliant with [RFC9301], | |||
| [I-D.ietf-lisp-rfc6833bis], the Map-Resolver originates a new ECM | the Map-Resolver originates a new ECM header with the S-bit set, | |||
| header with the S-bit set, that contains the unencrypted ITR-OTK, as | which contains the unencrypted ITR-OTK, as specified in Section 6.5, | |||
| specified in Section 6.5, and the other data derived from the ECM | and the other data derived from the ECM Authentication Data of the | |||
| Authentication Data of the received encapsulated Map-Request. | received Encapsulated Map-Request. | |||
| The Map-Resolver then forwards to the Map-Server the received Map- | The Map-Resolver then forwards to the Map-Server the received Map- | |||
| Request, encapsulated in the new ECM header that includes the newly | Request, which is encapsulated in the new ECM header that includes | |||
| computed Authentication Data fields. | the newly computed 'Authentication Data' fields. | |||
| 6.7. Map-Server Processing | 6.7. Map-Server Processing | |||
| Upon receiving a Protected Map-Request, the Map-Server processes it | Upon receiving a Protected Map-Request, the Map-Server processes it | |||
| according to the setting of the S-bit and the P-bit in the Map- | according to the setting of the S-bit and the P-bit in the Map- | |||
| Register received from the ETRs authoritative for that prefix, as | Register received from the ETRs authoritative for that prefix, as | |||
| described below. | described below. | |||
| While processing the Map-Request, the Map-Server can overwrite the | While processing the Map-Request, the Map-Server can overwrite the | |||
| KDF ID field if it does not support the KDF ID recommended by the | 'KDF ID' field if it does not support the KDF ID recommended by the | |||
| ITR. Processing of the Map-Request MUST proceed in the order | ITR. Processing of the Map-Request MUST proceed in the order | |||
| described in the table below, applying the processing corresponding | described in the table below, applying the process corresponding to | |||
| to the first rule that matches the conditions indicated in the first | the first rule that matches the conditions indicated in the first | |||
| column: | column: | |||
| +---------------------+---------------------------------------------+ | +=================+==============================================+ | |||
| | Matching Condition | Processing | | | Matching | Processing | | |||
| +---------------------+---------------------------------------------+ | | Condition | | | |||
| | 1. At least one of | The Map-Server MUST generate a LISP-SEC | | +=================+==============================================+ | |||
| | the ETRs | protected Map-Reply as specified in | | | 1. At least | The Map-Server MUST generate a LISP-SEC- | | |||
| | authoritative for | Section 6.7.2. The ETR-Cant-Sign E-bit in | | | one of the ETRs | protected Map-Reply, as specified in | | |||
| | the EID prefix | the EID Authentication Data (EID-AD) MUST | | | authoritative | Section 6.7.2. The ETR-Cant-Sign E-bit in | | |||
| | included in the | be set to 0. | | | for the EID- | the EID Authentication Data (EID-AD) MUST be | | |||
| | Map-Request | | | | Prefix included | set to 0. | | |||
| | registered with the | | | | in the Map- | | | |||
| | P-bit set to 1 | | | | Request | | | |||
| | | | | | registered with | | | |||
| | 2. At least one of | The Map-Server MUST generate a LISP-SEC | | | the P-bit set | | | |||
| | the ETRs | protected Encapsulated Map-Request (as | | | to 1 | | | |||
| | authoritative for | specified in Section 6.7.1), to be sent to | | +-----------------+----------------------------------------------+ | |||
| | the EID prefix | one of the authoritative ETRs that | | | 2. At least | The Map-Server MUST generate a LISP-SEC- | | |||
| | included in the | registered with the S-bit set to 1 (and the | | | one of the ETRs | protected Encapsulated Map-Request (as | | |||
| | Map-Request | P-bit set to 0). If there is at least one | | | authoritative | specified in Section 6.7.1) to be sent to | | |||
| | registered with the | ETR that registered with the S-bit set to | | | for the EID- | one of the authoritative ETRs that | | |||
| | S-bit set to 1 | 0, the ETR-Cant-Sign E-bit of the EID-AD | | | Prefix included | registered with the S-bit set to 1 (and the | | |||
| | | MUST be set to 1 to signal the ITR that a | | | in the Map- | P-bit set to 0). If there is at least one | | |||
| | | non LISP-SEC Map-Request might reach | | | Request | ETR that registered with the S-bit set to 0, | | |||
| | | additional ETRs that have LISP-SEC | | | registered with | the ETR-Cant-Sign E-bit of the EID-AD MUST | | |||
| | | disabled. | | | the S-bit set | be set to 1 to signal the ITR that a non- | | |||
| | | | | | to 1 | LISP-SEC Map-Request might reach additional | | |||
| | 3. All the ETRs | The Map-Server MUST send a Negative Map- | | | | ETRs that have LISP-SEC disabled. | | |||
| | authoritative for | Reply protected with LISP-SEC, as described | | +-----------------+----------------------------------------------+ | |||
| | the EID prefix | in Section 6.7.2. The ETR-Cant-Sign E-bit | | | 3. All the | The Map-Server MUST send a Negative Map- | | |||
| | included in the | MUST be set to 1 to signal the ITR that a | | | ETRs | Reply protected with LISP-SEC, as described | | |||
| | Map-Request | non LISP-SEC Map-Request might reach | | | authoritative | in Section 6.7.2. The ETR-Cant-Sign E-bit | | |||
| | registered with the | additional ETRs that have LISP-SEC | | | for the EID- | MUST be set to 1 to signal the ITR that a | | |||
| | S-bit set to 0 | disabled. | | | Prefix included | non-LISP-SEC Map-Request might reach | | |||
| +---------------------+---------------------------------------------+ | | in the Map- | additional ETRs that have LISP-SEC disabled. | | |||
| | Request | | | ||||
| | registered with | | | ||||
| | the S-bit set | | | ||||
| | to 0 | | | ||||
| +-----------------+----------------------------------------------+ | ||||
| Table 1: Map-Request Processing. | Table 1: Map-Request Processing | |||
| In this way the ITR that sent a LISP-SEC protected Map-Request always | In this way, the ITR that sent a LISP-SEC-protected Map-Request | |||
| receives a LISP-SEC protected Map-Reply. However, the ETR-Cant-Sign | always receives a LISP-SEC-protected Map-Reply. However, the ETR- | |||
| E-bit set to 1 specifies that a non LISP-SEC Map-Request might reach | Cant-Sign E-bit set to 1 specifies that a non-LISP-SEC Map-Request | |||
| additional ETRs that have LISP-SEC disabled. This mechanism allows | might reach additional ETRs that have LISP-SEC disabled. This | |||
| the ITR to downgrade to non LISP-SEC requests, which does not protect | mechanism allows the ITR to downgrade to non-LISP-SEC requests, which | |||
| against threats described in Section 4. | does not protect against threats described in Section 4. | |||
| 6.7.1. Generating a LISP-SEC Protected Encapsulated Map-Request | 6.7.1. Generating a LISP-SEC-Protected Encapsulated Map-Request | |||
| The Map-Server decapsulates the ECM and generates a new ECM | The Map-Server decapsulates the ECM and generates new ECM | |||
| Authentication Data. The Authentication Data includes the OTK-AD and | Authentication Data. The Authentication Data includes the OTK-AD and | |||
| the EID-AD, that contains EID-prefix authorization information, that | the EID-AD, which contains EID-Prefix authorization information that | |||
| are eventually received by the requesting ITR. | are eventually received by the requesting ITR. | |||
| The Map-Server updates the OTK-AD by deriving a new OTK (MS-OTK) from | The Map-Server updates the OTK-AD by deriving a new OTK (MS-OTK) from | |||
| the ITR-OTK received with the Map-Request. MS-OTK is derived | the ITR-OTK received with the Map-Request. MS-OTK is derived by | |||
| applying the key derivation function specified in the KDF ID field. | applying the Key Derivation Function specified in the 'KDF ID' field. | |||
| If the algorithm specified in the KDF ID field is not supported, the | If the algorithm specified in the 'KDF ID' field is not supported, | |||
| Map-Server uses a different algorithm to derive the key and updates | the Map-Server uses a different algorithm to derive the key and | |||
| the KDF ID field accordingly. | updates the 'KDF ID' field accordingly. | |||
| The Map-Request MUST be encapsulated in an ECM, with the S-bit set to | The Map-Request MUST be encapsulated in an ECM, with the S-bit set to | |||
| 1, to indicate the presence of Authentication Data. | 1, to indicate the presence of Authentication Data. | |||
| MS-OTK is wrapped with the algorithm specified by the OTK Wrapping ID | MS-OTK is wrapped with the algorithm specified by the 'OTK Wrapping | |||
| field. See Section 6.5 for further details on OTK encryption. If | ID' field. See Section 6.5 for further details on OTK encryption. | |||
| the NULL-KEY-WRAP-128 algorithm is selected and DTLS is not enabled | If the NULL-KEY-WRAP-128 algorithm is selected and DTLS is not | |||
| in the path between the Map-Server and the ETR, the Map-Request MUST | enabled in the path between the Map-Server and the ETR, the Map- | |||
| be dropped and an appropriate log action SHOULD be taken. | Request MUST be dropped and an appropriate log action SHOULD be | |||
| taken. | ||||
| The Map-Server includes in the EID-AD the longest match registered | In the EID-AD, the Map-Server includes in the EID-AD the longest- | |||
| EID-prefix for the destination EID, and an HMAC of this EID-prefix. | match-registered EID-Prefix for the destination EID and an HMAC of | |||
| The HMAC is keyed with the ITR-OTK contained in the received ECM | this EID-Prefix. The HMAC is keyed with the ITR-OTK contained in the | |||
| Authentication Data, and the HMAC algorithm is chosen according to | received ECM Authentication Data, and the HMAC algorithm is chosen | |||
| the Requested HMAC ID field. If the Map-Server does not support this | according to the 'Requested HMAC ID' field. If the Map-Server does | |||
| algorithm, the Map-Server uses a different algorithm and specifies it | not support this algorithm, the Map-Server uses a different algorithm | |||
| in the EID HMAC ID field. The scope of the HMAC operation MUST cover | and specifies it in the 'EID HMAC ID' field. The scope of the HMAC | |||
| the entire EID-AD, from the EID-AD Length field to the EID HMAC | operation MUST cover the entire EID-AD, from the 'EID-AD Length' | |||
| field, which MUST be set to 0 before the computation. | field to the 'EID HMAC' field, which MUST be set to 0 before the | |||
| computation. | ||||
| The Map-Server then forwards the updated ECM encapsulated Map- | The Map-Server then forwards the updated ECM-Encapsulated Map- | |||
| Request, that contains the OTK-AD, the EID-AD, and the received Map- | Request, which contains the OTK-AD, the EID-AD, and the received Map- | |||
| Request to an authoritative ETR as specified in | Request to an authoritative ETR as specified in [RFC9301]. | |||
| [I-D.ietf-lisp-rfc6833bis]. | ||||
| 6.7.2. Generating a Proxy Map-Reply | 6.7.2. Generating a Proxy Map-Reply | |||
| LISP-SEC proxy Map-Reply are generated according to | A LISP-SEC proxy Map-Reply is generated according to [RFC9301], with | |||
| [I-D.ietf-lisp-rfc6833bis], with the Map-Reply S-bit set to 1. The | the Map-Reply S-bit set to 1. The Map-Reply includes the | |||
| Map-Reply includes the Authentication Data that contains the EID-AD, | Authentication Data that contains the EID-AD computed as specified in | |||
| computed as specified in Section 6.7.1, as well as the PKT-AD | Section 6.7.1, as well as the PKT-AD computed as specified in | |||
| computed as specified in Section 6.8. | Section 6.8. | |||
| 6.8. ETR Processing | 6.8. ETR Processing | |||
| Upon receiving an ECM encapsulated Map-Request with the S-bit set, | Upon receiving an ECM-Encapsulated Map-Request with the S-bit set, | |||
| the ETR decapsulates the ECM message. The OTK field, if encrypted, | the ETR decapsulates the ECM. The 'OTK' field, if encrypted, is | |||
| is decrypted as specified in Section 6.5 to obtain the unencrypted | decrypted as specified in Section 6.5 to obtain the unencrypted MS- | |||
| MS-OTK. | OTK. | |||
| The ETR then generates a Map-Reply as specified in | The ETR then generates a Map-Reply as specified in [RFC9301] and | |||
| [I-D.ietf-lisp-rfc6833bis] and includes the Authentication Data that | includes the Authentication Data that contains the EID-AD, as | |||
| contains the EID-AD, as received in the encapsulated Map-Request, as | received in the Encapsulated Map-Request, as well as the PKT-AD. | |||
| well as the PKT-AD. | ||||
| The EID-AD is copied from the Authentication Data of the received | The EID-AD is copied from the Authentication Data of the received | |||
| encapsulated Map-Request. | Encapsulated Map-Request. | |||
| The PKT-AD contains the HMAC of the whole Map-Reply packet, keyed | The PKT-AD contains the HMAC of the whole Map-Reply packet, keyed | |||
| with the MS-OTK and computed using the HMAC algorithm specified in | with the MS-OTK and computed using the HMAC algorithm specified in | |||
| the Requested HMAC ID field of the received encapsulated Map-Request. | the 'Requested HMAC ID' field of the received Encapsulated Map- | |||
| If the ETR does not support the Requested HMAC ID, it uses a | Request. If the ETR does not support the Requested HMAC ID, it uses | |||
| different algorithm and updates the PKT HMAC ID field accordingly. | a different algorithm and updates the 'PKT HMAC ID' field | |||
| The HMAC operation MUST cover the entire Map-Reply, where the PKT | accordingly. The HMAC operation MUST cover the entire Map-Reply, | |||
| HMAC field MUST be set to 0 before the computation. | where the 'PKT HMAC' field MUST be set to 0 before the computation. | |||
| Finally the ETR sends the Map-Reply to the requesting ITR as | Finally, the ETR sends the Map-Reply to the requesting ITR as | |||
| specified in [I-D.ietf-lisp-rfc6833bis]. | specified in [RFC9301]. | |||
| 6.9. ITR Processing: Receiving a Map-Reply | 6.9. ITR Processing: Receiving a Map-Reply | |||
| In response to a Protected Map-Request, an ITR expects a Map-Reply | In response to a Protected Map-Request, an ITR expects a Map-Reply | |||
| with the S-bit set to 1 including an EID-AD and a PKT-AD. The ITR | with the S-bit set to 1, including an EID-AD and a PKT-AD. The ITR | |||
| MUST discard the Map-Reply otherwise. | MUST discard the Map-Reply otherwise. | |||
| Upon receiving a Map-Reply, the ITR must verify the integrity of both | Upon receiving a Map-Reply, the ITR must verify the integrity of both | |||
| the EID-AD and the PKT-AD, and MUST discard the Map-Reply if one of | the EID-AD and the PKT-AD and MUST discard the Map-Reply if one of | |||
| the integrity checks fails. After processing the Map-Reply, the ITR | the integrity checks fails. After processing the Map-Reply, the ITR | |||
| MUST discard the <nonce,ITR-OTK> pair associated to the Map-Reply | MUST discard the <nonce,ITR-OTK> pair associated to the Map-Reply. | |||
| The integrity of the EID-AD is verified using the ITR-OTK (stored | The integrity of the EID-AD is verified using the ITR-OTK (stored | |||
| locally for the duration of this exchange) to re-compute the HMAC of | locally for the duration of this exchange) to recompute the HMAC of | |||
| the EID-AD using the algorithm specified in the EID HMAC ID field. | the EID-AD using the algorithm specified in the 'EID HMAC ID' field. | |||
| If the ITR did indicate a Requested HMAC ID in the Map-Request and | If the ITR did indicate a Requested HMAC ID in the Map-Request and | |||
| the PKT HAMC ID in the corresponding Map-Reply is different, or if | the PKT HAMC ID in the corresponding Map-Reply is different, or if | |||
| the ITR did not indicate a Requested HMAC ID in the Map-Request and | the ITR did not indicate a Requested HMAC ID in the Map-Request and | |||
| the PKT HMAC ID in the corresponding Map-Reply is not supported, then | the PKT HMAC ID in the corresponding Map-Reply is not supported, then | |||
| the ITR MUST discard the Map-Reply and send, according to rate | the ITR MUST discard the Map-Reply and send, according to rate- | |||
| limitation policies defined in [I-D.ietf-lisp-rfc6833bis], a new Map- | limitation policies defined in [RFC9301], a new Map-Request with a | |||
| Request with a different Requested HMAC ID field, according to ITR's | different 'Requested HMAC ID' field, according to ITR's local policy. | |||
| local policy. The scope of the HMAC operation covers the entire EID- | The scope of the HMAC operation covers the entire EID-AD, from the | |||
| AD, from the EID-AD Length field to the EID HMAC field. | 'EID-AD Length' field to the 'EID HMAC' field. | |||
| ITR MUST set the EID HMAC ID field to 0 before computing the HMAC. | ITR MUST set the 'EID HMAC ID' field to 0 before computing the HMAC. | |||
| To verify the integrity of the PKT-AD, first the MS-OTK is derived | To verify the integrity of the PKT-AD, first the MS-OTK is derived | |||
| from the locally stored ITR-OTK using the algorithm specified in the | from the locally stored ITR-OTK using the algorithm specified in the | |||
| KDF ID field. This is because the PKT-AD is generated by the ETR | 'KDF ID' field. This is because the PKT-AD is generated by the ETR | |||
| using the MS-OTK. If the ITR did indicate a recommended KDF ID in | using the MS-OTK. If the ITR did indicate a recommended KDF ID in | |||
| the Map-Request and the KDF ID in the corresponding Map-Reply is | the Map-Request and the KDF ID in the corresponding Map-Reply is | |||
| different, or if the ITR did not indicate a recommended KDF ID in the | different or if the ITR did not indicate a recommended KDF ID in the | |||
| Map-Request and the KDF ID in the corresponding Map-Reply is not | Map-Request and the KDF ID in the corresponding Map-Reply is not | |||
| supported, then the ITR MUST discard the Map-Reply and send, | supported, then the ITR MUST discard the Map-Reply and send, | |||
| according to rate limitation policies defined in | according to rate-limitation policies defined in [RFC9301], a new | |||
| [I-D.ietf-lisp-rfc6833bis], a new Map-Request with a different KDF | Map-Request with a different KDF ID, according to ITR's local policy. | |||
| ID, according to ITR's local policy. The key derivation function | The Key Derivation Function HKDF-SHA256 MUST be supported in LISP-SEC | |||
| HKDF-SHA256 MUST be supported in LISP-SEC implementations. LISP-SEC | implementations. LISP-SEC deployments SHOULD use the HKDF-SHA256 | |||
| deployments SHOULD use the HKDF-SHA256 HKDF function, unless older | HKDF function, unless older implementations using HKDF-SHA1-128 are | |||
| implementations using HKDF-SHA1-128 are present in the same | present in the same deployment. Without consistent configuration of | |||
| deployment. Without consistent configuration of involved entities, | involved entities, extra delays may be experienced. However, since | |||
| extra delays may be experienced. However, since HKDF-SHA1-128 and | HKDF-SHA1-128 and HKDF-SHA256 are supported, the process will | |||
| HKDF-SHA256 are supported, the process will eventually converge. | eventually converge. | |||
| The derived MS-OTK is then used to re-compute the HMAC of the PKT-AD | The derived MS-OTK is then used to recompute the HMAC of the PKT-AD | |||
| using the Algorithm specified in the PKT HMAC ID field. If the PKT | using the algorithm specified in the 'PKT HMAC ID' field. If the | |||
| HMAC ID field does not match the Requested HMAC ID the ITR MUST | 'PKT HMAC ID' field does not match the Requested HMAC ID, the ITR | |||
| discard the Map-Reply and send, according to rate limitation policies | MUST discard the Map-Reply and send, according to rate-limitation | |||
| defined in [I-D.ietf-lisp-rfc6833bis], a new Map-Request with a | policies defined in [RFC9301], a new Map-Request with a different | |||
| different Requested HMAC ID according to ITR's local policy or until | Requested HMAC ID, according to ITR's local policy or until all HMAC | |||
| all HMAC IDs supported by the ITR have been attempted. When the PKT | IDs supported by the ITR have been attempted. When the 'PKT HMAC ID' | |||
| HMAC ID field does not match the Requested HMAC ID it is not possible | field does not match the Requested HMAC ID, it is not possible to | |||
| to validate the Map-Reply. | validate the Map-Reply. | |||
| Each individual Map-Reply EID-record is considered valid only if: (1) | Each individual Map-Reply EID-Record is considered valid only if: (1) | |||
| both EID-AD and PKT-AD are valid, and (2) the intersection of the | both EID-AD and PKT-AD are valid and (2) the intersection of the EID- | |||
| EID-prefix in the Map-Reply EID-record with one of the EID-prefixes | Prefix in the Map-Reply EID-Record with one of the EID-Prefixes | |||
| contained in the EID-AD is not empty. After identifying the Map- | contained in the EID-AD is not empty. After identifying the Map- | |||
| Reply record as valid, the ITR sets the EID-prefix in the Map-Reply | Reply record as valid, the ITR sets the EID-Prefix in the Map-Reply | |||
| record to the value of the intersection set computed before, and adds | record to the value of the intersection set computed before and adds | |||
| the Map-Reply EID-record to its EID-to-RLOC cache, as described in | the Map-Reply EID-Record to its EID-to-RLOC Map-Cache, as described | |||
| [I-D.ietf-lisp-rfc6833bis]. An example of Map-Reply record | in [RFC9301]. An example of Map-Reply record validation is provided | |||
| validation is provided in Section 6.9.1. | in Section 6.9.1. | |||
| [I-D.ietf-lisp-rfc6833bis] allows ETRs to send Solicit-Map-Requests | [RFC9301] allows ETRs to send Solicit-Map-Requests (SMRs) directly to | |||
| (SMR) directly to the ITR. The corresponding SMR-invoked Map-Request | the ITR. The corresponding SMR-invoked Map-Request will be sent | |||
| will be sent through the mapping system, hence, secured with the | through the Mapping System, hence, secured with the specifications of | |||
| specifications of this memo if in use. If an ITR accepts Map-Replies | this memo if in use. If an ITR accepts Map-Replies piggybacked in | |||
| piggybacked in Map-Requests and its content is not already present in | Map-Requests and its content is not already present in its EID-to- | |||
| its EID-to-RLOC cache, it MUST send a Map-Request over the mapping | RLOC Map-Cache, it MUST send a Map-Request over the Mapping System in | |||
| system in order to verify its content with a secured Map-Reply, | order to verify its content with a secured Map-Reply before using the | |||
| before using the content. | content. | |||
| 6.9.1. Map-Reply Record Validation | 6.9.1. Map-Reply Record Validation | |||
| The payload of a Map-Reply may contain multiple EID-records. The | The payload of a Map-Reply may contain multiple EID-Records. The | |||
| whole Map-Reply is signed by the ETR, with the PKT HMAC, to provide | whole Map-Reply is signed by the ETR, with the PKT HMAC, to provide | |||
| integrity protection and origin authentication to the EID-prefix | integrity protection and origin authentication to the EID-Prefix | |||
| records claimed by the ETR. The Authentication Data field of a Map- | records claimed by the ETR. The 'Authentication Data' field of a | |||
| Reply may contain multiple EID-records in the EID-AD. The EID-AD is | Map-Reply may contain multiple EID-Records in the EID-AD. The EID-AD | |||
| signed by the Map-Server, with the EID HMAC, to provide integrity | is signed by the Map-Server, with the EID HMAC, to provide integrity | |||
| protection and origin authentication to the EID-prefix records | protection and origin authentication to the EID-Prefix records | |||
| inserted by the Map-Server. | inserted by the Map-Server. | |||
| Upon receiving a Map-Reply with the S-bit set, the ITR first checks | Upon receiving a Map-Reply with the S-bit set, the ITR first checks | |||
| the validity of both the EID HMAC and of the PKT-AD HMAC. If either | the validity of both the EID HMAC and of the PKT-AD HMAC. If either | |||
| one of the HMACs is not valid, a log action SHOULD be taken and the | one of the HMACs is not valid, a log action SHOULD be taken and the | |||
| Map-Reply MUST NOT be processed any further. Implementations may | Map-Reply MUST NOT be processed any further. Implementations may | |||
| include mechanisms (which are beyond the scope of this document) to | include mechanisms (which are beyond the scope of this document) to | |||
| avoid log resource exhaustion attacks. If both HMACs are valid, the | avoid log resource exhaustion attacks. If both HMACs are valid, the | |||
| ITR proceeds with validating each individual EID-record claimed by | ITR proceeds with validating each individual EID-Record claimed by | |||
| the ETR by computing the intersection of each one of the EID-prefix | the ETR by computing the intersection of each one of the EID-Prefixes | |||
| contained in the payload of the Map-Reply with each one of the EID- | contained in the payload of the Map-Reply, with each one of the EID- | |||
| prefixes contained in the EID-AD. An EID-record is valid only if at | Prefixes contained in the EID-AD. An EID-Record is valid only if at | |||
| least one of the intersections is not the empty set, otherwise, a log | least one of the intersections is not the empty set; otherwise, a log | |||
| action MUST be taken and the EID-record MUST be discarded. | action MUST be taken and the EID-Record MUST be discarded. | |||
| Implementations may include mechanisms (which are beyond the scope of | Implementations may include mechanisms (which are beyond the scope of | |||
| this document) to avoid log resource exhaustion attacks. | this document) to avoid log resource exhaustion attacks. | |||
| For instance, the Map-Reply payload contains 3 mapping record EID- | For instance, the Map-Reply payload contains 3 mapping record EID- | |||
| prefixes: | Prefixes: | |||
| 2001:db8:102::/48 | 2001:db8:102::/48 | |||
| 2001:db8:103::/48 | 2001:db8:103::/48 | |||
| 2001:db8:200::/40 | 2001:db8:200::/40 | |||
| The EID-AD contains two EID-prefixes: | The EID-AD contains two EID-Prefixes: | |||
| 2001:db8:103::/48 | 2001:db8:103::/48 | |||
| 2001:db8:203::/48 | 2001:db8:203::/48 | |||
| The EID-record with EID-prefix 2001:db8:102::/48 is not eligible to | The EID-Record with EID-Prefix 2001:db8:102::/48 is not eligible to | |||
| be used by the ITR since it is not included in any of the EID-ADs | be used by the ITR, since it is not included in any of the EID-ADs | |||
| signed by the Map-Server. A log action MUST be taken and the EID- | signed by the Map-Server. A log action MUST be taken, and the EID- | |||
| record MUST be discarded. Implementations may include mechanisms | Record MUST be discarded. Implementations may include mechanisms | |||
| (which are beyond the scope of this document) to avoid log resource | (which are beyond the scope of this document) to avoid log resource | |||
| exhaustion attacks. | exhaustion attacks. | |||
| The EID-record with EID-prefix 2001:db8:103::/48 is eligible to be | The EID-Record with EID-Prefix 2001:db8:103::/48 is eligible to be | |||
| used by the ITR because it matches the second EID-prefix contained in | used by the ITR because it matches the second EID-Prefix contained in | |||
| the EID-AD. | the EID-AD. | |||
| The EID-record with EID-prefix 2001:db8:200::/40 is not eligible to | The EID-Record with EID-Prefix 2001:db8:200::/40 is not eligible to | |||
| be used by the ITR since it is not included in any of the EID-ADs | be used by the ITR, since it is not included in any of the EID-ADs | |||
| signed by the Map-Server. A log action MUST be taken and the EID- | signed by the Map-Server. A log action MUST be taken and the EID- | |||
| record MUST be discarded. Implementations may include mechanisms | Record MUST be discarded. Implementations may include mechanisms | |||
| (which are beyond the scope of this document) to avoid log resource | (which are beyond the scope of this document) to avoid log resource | |||
| exhaustion attacks. In this last example the ETR is trying to over | exhaustion attacks. In this last example, the ETR is trying to over | |||
| claim the EID-prefix 2001:db8:200::/40, but the Map-Server authorized | claim the EID-Prefix 2001:db8:200::/40, but the Map-Server authorized | |||
| only 2001:db8:203::/48, hence the EID-record is discarded. | only 2001:db8:203::/48; hence, the EID-Record is discarded. | |||
| 7. Security Considerations | 7. Security Considerations | |||
| This document extends the LISP Control-Plane defined in | This document extends the LISP control plane defined in [RFC9301]; | |||
| [I-D.ietf-lisp-rfc6833bis], hence, its Security Considerations apply | hence, its security considerations apply to this document as well. | |||
| as well to this document. | ||||
| 7.1. Mapping System Security | 7.1. Mapping System Security | |||
| The LISP-SEC threat model described in Section 4, assumes that the | The LISP-SEC threat model described in Section 4 assumes that the | |||
| LISP Mapping System is working properly and delivers Map-Request | LISP Mapping System is working properly and delivers Map-Request | |||
| messages to a Map-Server that is authoritative for the requested EID. | messages to a Map-Server that is authoritative for the requested EID. | |||
| It is assumed that the Mapping System ensures the confidentiality of | It is assumed that the Mapping System ensures the confidentiality of | |||
| the OTK, and the integrity of the Map-Reply data. However, how the | the OTK and the integrity of the Map-Reply data. However, how the | |||
| LISP Mapping System is secured is out of the scope of this document. | LISP Mapping System is secured is out of the scope of this document. | |||
| Similarly, Map-Register security, including the right for a LISP | Similarly, Map-Register security, including the right for a LISP | |||
| entity to register an EID-prefix or to claim presence at an RLOC, is | entity to register an EID-Prefix or to claim presence at an RLOC, is | |||
| out of the scope of LISP-SEC. | out of the scope of LISP-SEC. | |||
| 7.2. Random Number Generation | 7.2. Random Number Generation | |||
| The ITR-OTK MUST be generated by a properly seeded pseudo-random (or | The ITR-OTK MUST be generated by a properly seeded pseudo-random (or | |||
| strong random) source. See [RFC4086] for advice on generating | strong random) source. See [RFC4086] for advice on generating | |||
| security-sensitive random data. | security-sensitive random data. | |||
| 7.3. Map-Server and ETR Colocation | 7.3. Map-Server and ETR Colocation | |||
| If the Map-Server and the ETR are colocated, LISP-SEC does not | If the Map-Server and the ETR are colocated, LISP-SEC does not | |||
| provide protection from overclaiming attacks mounted by the ETR. | provide protection from overclaiming attacks mounted by the ETR. | |||
| However, in this particular case, since the ETR is within the trust | However, in this particular case, since the ETR is within the trust | |||
| boundaries of the Map-Server, ETR's overclaiming attacks are not | boundaries of the Map-Server, ETR's overclaiming attacks are not | |||
| included in the threat model. | included in the threat model. | |||
| 7.4. Deploying LISP-SEC | 7.4. Deploying LISP-SEC | |||
| Those deploying LISP-SEC according to this memo, should carefully | Those deploying LISP-SEC according to this memo should carefully | |||
| weight how the LISP-SEC threat model applies to their particular use | weigh how the LISP-SEC threat model applies to their particular use | |||
| case or deployment. If they decide to ignore a particular | case or deployment. If they decide to ignore a particular | |||
| recommendation, they should make sure the risk associated with the | recommendation, they should make sure the risk associated with the | |||
| corresponding threats is well understood. | corresponding threats is well understood. | |||
| As an example, in certain other deployments, attackers may be very | As an example, in certain other deployments, attackers may be very | |||
| sophisticated, and force the deployers to enforce very strict | sophisticated and force the deployers to enforce very strict policies | |||
| policies in term of HMAC algorithms accepted by an ITR. | in terms of HMAC algorithms accepted by an ITR. | |||
| Similar considerations apply to the entire LISP-SEC threat model, and | Similar considerations apply to the entire LISP-SEC threat model and | |||
| should guide the deployers and implementors whenever they encounter | should guide the deployers and implementors whenever they encounter | |||
| the key word SHOULD across this memo. | the key word SHOULD across this memo. | |||
| 7.5. Shared Keys Provisioning | 7.5. Shared Keys Provisioning | |||
| Provisioning of the keys shared between ITR and Map-Resolver paris as | Provisioning of the keys shared between ITR and Map-Resolver pairs as | |||
| well as between ETR and Map-Server pairs should be performed via an | well as between ETR and Map-Server pairs should be performed via an | |||
| orchestration infrastructure and it is out of the scope of this memo. | orchestration infrastructure, and is out of the scope of this memo. | |||
| It is recommended that both shared keys are refreshed at periodical | It is recommended that both shared keys be refreshed at periodical | |||
| intervals to address key aging or attackers gaining unauthorized | intervals to address key aging or attackers gaining unauthorized | |||
| access to the shared keys. Shared keys should be unpredictable | access to the shared keys. Shared keys should be unpredictable | |||
| random values. | random values. | |||
| 7.6. Replay Attacks | 7.6. Replay Attacks | |||
| An attacker can capture a valid Map-Request and/or Map-Reply and | An attacker can capture a valid Map-Request and/or Map-Reply and | |||
| replay it, however once the ITR receives the original Map-Reply the | replay it; however, once the ITR receives the original Map-Reply, the | |||
| <nonce,ITR-OTK> pair stored at the ITR will be discarded. If a | <nonce,ITR-OTK> pair stored at the ITR will be discarded. If a | |||
| replayed Map-Reply arrives at the ITR, there is no <nonce,ITR-OTK> | replayed Map-Reply arrives at the ITR, there is no <nonce,ITR-OTK> | |||
| that matches the incoming Map-Reply and will be discarded. | that matches the incoming Map-Reply and the replayed Map-Reply will | |||
| be discarded. | ||||
| In case of replayed Map-Request, the Map-Server, Map-Resolver and ETR | In the case of a replayed Map-Request, the Map-Server, Map-Resolver, | |||
| will have to do a LISP-SEC computation. This is equivalent, in terms | and ETR will have to do a LISP-SEC computation. This is equivalent, | |||
| of resources, to a valid LISP-SEC computation and, beyond a risk of | in terms of resources, to a valid LISP-SEC computation and, beyond a | |||
| DoS attack, an attacker does not obtain any additional effect, since | risk of DoS attack, an attacker does not obtain any additional | |||
| the corresponding Map-Reply is discarded as previously explained. | effect, since the corresponding Map-Reply is discarded as previously | |||
| explained. | ||||
| 7.7. Message Privacy | 7.7. Message Privacy | |||
| DTLS [RFC9147] SHOULD be used (conforming to [RFC7525]) to provide | DTLS [RFC9147] SHOULD be used (conforming to [RFC7525]) to provide | |||
| communication privacy and to prevent eavesdropping, tampering, or | communication privacy and to prevent eavesdropping, tampering, or | |||
| message forgery to the messages exchanged between the ITR, Map- | message forgery to the messages exchanged between the ITR, Map- | |||
| Resolver, Map-Server, and ETR, unless the OTK is encrypted in another | Resolver, Map-Server, and ETR, unless the OTK is encrypted in another | |||
| way, e.g. using a pre-shared secret. DTLS has the responder be | way, e.g., using a pre-shared secret. DTLS has the responder be | |||
| verified by the initiator, which enables an ITR to autheticate the | verified by the initiator, which enables an ITR to authenticate the | |||
| Map-Resolver, and the Map-Server to authenticate the responding ETR. | Map-Resolver and the Map-Server to authenticate the responding ETR. | |||
| 7.8. Denial of Service and Distributed Denial of Service Attacks | 7.8. Denial-of-Service and Distributed Denial-of-Service Attacks | |||
| LISP-SEC mitigates the risks of Denial of Service and Distributed | LISP-SEC mitigates the risks of DoS and DDoS attacks by protecting | |||
| Denial of Service attacks by protecting the integrity and | the integrity and authenticating the origin of the Map-Request/Map- | |||
| authenticating the origin of the Map-Request/Map-Reply messages, and | Reply messages and by preventing malicious ETRs from overclaiming | |||
| by preventing malicious ETRs from overclaiming EID prefixes that | EID-Prefixes that could redirect traffic directed to a potentially | |||
| could re-direct traffic directed to a potentially large number of | large number of hosts. | |||
| hosts. | ||||
| 8. IANA Considerations | 8. IANA Considerations | |||
| IANA is requested to create the sub-registries listed in the | IANA has created the subregistries listed in the following sections | |||
| following sections in the "Locator/ID Separation Protocol (LISP) | in the "Locator/ID Separation Protocol (LISP) Parameters" registry. | |||
| Parameters" registry. | ||||
| For all of the sub-registries, new values beyond this document have | For all of the subregistries, new values are assigned according to | |||
| to be assigned according to the "Specification Required" policy | the Specification Required policy defined in [RFC8126]. Expert | |||
| defined in [RFC8126]. Expert review should assess the security | Review should assess the security properties of newly added functions | |||
| properties of newly added functions, so that encryption robustness is | so that encryption robustness remains strong. For instance, at the | |||
| remains strong. For instance, at the time of this writing the use of | time of this writing, the use of SHA-256-based functions is | |||
| SHA-256-based functions is considered to provide sufficient | considered to provide sufficient protection. Consultation with | |||
| protection. Consultation with security experts may be needed. | security experts may be needed. | |||
| 8.1. ECM AD Type Registry | 8.1. ECM AD Type Registry | |||
| IANA is requested to create the "ECM Authentication Data Type" | IANA has created the "LISP ECM Authentication Data Types" registry | |||
| registry with values 0-255, for use in the ECM LISP-SEC Extensions | with values 0-255 for use in the ECM LISP-SEC extensions (see | |||
| Section 6.1. Initial allocation of this registry is shown in | Section 6.1). Initial allocations are shown in Table 2. | |||
| Table 2. | ||||
| +------------------+--------+------------+ | +==================+========+============+ | |||
| | Name | Number | Defined in | | | Name | Number | Defined in | | |||
| +==================+========+============+ | ||||
| | Reserved | 0 | RFC 9303 | | ||||
| +------------------+--------+------------+ | +------------------+--------+------------+ | |||
| | Reserved | 0 | This memo | | | LISP-SEC-ECM-EXT | 1 | RFC 9303 | | |||
| | LISP-SEC-ECM-EXT | 1 | This memo | | ||||
| +------------------+--------+------------+ | +------------------+--------+------------+ | |||
| Table 2: ECM Authentication Data Types. | Table 2: LISP ECM Authentication Data | |||
| Types | ||||
| Values 2-255 are unassigned. | Values 2-255 are unassigned. | |||
| 8.2. Map-Reply AD Type Registry | 8.2. Map-Reply AD Types Registry | |||
| IANA is requested to create the "Map-Reply Authentication Data Type" | IANA has created the "LISP Map-Reply Authentication Data Types" | |||
| registry with values 0-255, for use in the Map-Reply LISP-SEC | registry with values 0-255 for use in the Map-Reply LISP-SEC | |||
| Extensions Section 6.2. Initial allocation of this registry is shown | extensions (see Section 6.2). Initial allocations are shown in | |||
| in Table 3. | Table 3. | |||
| +-----------------+--------+------------+ | +=================+========+============+ | |||
| | Name | Number | Defined in | | | Name | Number | Defined in | | |||
| +=================+========+============+ | ||||
| | Reserved | 0 | RFC 9303 | | ||||
| +-----------------+--------+------------+ | +-----------------+--------+------------+ | |||
| | Reserved | 0 | This memo | | | LISP-SEC-MR-EXT | 1 | RFC 9303 | | |||
| | LISP-SEC-MR-EXT | 1 | This memo | | ||||
| +-----------------+--------+------------+ | +-----------------+--------+------------+ | |||
| Table 3: Map-Reply Authentication Data Types. | Table 3: Map-Reply Authentication | |||
| Data Types | ||||
| Values 2-255 are unassigned. | Values 2-255 are unassigned. | |||
| 8.3. HMAC Functions | 8.3. HMAC Functions | |||
| IANA is requested to create the "LISP-SEC Preferred Authentication | IANA is requested to create the "LISP-SEC Preferred Authentication | |||
| Data HMAC ID" registry with values 0-65535 for use as Requested HMAC | Data HMAC IDs" registry with values 0-65535 for use as Requested HMAC | |||
| ID, EID HMAC ID, and PKT HMAC ID in the LISP-SEC Authentication Data. | IDs, EID HMAC IDs, and PKT HMAC IDs in the LISP-SEC Authentication | |||
| Initial allocation of this registry is shown in Table 4. | Data. Initial allocations are shown in Table 4. | |||
| +-----------------------+--------+------------+ | +=======================+========+============+ | |||
| | Name | Number | Defined in | | | Name | Number | Defined in | | |||
| +=======================+========+============+ | ||||
| | NOPREF | 0 | RFC 9303 | | ||||
| +-----------------------+--------+------------+ | +-----------------------+--------+------------+ | |||
| | NOPREF | 0 | This memo | | ||||
| | AUTH-HMAC-SHA-1-96 | 1 | [RFC2104] | | | AUTH-HMAC-SHA-1-96 | 1 | [RFC2104] | | |||
| +-----------------------+--------+------------+ | ||||
| | AUTH-HMAC-SHA-256-128 | 2 | [RFC6234] | | | AUTH-HMAC-SHA-256-128 | 2 | [RFC6234] | | |||
| +-----------------------+--------+------------+ | +-----------------------+--------+------------+ | |||
| Table 4: LISP-SEC Authentication Data HMAC Functions. | Table 4: LISP-SEC Preferred Authentication | |||
| Data HMAC IDs | ||||
| Values 3-65535 are unassigned. | Values 3-65535 are unassigned. | |||
| 8.4. Key Wrap Functions | 8.4. Key Wrap Functions | |||
| IANA is requested to create the "LISP-SEC Authentication Data Key | IANA has created the "LISP-SEC Authentication Data Key Wrap IDs" | |||
| Wrap ID" registry with values 0-65535 for use as OTK key wrap | registry with values 0-65535 for use as OTK key wrap algorithm IDs in | |||
| algorithms ID in the LISP-SEC Authentication Data. Initial | the LISP-SEC Authentication Data. Initial allocations are shown in | |||
| allocation of this registry is shown in Table 5. | Table 5. | |||
| +------------------------------+--------+-----------+-----------+ | +==============================+======+=========+=========+=========+ | |||
| | Name | Number | KEY WRAP | KDF | | | Name |Number|Key Wrap |KDF |Reference| | |||
| +------------------------------+--------+-----------+-----------+ | +==============================+======+=========+=========+=========+ | |||
| | Reserved | 0 | None | None | | | Reserved | 0 |None |None |RFC 9303 | | |||
| | NULL-KEY-WRAP-128 | 1 | This memo | None | | +------------------------------+------+---------+---------+---------+ | |||
| | AES-KEY-WRAP-128+HKDF-SHA256 | 2 | [RFC3394] | [RFC4868] | | | NULL-KEY-WRAP-128 | 1 |RFC 9303 |None |RFC 9303 | | |||
| +------------------------------+--------+-----------+-----------+ | +------------------------------+------+---------+---------+---------+ | |||
| | AES-KEY-WRAP-128+HKDF-SHA256 | 2 |[RFC3394]|[RFC4868]|RFC 9303 | | ||||
| +------------------------------+------+---------+---------+---------+ | ||||
| Table 5: LISP-SEC Authentication Data Key Wrap Functions. | Table 5: LISP-SEC Authentication Data Key Wrap IDs | |||
| Values 3-65535 are unassigned. | Values 3-65535 are unassigned. | |||
| 8.5. Key Derivation Functions | 8.5. Key Derivation Functions | |||
| IANA is requested to create the "LISP-SEC Authentication Data Key | IANA has created the "LISP-SEC Authentication Data Key Derivation | |||
| Derivation Function ID" registry with values 0-65535 for use as KDF | Function IDs" registry with values 0-65535 for use as KDF IDs. | |||
| ID. Initial allocation of this registry is shown in Table 6. | Initial allocations are shown in Table 6. | |||
| +----------------+--------------+------------+ | ||||
| | Name | Number | Defined in | | ||||
| +----------------+--------------+------------+ | ||||
| | NOPREF | 0 | This memo | | ||||
| | HKDF-SHA1-128 | 1 | [RFC5869] | | ||||
| | HKDF-SHA256 | 2 | [RFC5869] | | ||||
| +----------------+--------------+------------+ | ||||
| Table 6: LISP-SEC Authentication Data Key Derivation Function ID. | ||||
| Values 2-65535 are unassigned. | ||||
| 9. Acknowledgements | ||||
| The authors would like to acknowledge Luigi Iannone, Pere Monclus, | +===============+========+===========+ | |||
| Dave Meyer, Dino Farinacci, Brian Weis, David McGrew, Darrel Lewis | | Name | Number | Reference | | |||
| and Landon Curt Noll for their valuable suggestions provided during | +===============+========+===========+ | |||
| the preparation of this document. | | NOPREF | 0 | RFC 9303 | | |||
| +---------------+--------+-----------+ | ||||
| | HKDF-SHA1-128 | 1 | [RFC5869] | | ||||
| +---------------+--------+-----------+ | ||||
| | HKDF-SHA256 | 2 | [RFC5869] | | ||||
| +---------------+--------+-----------+ | ||||
| 10. References | Table 6: LISP-SEC Authentication | |||
| Data Key Derivation Function IDs | ||||
| 10.1. Normative References | Values 3-65535 are unassigned. | |||
| [I-D.ietf-lisp-rfc6830bis] | 9. References | |||
| lispers.net, vaf.net Internet Consulting, 1-4-5.net, Cisco | ||||
| Systems, and UPC/BarcelonaTech, "The Locator/ID Separation | ||||
| Protocol (LISP)", draft-ietf-lisp-rfc6830bis-38 (work in | ||||
| progress), May 2022. | ||||
| [I-D.ietf-lisp-rfc6833bis] | 9.1. Normative References | |||
| lispers.net, Cisco Systems, vaf.net Internet Consulting, | ||||
| and UPC/BarcelonaTech, "Locator/ID Separation Protocol | ||||
| (LISP) Control-Plane", draft-ietf-lisp-rfc6833bis-31 (work | ||||
| in progress), May 2022. | ||||
| [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 27, line 19 ¶ | skipping to change at line 1177 ¶ | |||
| [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>. | |||
| [RFC9147] Rescorla, E., Tschofenig, H., and N. Modadugu, "The | [RFC9147] Rescorla, E., Tschofenig, H., and N. Modadugu, "The | |||
| Datagram Transport Layer Security (DTLS) Protocol Version | Datagram Transport Layer Security (DTLS) Protocol Version | |||
| 1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022, | 1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022, | |||
| <https://www.rfc-editor.org/info/rfc9147>. | <https://www.rfc-editor.org/info/rfc9147>. | |||
| 10.2. Informational References | [RFC9300] Farinacci, D., Fuller, V., Meyer, D., Lewis, D., and A. | |||
| Cabellos, Ed., "The Locator/ID Separation Protocol | ||||
| (LISP)", RFC 9300, DOI 10.17487/RFC9300, October 2022, | ||||
| <https://www.rfc-editor.org/info/rfc9300>. | ||||
| [RFC9301] Farinacci, D., Maino, F., Fuller, V., and A. Cabellos, | ||||
| Ed., "Locator/ID Separation Protocol (LISP) Control | ||||
| Plane", RFC 9301, DOI 10.17487/RFC9301, October 2022, | ||||
| <https://www.rfc-editor.org/info/rfc9301>. | ||||
| 9.2. Informative References | ||||
| [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, | [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, | |||
| "Randomness Requirements for Security", BCP 106, RFC 4086, | "Randomness Requirements for Security", BCP 106, RFC 4086, | |||
| DOI 10.17487/RFC4086, June 2005, | DOI 10.17487/RFC4086, June 2005, | |||
| <https://www.rfc-editor.org/info/rfc4086>. | <https://www.rfc-editor.org/info/rfc4086>. | |||
| [RFC6836] Fuller, V., Farinacci, D., Meyer, D., and D. Lewis, | [RFC6836] Fuller, V., Farinacci, D., Meyer, D., and D. Lewis, | |||
| "Locator/ID Separation Protocol Alternative Logical | "Locator/ID Separation Protocol Alternative Logical | |||
| Topology (LISP+ALT)", RFC 6836, DOI 10.17487/RFC6836, | Topology (LISP+ALT)", RFC 6836, DOI 10.17487/RFC6836, | |||
| January 2013, <https://www.rfc-editor.org/info/rfc6836>. | January 2013, <https://www.rfc-editor.org/info/rfc6836>. | |||
| Acknowledgments | ||||
| The authors would like to acknowledge Luigi Iannone, Pere Monclus, | ||||
| Dave Meyer, Dino Farinacci, Brian Weis, David McGrew, Darrel Lewis, | ||||
| and Landon Curt Noll for their valuable suggestions provided during | ||||
| the preparation of this document. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Fabio Maino | Fabio Maino | |||
| Cisco Systems | Cisco Systems | |||
| 170 Tasman Drive | San Jose, CA | |||
| San Jose, California 95134 | United States of America | |||
| USA | ||||
| Email: fmaino@cisco.com | Email: fmaino@cisco.com | |||
| Vina Ermagan | Vina Ermagan | |||
| Google, Inc. | ||||
| California | 1600 Amphitheatre Parkway | |||
| USA | Mountain View, CA 94043 | |||
| United States of America | ||||
| Email: ermagan@gmail.com | Email: ermagan@gmail.com | |||
| Albert Cabellos | Albert Cabellos | |||
| Universitat Politecnica de Catalunya | Universitat Politecnica de Catalunya | |||
| c/ Jordi Girona s/n | c/ Jordi Girona s/n | |||
| Barcelona 08034 | 08034 Barcelona | |||
| Spain | Spain | |||
| Email: acabello@ac.upc.edu | Email: acabello@ac.upc.edu | |||
| Damien Saucez | Damien Saucez | |||
| Inria | Inria | |||
| 2004 route des Lucioles - BP 93 | 2004 route des Lucioles - BP 93 | |||
| Sophia Antipolis | Sophia Antipolis | |||
| France | France | |||
| Email: damien.saucez@inria.fr | Email: damien.saucez@inria.fr | |||
| End of changes. 203 change blocks. | ||||
| 612 lines changed or deleted | 610 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||