draft-ietf-hip-rfc5205-bis-10.txt | rfc8005.txt | |||
---|---|---|---|---|
Network Working Group J. Laganier | Internet Engineering Task Force (IETF) J. Laganier | |||
Internet-Draft Luminate Wireless, Inc. | Request for Comments: 8005 Luminate Wireless, Inc. | |||
Obsoletes: 5205 (if approved) August 4, 2016 | Obsoletes: 5205 October 2016 | |||
Intended status: Standards Track | Category: Standards Track | |||
Expires: February 5, 2017 | ISSN: 2070-1721 | |||
Host Identity Protocol (HIP) Domain Name System (DNS) Extension | Host Identity Protocol (HIP) Domain Name System (DNS) Extension | |||
draft-ietf-hip-rfc5205-bis-10 | ||||
Abstract | Abstract | |||
This document specifies a resource record (RR) for the Domain Name | This document specifies a resource record (RR) for the Domain Name | |||
System (DNS), and how to use it with the Host Identity Protocol | System (DNS) and how to use it with the Host Identity Protocol (HIP). | |||
(HIP). This RR allows a HIP node to store in the DNS its Host | This RR allows a HIP node to store in the DNS its Host Identity (HI), | |||
Identity (HI, the public component of the node public-private key | the public component of the node public-private key pair; its Host | |||
pair), Host Identity Tag (HIT, a truncated hash of its public key), | Identity Tag (HIT), a truncated hash of its public key (PK); and the | |||
and the Domain Names of its rendezvous servers (RVSs). This document | domain names of its rendezvous servers (RVSs). This document | |||
obsoletes RFC5205. | obsoletes RFC 5205. | |||
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 http://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 February 5, 2017. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
http://www.rfc-editor.org/info/rfc8005. | ||||
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 13 ¶ | skipping to change at page 2, line 10 ¶ | |||
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 . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Conventions Used in This Document . . . . . . . . . . . . . . 3 | 2. Conventions Used in This Document . . . . . . . . . . . . . . 3 | |||
3. Usage Scenarios . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Usage Scenarios . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3.1. Simple Static Single Homed End-Host . . . . . . . . . . . 5 | 3.1. Simple Static Single-Homed End Host . . . . . . . . . . . 5 | |||
3.2. Mobile end-host . . . . . . . . . . . . . . . . . . . . . 6 | 3.2. Mobile End Host . . . . . . . . . . . . . . . . . . . . . 6 | |||
4. Overview of Using the DNS with HIP . . . . . . . . . . . . . 8 | 4. Overview of Using the DNS with HIP . . . . . . . . . . . . . 7 | |||
4.1. Storing HI, HIT, and RVS in the DNS . . . . . . . . . . . 8 | 4.1. Storing HI, HIT, and RVS in the DNS . . . . . . . . . . . 7 | |||
4.2. Initiating Connections Based on DNS Names . . . . . . . . 8 | 4.2. Initiating Connections Based on DNS Names . . . . . . . . 8 | |||
5. HIP RR Storage Format . . . . . . . . . . . . . . . . . . . . 9 | 5. HIP RR Storage Format . . . . . . . . . . . . . . . . . . . . 9 | |||
5.1. HIT Length Format . . . . . . . . . . . . . . . . . . . . 10 | 5.1. HIT Length Format . . . . . . . . . . . . . . . . . . . . 9 | |||
5.2. PK Algorithm Format . . . . . . . . . . . . . . . . . . . 10 | 5.2. PK Algorithm Format . . . . . . . . . . . . . . . . . . . 9 | |||
5.3. PK Length Format . . . . . . . . . . . . . . . . . . . . 10 | 5.3. PK Length Format . . . . . . . . . . . . . . . . . . . . 10 | |||
5.4. HIT Format . . . . . . . . . . . . . . . . . . . . . . . 10 | 5.4. HIT Format . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
5.5. Public Key Format . . . . . . . . . . . . . . . . . . . . 10 | 5.5. Public Key Format . . . . . . . . . . . . . . . . . . . . 10 | |||
5.6. Rendezvous Servers Format . . . . . . . . . . . . . . . . 10 | 5.6. Rendezvous Servers Format . . . . . . . . . . . . . . . . 10 | |||
6. HIP RR Presentation Format . . . . . . . . . . . . . . . . . 11 | 6. HIP RR Presentation Format . . . . . . . . . . . . . . . . . 11 | |||
7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
8.1. Attacker Tampering with an Insecure HIP RR . . . . . . . 13 | 8.1. Attacker Tampering with an Insecure HIP RR . . . . . . . 13 | |||
8.2. Hash and HITs Collisions . . . . . . . . . . . . . . . . 14 | 8.2. Hash and HITs Collisions . . . . . . . . . . . . . . . . 13 | |||
8.3. DNSSEC . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 8.3. DNSSEC . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | |||
10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 15 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 15 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 15 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 10.2. Informative References . . . . . . . . . . . . . . . . . 16 | |||
12.1. Normative references . . . . . . . . . . . . . . . . . . 15 | Appendix A. Changes from RFC 5205 . . . . . . . . . . . . . . . 17 | |||
12.2. Informative references . . . . . . . . . . . . . . . . . 16 | Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
Appendix A. Changes from RFC 5205 . . . . . . . . . . . . . . . 18 | Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 18 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
1. Introduction | 1. Introduction | |||
This document specifies a resource record (RR) for the Domain Name | This document specifies a resource record (RR) for the Domain Name | |||
System (DNS) [RFC1034], and how to use it with the Host Identity | System (DNS) [RFC1034] and how to use it with the Host Identity | |||
Protocol (HIP) [RFC7401]. This RR allows a HIP node to store in the | Protocol (HIP) [RFC7401]. This RR allows a HIP node to store in the | |||
DNS its Host Identity (HI, the public component of the node public- | DNS its Host Identity (HI), the public component of the node public- | |||
private key pair), Host Identity Tag (HIT, a truncated hash of its | private key pair; its Host Identity Tag (HIT), a truncated hash of | |||
HI), and the Domain Names of its rendezvous servers (RVSs) | its HI; and the domain names of its rendezvous servers (RVSs) | |||
[I-D.ietf-hip-rfc5204-bis]. | [RFC8004]. | |||
Currently, most of the Internet applications that need to communicate | Currently, most of the Internet applications that need to communicate | |||
with a remote host first translate a domain name (often obtained via | with a remote host first translate a domain name (often obtained via | |||
user input) into one or more IP addresses. This step occurs prior to | user input) into one or more IP addresses. This step occurs prior to | |||
communication with the remote host, and relies on a DNS lookup. | communication with the remote host and relies on a DNS lookup. | |||
With HIP, IP addresses are intended to be used mostly for on-the-wire | With HIP, IP addresses are intended to be used mostly for on-the-wire | |||
communication between end hosts, while most Upper Layer Protocols | communication between end hosts, while most Upper Layer Protocols | |||
(ULP) and applications use HIs or HITs instead (ICMP might be an | (ULPs) and applications use HIs or HITs instead (ICMP might be an | |||
example of an ULP not using them). Consequently, we need a means to | example of a ULP not using them). Consequently, we need a means to | |||
translate a domain name into an HI. Using the DNS for this | translate a domain name into an HI. Using the DNS for this | |||
translation is pretty straightforward: We define a HIP resource | translation is pretty straightforward: We define a HIP RR. Upon | |||
record. Upon query by an application or ULP for a name to IP address | query by an application or ULP for a name-to-IP-address lookup, the | |||
lookup, the resolver would then additionally perform a name to HI | resolver would then additionally perform a name-to-HI lookup and use | |||
lookup, and use it to construct the resulting HI to IP address | it to construct the resulting HI-to-IP-address mapping (which is | |||
mapping (which is internal to the HIP layer). The HIP layer uses the | internal to the HIP layer). The HIP layer uses the HI-to-IP-address | |||
HI to IP address mapping to translate HIs and HITs into IP addresses | mapping to translate HIs and HITs into IP addresses, and vice versa. | |||
and vice versa. | ||||
The HIP specification [RFC7401] specifies the HIP base exchange | The HIP specification [RFC7401] specifies the HIP base exchange | |||
between a HIP Initiator and a HIP Responder based on a four-way | between a HIP Initiator and a HIP Responder based on a four-way | |||
handshake involving a total of four HIP packets (I1, R1, I2, and R2). | handshake involving a total of four HIP packets (I1, R1, I2, and R2). | |||
Since the HIP packets contain both the Initiator and the Responder | Since the HIP packets contain both the Initiator and the Responder | |||
HIT, the initiator needs to have knowledge of the Responder's HI and | HIT, the Initiator needs to have knowledge of the Responder's HI and | |||
HIT prior to initiating the base exchange by sending an I1 packet.. | HIT prior to initiating the base exchange by sending an I1 packet. | |||
The HIP Rendezvous Extension [I-D.ietf-hip-rfc5204-bis] allows a HIP | The HIP Rendezvous Extension [RFC8004] allows a HIP node to be | |||
node to be reached via the IP address(es) of a third party, the | reached via the IP address(es) of a third party, the node's RVS. An | |||
node's rendezvous server (RVS). An Initiator willing to establish a | Initiator willing to establish a HIP association with a Responder | |||
HIP association with a Responder served by an RVS would typically | served by an RVS would typically initiate a HIP base exchange by | |||
initiate a HIP base exchange by sending the I1 packet initiating the | sending the I1 packet initiating the exchange towards the RVS IP | |||
exchange towards the RVS IP address rather than towards the Responder | address rather than towards the Responder IP address. Consequently, | |||
IP address. Consequently, we need a means to find the name of a | we need a means to find the name of an RVS for a given host name. | |||
rendezvous server for a given host name. | ||||
This document introduces the HIP DNS resource record to store the | This document introduces the HIP DNS RR to store the RVS, HI, and HIT | |||
Rendezvous Server (RVS), Host Identity (HI), and Host Identity Tag | information. | |||
(HIT) information. | ||||
2. Conventions Used in This Document | 2. Conventions Used in This Document | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
3. Usage Scenarios | 3. Usage Scenarios | |||
In this section, we briefly introduce a number of usage scenarios | In this section, we briefly introduce a number of usage scenarios | |||
where the DNS is useful with the Host Identity Protocol. | where the DNS is useful with HIP. | |||
With HIP, most applications and ULPs are unaware of the IP addresses | With HIP, most applications and ULPs are unaware of the IP addresses | |||
used to carry packets on the wire. Consequently, a HIP node could | used to carry packets on the wire. Consequently, a HIP node could | |||
take advantage of having multiple IP addresses for fail-over, | take advantage of having multiple IP addresses for failover, | |||
redundancy, mobility, or renumbering, in a manner that is transparent | redundancy, mobility, or renumbering, in a manner that is transparent | |||
to most ULPs and applications (because they are bound to HIs; hence, | to most ULPs and applications (because they are bound to HIs; hence, | |||
they are agnostic to these IP address changes). | they are agnostic to these IP address changes). | |||
In these situations, for a node to be reachable by reference to its | In these situations, for a node to be reachable by reference to its | |||
Fully Qualified Domain Name (FQDN), the following information should | Fully Qualified Domain Name (FQDN), the following information should | |||
be stored in the DNS: | be stored in the DNS: | |||
o A set of IP address(es) via A [RFC1035] and AAAA [RFC3596] RR sets | o A set of IP addresses via A [RFC1035] and AAAA [RFC3596] Resource | |||
(RRSets [RFC2181]). | Record Sets (RRSets) [RFC2181]. | |||
o A Host Identity (HI), Host Identity Tag (HIT), and possibly a set | o An HI, a HIT, and possibly a set of RVSs through HIP RRs. | |||
of rendezvous servers (RVS) through HIP RRs. | ||||
The HIP RR is class independent. | The HIP RR is class independent. | |||
When a HIP node wants to initiate communication with another HIP | When a HIP node wants to initiate communication with another HIP | |||
node, it first needs to perform a HIP base exchange to set up a HIP | node, it first needs to perform a HIP base exchange to set up a HIP | |||
association towards its peer. Although such an exchange can be | association towards its peer. Although such an exchange can be | |||
initiated opportunistically, i.e., without prior knowledge of the | initiated opportunistically, i.e., without prior knowledge of the | |||
Responder's HI, by doing so both nodes knowingly risk man-in-the- | Responder's HI, by doing so both nodes knowingly risk | |||
middle attacks on the HIP exchange. To prevent these attacks, it is | man-in-the-middle (MitM) attacks on the HIP exchange. To prevent | |||
recommended that the Initiator first obtains the HI of the Responder, | these attacks, it is recommended that the Initiator first obtains the | |||
and then initiates the exchange. This can be done, for example, | HI of the Responder and then initiates the exchange. This can be | |||
through manual configuration or DNS lookups. Hence, a HIP RR is | done, for example, through manual configuration or DNS lookups. | |||
introduced. | Hence, a HIP RR is introduced. | |||
When a HIP node is frequently changing its IP address(es), the | When a HIP node is frequently changing its IP address(es), the | |||
natural DNS latency for propagating changes may prevent it from | natural DNS latency for propagating changes may prevent it from | |||
publishing its new IP address(es) in the DNS. For solving this | publishing its new IP address(es) in the DNS. For solving this | |||
problem, the HIP Architecture [RFC4423] introduces rendezvous servers | problem, the HIP Architecture [RFC4423] introduces RVSs [RFC8004]. A | |||
(RVSs) [I-D.ietf-hip-rfc5204-bis]. A HIP host uses a rendezvous | HIP host uses an RVS as a rendezvous point to maintain reachability | |||
server as a rendezvous point to maintain reachability with possible | with possible HIP Initiators while moving [RFC5206]. Such a HIP node | |||
HIP Initiators while moving [RFC5206]. Such a HIP node would publish | would publish in the DNS its RVS domain name(s) in a HIP RR, while | |||
in the DNS its RVS domain name(s) in a HIP RR, while keeping its RVS | keeping its RVS up-to-date with its current set of IP addresses. | |||
up-to-date with its current set of IP addresses. | ||||
When a HIP node wants to initiate a HIP exchange with a Responder, it | When a HIP node wants to initiate a HIP exchange with a Responder, it | |||
will perform a number of DNS lookups. Depending on the type of | will perform a number of DNS lookups. Depending on the type of | |||
implementation, the order in which those lookups will be issued may | implementation, the order in which those lookups will be issued may | |||
vary. For instance, implementations using HIT in Application | vary. For instance, implementations using HIT in Application | |||
Programming Interfaces (APIs) may typically first query for HIP | Programming Interfaces (APIs) may typically first query for HIP RRs | |||
resource records at the Responder FQDN, while those using an IP | at the Responder FQDN, while those using an IP address in APIs may | |||
address in APIs may typically first query for A and/or AAAA resource | typically first query for A and/or AAAA RRs. | |||
records. | ||||
In the following, we assume that the Initiator first queries for HIP | In the following, we assume that the Initiator first queries for HIP | |||
resource records at the Responder FQDN. | RRs at the Responder FQDN. | |||
If the query for the HIP type was responded to with a DNS answer with | If the query for the HIP type was responded to with a DNS answer with | |||
RCODE=3 (Name Error), then the Responder's information is not present | RCODE=3 (Name Error), then the Responder's information is not present | |||
in the DNS and further queries for the same owner name SHOULD NOT be | in the DNS, and further queries for the same owner name SHOULD NOT be | |||
made. | made. | |||
In case the query for the HIP records returned a DNS answer with | In case the query for the HIP records returned a DNS answer with | |||
RCODE=0 (No Error) and an empty answer section, it means that no HIP | RCODE=0 (No Error) and an empty answer section, it means that no HIP | |||
information is available at the responder name. In such a case, if | information is available at the Responder name. In such a case, if | |||
the Initiator has been configured with a policy to fallback to | the Initiator has been configured with a policy to fall back to | |||
opportunistic HIP (initiating without knowing the Responder's HI) or | opportunistic HIP (initiating without knowing the Responder's HI) or | |||
plain IP, it would send out more queries for A and AAAA types at the | plain IP, it would send out more queries for A and AAAA types at the | |||
Responder's FQDN. | Responder's FQDN. | |||
Depending on the combinations of answers, the situations described in | Depending on the combinations of answers, the situations described in | |||
Section 3.1 and Section 3.2 can occur. | Sections 3.1 and 3.2 can occur. | |||
Note that storing HIP RR information in the DNS at an FQDN that is | Note that storing HIP RR information in the DNS at an FQDN that is | |||
assigned to a non-HIP node might have ill effects on its reachability | assigned to a non-HIP node might have ill effects on its reachability | |||
by HIP nodes. | by HIP nodes. | |||
3.1. Simple Static Single Homed End-Host | 3.1. Simple Static Single-Homed End Host | |||
In addition to its IP address(es) (IP-R), a HIP node (R) with a | In addition to its IP address or addresses (IP-R), a HIP node (R) | |||
single static network attachment that wishes to be reachable by | with a single static network attachment that wishes to be reachable | |||
reference to its FQDN (www.example.com) to act as a Responder would | by reference to its FQDN (www.example.com) to act as a Responder | |||
store in the DNS a HIP resource record containing its Host Identity | would store in the DNS a HIP RR containing its Host Identity (HI-R) | |||
(HI-R) and Host Identity Tag (HIT-R). | and Host Identity Tag (HIT-R). | |||
An Initiator willing to associate with a node would typically issue | An Initiator willing to associate with a node would typically issue | |||
the following queries: | the following queries: | |||
o Query #1: QNAME=www.example.com, QTYPE=HIP | o Query #1: QNAME=www.example.com, QTYPE=HIP | |||
(QCLASS=IN is assumed and omitted from the examples) | (QCLASS=IN is assumed and omitted from the examples) | |||
Which returns a DNS packet with RCODE=0 and one or more HIP RRs with | Which returns a DNS packet with RCODE=0 and one or more HIP RRs with | |||
the HIT and HI (e.g., HIT-R and HI-R) of the Responder in the answer | the HIT and HI (e.g., HIT-R and HI-R) of the Responder in the answer | |||
section, but no RVS. | section, but no RVS. | |||
o Query #2: QNAME=www.example.com, QTYPE=A | o Query #2: QNAME=www.example.com, QTYPE=A | |||
o Query #3: QNAME=www.example.com, QTYPE=AAAA | o Query #3: QNAME=www.example.com, QTYPE=AAAA | |||
Which would return DNS packets with RCODE=0 and respectively one or | ||||
more A or AAAA RRs containing IP address(es) of the Responder (e.g., | Which would return DNS packets with RCODE=0 and, respectively, one or | |||
IP-R) in their answer sections. | more A or AAAA RRs containing the IP address(es) of the Responder | |||
(e.g., IP-R) in their answer sections. | ||||
Caption: In the remainder of this document, for the sake of keeping | Caption: In the remainder of this document, for the sake of keeping | |||
diagrams simple and concise, several DNS queries and answers | diagrams simple and concise, several DNS queries and answers | |||
are represented as one single transaction, while in fact | are represented as one single transaction, while in fact | |||
there are several queries and answers flowing back and | there are several queries and answers flowing back and | |||
forth, as described in the textual examples. | forth, as described in the textual examples. | |||
[HIP? A? ] | [HIP? A? ] | |||
[www.example.com] +-----+ | [www.example.com] +-----+ | |||
+-------------------------------->| | | +-------------------------------->| | | |||
skipping to change at page 6, line 31 ¶ | skipping to change at page 6, line 22 ¶ | |||
| | [HIP HIT-R HI-R ] | | | [HIP HIT-R HI-R ] | |||
| | [A IP-R ] | | | [A IP-R ] | |||
| v | | v | |||
+-----+ +-----+ | +-----+ +-----+ | |||
| |--------------I1------------->| | | | |--------------I1------------->| | | |||
| I |<-------------R1--------------| R | | | I |<-------------R1--------------| R | | |||
| |--------------I2------------->| | | | |--------------I2------------->| | | |||
| |<-------------R2--------------| | | | |<-------------R2--------------| | | |||
+-----+ +-----+ | +-----+ +-----+ | |||
Static Singly Homed Host | Static Single-Homed Host | |||
The Initiator would then send an I1 to the Responder's IP addresses | The Initiator would then send an I1 to the Responder's IP addresses | |||
(IP-R). | (IP-R). | |||
3.2. Mobile end-host | 3.2. Mobile End Host | |||
A mobile HIP node (R) wishing to be reachable by reference to its | A mobile HIP node (R) wishing to be reachable by reference to its | |||
FQDN (www.example.com) would store in the DNS, possibly in addition | FQDN (www.example.com) would store in the DNS, possibly in addition | |||
to its IP address(es) (IP-R), its HI (HI-R), HIT (HIT-R), and the | to its IP address or addresses (IP-R), its HI (HI-R), its HIT | |||
domain name(s) of its rendezvous server(s) (e.g., rvs.example.com) in | (HIT-R), and the domain name or names of its RVS or servers (e.g., | |||
HIP resource record(s). The mobile HIP node also needs to notify its | rvs.example.com) in a HIP RR or records. The mobile HIP node also | |||
rendezvous servers of any change in its set of IP address(es). | needs to notify its RVSs of any change in its set of IP addresses. | |||
An Initiator willing to associate with such a mobile node would | An Initiator willing to associate with such a mobile node would | |||
typically issue the following queries: | typically issue the following queries: | |||
o Query #1: QNAME=www.example.com, QTYPE=HIP | o Query #1: QNAME=www.example.com, QTYPE=HIP | |||
Which returns a DNS packet with RCODE=0 and one or more HIP RRs with | Which returns a DNS packet with RCODE=0 and one or more HIP RRs with | |||
the HIT, HI, and RVS domain name(s) (e.g., HIT-R, HI-R, and | the HIT, HI, and RVS domain name or names (e.g., HIT-R, HI-R, and | |||
rvs.example.com) of the Responder in the answer section. | rvs.example.com) of the Responder in the answer section. | |||
o Query #2: QNAME=rvs.example.com, QTYPE=A | o Query #2: QNAME=rvs.example.com, QTYPE=A | |||
o Query #3: QNAME=rvs.example.com, QTYPE=AAAA | o Query #3: QNAME=rvs.example.com, QTYPE=AAAA | |||
Which return DNS packets with RCODE=0 and respectively one or more A | Which return DNS packets with RCODE=0 and, respectively, one or more | |||
or AAAA RRs containing IP address(es) of the Responder's RVS (e.g., | A or AAAA RRs containing an IP address(es) of the Responder's RVS | |||
IP-RVS) in their answer sections. | (e.g., IP-RVS) in their answer sections. | |||
[HIP? ] | [HIP? ] | |||
[www.example.com] | [www.example.com] | |||
[A? ] | [A? ] | |||
[rvs.example.com] +-----+ | [rvs.example.com] +-----+ | |||
+----------------------------------------->| | | +----------------------------------------->| | | |||
| | DNS | | | | DNS | | |||
| +----------------------------------------| | | | +----------------------------------------| | | |||
| | [HIP? ] +-----+ | | | [HIP? ] +-----+ | |||
skipping to change at page 7, line 44 ¶ | skipping to change at page 7, line 33 ¶ | |||
| | | +-----+ | | | | | +-----+ | | |||
| | | | | | | | | | |||
| | | | | | | | | | |||
| v | v | | v | v | |||
+-----+ +-----+ | +-----+ +-----+ | |||
| |<---------------R1------------| | | | |<---------------R1------------| | | |||
| I |----------------I2----------->| R | | | I |----------------I2----------->| R | | |||
| |<---------------R2------------| | | | |<---------------R2------------| | | |||
+-----+ +-----+ | +-----+ +-----+ | |||
Mobile End-Host | Mobile End Host | |||
The Initiator would then send an I1 to the RVS IP address (IP-RVS). | The Initiator would then send an I1 to the RVS IP address (IP-RVS). | |||
Following, the RVS will relay the I1 up to the mobile node's IP | Following, the RVS will relay the I1 up to the mobile node's IP | |||
address (IP-R), which will complete the HIP exchange. | address (IP-R), which will complete the HIP exchange. | |||
4. Overview of Using the DNS with HIP | 4. Overview of Using the DNS with HIP | |||
4.1. Storing HI, HIT, and RVS in the DNS | 4.1. Storing HI, HIT, and RVS in the DNS | |||
For any HIP node, its Host Identity (HI), the associated Host | For any HIP node, its HI, the associated HIT, and the FQDN of its | |||
Identity Tag (HIT), and the FQDN of its possible RVSs can be stored | possible RVSs can be stored in a DNS HIP RR. Any conforming | |||
in a DNS HIP RR. Any conforming implementation may store a Host | implementation may store an HI and its associated HIT in a DNS HIP | |||
Identity (HI) and its associated Host Identity Tag (HIT) in a DNS HIP | ||||
RDATA format. HI and HIT are defined in Section 3 of the HIP | RDATA format. HI and HIT are defined in Section 3 of the HIP | |||
specification [RFC7401]. | specification [RFC7401]. | |||
Upon return of a HIP RR, a host MUST always calculate the HI- | Upon return of a HIP RR, a host MUST always calculate the | |||
derivative HIT to be used in the HIP exchange, as specified in | HI-derivative HIT to be used in the HIP exchange, as specified in | |||
Section 3 of the HIP specification [RFC7401], while the HIT possibly | Section 3 of the HIP specification [RFC7401], while the HIT included | |||
embedded along SHOULD only be used as an optimization (e.g., table | in the HIP RR SHOULD only be used as an optimization (e.g., table | |||
lookup). | lookup). | |||
The HIP resource record may also contain one or more domain name(s) | The HIP RR may also contain one or more domain names of one or more | |||
of rendezvous server(s) towards which HIP I1 packets might be sent to | RVSs towards which HIP I1 packets might be sent to trigger the | |||
trigger the establishment of an association with the entity named by | establishment of an association with the entity named by this RR | |||
this resource record [I-D.ietf-hip-rfc5204-bis]. | [RFC8004]. | |||
The rendezvous server field of the HIP resource record stored at a | The Rendezvous Server field of the HIP RR stored at a given owner | |||
given owner name MAY include the owner name itself. A semantically | name MAY include the owner name itself. A semantically equivalent | |||
equivalent situation occurs if no rendezvous server is present in the | situation occurs if no RVS is present in the HIP RR stored at that | |||
HIP resource record stored at that owner name. Such situations occur | owner name. Such situations occur in two cases: | |||
in two cases: | ||||
o The host is mobile, and the A and/or AAAA resource record(s) | o The host is mobile, and the A and/or AAAA RR(s) stored at its host | |||
stored at its host name contain the IP address(es) of its | name contain the IP address(es) of its RVS rather than its own | |||
rendezvous server rather than its own one. | one. | |||
o The host is stationary, and can be reached directly at the IP | o The host is stationary and can be reached directly at the IP | |||
address(es) contained in the A and/or AAAA resource record(s) | address(es) contained in the A and/or AAAA RR(s) stored at its | |||
stored at its host name. This is a degenerate case of rendezvous | host name. This is a degenerate case of rendezvous service where | |||
service where the host somewhat acts as a rendezvous server for | the host somewhat acts as an RVS for itself. | |||
itself. | ||||
An RVS receiving such an I1 would then relay it to the appropriate | An RVS receiving such an I1 would then relay it to the appropriate | |||
Responder (the owner of the I1 receiver HIT). The Responder will | Responder (the owner of the I1 receiver HIT). The Responder will | |||
then complete the exchange with the Initiator, typically without | then complete the exchange with the Initiator, typically without | |||
ongoing help from the RVS. | ongoing help from the RVS. | |||
4.2. Initiating Connections Based on DNS Names | 4.2. Initiating Connections Based on DNS Names | |||
On a HIP node, a Host Identity Protocol exchange SHOULD be initiated | On a HIP node, a HIP exchange SHOULD be initiated whenever a ULP | |||
whenever a ULP attempts to communicate with an entity and the DNS | attempts to communicate with an entity, and the DNS lookup returns | |||
lookup returns HIP resource records. | HIP RRs. | |||
The HIP resource records have a Time To Live (TTL) associated with | HIP RRs have a Time To Live (TTL) associated with them. When the | |||
them. When the number of seconds that passed since the record was | number of seconds that passed since the record was retrieved exceeds | |||
retrieved exceeds the record's TTL, the record MUST be considered to | the record's TTL, the record MUST be considered no longer valid and | |||
be no longer valid and deleted by the entity that retrieved it. If | deleted by the entity that retrieved it. If access to the record is | |||
access to the record is necessary to initiate communication with the | necessary to initiate communication with the entity to which the | |||
entity to which the record corresponds, a new query MUST be be made | record corresponds, a new query MUST be made to retrieve a fresh copy | |||
to retrieve a fresh copy of the record. | of the record. | |||
There may be multiple HIP RRs associated with a single name. It is | There may be multiple HIP RRs associated with a single name. It is | |||
outside the scope of this specification as to how a host chooses from | outside the scope of this specification as to how a host chooses | |||
between multiple RRs when more than one is returned. The RVS | between multiple RRs when more than one is returned. The RVS | |||
information may be copied and aligned across multiple RRs, or may be | information may be copied and aligned across multiple RRs, or may be | |||
different for each one; a host MUST check that the RVS used is | different for each one; a host MUST check that the RVS used is | |||
associated with the HI being used, when multiple choices are present. | associated with the HI being used, when multiple choices are present. | |||
5. HIP RR Storage Format | 5. HIP RR Storage Format | |||
The RDATA for a HIP RR consists of a public key algorithm type, the | The RDATA for a HIP RR consists of a PK Algorithm Type, the HIT | |||
HIT length, a HIT, a public key (i.e., a HI), and optionally one or | length, a HIT, a PK (i.e., an HI), and optionally one or more RVSs. | |||
more rendezvous server(s). | ||||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| HIT length | PK algorithm | PK length | | | HIT length | PK algorithm | PK length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ HIT ~ | ~ HIT ~ | |||
| | | | | | |||
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at page 9, line 51 ¶ | skipping to change at page 9, line 38 ¶ | |||
| | | | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | |||
| | | | | | |||
~ Rendezvous Servers ~ | ~ Rendezvous Servers ~ | |||
| | | | | | |||
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+ | |||
The HIT length, PK algorithm, PK length, HIT, and Public Key fields | The HIT length, PK algorithm, PK length, HIT, and Public Key fields | |||
are REQUIRED. The Rendezvous Servers field is OPTIONAL. | are REQUIRED. The Rendezvous Server field is OPTIONAL. | |||
5.1. HIT Length Format | 5.1. HIT Length Format | |||
The HIT length indicates the length in bytes of the HIT field. This | The HIT length indicates the length in bytes of the HIT field. This | |||
is an 8-bit unsigned integer. | is an 8-bit unsigned integer. | |||
5.2. PK Algorithm Format | 5.2. PK Algorithm Format | |||
The PK algorithm field indicates the public key cryptographic | The PK algorithm field indicates the PK cryptographic algorithm and | |||
algorithm and the implied public key field format. This is an 8-bit | the implied Public Key field format. This is an 8-bit unsigned | |||
unsigned integer. This document reuses the values defined for the | integer. This document reuses the values defined for the 'Algorithm | |||
'algorithm type' of the IPSECKEY RR [RFC4025]. | Type' of the IPSECKEY RR [RFC4025]. | |||
Presently defined values are listed in Section 9 for reference. | Presently defined values are listed in Section 9 for reference. | |||
5.3. PK Length Format | 5.3. PK Length Format | |||
The PK length indicates the length in bytes of the Public key field. | The PK length indicates the length in bytes of the Public Key field. | |||
This is a 16-bit unsigned integer in network byte order. | This is a 16-bit unsigned integer in network byte order. | |||
5.4. HIT Format | 5.4. HIT Format | |||
The HIT is stored as a binary value in network byte order. | The HIT is stored as a binary value in network byte order. | |||
5.5. Public Key Format | 5.5. Public Key Format | |||
Two of the public key types defined in this document (RSA and DSA) | Two of the PK types defined in this document (RSA and Digital | |||
reuse the public key formats defined for the IPSECKEY RR [RFC4025]. | Signature Algorithm (DSA)) reuse the PK formats defined for the | |||
IPSECKEY RR [RFC4025]. | ||||
The DSA key format is defined in RFC 2536 [RFC2536]. | The DSA key format is defined in RFC 2536 [RFC2536]. | |||
The RSA key format is defined in RFC 3110 [RFC3110] and the RSA key | The RSA key format is defined in RFC 3110 [RFC3110], and the RSA key | |||
size limit (4096 bits) is relaxed in the IPSECKEY RR [RFC4025] | size limit (4096 bits) is relaxed in the IPSECKEY RR [RFC4025] | |||
specification. | specification. | |||
In addition, this document similarly defines the public key format of | In addition, this document similarly defines the PK format of type | |||
type ECDSA as the algorithm-specific portion of the DNSKEY RR RDATA | Elliptic Curve Digital Signature Algorithm (ECDSA) as the algorithm- | |||
for ECDSA [RFC6605], i.e, all of the DNSKEY RR DATA after the first | specific portion of the DNSKEY RR RDATA for ECDSA [RFC6605], i.e, all | |||
four octets, corresponding to the same portion of the DNSKEY RR that | of the DNSKEY RR DATA after the first four octets, corresponding to | |||
must be specified by documents that define a DNSSEC algorithm. | the same portion of the DNSKEY RR that must be specified by documents | |||
that define a DNSSEC algorithm. | ||||
5.6. Rendezvous Servers Format | 5.6. Rendezvous Servers Format | |||
The Rendezvous Servers field indicates one or more variable length | The Rendezvous Server field indicates one or more variable length | |||
wire-encoded domain names of rendezvous server(s), concatenated, and | wire-encoded domain names of one or more RVSs, concatenated and | |||
encoded as described in Section 3.3 of RFC 1035 [RFC1035]: "<domain- | encoded as described in Section 3.3 of RFC 1035 [RFC1035]: | |||
name> is a domain name represented as a series of labels, and | "<domain-name> is a domain name represented as a series of labels, | |||
terminated by a label with zero length". Since the wire-encoded | and terminated by a label with zero length". Since the wire-encoded | |||
format is self-describing, the length of each domain-name is | format is self-describing, the length of each domain name is | |||
implicit: The zero length label termination serves as a separator | implicit: The zero length label termination serves as a separator | |||
between multiple rendezvous server domain names concatenated in the | between multiple RVS domain names concatenated in the Rendezvous | |||
Rendezvous Servers field of a same HIP RR. Since the length of the | Server field of a same HIP RR. Since the length of the other portion | |||
other portion of the RR's RRDATA is known, and the overall length of | of the RR's RRDATA is known, and the overall length of the RR's RDATA | |||
the RR's RDATA is also known (RDLENGTH), all the length information | is also known (RDLENGTH), all the length information necessary to | |||
necessary to parse the HIP RR is available. | parse the HIP RR is available. | |||
The domain names MUST NOT be compressed. The rendezvous server(s) | The domain names MUST NOT be compressed. The RVS or servers are | |||
are listed in order of preference (i.e., first rendezvous server(s) | listed in order of preference (i.e., the first RVS or servers are | |||
are preferred), defining an implicit order amongst rendezvous servers | preferred), defining an implicit order amongst RVSs of a single RR. | |||
of a single RR. When multiple HIP RRs are present at the same owner | ||||
name, this implicit order of rendezvous servers within an RR MUST NOT | When multiple HIP RRs are present at the same owner name, this | |||
be used to infer a preference order between rendezvous servers stored | implicit order of RVSs within an RR MUST NOT be used to infer a | |||
in different RRs. | preference order between RVSs stored in different RRs. | |||
6. HIP RR Presentation Format | 6. HIP RR Presentation Format | |||
This section specifies the representation of the HIP RR in a zone | This section specifies the representation of the HIP RR in a zone | |||
master file. | master file. | |||
The HIT length field is not represented, as it is implicitly known | The HIT length field is not represented, as it is implicitly known | |||
thanks to the HIT field representation. | thanks to the HIT field representation. | |||
The PK algorithm field is represented as unsigned integers. | The PK algorithm field is represented as unsigned integers. | |||
The HIT field is represented as the Base16 encoding [RFC4648] (a.k.a. | The HIT field is represented as the Base16 encoding [RFC4648] (a.k.a. | |||
hex or hexadecimal) of the HIT. The encoding MUST NOT contain | hex or hexadecimal) of the HIT. The encoding MUST NOT contain | |||
whitespaces to distinguish it from the public key field. | whitespaces to distinguish it from the Public Key field. | |||
The Public Key field is represented as the Base64 encoding of the | The Public Key field is represented as the Base64 encoding of the PK, | |||
public key, as defined in Section 4 of [RFC4648]. The encoding MUST | as defined in Section 4 of [RFC4648]. The encoding MUST NOT contain | |||
NOT contain whitespace(s) to distinguish it from the Rendezvous | whitespace(s) to distinguish it from the Rendezvous Server field. | |||
Servers field. | ||||
The PK length field is not represented, as it is implicitly known | The PK length field is not represented, as it is implicitly known | |||
thanks to the Public key field representation containing no | thanks to the Public Key field representation containing no | |||
whitespaces. | whitespaces. | |||
The Rendezvous Servers field is represented by one or more domain | The Rendezvous Server field is represented by one or more domain | |||
name(s) separated by whitespace(s). These whitespace(s) are only | names separated by whitespace(s). Such whitespace is only used in | |||
used in the HIP RR representation format, and are not part of the HIP | the HIP RR representation format and is not part of the HIP RR wire | |||
RR wire format. | format. | |||
The complete representation of the HIP record is: | The complete representation of the HIP record is: | |||
IN HIP ( pk-algorithm | IN HIP ( pk-algorithm | |||
base16-encoded-hit | base16-encoded-hit | |||
base64-encoded-public-key | base64-encoded-public-key | |||
rendezvous-server[1] | rendezvous-server[1] | |||
... | ... | |||
rendezvous-server[n] ) | rendezvous-server[n] ) | |||
When no RVSs are present, the representation of the HIP record is: | When no RVSs are present, the representation of the HIP record is: | |||
IN HIP ( pk-algorithm | IN HIP ( pk-algorithm | |||
base16-encoded-hit | base16-encoded-hit | |||
base64-encoded-public-key ) | base64-encoded-public-key ) | |||
7. Examples | 7. Examples | |||
In the examples below, the public key field containing no whitespace | In the examples below, the Public Key field containing no whitespace | |||
is wrapped since it does not fit in a single line of this document. | is wrapped, since it does not fit in a single line of this document. | |||
Example of a node with HI and HIT but no RVS: | Example of a node with an HI and a HIT but no RVS: | |||
www.example.com. IN HIP ( 2 200100107B1A74DF365639CC39F1D578 | www.example.com. IN HIP ( 2 200100107B1A74DF365639CC39F1D578 | |||
AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cI | AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cI | |||
vM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ry | vM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ry | |||
ra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXd | ra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXd | |||
XF5D ) | XF5D ) | |||
Example of a node with a HI, HIT, and one RVS: | Example of a node with an HI, a HIT, and one RVS: | |||
www.example.com. IN HIP ( 2 200100107B1A74DF365639CC39F1D578 | www.example.com. IN HIP ( 2 200100107B1A74DF365639CC39F1D578 | |||
AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cI | AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cI | |||
vM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ry | vM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ry | |||
ra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXd | ra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXd | |||
XF5D | XF5D | |||
rvs.example.com. ) | rvs.example.com. ) | |||
Example of a node with a HI, HIT, and two RVSs: | Example of a node with an HI, a HIT, and two RVSs: | |||
www.example.com. IN HIP ( 2 200100107B1A74DF365639CC39F1D578 | www.example.com. IN HIP ( 2 200100107B1A74DF365639CC39F1D578 | |||
AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cI | AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cI | |||
vM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ry | vM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ry | |||
ra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXd | ra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXd | |||
XF5D | XF5D | |||
rvs1.example.com. | rvs1.example.com. | |||
rvs2.example.com. ) | rvs2.example.com. ) | |||
8. Security Considerations | 8. Security Considerations | |||
skipping to change at page 13, line 18 ¶ | skipping to change at page 13, line 5 ¶ | |||
with the usage of the HIP DNS Extension. | with the usage of the HIP DNS Extension. | |||
In a manner similar to the IPSECKEY RR [RFC4025], the HIP DNS | In a manner similar to the IPSECKEY RR [RFC4025], the HIP DNS | |||
Extension allows for the provision of two HIP nodes with the public | Extension allows for the provision of two HIP nodes with the public | |||
keying material (HI) of their peer. These HIs will be subsequently | keying material (HI) of their peer. These HIs will be subsequently | |||
used in a key exchange between the peers. Hence, the HIP DNS | used in a key exchange between the peers. Hence, the HIP DNS | |||
Extension is subject, as the IPSECKEY RR, to threats stemming from | Extension is subject, as the IPSECKEY RR, to threats stemming from | |||
attacks against unsecured HIP RRs, as described in the remainder of | attacks against unsecured HIP RRs, as described in the remainder of | |||
this section. | this section. | |||
A HIP node SHOULD obtain HIP RRs from a trusted party trough a secure | A HIP node SHOULD obtain HIP RRs from a trusted party through a | |||
channel ensuring data integrity and authenticity of the RRs. DNSSEC | secure channel ensuring data integrity and authenticity of the RRs. | |||
[RFC4033] [RFC4034] [RFC4035] provides such a secure channel. | DNSSEC [RFC4033] [RFC4034] [RFC4035] provides such a secure channel. | |||
However, it should be emphasized that DNSSEC only offers data | However, it should be emphasized that DNSSEC only offers data | |||
integrity and authenticity guarantees to the channel between the DNS | integrity and authenticity guarantees to the channel between the DNS | |||
server publishing a zone and the HIP node. DNSSEC does not ensure | server publishing a zone and the HIP node. DNSSEC does not ensure | |||
that the entity publishing the zone is trusted. Therefore, the RRSIG | that the entity publishing the zone is trusted. Therefore, the RRSIG | |||
signature of the HIP RRSet MUST NOT be misinterpreted as a | of the HIP RRSet MUST NOT be misinterpreted as a certificate binding | |||
certificate binding the HI and/or the HIT to the owner name. | the HI and/or the HIT to the owner name. | |||
In the absence of a proper secure channel, both parties are | In the absence of a proper secure channel, both parties are | |||
vulnerable to MitM and DoS attacks, and unrelated parties might be | vulnerable to MitM and Denial-of-Service (DoS) attacks, and unrelated | |||
subject to DoS attacks as well. These threats are described in the | parties might be subject to DoS attacks as well. These threats are | |||
following sections. | described in the following sections. | |||
8.1. Attacker Tampering with an Insecure HIP RR | 8.1. Attacker Tampering with an Insecure HIP RR | |||
The HIP RR contains public keying material in the form of the named | The HIP RR contains public keying material in the form of the named | |||
peer's public key (the HI) and its secure hash (the HIT). Both of | peer's PK (the HI) and its secure hash (the HIT). Both of these are | |||
these are not sensitive to attacks where an adversary gains knowledge | not sensitive to attacks where an adversary gains knowledge of them. | |||
of them. However, an attacker that is able to mount an active attack | However, an attacker that is able to mount an active attack on the | |||
on the DNS, i.e., tampers with this HIP RR (e.g., using DNS | DNS, i.e., tampers with this HIP RR (e.g., using DNS spoofing), is | |||
spoofing), is able to mount Man-in-the-Middle attacks on the | able to mount MitM attacks on the cryptographic core of the eventual | |||
cryptographic core of the eventual HIP exchange (Responder's HIP RR | HIP exchange (Responder's HIP RR rewritten by the attacker). | |||
rewritten by the attacker). | ||||
The HIP RR may contain a rendezvous server domain name resolved into | The HIP RR may contain an RVS domain name resolved into a destination | |||
a destination IP address where the named peer is reachable by an I1, | IP address where the named peer is reachable by an I1, as per the HIP | |||
as per the HIP Rendezvous Extension [I-D.ietf-hip-rfc5204-bis]. | Rendezvous Extension [RFC8004]. Thus, an attacker that is able to | |||
Thus, an attacker able to tamper with this RR is able to redirect I1 | tamper with this RR is able to redirect I1 packets sent to the named | |||
packets sent to the named peer to a chosen IP address for DoS or MitM | peer to a chosen IP address for DoS or MitM attacks. Note that this | |||
attacks. Note that this kind of attack is not specific to HIP and | kind of attack is not specific to HIP and exists independently of | |||
exists independently of whether or not HIP and the HIP RR are used. | whether or not HIP and the HIP RR are used. Such an attacker might | |||
Such an attacker might tamper with A and AAAA RRs as well. | tamper with A and AAAA RRs as well. | |||
An attacker might obviously use these two attacks in conjunction: It | An attacker might obviously use these two attacks in conjunction: It | |||
will replace the Responder's HI and RVS IP address by its own in a | will replace the Responder's HI and RVS IP address by its own in a | |||
spoofed DNS packet sent to the Initiator HI, then redirect all | spoofed DNS packet sent to the Initiator HI, and then redirect all | |||
exchanged packets to him and mount a MitM on HIP. In this case, HIP | exchanged packets to him and mount a MitM on HIP. In this case, HIP | |||
won't provide confidentiality nor Initiator HI protection from | won't provide confidentiality nor Initiator HI protection from | |||
eavesdroppers. | eavesdroppers. | |||
8.2. Hash and HITs Collisions | 8.2. Hash and HITs Collisions | |||
As with many cryptographic algorithms, some secure hashes (e.g., | As with many cryptographic algorithms, some secure hashes (e.g., | |||
SHA1, used by HIP to generate a HIT from an HI) eventually become | SHA1, used by HIP to generate a HIT from an HI) eventually become | |||
insecure, because an exploit has been found in which an attacker with | insecure, because an exploit has been found in which an attacker with | |||
reasonable computation power breaks one of the security features of | reasonable computation power breaks one of the security features of | |||
the hash (e.g., its supposed collision resistance). This is why a | the hash (e.g., its supposed collision resistance). This is why a | |||
HIP end-node implementation SHOULD NOT authenticate its HIP peers | HIP end-node implementation SHOULD NOT authenticate its HIP peers | |||
based solely on a HIT retrieved from the DNS, but SHOULD rather use | based solely on a HIT retrieved from the DNS, but rather SHOULD use | |||
HI-based authentication. | HI-based authentication. | |||
8.3. DNSSEC | 8.3. DNSSEC | |||
In the absence of DNSSEC, the HIP RR is subject to the threats | In the absence of DNSSEC, the HIP RR is subject to the threats | |||
described in RFC 3833 [RFC3833]. | described in RFC 3833 [RFC3833]. | |||
9. IANA Considerations | 9. IANA Considerations | |||
[RFC5205], obsoleted by this document, made the following definition | [RFC5205], obsoleted by this document, made the following definition | |||
and reservation in the IANA Registry for DNS RR Types: | and reservation in the "Resource Record (RR) TYPEs" subregistry under | |||
"Domain Name System (DNS) Parameters": | ||||
Value Type | Value Type | |||
----- ---- | ----- ---- | |||
55 HIP | 55 HIP | |||
This document updates the IANA Registry for DNS RR Types by replacing | In the "Resource Record (RR) TYPEs" subregistry under "Domain Name | |||
references to [RFC5205] by references to this document. | System (DNS) Parameters", references to [RFC5205] have been replaced | |||
by references to this document. | ||||
As [RFC5205], this document reuses the Algorithm Types defined by | As [RFC5205], this document reuses the Algorithm Types defined by | |||
[RFC4025] for the IPSEC KEY RR. Presently defined values are shown | [RFC4025] for the IPSEC KEY RR. Presently defined values are shown | |||
here for reference only: | here for reference only: | |||
Value Description | Value Description | |||
----- -------------------------------------------------------- | ----- -------------------------------------------------------- | |||
1 A DSA key is present, in the format defined in [RFC2536] | 1 A DSA key is present, in the format defined in [RFC2536] | |||
2 A RSA key is present, in the format defined in [RFC3110] | 2 A RSA key is present, in the format defined in [RFC3110] | |||
IANA is requested to make the following Algorithm Type reservation | ||||
and definition in the IANA Registry for the IPSECKEY RR [RFC4025] | ||||
Algorithm Types: | ||||
Value Description | ||||
-------- ----------- | ||||
TBD-IANA An ECDSA key is present, in the format defined in [RFC6605] | ||||
10. Contributors | ||||
Pekka Nikander co-authored an earlier, experimental version of this | ||||
specification [RFC5205]. | ||||
11. Acknowledgments | ||||
As usual in the IETF, this document is the result of a collaboration | IANA has made the following assignment in the "Algorithm Type Field" | |||
between many people. The authors would like to thank the author | subregistry under "IPSECKEY Resource Record Parameters" [RFC4025]: | |||
(Michael Richardson), contributors, and reviewers of the IPSECKEY RR | ||||
[RFC4025] specification, after which this document was framed. The | ||||
authors would also like to thank the following people, who have | ||||
provided thoughtful and helpful discussions and/or suggestions, that | ||||
have helped improve this document: Jeff Ahrenholz, Rob Austein, Hannu | ||||
Flinck, Olafur Gudmundsson, Tom Henderson, Peter Koch, Olaf Kolkman, | ||||
Miika Komu, Andrew McGregor, Erik Nordmark, and Gabriel Montenegro. | ||||
Some parts of this document stem from the HIP specification | ||||
[RFC7401]. Finally, thanks Sheng Jiang for performing the Internet | ||||
Area Directorate review of this document in the course of the | ||||
publication process. | ||||
12. References | Value Description | |||
----- ----------- | ||||
3 An ECDSA key is present, in the format defined in [RFC6605] | ||||
12.1. Normative references | 10. References | |||
[I-D.ietf-hip-rfc5204-bis] | 10.1. Normative References | |||
Laganier, J. and L. Eggert, "Host Identity Protocol (HIP) | ||||
Rendezvous Extension", draft-ietf-hip-rfc5204-bis-07 (work | ||||
in progress), December 2015. | ||||
[RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | |||
STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, | STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, | |||
<http://www.rfc-editor.org/info/rfc1034>. | <http://www.rfc-editor.org/info/rfc1034>. | |||
[RFC1035] Mockapetris, P., "Domain names - implementation and | [RFC1035] Mockapetris, P., "Domain names - implementation and | |||
specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, | specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, | |||
November 1987, <http://www.rfc-editor.org/info/rfc1035>. | November 1987, <http://www.rfc-editor.org/info/rfc1035>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
skipping to change at page 16, line 47 ¶ | skipping to change at page 16, line 15 ¶ | |||
[RFC6605] Hoffman, P. and W. Wijngaards, "Elliptic Curve Digital | [RFC6605] Hoffman, P. and W. Wijngaards, "Elliptic Curve Digital | |||
Signature Algorithm (DSA) for DNSSEC", RFC 6605, | Signature Algorithm (DSA) for DNSSEC", RFC 6605, | |||
DOI 10.17487/RFC6605, April 2012, | DOI 10.17487/RFC6605, April 2012, | |||
<http://www.rfc-editor.org/info/rfc6605>. | <http://www.rfc-editor.org/info/rfc6605>. | |||
[RFC7401] Moskowitz, R., Ed., Heer, T., Jokela, P., and T. | [RFC7401] Moskowitz, R., Ed., Heer, T., Jokela, P., and T. | |||
Henderson, "Host Identity Protocol Version 2 (HIPv2)", | Henderson, "Host Identity Protocol Version 2 (HIPv2)", | |||
RFC 7401, DOI 10.17487/RFC7401, April 2015, | RFC 7401, DOI 10.17487/RFC7401, April 2015, | |||
<http://www.rfc-editor.org/info/rfc7401>. | <http://www.rfc-editor.org/info/rfc7401>. | |||
12.2. Informative references | [RFC8004] Laganier, J. and L. Eggert, "Host Identity Protocol (HIP) | |||
Rendezvous Extension", RFC 8004, DOI 10.17487/RFC8004, | ||||
October 2016, <http://www.rfc-editor.org/info/rfc8004>. | ||||
10.2. Informative References | ||||
[RFC2536] Eastlake 3rd, D., "DSA KEYs and SIGs in the Domain Name | [RFC2536] Eastlake 3rd, D., "DSA KEYs and SIGs in the Domain Name | |||
System (DNS)", RFC 2536, DOI 10.17487/RFC2536, March 1999, | System (DNS)", RFC 2536, DOI 10.17487/RFC2536, March 1999, | |||
<http://www.rfc-editor.org/info/rfc2536>. | <http://www.rfc-editor.org/info/rfc2536>. | |||
[RFC3110] Eastlake 3rd, D., "RSA/SHA-1 SIGs and RSA KEYs in the | [RFC3110] Eastlake 3rd, D., "RSA/SHA-1 SIGs and RSA KEYs in the | |||
Domain Name System (DNS)", RFC 3110, DOI 10.17487/RFC3110, | Domain Name System (DNS)", RFC 3110, DOI 10.17487/RFC3110, | |||
May 2001, <http://www.rfc-editor.org/info/rfc3110>. | May 2001, <http://www.rfc-editor.org/info/rfc3110>. | |||
[RFC3833] Atkins, D. and R. Austein, "Threat Analysis of the Domain | [RFC3833] Atkins, D. and R. Austein, "Threat Analysis of the Domain | |||
skipping to change at page 17, line 22 ¶ | skipping to change at page 16, line 42 ¶ | |||
[RFC4423] Moskowitz, R. and P. Nikander, "Host Identity Protocol | [RFC4423] Moskowitz, R. and P. Nikander, "Host Identity Protocol | |||
(HIP) Architecture", RFC 4423, DOI 10.17487/RFC4423, May | (HIP) Architecture", RFC 4423, DOI 10.17487/RFC4423, May | |||
2006, <http://www.rfc-editor.org/info/rfc4423>. | 2006, <http://www.rfc-editor.org/info/rfc4423>. | |||
[RFC5205] Nikander, P. and J. Laganier, "Host Identity Protocol | [RFC5205] Nikander, P. and J. Laganier, "Host Identity Protocol | |||
(HIP) Domain Name System (DNS) Extensions", RFC 5205, | (HIP) Domain Name System (DNS) Extensions", RFC 5205, | |||
DOI 10.17487/RFC5205, April 2008, | DOI 10.17487/RFC5205, April 2008, | |||
<http://www.rfc-editor.org/info/rfc5205>. | <http://www.rfc-editor.org/info/rfc5205>. | |||
[RFC5206] Henderson, T., Ed., "End-Host Mobility and Multihoming | [RFC5206] Nikander, P., Henderson, T., Ed., Vogt, C., and J. Arkko, | |||
with the Host Identity Protocol", RFC 5206, April 2008. | "End-Host Mobility and Multihoming with the Host Identity | |||
Protocol", RFC 5206, DOI 10.17487/RFC5206, April 2008, | ||||
<http://www.rfc-editor.org/info/rfc5206>. | ||||
Appendix A. Changes from RFC 5205 | Appendix A. Changes from RFC 5205 | |||
o Updated HIP references to revised HIP specifications. | o Updated HIP references to revised HIP specifications. | |||
o Extended DNS HIP RR to support for Host Identities based on | o Extended DNS HIP RR to support for Host Identities based on ECDSA. | |||
Elliptic Curve Digital Signature Algorithm (ECDSA). | ||||
o Clarified that new query must be made when the time that passed | o Clarified that new query must be made when the time that passed | |||
since a RR was retrieved exceeds the TTL of the RR. | since an RR was retrieved exceeds the TTL of the RR. | |||
o Added considerations related to multiple HIP RRs being associated | o Added considerations related to multiple HIP RRs being associated | |||
with a single name. | with a single name. | |||
o Clarified that the Base64 encoding in use is as per Section 4 of | o Clarified that the Base64 encoding in use is as per Section 4 of | |||
[RFC4648]. | [RFC4648]. | |||
o Clarified the wire format when more than one rendezvous servers | o Clarified the wire format when more than one RVS is defined in one | |||
are defined in one RR. | RR. | |||
o Clarified that "whitespace" is used as the delimiter in the human- | o Clarified that "whitespace" is used as the delimiter in the human- | |||
readable representation of the RR but is not part of the wire | readable representation of the RR but is not part of the wire | |||
format. | format. | |||
Acknowledgments | ||||
As usual in the IETF, this document is the result of a collaboration | ||||
between many people. The authors would like to thank the author | ||||
(Michael Richardson), contributors, and reviewers of the IPSECKEY RR | ||||
[RFC4025] specification, after which this document was framed. The | ||||
authors would also like to thank the following people, who have | ||||
provided thoughtful and helpful discussions and/or suggestions, that | ||||
have helped improve this document: Jeff Ahrenholz, Rob Austein, Hannu | ||||
Flinck, Olafur Gudmundsson, Tom Henderson, Peter Koch, Olaf Kolkman, | ||||
Miika Komu, Andrew McGregor, Gabriel Montenegro, and Erik Nordmark. | ||||
Some parts of this document stem from the HIP specification | ||||
[RFC7401]. Finally, thanks to Sheng Jiang for performing the | ||||
Internet Area Directorate review of this document in the course of | ||||
the publication process. | ||||
Contributors | ||||
Pekka Nikander coauthored an earlier, experimental version of this | ||||
specification [RFC5205]. | ||||
Author's Address | Author's Address | |||
Julien Laganier | Julien Laganier | |||
Luminate Wireless, Inc. | Luminate Wireless, Inc. | |||
Cupertino, CA | Cupertino, CA | |||
USA | United States of America | |||
EMail: julien.ietf@gmail.com | Email: julien.ietf@gmail.com | |||
End of changes. 89 change blocks. | ||||
272 lines changed or deleted | 261 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/ |