RFC 8005
Host Identity Protocol (HIP) Domain Name System (DNS) Extension
๐ RFC 8005: Host Identity Protocol (HIP) Domain Name System (DNS) Extension ๐
okay bestie, this one's giving DNS glow-up ๐ It's a Standards Track doc from the IETF (Internet Engineering Task Force) published in October 2016. The author is J. Laganier from Luminate Wireless, Inc., and it's ISSN 2070-1721. It also obsoletes RFC 5205, so if you've got an older copy of that one in your bookmarks, it's time to let it go ๐ซถ
- Obsoletes: RFC 5205
- Category: Standards Track
- Date: October 2016
- Author: J. Laganier, Luminate Wireless, Inc.
Abstract โจ
okay so this doc defines a brand new resource record (RR) for the Domain Name System (DNS) and explains how to use it with the Host Identity Protocol (HIP). ๐ฆ With it, a HIP node can stash four things in DNS: its Host Identity (HI), which is the public half of its public-private key pair; its Host Identity Tag (HIT), which is a truncated hash of its public key (PK); and the domain names of its rendezvous servers (RVSs). This document obsoletes RFC 5205. ๐
Status of This Memo ๐ธ
so this is an Internet Standards Track document, which means it's an official standard and not just a vibe ๐
It's a product of the Internet Engineering Task Force (IETF), and it represents the consensus of the IETF community. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG). If you want more info on Internet Standards, check out Section 2 of RFC 7841.
Info about the current status of this document, any errata, and how to send feedback can be found at http://www.rfc-editor.org/info/rfc8005 ๐
Copyright Notice ๐
okay legal bit, but make it cute: this is Copyright (c) 2016 IETF Trust and the persons identified as the document authors, and all rights are reserved ๐
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info), as they were in effect on the date this document was published. Please actually read these, because they explain your rights and restrictions for this doc ๐
Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as described in the Simplified BSD License ๐
Table of Contents ๐ง
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Conventions Used in This Document . . . . . . . . . . . . . . 3
3. Usage Scenarios . . . . . . . . . . . . . . . . . . . . . . . 3
3.1. Simple Static Single-Homed End Host . . . . . . . . . . . 5
3.2. Mobile End Host . . . . . . . . . . . . . . . . . . . . . 6
4. Overview of Using the DNS with HIP . . . . . . . . . . . . . 7
4.1. Storing HI, HIT, and RVS in the DNS . . . . . . . . . . . 7
4.2. Initiating Connections Based on DNS Names . . . . . . . . 8
5. HIP RR Storage Format . . . . . . . . . . . . . . . . . . . . 9
5.1. HIT Length Format . . . . . . . . . . . . . . . . . . . . 9
5.2. PK Algorithm Format . . . . . . . . . . . . . . . . . . . 9
5.3. PK Length Format . . . . . . . . . . . . . . . . . . . . 10
5.4. HIT Format . . . . . . . . . . . . . . . . . . . . . . . 10
5.5. Public Key Format . . . . . . . . . . . . . . . . . . . . 10
5.6. Rendezvous Servers Format . . . . . . . . . . . . . . . . 10
6. HIP RR Presentation Format . . . . . . . . . . . . . . . . . 11
7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 12
8. Security Considerations . . . . . . . . . . . . . . . . . . . 12
8.1. Attacker Tampering with an Insecure HIP RR . . . . . . . 13
8.2. Hash and HITs Collisions . . . . . . . . . . . . . . . . 13
8.3. DNSSEC . . . . . . . . . . . . . . . . . . . . . . . . . 14
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 15
10.1. Normative References . . . . . . . . . . . . . . . . . . 15
10.2. Informative References . . . . . . . . . . . . . . . . . 16
Appendix A. Changes from RFC 5205 . . . . . . . . . . . . . . . 17
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 17
Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 18
1. Introduction โจ
okay so this doc specifies a resource record (RR) for the Domain Name System (DNS) [RFC1034] and how to use it with the Host Identity Protocol (HIP) [RFC7401]. The RR lets a HIP node store in DNS its Host Identity (HI), the public component of its node public-private key pair ๐. It also stores its Host Identity Tag (HIT), which is a truncated hash of its HI, plus the domain names of its rendezvous servers (RVSs) [RFC8004] ๐
Right now, most Internet apps that need to talk to a remote host first turn a domain name (often typed in by a user) into one or more IP addresses. That step happens before any communication and depends on a DNS lookup ๐ธ
With HIP, IP addresses are mostly for on-the-wire communication between end hosts. Most Upper Layer Protocols (ULPs) and apps use HIs or HITs instead (ICMP might be an example of a ULP that doesn't) ๐ฆ So we need a way to translate a domain name into an HI. Using DNS for this is pretty straightforward: we define a HIP RR. When an app or ULP asks for a name-to-IP-address lookup, the resolver would also do a name-to-HI lookup and use the result to build the HI-to-IP-address mapping, which lives inside the HIP layer. The HIP layer then uses that mapping to translate HIs and HITs into IP addresses, and vice versa ๐ง
The HIP specification [RFC7401] describes the HIP base exchange between a HIP Initiator and a HIP Responder. It's a four-way handshake with four HIP packets total: I1, R1, I2, and R2. Since the HIP packets carry both the Initiator's and the Responder's HIT, the Initiator needs to know the Responder's HI and HIT before it starts the base exchange by sending an I1 packet ๐
The HIP Rendezvous Extension [RFC8004] lets a HIP node be reached through the IP address(es) of a third party, which is its RVS. An Initiator that wants a HIP association with a Responder served by an RVS would normally start the HIP base exchange by sending the I1 packet to the RVS IP address, not to the Responder's IP address. So we need a way to find the name of an RVS for a given host name ๐ซถ
This document introduces the HIP DNS RR to store the RVS, HI, and HIT information. โจ
2. Conventions Used in This Document ๐
okay, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. These are the official BCP 14 vibes, so read them exactly as written ๐
3. Usage Scenarios ๐
In this section we briefly go through a bunch of usage scenarios where DNS is useful with HIP ๐ฆ
With HIP, most apps and ULPs don't know which IP addresses are carrying packets on the wire. That means a HIP node can use multiple IP addresses for failover, redundancy, mobility, or renumbering, all in a way that's transparent to most ULPs and apps. They're bound to HIs, so they don't care when the IP addresses change ๐ธ
In these situations, for a node to be reachable by its Fully Qualified Domain Name (FQDN), the following information should be stored in the DNS:
- A set of IP addresses via A [RFC1035] and AAAA [RFC3596] Resource Record Sets (RRSets) [RFC2181].
- An HI, a HIT, and possibly a set of RVSs through HIP RRs.
The HIP RR is class independent. โจ
When a HIP node wants to start talking to another HIP node, it first needs to do a HIP base exchange to set up a HIP association with its peer. This exchange can be started opportunistically, meaning without prior knowledge of the Responder's HI, but if it's done that way, both nodes knowingly risk man-in-the-middle (MitM) attacks on the HIP exchange ๐ฌ To prevent those attacks, it is recommended that the Initiator first gets the Responder's HI and then starts the exchange. This can be done, for example, through manual configuration or DNS lookups. That's exactly why a HIP RR is introduced ๐
When a HIP node keeps changing its IP address(es), the natural DNS latency for propagating those changes may stop it from publishing its new IP address(es) in DNS. To solve this, the HIP Architecture [RFC4423] introduces RVSs [RFC8004]. A HIP host uses an RVS as a rendezvous point to stay reachable by possible HIP Initiators while it moves [RFC5206]. A HIP node like this would publish its RVS domain name(s) in a HIP RR, and keep its RVS up to date with its current set of IP addresses ๐ง
When a HIP node wants to start a HIP exchange with a Responder, it does a bunch of DNS lookups. Depending on the implementation type, the order of those lookups can vary. For example, implementations that use HIT in Application Programming Interfaces (APIs) may first query for HIP RRs at the Responder FQDN, while those using an IP address in APIs may first query for A and/or AAAA RRs ๐
In the following, we assume that the Initiator first queries for HIP RRs at the Responder FQDN. ๐
If the query for the HIP type gets a DNS answer with RCODE=3 (Name Error), then the Responder's information isn't in DNS, and further queries for the same owner name SHOULD NOT be made. ๐ โโ๏ธ
If the query for the HIP records returns a DNS answer with RCODE=0 (No Error) and an empty answer section, that means no HIP information is available at the Responder name. In that case, if the Initiator has been configured with a policy to fall back to opportunistic HIP (starting without knowing the Responder's HI) or plain IP, it would send out more queries for A and AAAA types at the Responder's FQDN ๐ธ
Depending on the combinations of answers, the situations described in Sections 3.1 and 3.2 can occur. ๐ฆ
Note that storing HIP RR information in DNS at an FQDN that is assigned to a non-HIP node might have ill effects on its reachability by HIP nodes. โ ๏ธ bestie, that one's a little spicy, so double-check your FQDN assignments before you publish anything ๐
3.1. Simple Static Single-Homed End Host
okay so picture a HIP node (R) with one static network attachment ๐ธ that wants to be reachable by its FQDN (www.example.com) and act as a Responder. Besides its IP address or addresses (IP-R), it stores a HIP RR in the DNS with its Host Identity (HI-R) and Host Identity Tag (HIT-R) ๐
An Initiator that wants to connect would usually send these queries (QCLASS=IN is assumed and left out of the examples, bestie):
Query #1: QNAME=www.example.com, QTYPE=HIP
That one gets back 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 section, but no RVS. ๐ฆ
Query #2: QNAME=www.example.com, QTYPE=AQuery #3: QNAME=www.example.com, QTYPE=AAAA
Those return DNS packets with RCODE=0 and, respectively, one or more A or AAAA RRs holding the Responder's IP address(es) (e.g., IP-R) in their answer sections.
Heads up ๐ For the rest of this doc, the diagrams squish several DNS queries and answers into one transaction so they stay neat, even though there are actually several queries and answers going back and forth, like in the text examples.
[HIP? A? ]
[www.example.com] +-----+
+-------------------------------->| |
| | DNS |
| +-------------------------------| |
| | [HIP? A? ] +-----+
| | [www.example.com]
| | [HIP HIT-R HI-R ]
| | [A IP-R ]
| v
+-----+ +-----+
| |--------------I1------------->| |
| I |<-------------R1--------------| R |
| |--------------I2------------->| |
| |<-------------R2--------------| |
+-----+ +-----+
Static Single-Homed Host
The Initiator would then send an I1 to the Responder's IP addresses (IP-R). ๐
3.2. Mobile End Host
A mobile HIP node (R) that wants to be reachable by its FQDN (www.example.com) stores stuff in the DNS ๐ง. Possibly along with its IP address or addresses (IP-R), it keeps its HI (HI-R), its HIT (HIT-R), and the domain name or names of its RVS or servers (e.g., rvs.example.com) in a HIP RR or records. Also, the mobile HIP node needs to tell its RVSs whenever its set of IP addresses changes. ๐ฅ
An Initiator that wants to associate with a mobile node like this would usually send these queries:
Query #1: QNAME=www.example.com, QTYPE=HIP
That returns a DNS packet with RCODE=0 and one or more HIP RRs with 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.
Query #2: QNAME=rvs.example.com, QTYPE=AQuery #3: QNAME=rvs.example.com, QTYPE=AAAA
Those return DNS packets with RCODE=0 and, respectively, one or more A or AAAA RRs containing an IP address(es) of the Responder's RVS (e.g., IP-RVS) in their answer sections. ๐
[HIP? ]
[www.example.com]
[A? ]
[rvs.example.com] +-----+
+----------------------------------------->| |
| | DNS |
| +----------------------------------------| |
| | [HIP? ] +-----+
| | [www.example.com ]
| | [HIP HIT-R HI-R rvs.example.com]
| |
| | [A? ]
| | [rvs.example.com]
| | [A IP-RVS ]
| |
| | +-----+
| | +------I1----->| RVS |-----I1------+
| | | +-----+ |
| | | |
| | | |
| v | v
+-----+ +-----+
| |<---------------R1------------| |
| I |----------------I2----------->| R |
| |<---------------R2------------| |
+-----+ +-----+
Mobile End Host
The Initiator would then send an I1 to the RVS IP address (IP-RVS). After that, the RVS relays the I1 up to the mobile node's IP address (IP-R), and that's where the HIP exchange gets completed. ๐
4. Overview of Using the DNS with HIP โจ
4.1. Storing HI, HIT, and RVS in the DNS
For any HIP node, its HI, the associated HIT, and the FQDN of its possible RVSs can be stored in a DNS HIP RR. Any conforming implementation may store an HI and its associated HIT in a DNS HIP RDATA format. HI and HIT are defined in Section 3 of the HIP specification [RFC7401]. ๐
When a HIP RR comes back, a host MUST always calculate the HI-derivative HIT to be used in the HIP exchange, as specified in Section 3 of the HIP specification [RFC7401]. The HIT included in the HIP RR SHOULD only be used as an optimization (e.g., table lookup). โญ
The HIP RR may also contain one or more domain names of one or more RVSs that HIP I1 packets might be sent to, in order to kick off an association with the entity named by this RR [RFC8004]. ๐ซถ
The Rendezvous Server field of the HIP RR stored at a given owner name MAY include the owner name itself. A semantically equivalent situation occurs if no RVS is present in the HIP RR stored at that owner name. This happens in two cases:
- The host is mobile, and the A and/or AAAA RR(s) stored at its host name contain the IP address(es) of its RVS rather than its own one.
- The host is stationary and can be reached directly at the IP address(es) contained in the A and/or AAAA RR(s) stored at its host name. This is a degenerate case of rendezvous service where the host somewhat acts as an RVS for itself. ๐
An RVS that receives such an I1 would then relay it to the appropriate Responder (the owner of the I1 receiver HIT). The Responder then completes the exchange with the Initiator, typically without ongoing help from the RVS. ๐
4.2. Initiating Connections Based on DNS Names
On a HIP node, a HIP exchange SHOULD be initiated whenever a ULP attempts to communicate with an entity and the DNS lookup returns HIP RRs. ๐
HIP RRs have a Time To Live (TTL) associated with them. When the number of seconds that passed since the record was retrieved exceeds the record's TTL, the record MUST be considered no longer valid and deleted by the entity that retrieved it. If access to the record is necessary to initiate communication with the entity to which the record corresponds, a new query MUST be made to retrieve a fresh copy of the record. โฐ
Real talk: an expired HIP RR is not a vibe. It has to be treated as no longer valid and deleted, and a fresh query is required before you can start talking to that entity again. ๐
There may be multiple HIP RRs associated with a single name. How a host chooses between multiple RRs when more than one is returned is outside the scope of this specification. The RVS information may be copied and aligned across multiple RRs, or it may be different for each one. When multiple choices are present, a host MUST check that the RVS used is associated with the HI being used. ๐
5. HIP RR Storage Format
The RDATA for a HIP RR consists of a PK Algorithm Type, the HIT length, a HIT, a PK (i.e., an HI), and optionally one or more RVSs. ๐ฆ
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HIT length | PK algorithm | PK length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ HIT ~
| |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |
+-+-+-+-+-+-+-+-+-+-+-+ +
| Public Key |
~ ~
| |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| |
~ Rendezvous Servers ~
| |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+
The HIT length, PK algorithm, PK length, HIT, and Public Key fields are REQUIRED. The Rendezvous Server field is OPTIONAL. ๐ธ
5.1. HIT Length Format
The HIT length indicates the length in bytes of the HIT field. This is an 8-bit unsigned integer. ๐ข
5.2. PK Algorithm Format
The PK algorithm field indicates the PK cryptographic algorithm and the implied Public Key field format. This is an 8-bit unsigned integer. This document reuses the values defined for the 'Algorithm Type' of the IPSECKEY RR [RFC4025].
Presently defined values are listed in Section 9 for reference. ๐
5.3. PK Length Format
The PK length indicates the length in bytes of the Public Key field. This is a 16-bit unsigned integer in network byte order. ๐งฎ
5.4. HIT Format
The HIT is stored as a binary value in network byte order. ๐
5.5. Public Key Format
Two of the PK types defined in this document, RSA and Digital Signature Algorithm (DSA), reuse the PK formats defined for the IPSECKEY RR [RFC4025]. ๐
The DSA key format is defined in RFC 2536 [RFC2536].
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] specification. โจ
In addition, this document similarly defines the PK format of type Elliptic Curve Digital Signature Algorithm (ECDSA) as the algorithm-specific portion of the DNSKEY RR RDATA for ECDSA [RFC6605]. That means all of the DNSKEY RR DATA after the first four octets, corresponding to the same portion of the DNSKEY RR that must be specified by documents that define a DNSSEC algorithm. ๐ฆ
5.6. Rendezvous Servers Format ๐ง
okay so the Rendezvous Server field is where the RVS names go. It holds one or more variable length wire-encoded domain names, all concatenated together and encoded as described in Section 3.3 of RFC 1035 [RFC1035]: "<domain-name> is a domain name represented as a series of labels, and terminated by a label with zero length" ๐ธ. The wire format is self-describing, so you never need a length for each name. That zero length label is the separator between RVS names in the same field. Since the rest of the RRDATA has a known length, and the total RDLENGTH is known too, you get all the length info you need to parse the HIP RR ๐ .
The domain names MUST NOT be compressed. โจ The RVSs (or servers) are listed in order of preference, so the first one is the preferred one. That creates an implicit order among the RVSs in a single RR ๐.
When multiple HIP RRs are present at the same owner name, this implicit order of RVSs within an RR MUST NOT be used to infer a preference order between RVSs stored in different RRs. ๐
6. HIP RR Presentation Format ๐
This section is the spec for how the HIP RR looks in a zone master file ๐.
The HIT length field is not represented, because it's implicitly known from the HIT field representation ๐ฆ.
The PK algorithm field is represented as unsigned integers ๐ข.
The HIT field is represented as the Base16 encoding [RFC4648] (a.k.a. hex or hexadecimal) of the HIT. The encoding MUST NOT contain whitespaces so it can be told apart from the Public Key field ๐.
The Public Key field is represented as the Base64 encoding of the PK, as defined in Section 4 of [RFC4648]. The encoding MUST NOT contain whitespace(s) so it can be told apart from the Rendezvous Server field ๐ซถ.
The PK length field is not represented either, because it's implicitly known from the Public Key field representation, which has no whitespaces ๐.
The Rendezvous Server field is represented by one or more domain names separated by whitespace(s). That whitespace only exists in the HIP RR representation format and is NOT part of the HIP RR wire format. (Okay, the spec says it's not part of the wire format, so it's just a presentation thing ๐ง .)
The complete representation of the HIP record is:
IN HIP ( pk-algorithm
base16-encoded-hit
base64-encoded-public-key
rendezvous-server[1]
...
rendezvous-server[n] )
When no RVSs are present, the representation of the HIP record is:
IN HIP ( pk-algorithm
base16-encoded-hit
base64-encoded-public-key )
7. Examples ๐
In the examples below, the Public Key field (which has no whitespace) gets wrapped, since it doesn't fit on one line of this document ๐.
Example of a node with an HI and a HIT but no RVS:
www.example.com. IN HIP ( 2 200100107B1A74DF365639CC39F1D578
AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cI
vM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ry
ra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXd
XF5D )
Example of a node with an HI, a HIT, and one RVS:
www.example.com. IN HIP ( 2 200100107B1A74DF365639CC39F1D578
AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cI
vM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ry
ra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXd
XF5D
rvs.example.com. )
Example of a node with an HI, a HIT, and two RVSs:
www.example.com. IN HIP ( 2 200100107B1A74DF365639CC39F1D578
AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cI
vM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ry
ra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXd
XF5D
rvs1.example.com.
rvs2.example.com. )
8. Security Considerations ๐ฅ
This section is about the known threats that come with using the HIP DNS Extension. Lowkey scary, so pay attention ๐ญ.
Similar to the IPSECKEY RR [RFC4025], the HIP DNS Extension lets two HIP nodes hand out the public keying material (HI) of their peer. Those HIs then get used in a key exchange between the peers. So the HIP DNS Extension is subject to the same threats as the IPSECKEY RR, which come from attacks on unsecured HIP RRs, as the rest of this section covers ๐.
A HIP node SHOULD obtain HIP RRs from a trusted party through a secure channel that ensures data integrity and authenticity of the RRs. DNSSEC [RFC4033] [RFC4034] [RFC4035] provides such a secure channel. However, it's super important to know that DNSSEC only gives integrity and authenticity guarantees for the channel between the DNS server publishing a zone and the HIP node. DNSSEC does NOT ensure that the entity publishing the zone is trusted ๐ โโ๏ธ. Therefore, the RRSIG of the HIP RRSet MUST NOT be misinterpreted as a certificate binding the HI and/or the HIT to the owner name. Do not treat it like a cert, bestie ๐ซ.
Without a proper secure channel, both parties are vulnerable to MitM and Denial-of-Service (DoS) attacks, and unrelated parties might get hit by DoS attacks too. These threats are described in the following sections ๐ฅ.
8.1. Attacker Tampering with an Insecure HIP RR
The HIP RR holds public keying material in the form of the named peer's PK (the HI) and its secure hash (the HIT). Neither of these is sensitive to an adversary who learns them ๐. But an attacker who can mount an active attack on the DNS, meaning they tamper with this HIP RR (for example, with DNS spoofing), can mount MitM attacks on the cryptographic core of the eventual HIP exchange (the Responder's HIP RR rewritten by the attacker) ๐.
The HIP RR may contain an RVS domain name that resolves to a destination IP address where the named peer can be reached by an I1, as per the HIP Rendezvous Extension [RFC8004]. So an attacker who can tamper with this RR can redirect I1 packets sent to the named peer to an IP address of their choosing, for DoS or MitM attacks ๐จ. Note that this kind of attack isn't specific to HIP and exists whether or not HIP and the HIP RR are used. Such an attacker might tamper with A and AAAA RRs as well ๐.
An attacker might use these two attacks together. They'd replace the Responder's HI and RVS IP address with their own in a spoofed DNS packet sent to the Initiator HI, then redirect all the exchanged packets to themselves and mount a MitM on HIP. In that case, HIP won't provide confidentiality, nor Initiator HI protection from eavesdroppers ๐ต๏ธโโ๏ธ.
8.2. Hash and HITs Collisions
Like many cryptographic algorithms, some secure hashes (for example SHA1, which HIP uses to generate a HIT from an HI) eventually become insecure. An exploit gets found where an attacker with reasonable computing power breaks one of the hash's security features (like its supposed collision resistance) ๐งจ. That's why a HIP end-node implementation SHOULD NOT authenticate its HIP peers based solely on a HIT retrieved from the DNS. Instead, it SHOULD use HI-based authentication ๐.
8.3. DNSSEC
Without DNSSEC, the HIP RR is subject to the threats described in RFC 3833 [RFC3833] ๐งพ.
9. IANA Considerations ๐
[RFC5205], which this document obsoletes, made the following definition and reservation in the "Resource Record (RR) TYPEs" subregistry under "Domain Name System (DNS) Parameters":
Value Type
----- ----
55 HIP
In the "Resource Record (RR) TYPEs" subregistry under "Domain Name System (DNS) Parameters", references to [RFC5205] have been replaced by references to this document ๐.
Just like [RFC5205], this document reuses the Algorithm Types defined by [RFC4025] for the IPSEC KEY RR. The presently defined values are shown here for reference only ๐งฉ:
Value Description
----- --------------------------------------------------------
1 A DSA key is present, in the format defined in [RFC2536]
2 A RSA key is present, in the format defined in [RFC3110]
IANA has made the following assignment in the "Algorithm Type Field" subregistry under "IPSECKEY Resource Record Parameters" [RFC4025] ๐:
Value Description
----- -----------
3 An ECDSA key is present, in the format defined in [RFC6605]
10. References ๐
10.1. Normative References
[RFC1034] Mockapetris, P., "Domain names - concepts and facilities",
STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987,
<http://www.rfc-editor.org/info/rfc1034>.
[RFC1035] Mockapetris, P., "Domain names - implementation and
specification", STD 13, RFC 1035, DOI 10.17487/RFC1035,
November 1987, <http://www.rfc-editor.org/info/rfc1035>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
[RFC2181] Elz, R. and R. Bush, "Clarifications to the DNS
Specification", RFC 2181, DOI 10.17487/RFC2181, July 1997,
<http://www.rfc-editor.org/info/rfc2181>.
[RFC3596] Thomson, S., Huitema, C., Ksinant, V., and M. Souissi,
"DNS Extensions to Support IP Version 6", RFC 3596,
DOI 10.17487/RFC3596, October 2003,
<http://www.rfc-editor.org/info/rfc3596>.
[RFC4025] Richardson, M., "A Method for Storing IPsec Keying
Material in DNS", RFC 4025, DOI 10.17487/RFC4025, March
2005, <http://www.rfc-editor.org/info/rfc4025>.
[RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S.
Rose, "DNS Security Introduction and Requirements",
RFC 4033, DOI 10.17487/RFC4033, March 2005,
<http://www.rfc-editor.org/info/rfc4033>.
[RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S.
Rose, "Resource Records for the DNS Security Extensions",
RFC 4034, DOI 10.17487/RFC4034, March 2005,
<http://www.rfc-editor.org/info/rfc4034>.
[RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S.
Rose, "Protocol Modifications for the DNS Security
Extensions", RFC 4035, DOI 10.17487/RFC4035, March 2005,
<http://www.rfc-editor.org/info/rfc4035>.
[RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data
Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006,
<http://www.rfc-editor.org/info/rfc4648>.
[RFC6605] Hoffman, P. and W. Wijngaards, "Elliptic Curve Digital
Signature Algorithm (DSA) for DNSSEC", RFC 6605,
DOI 10.17487/RFC6605, April 2012,
<http://www.rfc-editor.org/info/rfc6605>.
[RFC7401] Moskowitz, R., Ed., Heer, T., Jokela, P., and T.
Henderson, "Host Identity Protocol Version 2 (HIPv2)",
RFC 7401, DOI 10.17487/RFC7401, April 2015,
<http://www.rfc-editor.org/info/rfc7401>.
[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 โจ
Okay bestie, these are the informative refs, so they're the background reading that makes the whole spec click ๐๐
- [RFC2536] Eastlake 3rd, D., "DSA KEYs and SIGs in the Domain Name System (DNS)", RFC 2536, DOI 10.17487/RFC2536, March 1999,
http://www.rfc-editor.org/info/rfc2536. - [RFC3110] Eastlake 3rd, D., "RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS)", RFC 3110, DOI 10.17487/RFC3110, May 2001,
http://www.rfc-editor.org/info/rfc3110. - [RFC3833] Atkins, D. and R. Austein, "Threat Analysis of the Domain Name System (DNS)", RFC 3833, DOI 10.17487/RFC3833, August 2004,
http://www.rfc-editor.org/info/rfc3833. - [RFC4423] Moskowitz, R. and P. Nikander, "Host Identity Protocol (HIP) Architecture", RFC 4423, DOI 10.17487/RFC4423, May 2006,
http://www.rfc-editor.org/info/rfc4423. - [RFC5205] Nikander, P. and J. Laganier, "Host Identity Protocol (HIP) Domain Name System (DNS) Extensions", RFC 5205, DOI 10.17487/RFC5205, April 2008,
http://www.rfc-editor.org/info/rfc5205. - [RFC5206] Nikander, P., Henderson, T., Ed., Vogt, C., and J. Arkko, "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 ๐
Here's the glow-up list, what changed since RFC 5205 ๐ฆ
- Updated HIP references to revised HIP specifications. ๐
- Extended the DNS HIP RR to support Host Identities based on ECDSA. ๐
- Clarified that a new query must be made when the time that has passed since an RR was retrieved exceeds the TTL of the RR. โฐ
- Added considerations related to multiple HIP RRs being associated with a single name. ๐ฏ
- Clarified that the Base64 encoding in use is as per Section 4 of [RFC4648]. ๐ค
- Clarified the wire format when more than one RVS is defined in one RR. ๐ฐ๏ธ
- Clarified that "whitespace" is used as the delimiter in the human-readable representation of the RR but is not part of the wire format. โจ
Acknowledgments ๐ซถ
Okay so, as usual in the IETF, this doc is a team project! ๐ The authors want to thank the author (Michael Richardson), contributors, and reviewers of the IPSECKEY RR [RFC4025] spec, which this one was framed on ๐ธ They also shout out these people, who gave thoughtful and helpful discussions and/or suggestions that made this doc better: 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 doc come from the HIP specification [RFC7401] ๐ง And finally, thanks to Sheng Jiang for doing the Internet Area Directorate review during publication ๐
Contributors ๐
Pekka Nikander coauthored an earlier, experimental version of this spec [RFC5205] ๐ฆ
Author's Address ๐
Julien Laganier Luminate Wireless, Inc. Cupertino, CA United States of America
Email: julien.ietf@gmail.com ๐
๐ฆ where this page comes from
- ietf: rfc8005 2016-10
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms