draft-ietf-lisp-sec-11.txt | draft-ietf-lisp-sec-12.txt | |||
---|---|---|---|---|
Network Working Group F. Maino | Network Working Group F. Maino | |||
Internet-Draft V. Ermagan | Internet-Draft V. Ermagan | |||
Intended status: Experimental Cisco Systems | Intended status: Experimental Cisco Systems | |||
Expires: April 6, 2017 A. Cabellos | Expires: May 20, 2017 A. Cabellos | |||
Technical University of Catalonia | Technical University of Catalonia | |||
D. Saucez | D. Saucez | |||
INRIA | INRIA | |||
October 3, 2016 | November 16, 2016 | |||
LISP-Security (LISP-SEC) | LISP-Security (LISP-SEC) | |||
draft-ietf-lisp-sec-11 | draft-ietf-lisp-sec-12 | |||
Abstract | Abstract | |||
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 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. | prefix claims in Map-Reply messages. | |||
Requirements Language | Requirements Language | |||
skipping to change at page 1, line 44 ¶ | skipping to change at page 1, line 44 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on April 6, 2017. | This Internet-Draft will expire on May 20, 2017. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 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 | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://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 | |||
skipping to change at page 2, line 25 ¶ | skipping to change at page 2, line 25 ¶ | |||
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 Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Definition of Terms . . . . . . . . . . . . . . . . . . . . . 3 | 2. Definition of Terms . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. LISP-SEC Threat Model . . . . . . . . . . . . . . . . . . . . 4 | 3. LISP-SEC Threat Model . . . . . . . . . . . . . . . . . . . . 4 | |||
4. Protocol Operations . . . . . . . . . . . . . . . . . . . . . 4 | 4. Protocol Operations . . . . . . . . . . . . . . . . . . . . . 5 | |||
5. LISP-SEC Control Messages Details . . . . . . . . . . . . . . 7 | 5. LISP-SEC Control Messages Details . . . . . . . . . . . . . . 7 | |||
5.1. Encapsulated Control Message LISP-SEC Extensions . . . . 7 | 5.1. Encapsulated Control Message LISP-SEC Extensions . . . . 7 | |||
5.2. Map-Reply LISP-SEC Extensions . . . . . . . . . . . . . . 9 | 5.2. Map-Reply LISP-SEC Extensions . . . . . . . . . . . . . . 9 | |||
5.3. Map-Register LISP-SEC Extentions . . . . . . . . . . . . 10 | 5.3. Map-Register LISP-SEC Extentions . . . . . . . . . . . . 11 | |||
5.4. ITR Processing . . . . . . . . . . . . . . . . . . . . . 10 | 5.4. ITR Processing . . . . . . . . . . . . . . . . . . . . . 11 | |||
5.4.1. Map-Reply Record Validation . . . . . . . . . . . . . 12 | 5.4.1. Map-Reply Record Validation . . . . . . . . . . . . . 13 | |||
5.4.2. PITR Processing . . . . . . . . . . . . . . . . . . . 13 | 5.4.2. PITR Processing . . . . . . . . . . . . . . . . . . . 14 | |||
5.5. Encrypting and Decrypting an OTK . . . . . . . . . . . . 13 | 5.5. Encrypting and Decrypting an OTK . . . . . . . . . . . . 14 | |||
5.6. Map-Resolver Processing . . . . . . . . . . . . . . . . . 14 | 5.6. Map-Resolver Processing . . . . . . . . . . . . . . . . . 15 | |||
5.7. Map-Server Processing . . . . . . . . . . . . . . . . . . 14 | 5.7. Map-Server Processing . . . . . . . . . . . . . . . . . . 15 | |||
5.7.1. Map-Server Processing in Proxy mode . . . . . . . . . 15 | 5.7.1. Map-Server Processing in Proxy mode . . . . . . . . . 16 | |||
5.8. ETR Processing . . . . . . . . . . . . . . . . . . . . . 15 | 5.8. ETR Processing . . . . . . . . . . . . . . . . . . . . . 16 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | |||
6.1. Mapping System Security . . . . . . . . . . . . . . . . . 16 | 6.1. Mapping System Security . . . . . . . . . . . . . . . . . 17 | |||
6.2. Random Number Generation . . . . . . . . . . . . . . . . 16 | 6.2. Random Number Generation . . . . . . . . . . . . . . . . 17 | |||
6.3. Map-Server and ETR Colocation . . . . . . . . . . . . . . 16 | 6.3. Map-Server and ETR Colocation . . . . . . . . . . . . . . 17 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | 6.4. Deploying LISP-SEC . . . . . . . . . . . . . . . . . . . 17 | |||
7.1. HMAC functions . . . . . . . . . . . . . . . . . . . . . 16 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 | |||
7.2. Key Wrap Functions . . . . . . . . . . . . . . . . . . . 17 | 7.1. ECM AD Type Registry . . . . . . . . . . . . . . . . . . 18 | |||
7.3. Key Derivation Functions . . . . . . . . . . . . . . . . 17 | 7.2. Map-Reply AD Type Registry . . . . . . . . . . . . . . . 18 | |||
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18 | 7.3. HMAC Functions . . . . . . . . . . . . . . . . . . . . . 19 | |||
9. Normative References . . . . . . . . . . . . . . . . . . . . 18 | 7.4. Key Wrap Functions . . . . . . . . . . . . . . . . . . . 19 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 | 7.5. Key Derivation Functions . . . . . . . . . . . . . . . . 20 | |||
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 | ||||
9. Normative References . . . . . . . . . . . . . . . . . . . . 20 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 | ||||
1. Introduction | 1. Introduction | |||
The Locator/ID Separation Protocol [RFC6830] defines a set of | The Locator/ID Separation Protocol [RFC6830] is a network-layer-based | |||
functions for routers to exchange information used to map from non- | protocol that enables separation of IP addresses into two new | |||
routable Endpoint Identifiers (EIDs) to routable Routing Locators | numbering spaces: Endpoint Identifiers (EIDs) and Routing Locators | |||
(RLOCs). If these EID-to-RLOC mappings, carried through Map-Reply | (RLOCs). EID-to-RLOC mappings are stored in a database, the LISP | |||
messages, are transmitted without integrity protection, an adversary | Mapping System, and made available via the Map-Request/Map-Reply | |||
can manipulate them and hijack the communication, impersonate the | lookup process. If these EID-to-RLOC mappings, carried through Map- | |||
requested EID, or mount Denial of Service or Distributed Denial of | Reply messages, are transmitted without integrity protection, an | |||
Service attacks. Also, if the Map-Reply message is transported | adversary can manipulate them and hijack the communication, | |||
unauthenticated, an adversarial LISP entity can overclaim an EID- | impersonate the requested EID, or mount Denial of Service or | |||
prefix and maliciously redirect traffic directed to a large number of | Distributed Denial of Service attacks. Also, if the Map-Reply | |||
hosts. A detailed description of "overclaiming" attack is provided | message is transported unauthenticated, an adversarial LISP entity | |||
in [RFC7835]. | can overclaim an EID-prefix and maliciously redirect traffic directed | |||
to a large number of hosts. The LISP-SEC threat model, described in | ||||
Section 3, is built on top of the LISP threat model defined in | ||||
[RFC7835], that includes a detailed 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 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 security, including the right | associated Map-Server. Map-Register security, including the right | |||
for a LISP entity to register an EID-prefix or to claim presence at | for a LISP entity to register an EID-prefix or to claim presence at | |||
an RLOC, is out of the scope of LISP-SEC. Additional security | an RLOC, is out of the scope of LISP-SEC. Additional security | |||
considerations are described in Section 6. | considerations are described in Section 6. | |||
2. Definition of Terms | 2. Definition 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 used for a single Map-Request/Map-Reply exchange. | be used for a single Map-Request/Map-Reply exchange. | |||
ITR-OTK: The One-Time Key generated at the ITR. | ITR One-Time Key (ITR-OTK): The One-Time Key generated at the ITR. | |||
MS-OTK: The One-Time Key generated at the Map-Server. | ||||
Encapsulated Control Message (ECM): A LISP control message that is | MS One-Time Key (MS-OTK): The One-Time Key generated at the Map- | |||
prepended with an additional LISP header. ECM is used by ITRs to | Server. | |||
send LISP control messages to a Map-Resolver, by Map-Resolvers to | ||||
forward LISP control messages to a Map-Server, and by Map- | ||||
Resolvers to forward LISP control messages to an ETR. | ||||
Authentication Data (AD): Metadata that is included either in a | Authentication Data (AD): Metadata that is included either in a | |||
LISP ECM header or in a Map-Reply message to support | LISP Encapsulated Control Message (ECM) header, as defined in | |||
Section 6.1.8 of [RFC6830], or in a Map-Reply message to support | ||||
confidentiality, integrity protection, and verification of EID- | confidentiality, integrity protection, and verification of EID- | |||
prefix authorization. | prefix authorization. | |||
OTK-AD: The portion of ECM Authentication Data that contains a | OTK Authentication Data (OTK-AD): The portion of ECM | |||
One-Time Key. | Authentication Data that contains a One-Time Key. | |||
EID-AD: The portion of ECM and Map-Reply Authentication Data | EID Authentication Data (EID-AD): The portion of ECM and Map-Reply | |||
used for verification of EID-prefix authorization. | Authentication Data used for verification of EID-prefix | |||
authorization. | ||||
PKT-AD: The portion of Map-Reply Authentication Data used to | Packet Authentication Data (PKT-AD): The portion of Map-Reply | |||
protect the integrity of the Map-Reply message. | Authentication Data used to protect the integrity of the Map-Reply | |||
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 | |||
[RFC6830]. | [RFC6830]. | |||
3. LISP-SEC Threat Model | 3. LISP-SEC Threat Model | |||
LISP-SEC addresses the control plane threats, described in [RFC7835], | LISP-SEC addresses the control plane threats, described in [RFC7835], | |||
that target EID-to-RLOC mappings, including manipulations of Map- | that target EID-to-RLOC mappings, including manipulations of Map- | |||
Request and Map-Reply messages, and malicious ETR EID prefix | Request and Map-Reply messages, and malicious ETR EID prefix | |||
overclaiming. LISP-SEC makes two main assumptions: (1) the LISP | overclaiming. LISP-SEC makes two main assumptions: (1) the LISP | |||
mapping system is expected to deliver a Map-Request message to their | mapping system is expected to deliver a Map-Request message to their | |||
intended destination ETR as identified by the EID, and (2) no man-in- | intended destination ETR as identified by the EID, and (2) no man-in- | |||
the-middle (MITM) attack can be mounted within the LISP Mapping | the-middle (MITM) attack can be mounted within the LISP Mapping | |||
System. Furthermore, while LISP-SEC enables detection of EID prefix | System. How the Mapping System is protected from MITM attacks | |||
overclaiming attacks, it assumes that Map-Servers can verify the EID | depends from the particular Mapping Systems used, and is out of the | |||
prefix authorization at time of registration. | scope of this memo. Furthermore, while LISP-SEC enables detection of | |||
EID prefix overclaiming attacks, it assumes that Map-Servers can | ||||
verify the EID prefix authorization at time of registration. | ||||
According to the threat model described in [RFC7835] LISP-SEC assumes | According to the threat model described in [RFC7835] LISP-SEC assumes | |||
that any kind of attack, including MITM attacks, can be mounted in | that any kind of attack, including MITM attacks, can be mounted in | |||
the access network, outside of the boundaries of the LISP mapping | the access network, outside of the boundaries of the LISP mapping | |||
system. An on-path attacker, outside of the LISP mapping system can, | system. An on-path attacker, outside of the LISP mapping system can, | |||
for example, hijack Map-Request and Map-Reply messages, spoofing the | for example, hijack Map-Request and Map-Reply messages, spoofing the | |||
identity of a LISP node. Another example of on-path attack, called | identity of a LISP node. Another example of on-path attack, called | |||
overclaiming attack, can be mounted by a malicious Egress Tunnel | overclaiming attack, can be mounted by a malicious Egress Tunnel | |||
Router (ETR), by overclaiming the EID-prefixes for which it is | Router (ETR), by overclaiming the EID-prefixes for which it is | |||
authoritative. In this way the ETR can maliciously redirect traffic | authoritative. In this way the ETR can maliciously redirect traffic | |||
skipping to change at page 5, line 16 ¶ | skipping to change at page 5, line 27 ¶ | |||
Those trust relationships are used to securely distribute a One-Time | Those trust relationships are used to securely distribute a One-Time | |||
Key (OTK) that provides origin authentication, integrity and anti- | Key (OTK) that provides origin authentication, integrity and anti- | |||
replay protection to mapping data conveyed via the mapping lookup | replay protection to mapping data conveyed via the mapping lookup | |||
process, and that effectively prevent overclaiming attacks. The | process, and that effectively prevent overclaiming attacks. The | |||
processing of security parameters during the Map-Request/Map-Reply | processing of security parameters during the Map-Request/Map-Reply | |||
exchange is as follows: | exchange is as follows: | |||
o The ITR-OTK is generated and stored at the ITR, and securely | o The ITR-OTK is generated and stored at the ITR, and securely | |||
transported to the Map-Server. | transported to the Map-Server. | |||
o The Map-Server uses the ITR-OTK to compute an HMAC that protects | o The Map-Server uses the ITR-OTK to compute a Keyed-Hashing for | |||
the integrity of the mapping data known to the Map-Server to | Message Authentication (HMAC) [RFC2104] that protects the | |||
prevent overclaiming attacks. The Map-Server also derives a new | integrity of the mapping data known to the Map-Server to prevent | |||
OTK, the MS-OTK, that is passed to the ETR, by applying a Key | overclaiming attacks. The Map-Server also derives a new OTK, the | |||
Derivation Function (KDF) to the ITR-OTK. | MS-OTK, that is passed to the ETR, by applying a Key Derivation | |||
Function (KDF) to the ITR-OTK. | ||||
o The ETR uses the MS-OTK to compute an HMAC that protects the | o 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 | o 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 5 provides the detailed description of the LISP-SEC control | Section 5 provides the detailed description of the LISP-SEC control | |||
skipping to change at page 6, line 19 ¶ | skipping to change at page 6, line 29 ¶ | |||
match EID-prefix that covers the requested EID in the received | match EID-prefix that covers the requested EID in the received | |||
Map-Request. The Map-Server adds this EID-prefix, together with | Map-Request. The Map-Server adds this EID-prefix, together with | |||
an HMAC computed using the ITR-OTK, to a new Encapsulated Control | an HMAC computed using the ITR-OTK, to a new Encapsulated Control | |||
Message that contains the received Map-Request. | Message that contains the received Map-Request. | |||
o The Map-Server derives a new OTK, the MS-OTK, by applying a Key | o The Map-Server derives a new OTK, the MS-OTK, by applying a Key | |||
Derivation Function (KDF) to the ITR-OTK. This MS-OTK is included | Derivation Function (KDF) to the ITR-OTK. This MS-OTK is included | |||
in the Encapsulated Control Message that the Map-Server uses to | in the Encapsulated Control Message that the Map-Server uses to | |||
forward the Map-Request to the ETR. To provide MS-OTK | forward the Map-Request to the ETR. To provide MS-OTK | |||
confidentiality over the path between the Map-Server and the ETR, | confidentiality over the path between the Map-Server and the ETR, | |||
the MS-OTK should be encrypted using the key shared between the | the MS-OTK SHOULD be encrypted using the key shared between the | |||
ETR and the Map-Server in order to secure ETR registration | ETR and the Map-Server in order to secure ETR registration | |||
[RFC6833]. | [RFC6833]. | |||
o If the Map-Server is acting in proxy mode, as specified in | o If the Map-Server is acting in proxy mode, as specified in | |||
[RFC6830], the ETR is not involved in the generation of the Map- | [RFC6830], the ETR is not involved in the generation of the Map- | |||
Reply. In this case the Map-Server generates the Map-Reply on | Reply. In this case the Map-Server generates the Map-Reply on | |||
behalf of the ETR as described below. | behalf of the ETR as described below. | |||
o The ETR, upon receiving the ECM encapsulated Map-Request from the | o The ETR, upon receiving the ECM encapsulated Map-Request from the | |||
Map-Server, decrypts the MS-OTK, if needed, and originates a | Map-Server, decrypts the MS-OTK, if needed, and originates a | |||
skipping to change at page 7, line 22 ¶ | skipping to change at page 8, line 5 ¶ | |||
5.1. Encapsulated Control Message LISP-SEC Extensions | 5.1. Encapsulated Control Message LISP-SEC Extensions | |||
LISP-SEC uses the ECM (Encapsulated Control Message) defined in | LISP-SEC uses the ECM (Encapsulated Control Message) defined in | |||
[RFC6830] with Type set to 8, and S bit set to 1 to indicate that the | [RFC6830] with Type set to 8, and S bit set to 1 to indicate that the | |||
LISP header includes Authentication Data (AD). The format of the | LISP header includes Authentication Data (AD). The format of the | |||
LISP-SEC ECM Authentication Data is defined in the following figure. | LISP-SEC ECM Authentication Data is defined in the following figure. | |||
OTK-AD stands for One-Time Key Authentication Data and EID-AD stands | OTK-AD stands for One-Time Key Authentication Data and EID-AD stands | |||
for EID Authentication Data. | for EID 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| AD Type |V| Reserved | Requested HMAC ID | | | ECM AD Type |V| Reserved | Requested HMAC ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ | |||
| OTK Length | OTK Encryption ID | | | | OTK Length | OTK Encryption 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 | Reserved | EID HMAC ID | EID-AD | | Record Count | Reserved | EID HMAC ID |EID-AD | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ | | |||
| Reserved | EID mask-len | EID-AFI | | | | | Reserved | EID mask-len | EID-AFI | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Rec | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Rec | | |||
~ EID-prefix ... ~ | | | ~ EID-prefix ... ~ | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+/ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+/ | | |||
~ EID HMAC ~ | | ~ EID HMAC ~ | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <---+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <---+ | |||
LISP-SEC ECM Authentication Data | LISP-SEC ECM Authentication Data | |||
AD Type: 1 (LISP-SEC Authentication Data) | ECM AD Type: 1 (LISP-SEC Authentication Data). See Section 7. | |||
V: Key Version bit. This bit is toggled when the sender switches | V: Key Version bit. This bit is toggled when the sender switches | |||
to a new OTK wrapping key | to a new OTK wrapping key | |||
Reserved: Set to 0 on transmission and ignored on receipt. | Reserved: Set to 0 on transmission and ignored on receipt. | |||
Requested HMAC ID: The HMAC algorithm requested by the ITR. See | Requested HMAC ID: The HMAC algorithm requested by the ITR. See | |||
Section 5.4 for details. | Section 5.4 for 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), that contains the OTK Preamble and the OTK. | |||
OTK Encryption ID: The identifier of the key wrapping algorithm | OTK Encryption ID: The identifier of the key wrapping algorithm | |||
used to encrypt the One-Time-Key. When a 128-bit OTK is sent | used to encrypt the One-Time-Key. When a 128-bit OTK is sent | |||
skipping to change at page 8, line 18 ¶ | skipping to change at page 8, line 50 ¶ | |||
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), that contains the OTK Preamble and the OTK. | |||
OTK Encryption ID: The identifier of the key wrapping algorithm | OTK Encryption ID: The identifier of the key wrapping algorithm | |||
used to encrypt the One-Time-Key. When a 128-bit OTK is sent | used to encrypt the One-Time-Key. When a 128-bit OTK is sent | |||
unencrypted by the Map-Resolver, the OTK Encryption ID is set to | unencrypted by the Map-Resolver, the OTK Encryption ID is set to | |||
NULL_KEY_WRAP_128. See Section 5.5 for more details. | NULL_KEY_WRAP_128. See Section 5.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 Map-Resolver, the OTK Preamble is set to | sent unencrypted by Map-Resolver, the OTK Preamble is set to | |||
0x0000000000000000 (64 bits). See Section 5.5 for details. | 0x0000000000000000 (64 bits). See Section 5.5 for details. | |||
One-Time-Key: the OTK encrypted (or not) as specified by OTK | One-Time-Key: the OTK encrypted (or not) as specified by OTK | |||
Encryption ID. See Section 5.5 for details. | Encryption ID. See Section 5.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 EID-AD Length to 4 bytes, as it only | (EID-AD). The ITR MUST set EID-AD Length to 4 bytes, as it only | |||
fills the KDF ID field, and all the remaining fields part of the | fills the KDF ID field, and all the remaining fields part of the | |||
EID-AD are not present. An EID-AD MAY contain multiple EID- | EID-AD are not present. An EID-AD MAY contain multiple EID- | |||
records. Each EID-record is 4-byte long plus the length of the | records. Each EID-record is 4-byte long plus the length of the | |||
AFI-encoded EID-prefix. | 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 MS-OTK. The ITR SHOULD use this field to indicate the | the MS-OTK. The ITR MAY use this field to indicate the | |||
recommended KDF algorithm, according to local policy. The Map- | recommended KDF algorithm, according to local policy. The Map- | |||
Server can overwrite the KDF ID if it does not support the KDF ID | Server can overwrite the KDF ID if it does not support the KDF ID | |||
recommended by the ITR. See Section 5.4 for more details. | recommended by the ITR. See Section 5.4 for more details. | |||
Record Count: The number of records in this Map-Request message. | Record Count: The number of records in this Map-Request message. | |||
A record is comprised of the portion of the packet that is labeled | A record is comprised of the portion of the packet that is labeled | |||
'Rec' above and occurs the number of times equal to Record Count. | 'Rec' above and occurs the number of times equal to Record Count. | |||
Reserved: Set to 0 on transmission and ignored on receipt. | Reserved: Set to 0 on transmission and ignored on receipt. | |||
skipping to change at page 9, line 20 ¶ | skipping to change at page 10, line 5 ¶ | |||
to 0. The HMAC covers the entire EID-AD. | to 0. The HMAC covers the entire EID-AD. | |||
5.2. Map-Reply LISP-SEC Extensions | 5.2. Map-Reply LISP-SEC Extensions | |||
LISP-SEC uses the Map-Reply defined in [RFC6830], with Type set to 2, | LISP-SEC uses the Map-Reply defined in [RFC6830], with Type set to 2, | |||
and S bit set to 1 to indicate that the Map-Reply message includes | and S bit set to 1 to indicate that the Map-Reply message includes | |||
Authentication Data (AD). The format of the LISP-SEC Map-Reply | Authentication Data (AD). The format of the LISP-SEC Map-Reply | |||
Authentication Data is defined in the following figure. PKT-AD is | Authentication Data is defined in the following figure. PKT-AD is | |||
the Packet Authentication Data that covers the Map-Reply payload. | the Packet 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| AD Type | Reserved | | | MR AD Type | Reserved | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <---+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <---+ | |||
| EID-AD Length | KDF ID | | | | EID-AD Length | KDF ID | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| Record Count | Reserved | EID HMAC ID | EID-AD | | Record Count | Reserved | EID HMAC ID |EID-AD | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ | | |||
| Reserved | EID mask-len | EID-AFI | | | | | Reserved | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+/ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+/ | |||
LISP-SEC Map-Reply Authentication Data | LISP-SEC Map-Reply Authentication Data | |||
AD Type: 1 (LISP-SEC Authentication Data) | MR AD Type: 1 (LISP-SEC Authentication Data). See Section 7. | |||
EID-AD Length: length (in bytes) of the EID-AD. An EID-AD MAY | EID-AD Length: length (in bytes) of the EID-AD. An EID-AD MAY | |||
contain multiple EID-records. Each EID-record is 4-byte long plus | contain multiple EID-records. Each EID-record is 4-byte long plus | |||
the length of the AFI-encoded EID-prefix. | the length of 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 | |||
MS-OTK. See Section 5.7 for more details. | MS-OTK. See Section 5.7 for more details. | |||
Record Count: The number of records in this Map-Reply message. A | Record Count: The number of records in this Map-Reply message. A | |||
record is comprised of the portion of the packet that is labeled | record is comprised of the portion of the packet that is labeled | |||
skipping to change at page 10, line 30 ¶ | skipping to change at page 11, line 13 ¶ | |||
requested EID. | requested EID. | |||
EID HMAC: HMAC of the EID-AD, as computed by the Map-Server. | EID HMAC: HMAC of the EID-AD, as computed by the Map-Server. | |||
Before computing the HMAC operation the EID HMAC field MUST be set | Before computing the HMAC operation the EID HMAC field MUST be set | |||
to 0. The HMAC covers the entire EID-AD. | to 0. The HMAC covers the entire EID-AD. | |||
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 Location Data. | integrity of the Map-reply. | |||
PKT HMAC: HMAC of the whole Map-Reply packet, including the LISP- | PKT HMAC: HMAC of the whole Map-Reply packet, including the LISP- | |||
SEC Authentication Data. The scope of the authentication goes | SEC Authentication Data. The scope of the authentication goes | |||
from the Map-Reply Type field to the PKT HMAC field included. | from the Map-Reply Type field to the PKT HMAC field included. | |||
Before computing the HMAC operation the PKT HMAC field MUST be set | Before computing the HMAC operation the PKT HMAC field MUST be set | |||
to 0. See Section 5.8 for more details. | to 0. See Section 5.8 for more details. | |||
5.3. Map-Register LISP-SEC Extentions | 5.3. Map-Register LISP-SEC Extentions | |||
The second bit after the Type field in a Map-Register message is | This memo is allocating one of the bits marked as Reserved in the | |||
allocated as the S bit. The S bit indicates to the Map-Server that | Map-Register message defined in Section 6.1.6 of [RFC6830]. More | |||
the registering ETR is LISP-SEC enabled. An ETR that supports LISP- | precisely, the second bit after the Type field in a Map-Register | |||
SEC MUST set the S bit in its Map-Register messages. | message is allocated as the S bit. The S bit indicates to the Map- | |||
Server that the registering ETR is LISP-SEC enabled. An ETR that | ||||
supports LISP-SEC MUST set the S bit in its Map-Register messages. | ||||
5.4. ITR Processing | 5.4. ITR Processing | |||
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, together with the nonce generated as specified in | is stored locally, together with the nonce generated as specified in | |||
[RFC6830]. | [RFC6830]. | |||
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. If the ITR and | 1, to indicate the presence of Authentication Data. If the ITR and | |||
the Map-Resolver are configured with a shared key, the ITR-OTK | the Map-Resolver are configured with a shared key, the ITR-OTK | |||
confidentiality SHOULD be protected by wrapping the ITR-OTK with the | confidentiality SHOULD be protected by wrapping the ITR-OTK with the | |||
algorithm specified by the OTK Encryption ID field. See Section 5.5 | algorithm specified by the OTK Encryption ID field. See Section 5.5 | |||
for further details on OTK encryption. | for further details on OTK encryption. | |||
The Requested HMAC ID field contains the suggested HMAC algorithm to | The Requested HMAC ID field contains the suggested HMAC algorithm to | |||
be used by the Map-Server and the ETR to protect the integrity of the | be used by the Map-Server and the ETR to protect the integrity of the | |||
ECM Authentication data and of the Map-Reply. | ECM Authentication data and of the Map-Reply. | |||
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. | 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. | ||||
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. | |||
In response to an encapsulated Map-Request that has the S-bit set, an | In response to an encapsulated Map-Request that has the S-bit set, an | |||
ITR MUST receive a Map-Reply with the S-bit set, that includes an | ITR MUST receive a Map-Reply with the S-bit set, that includes an | |||
EID-AD and a PKT-AD. If the Map-Reply does not include both ADs, the | EID-AD and a PKT-AD. If the Map-Reply does not include both ADs, the | |||
ITR MUST discard it. In response to an encapsulated Map-Request with | ITR MUST discard it. In response to an encapsulated Map-Request with | |||
S-bit set to 0, the ITR expects a Map-Reply with S-bit set to 0, and | S-bit set to 0, the ITR expects a Map-Reply with S-bit set to 0, and | |||
skipping to change at page 11, line 37 ¶ | skipping to change at page 12, line 26 ¶ | |||
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. | the integrity checks fails. | |||
The integrity of the EID-AD is verified using the locally stored ITR- | The integrity of the EID-AD is verified using the locally stored ITR- | |||
OTK to re-compute the HMAC of the EID-AD using the algorithm | OTK to re-compute the HMAC of the EID-AD using the algorithm | |||
specified in the EID HMAC ID field. If the EID HMAC ID field does | specified in the EID HMAC ID field. If the EID HMAC ID field does | |||
not match the Requested HMAC ID the ITR SHOULD discard the Map-Reply | not match the Requested HMAC ID the ITR SHOULD discard the Map-Reply | |||
and send, at the first opportunity it needs to, a new Map-Request | and send, at the first opportunity it needs to, a new Map-Request | |||
with a different Requested HMAC ID field, according to ITR's local | with a different Requested HMAC ID field, according to ITR's local | |||
policy. The ITR MUST set the EID HMAC ID field to 0 before computing | policy. The scope of the HMAC operation covers the entire EID-AD, | |||
the HMAC. | from the EID-AD Length field to the EID HMAC field, which must be set | |||
to 0 before the computation of 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 KDF ID in the Map-Reply does not match the | using the MS-OTK. If the KDF ID in the Map-Reply does not match the | |||
KDF ID requested in the Map-Request, the ITR SHOULD discard the Map- | KDF ID requested in the Map-Request, the ITR SHOULD discard the Map- | |||
Reply and send, at the first opportunity it needs to, a new Map- | Reply and send, at the first opportunity it needs to, a new Map- | |||
Request with a different KDF ID, according to ITR's local policy. | Request with a different KDF ID, according to ITR's local policy. | |||
The derived MS-OTK is then used to re-compute the HMAC of the PKT-AD | The derived MS-OTK is then used to re-compute 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 PKT | |||
HMAC ID field does not match the Requested HMAC ID the ITR SHOULD | HMAC ID field does not match the Requested HMAC ID the ITR SHOULD | |||
discard the Map-Reply and send, at the first opportunity it needs to, | discard the Map-Reply and send, at the first opportunity it needs to, | |||
a new Map-Request with a different Requested HMAC ID according to | a new Map-Request with a different Requested HMAC ID according to | |||
ITR's local policy. | ITR's local policy or until all HMAC IDs supported by the ITR have | |||
been attempted. | ||||
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-prefix in the Map-Reply EID-record with one of the EID-prefixes | EID-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 cache, as described in | |||
[RFC6830]. An example of Map-Reply record validation is provided in | [RFC6830]. An example of Map-Reply record validation is provided in | |||
Section 5.4.1. | Section 5.4.1. | |||
The ITR SHOULD send SMR triggered Map-Requests over the mapping | The ITR SHOULD send SMR triggered Map-Requests over the mapping | |||
system in order to receive a secure Map-Reply. If an ITR accepts | system in order to receive a secure Map-Reply. If an ITR accepts | |||
piggybacked Map-Replies, it SHOULD also send a Map-Request over the | piggybacked Map-Replies, it SHOULD also send a Map-Request over the | |||
mapping system in order to securely verify the piggybacked Map-Reply. | mapping system in order to verify the piggybacked Map-Reply with a | |||
secure Map-Reply. | ||||
5.4.1. Map-Reply Record Validation | 5.4.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 Map- | |||
Reply may contain multiple EID-records in the EID-AD. The EID-AD is | Reply may contain multiple EID-records in the EID-AD. The EID-AD is | |||
signed by the Map-Server, with the EID HMAC, to provide integrity | 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 message is issued and the Map- | one of the HMACs is not valid, a log action MUST be taken and the | |||
Reply is not processed any further. If both HMACs are valid, the ITR | Map-Reply MUST NOT be processed any further. If both HMACs are | |||
proceeds with validating each individual EID-record claimed by the | valid, the ITR proceeds with validating each individual EID-record | |||
ETR by computing the intersection of each one of the EID-prefix | claimed by the ETR by computing the intersection of each one of the | |||
contained in the payload of the Map-Reply with each one of the EID- | EID-prefix contained in the payload of the Map-Reply with each one of | |||
prefixes contained in the EID-AD. An EID-record is valid only if at | the EID-prefixes contained in the EID-AD. An EID-record is valid | |||
least one of the intersections is not the empty set. | only if at least one of the intersections is not the empty set. | |||
For instance, the Map-Reply payload contains 3 mapping record EID- | For instance, the Map-Reply payload contains 3 mapping record EID- | |||
prefixes: | prefixes: | |||
1.1.1.0/24 | 2001:db8:0102::/48 | |||
1.1.2.0/24 | 2001:db8:0103::/48 | |||
1.2.0.0/16 | 2001:db8:0200::/40 | |||
The EID-AD contains two EID-prefixes: | The EID-AD contains two EID-prefixes: | |||
1.1.2.0/24 | 2001:db8:0103::/48 | |||
1.2.3.0/24 | 2001:db8:0203::/48 | |||
The EID-record with EID-prefix 1.1.1.0/24 is not processed since it | The EID-record with EID-prefix 2001:db8:0102::/48 is not eligible to | |||
is not included in any of the EID-ADs signed by the Map-Server. A | be used by the ITR since it is not included in any of the EID-ADs | |||
log message is issued. | signed by the Map-Server. A log action MUST be taken. | |||
The EID-record with EID-prefix 1.1.2.0/24 is stored in the map-cache | The EID-record with EID-prefix 2001:db8:0103::/48 is eligible to be | |||
because it matches the second EID-prefix contained in the EID-AD. | used by the ITR because it matches the second EID-prefix contained in | |||
the EID-AD. | ||||
The EID-record with EID-prefix 1.2.0.0/16 is not processed since it | The EID-record with EID-prefix 2001:db8:0200::/40 is not eligible to | |||
is not included in any of the EID-ADs signed by the Map-Server. A | be used by the ITR since it is not included in any of the EID-ADs | |||
log message is issued. In this last example the ETR is trying to | signed by the Map-Server. A log action MUST be taken. In this last | |||
over claim the EID-prefix 1.2.0.0/16, but the Map-Server authorized | example the ETR is trying to over claim the EID-prefix | |||
only 1.2.3.0/24, hence the EID-record is discarded. | 2001:db8:0200::/40, but the Map-Server authorized only | |||
2001:db8:0203::/48, hence the EID-record is discarded. | ||||
5.4.2. PITR Processing | 5.4.2. PITR Processing | |||
The processing performed by a PITR is equivalent to the processing of | The processing performed by a PITR is equivalent to the processing of | |||
an ITR. However, if the PITR is directly connected to the ALT, the | an ITR. However, if the PITR is directly connected to a Mapping | |||
PITR performs the functions of both the ITR and the Map-Resolver | System such as LISP+ALT [RFC6836], the PITR performs the functions of | |||
forwarding the Map-Request encapsulated in an ECM header that | both the ITR and the Map-Resolver forwarding the Map-Request | |||
includes the Authentication Data fields as described in Section 5.6. | encapsulated in an ECM header that includes the Authentication Data | |||
fields as described in Section 5.6. | ||||
5.5. Encrypting and Decrypting an OTK | 5.5. Encrypting and Decrypting an OTK | |||
MS-OTK confidentiality is required in the path between the Map-Server | MS-OTK confidentiality is required in the path between the Map-Server | |||
and the ETR, the MS-OTK SHOULD be encrypted using the preconfigured | and the ETR, the MS-OTK SHOULD be encrypted using the preconfigured | |||
key shared between the Map-Server and the ETR for the purpose of | key shared between the Map-Server and the ETR for the purpose of | |||
securing ETR registration [RFC6833]. Similarly, if ITR-OTK | securing ETR registration [RFC6833]. Similarly, if ITR-OTK | |||
confidentiality is required in the path between the ITR and the Map- | confidentiality is required in the path between the ITR and the Map- | |||
Resolver, the ITR-OTK SHOULD be encrypted with a key shared between | Resolver, the ITR-OTK SHOULD be encrypted with a key shared between | |||
the ITR and the Map-Resolver. | the ITR and the Map-Resolver. | |||
The OTK is encrypted using the algorithm specified in the OTK | The OTK is encrypted using the algorithm specified in the OTK | |||
Encryption ID field. When the AES Key Wrap algorithm is used to | Encryption ID field. When the AES Key Wrap algorithm is used to | |||
encrypt a 128-bit OTK, according to [RFC3339], the AES Key Wrap | encrypt a 128-bit OTK, according to [RFC3394], the AES Key Wrap | |||
Initialization Value MUST be set to 0xA6A6A6A6A6A6A6A6 (64 bits). | Initialization Value MUST be set to 0xA6A6A6A6A6A6A6A6 (64 bits). | |||
The output of the AES Key Wrap operation is 192-bit long. The most | The output of the AES Key Wrap operation is 192-bit long. The most | |||
significant 64-bit are copied in the One-Time Key Preamble field, | significant 64-bit are copied in the One-Time Key Preamble field, | |||
while the 128 less significant bits are copied in the One-Time Key | while the 128 less significant bits are copied in the One-Time Key | |||
field of the LISP-SEC Authentication Data. | 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 fails | |||
the receiver MUST discard the entire message. | the receiver MUST discard the entire message. | |||
skipping to change at page 14, line 17 ¶ | skipping to change at page 15, line 15 ¶ | |||
When a 128-bit OTK is sent unencrypted the OTK Encryption ID is set | When a 128-bit OTK is sent unencrypted the OTK Encryption ID is set | |||
to NULL_KEY_WRAP_128, and the OTK Preamble is set to | to NULL_KEY_WRAP_128, and the OTK Preamble is set to | |||
0x0000000000000000 (64 bits). | 0x0000000000000000 (64 bits). | |||
5.6. Map-Resolver Processing | 5.6. Map-Resolver Processing | |||
Upon receiving an encapsulated Map-Request with the S-bit set, the | Upon receiving an encapsulated Map-Request with the S-bit set, the | |||
Map-Resolver decapsulates the ECM message. The ITR-OTK, if | Map-Resolver decapsulates the ECM message. The ITR-OTK, if | |||
encrypted, is decrypted as specified in Section 5.5. | encrypted, is decrypted as specified in Section 5.5. | |||
The Map-Resolver, as specified in [RFC6833], originates a new ECM | Protecting the confidentiality of the ITR-OTK and, in general, the | |||
header with the S-bit set, that contains the unencrypted ITR-OTK, as | security of how the Map-Request is handed by the Map-Resolver to the | |||
specified in Section 5.5, and the other data derived from the ECM | Map-Server, is specific to the particular Mapping System used, and | |||
Authentication Data of the received encapsulated Map-Request. | outside of the scope of this memo. | |||
The Map-Resolver then forwards the received Map-Request, encapsulated | In Mapping Systems where the Map-Server is compliant with [RFC6833], | |||
in the new ECM header that includes the newly computed Authentication | the Map-Resolver originates a new ECM header with the S-bit set, that | |||
Data fields. | contains the unencrypted ITR-OTK, as specified in Section 5.5, and | |||
the other data derived from the ECM Authentication Data of the | ||||
received encapsulated Map-Request. | ||||
The Map-Resolver then forwards to the Map-Server the received Map- | ||||
Request, encapsulated in the new ECM header that includes the newly | ||||
computed Authentication Data fields. | ||||
5.7. Map-Server Processing | 5.7. Map-Server 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 Map-Server process the Map-Request according to the value of the | the Map-Server process the Map-Request according to the value of the | |||
S-bit contained in the Map-Register sent by the ETR during | S-bit contained in the Map-Register sent by the ETR during | |||
registration. | registration. | |||
If the S-bit contained in the Map-Register was clear the Map-Server | If the S-bit contained in the Map-Register was clear the Map-Server | |||
decapsulates the ECM and generates a new ECM encapsulated Map-Request | decapsulates the ECM and generates a new ECM encapsulated Map-Request | |||
that does not contain an ECM Authentication Data, as specified in | that does not contain an ECM Authentication Data, as specified in | |||
[RFC6830]. The Map-Server does not perform any further LISP-SEC | [RFC6830]. The Map-Server does not perform any further LISP-SEC | |||
processing. | processing, and the Map-Reply will not be protected. | |||
If the S-bit contained in the Map-Register was set the Map-Server | If the S-bit contained in the Map-Register was set the Map-Server | |||
decapsulates the ECM and generates a new ECM Authentication Data. | decapsulates the ECM and generates a new ECM Authentication Data. | |||
The Authentication Data includes the OTK-AD and the EID-AD, that | The Authentication Data includes the OTK-AD and the EID-AD, that | |||
contains EID-prefix authorization information, that are ultimately | contains EID-prefix authorization information, that are ultimately | |||
sent to the requesting ITR. | sent to 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 | |||
applying the key derivation function specified in the KDF ID field. | applying the key derivation function specified in the KDF ID field. | |||
skipping to change at page 16, line 19 ¶ | skipping to change at page 17, line 23 ¶ | |||
6. Security Considerations | 6. Security Considerations | |||
6.1. Mapping System Security | 6.1. Mapping System Security | |||
The LISP-SEC threat model described in Section 3, assumes that the | The LISP-SEC threat model described in Section 3, assumes that the | |||
LISP Mapping System is working properly and eventually delivers Map- | LISP Mapping System is working properly and eventually delivers Map- | |||
Request messages to a Map-Server that is authoritative for the | Request messages to a Map-Server that is authoritative for the | |||
requested EID. | requested EID. | |||
Map-Register security, including the right for a LISP entity to | It is assumed that the Mapping System ensures the confidentiality of | |||
register an EID-prefix or to claim presence at an RLOC, is out of the | the OTK, and the integrity of the Map-Reply data. However, how the | |||
scope of LISP-SEC. | LISP Mapping System is secured is out of the scope of this document. | |||
Similarly, Map-Register security, including 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. | ||||
6.2. Random Number Generation | 6.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 | |||
6.3. Map-Server and ETR Colocation | 6.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. | |||
6.4. Deploying LISP-SEC | ||||
This memo is written according to [RFC2119]. Specifically, the use | ||||
of the key word SHOULD "or the adjective 'RECOMMENDED', mean that | ||||
there may exist valid reasons in particular circumstances to ignore a | ||||
particular item, but the full implications must be understood and | ||||
carefully weighed before choosing a different course". | ||||
Those deploying LISP-SEC according to this memo, should carefully | ||||
weight how the LISP-SEC threat model applies to their particular use | ||||
case or deployment. If they decide to ignore a particular | ||||
recommendation, they should make sure the risk associated with the | ||||
corresponding threats is well understood. | ||||
As an example, in certain closed and controlled deployments, it is | ||||
possible that the threat associated with a MiTM between the xTR and | ||||
the Mapping System is very low, and after carfeul consideration it | ||||
may be decided to allow a NULL key wrapping algorithm while carrying | ||||
the OTKs between the xTR and the Mapping System. | ||||
As an example at the other end of the spectrum, in certain other | ||||
deployments, attackers may be very sophisticated, and force the | ||||
deployers to enforce very strict policies in term of HMAC algorithms | ||||
accepted by an ITR. | ||||
Similar considerations apply to the entire LISP-SEC threat model, and | ||||
should guide the deployers and implementors whenever they encounter | ||||
the key word SHOULD across this memo. | ||||
7. IANA Considerations | 7. IANA Considerations | |||
7.1. HMAC functions | 7.1. ECM AD Type Registry | |||
The following HMAC ID values are defined by this memo for use as | IANA is requested to create the "ECM Authentication Data Type" | |||
Requested HMAC ID, EID HMAC ID, and PKT HMAC ID in the LISP-SEC | registry with values 0-255, for use in the ECM LISP-SEC Extensions | |||
Authentication Data: | Section 5.1. The registry MUST be initially populated with the | |||
following values: | ||||
Name Value Defined In | ||||
------------------------------------------------- | ||||
Reserved 0 This memo | ||||
LISP-SEC-ECM-EXT 1 This memo | ||||
HMAC Functions | ||||
Values 2-255 are unassigned. They are to be assigned according to | ||||
the "Specification Required" policy defined in [RFC5226]. | ||||
7.2. Map-Reply AD Type Registry | ||||
IANA is requested to create the "Map-Reply Authentication Data Type" | ||||
registry with values 0-255, for use in the Map-Reply LISP-SEC | ||||
Extensions Section 5.2. The registry MUST be initially populated | ||||
with the following values: | ||||
Name Value Defined In | ||||
------------------------------------------------- | ||||
Reserved 0 This memo | ||||
LISP-SEC-MR-EXT 1 This memo | ||||
HMAC Functions | ||||
Values 2-255 are unassigned. They are to be assigned according to | ||||
the "Specification Required" policy defined in [RFC5226]. | ||||
7.3. HMAC Functions | ||||
IANA is requested to create the "LISP-SEC Authentication Data HMAC | ||||
ID" registry with values 0-65535 for use as Requested HMAC ID, EID | ||||
HMAC ID, and PKT HMAC ID in the LISP-SEC Authentication Data: | ||||
Name Number Defined In | Name Number Defined In | |||
------------------------------------------------- | ------------------------------------------------- | |||
NONE 0 | NONE 0 This memo | |||
AUTH-HMAC-SHA-1-96 1 [RFC2104] | AUTH-HMAC-SHA-1-96 1 [RFC2104] | |||
AUTH-HMAC-SHA-256-128 2 [RFC4634] | AUTH-HMAC-SHA-256-128 2 [RFC6234] | |||
values 2-65535 are reserved to IANA. | ||||
HMAC Functions | HMAC Functions | |||
AUTH-HMAC-SHA-1-96 MUST be supported, AUTH-HMAC-SHA-256-128 should be | Values 3-65535 are unassigned. They are to be assigned according to | |||
the "Specification Required" policy defined in [RFC5226]. | ||||
AUTH-HMAC-SHA-1-96 MUST be supported, AUTH-HMAC-SHA-256-128 SHOULD be | ||||
supported. | supported. | |||
7.2. Key Wrap Functions | 7.4. Key Wrap Functions | |||
The following OTK Encryption ID values are defined by this memo for | IANA is requested to create the "LISP-SEC Authentication Data Key | |||
use as OTK key wrap algorithms ID in the LISP-SEC Authentication | Wrap ID" registry with values 0-65535 for use as OTK key wrap | |||
Data: | algorithms ID in the LISP-SEC Authentication Data: | |||
Name Number Defined In | Name Number Defined In | |||
------------------------------------------------- | ------------------------------------------------- | |||
NULL-KEY-WRAP-128 1 | Reserved 0 This memo | |||
NULL-KEY-WRAP-128 1 This memo | ||||
AES-KEY-WRAP-128 2 [RFC3394] | AES-KEY-WRAP-128 2 [RFC3394] | |||
values 0 and 3-65535 are reserved to IANA. | ||||
Key Wrap Functions | Key Wrap Functions | |||
Values 3-65535 are unassigned. They are to be assigned according to | ||||
the "Specification Required" policy defined in [RFC5226]. | ||||
NULL-KEY-WRAP-128, and AES-KEY-WRAP-128 MUST be supported. | NULL-KEY-WRAP-128, and AES-KEY-WRAP-128 MUST be supported. | |||
NULL-KEY-WRAP-128 is used to carry an unencrypted 128-bit OTK, with a | NULL-KEY-WRAP-128 is used to carry an unencrypted 128-bit OTK, with a | |||
64-bit preamble set to 0x0000000000000000 (64 bits). | 64-bit preamble set to 0x0000000000000000 (64 bits). | |||
7.3. Key Derivation Functions | 7.5. Key Derivation Functions | |||
The following KDF ID values are defined by this memo for use as KDF | IANA is requested to create the "LISP-SEC Authentication Data Key | |||
Derivation Function ID" registry with values 0-65535 for use as KDF | ||||
ID in the LISP-SEC Authentication Data: | ID in the LISP-SEC Authentication Data: | |||
Name Number Defined In | Name Number Defined In | |||
------------------------------------------------- | ------------------------------------------------- | |||
NONE 0 | NONE 0 This memo | |||
HKDF-SHA1-128 1 [RFC5869] | HKDF-SHA1-128 1 [RFC5869] | |||
values 2-65535 are reserved to IANA. | ||||
Key Derivation Functions | Key Derivation Functions | |||
Values 2-65535 are unassigned. They are to be assigned according to | ||||
the "Specification Required" policy defined in [RFC5226]. | ||||
HKDF-SHA1-128 MUST be supported | HKDF-SHA1-128 MUST be supported | |||
8. Acknowledgements | 8. Acknowledgements | |||
The authors would like to acknowledge Pere Monclus, Dave Meyer, Dino | The authors would like to acknowledge Pere Monclus, Dave Meyer, Dino | |||
Farinacci, Brian Weis, David McGrew, Darrel Lewis and Landon Curt | Farinacci, Brian Weis, David McGrew, Darrel Lewis and Landon Curt | |||
Noll for their valuable suggestions provided during the preparation | Noll for their valuable suggestions provided during the preparation | |||
of this document. | of this document. | |||
9. Normative References | 9. Normative References | |||
skipping to change at page 18, line 43 ¶ | skipping to change at page 21, line 24 ¶ | |||
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
IANA Considerations Section in RFCs", BCP 26, RFC 5226, | IANA Considerations Section in RFCs", BCP 26, RFC 5226, | |||
DOI 10.17487/RFC5226, May 2008, | DOI 10.17487/RFC5226, May 2008, | |||
<http://www.rfc-editor.org/info/rfc5226>. | <http://www.rfc-editor.org/info/rfc5226>. | |||
[RFC5869] Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand | [RFC5869] Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand | |||
Key Derivation Function (HKDF)", RFC 5869, | Key Derivation Function (HKDF)", RFC 5869, | |||
DOI 10.17487/RFC5869, May 2010, | DOI 10.17487/RFC5869, May 2010, | |||
<http://www.rfc-editor.org/info/rfc5869>. | <http://www.rfc-editor.org/info/rfc5869>. | |||
[RFC6234] Eastlake 3rd, D. and T. Hansen, "US Secure Hash Algorithms | ||||
(SHA and SHA-based HMAC and HKDF)", RFC 6234, | ||||
DOI 10.17487/RFC6234, May 2011, | ||||
<http://www.rfc-editor.org/info/rfc6234>. | ||||
[RFC6830] Farinacci, D., Fuller, V., Meyer, D., and D. Lewis, "The | [RFC6830] Farinacci, D., Fuller, V., Meyer, D., and D. Lewis, "The | |||
Locator/ID Separation Protocol (LISP)", RFC 6830, | Locator/ID Separation Protocol (LISP)", RFC 6830, | |||
DOI 10.17487/RFC6830, January 2013, | DOI 10.17487/RFC6830, January 2013, | |||
<http://www.rfc-editor.org/info/rfc6830>. | <http://www.rfc-editor.org/info/rfc6830>. | |||
[RFC6833] Fuller, V. and D. Farinacci, "Locator/ID Separation | [RFC6833] Fuller, V. and D. Farinacci, "Locator/ID Separation | |||
Protocol (LISP) Map-Server Interface", RFC 6833, | Protocol (LISP) Map-Server Interface", RFC 6833, | |||
DOI 10.17487/RFC6833, January 2013, | DOI 10.17487/RFC6833, January 2013, | |||
<http://www.rfc-editor.org/info/rfc6833>. | <http://www.rfc-editor.org/info/rfc6833>. | |||
[RFC6836] Fuller, V., Farinacci, D., Meyer, D., and D. Lewis, | ||||
"Locator/ID Separation Protocol Alternative Logical | ||||
Topology (LISP+ALT)", RFC 6836, DOI 10.17487/RFC6836, | ||||
January 2013, <http://www.rfc-editor.org/info/rfc6836>. | ||||
[RFC7835] Saucez, D., Iannone, L., and O. Bonaventure, "Locator/ID | [RFC7835] Saucez, D., Iannone, L., and O. Bonaventure, "Locator/ID | |||
Separation Protocol (LISP) Threat Analysis", RFC 7835, | Separation Protocol (LISP) Threat Analysis", RFC 7835, | |||
DOI 10.17487/RFC7835, April 2016, | DOI 10.17487/RFC7835, April 2016, | |||
<http://www.rfc-editor.org/info/rfc7835>. | <http://www.rfc-editor.org/info/rfc7835>. | |||
Authors' Addresses | Authors' Addresses | |||
Fabio Maino | Fabio Maino | |||
Cisco Systems | Cisco Systems | |||
170 Tasman Drive | 170 Tasman Drive | |||
End of changes. 63 change blocks. | ||||
177 lines changed or deleted | 286 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |