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