One document matched: draft-ietf-hip-rfc5205-bis-05.xml
<?xml version="1.0" encoding="US-ASCII" ?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC1034 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1034' >
<!ENTITY RFC1035 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1035' >
<!ENTITY RFC2119 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119' >
<!ENTITY RFC2181 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2181' >
<!ENTITY RFC2536 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2536' >
<!ENTITY RFC3110 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3110' >
<!ENTITY RFC3596 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3596' >
<!ENTITY RFC3833 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3833' >
<!ENTITY RFC4025 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4025' >
<!ENTITY RFC4033 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4033' >
<!ENTITY RFC4034 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4034' >
<!ENTITY RFC4035 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4035' >
<!ENTITY RFC4423 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4423' >
<!ENTITY RFC5205 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5205' >
<!ENTITY RFC4648 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4648' >
<!ENTITY RFC6605 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6605' >
<!ENTITY I-D.ietf-hip-rfc5201-bis PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-hip-rfc5201-bis.xml' >
<!ENTITY I-D.ietf-hip-rfc5204-bis PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-hip-rfc5204-bis.xml' >
]>
<?rfc rfcedstyle="yes"?>
<?rfc subcompact="no"?>
<?rfc toc="yes"?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes" ?>
<rfc category="std" obsoletes="5205" ipr="trust200902" docName="draft-ietf-hip-rfc5205-bis-05">
<front>
<title abbrev="HIP DNS Extension">Host Identity Protocol (HIP) Domain Name System (DNS) Extension</title>
<author initials="J." surname="Laganier" fullname="Julien Laganier">
<organization abbrev="Luminate Wireless, Inc.">
Luminate Wireless, Inc.
</organization>
<address> <postal>
<street>
</street>
<city>Cupertino</city>
<region>CA</region>
<country>USA</country>
</postal>
<email>julien.ietf@gmail.com</email>
</address>
</author>
<date year="2014"/>
<area>Internet</area>
<keyword>I-D</keyword>
<keyword>HIP</keyword>
<keyword>host identity protocol</keyword>
<keyword>host identity payload</keyword>
<keyword>DNS</keyword>
<keyword>Domain Name System</keyword>
<abstract>
<t>
This document specifies a new resource record (RR) for the
Domain Name System (DNS), and how to use it with the Host
Identity Protocol (HIP). This RR allows a HIP node to store
in the DNS its Host Identity (HI, the public component of the
node public-private key pair), Host Identity Tag (HIT, a
truncated hash of its public key), and the Domain Names of its
rendezvous servers (RVSs). This document obsoletes RFC5205.
</t>
</abstract>
</front>
<middle>
<section title="Introduction">
<t>
This document specifies a new resource record (RR) for the
<xref target="RFC1034"> Domain Name System (DNS) </xref>, and
how to use it with the <xref target="I-D.ietf-hip-rfc5201-bis">
Host Identity Protocol (HIP)</xref>. This RR allows a
HIP node to store in the DNS its Host Identity (HI, the public
component of the node public-private key pair), Host Identity
Tag (HIT, a truncated hash of its HI), and the Domain Names
of its rendezvous servers (RVSs) <xref target="I-D.ietf-hip-rfc5204-bis"/>.
</t>
<t>
Currently, most of the Internet applications that need to
communicate with a remote host first translate a domain
name (often obtained via user input) into one or more IP
address(es). This step occurs prior to communication with
the remote host, and relies on a DNS lookup.
</t>
<t>
With HIP, IP addresses are intended to be used mostly
for on-the-wire communication between end hosts, while
most Upper Layer Protocols (ULP) and applications use
HIs or HITs instead (ICMP might be an example of an ULP
not using them). Consequently, we need a means to
translate a domain name into an HI. Using the DNS for
this translation is pretty straightforward: We define a
new HIP resource record. Upon query by an application
or ULP for a name to IP address lookup, the resolver would
then additionally perform a name to HI lookup, and
use it to construct the resulting HI to IP address mapping
(which is internal to the HIP layer). The HIP layer
uses the HI to IP address mapping to translate HIs and HITs
into IP addresses and vice versa.
</t>
<t>
The <xref target="I-D.ietf-hip-rfc5204-bis">HIP Rendezvous
Extension</xref> allows a HIP node to be
reached via the IP address(es) of a third party, the
node's rendezvous server (RVS). An Initiator willing
to establish a HIP association with a Responder served
by an RVS would typically initiate a HIP exchange by
sending an I1 towards the RVS IP address rather than
towards the Responder IP address. Consequently, we
need a means to find the name of a rendezvous server
for a given host name.
</t>
<t>
This document introduces the new HIP DNS resource record
to store the Rendezvous Server (RVS), Host Identity (HI), and Host Identity Tag (HIT)
information.
</t>
</section>
<section title="Conventions Used in This Document">
<t>
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 <xref target="RFC2119"/>.
</t>
</section>
<section title="Usage Scenarios">
<t>
In this section, we briefly introduce a number of usage
scenarios where the DNS is useful with the Host Identity
Protocol.
</t>
<t>
With HIP, most applications and ULPs are unaware of the IP
addresses used to carry packets on the wire. Consequently,
a HIP node could take advantage of having multiple IP
addresses for fail-over, redundancy, mobility, or
renumbering, in a manner that is transparent to most ULPs
and applications (because they are bound to HIs; hence, they
are agnostic to these IP address changes).
</t> <t>
In these situations, for a node to be reachable by
reference to its Fully Qualified Domain Name (FQDN), the following
information should be stored in the DNS:
</t>
<t>
<list style="symbols">
<t>A set of IP address(es) via A <xref target="RFC1035"/>
and AAAA <xref target="RFC3596"/> RR sets (RRSets <xref target="RFC2181"/>).</t>
<t>A Host Identity (HI), Host Identity Tag (HIT), and possibly a set of rendezvous servers (RVS) through HIP RRs.</t>
</list>
</t>
<t>
The HIP RR is class independent.
</t>
<t>
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 association towards its peer. Although such an
exchange can be initiated opportunistically, i.e., without
prior knowledge of the Responder's HI, by doing so both nodes
knowingly risk man-in-the-middle attacks on the HIP exchange.
To prevent these attacks, it is recommended that the Initiator
first obtain the HI of the Responder, and then initiate the
exchange. This can be done, for example, through manual
configuration or DNS lookups. Hence, a new HIP RR is
introduced.
</t>
<t>
When a HIP node is frequently changing its IP address(es),
the natural DNS latency for propagating changes may prevent
it from publishing its new IP address(es) in the DNS. For
solving this problem, the <xref target="RFC4423"> HIP
Architecture</xref> introduces rendezvous servers (RVSs) <xref target="I-D.ietf-hip-rfc5204-bis"/>.
A HIP host uses a rendezvous server as a rendezvous point to
maintain reachability with possible HIP initiators while
moving <xref target="RFC5206"/>. Such a HIP node
would publish in the DNS its RVS domain name(s) in a HIP RR,
while keeping its RVS up-to-date with its current set of IP
addresses.
</t>
<t>
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 implementation, the order in which those lookups
will be issued may vary. For instance, implementations using
HIT in APIs may typically first query for HIP
resource records at the Responder FQDN, while those using an
IP address in APIs may typically first query for A and/or AAAA
resource records.
</t>
<t>
In the following, we assume that the Initiator first queries
for HIP resource records at the Responder FQDN.
</t>
<t>
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 in the DNS and further queries for the same owner name
SHOULD NOT be made.
</t>
<t>
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 information is available at the responder name. In
such a case, if the Initiator has been configured with a policy
to fallback to 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 Responder's FQDN.
</t>
<t>
Depending on the combinations of answers, the situations described in
<xref target="single"/> and <xref target="mobile"/> can occur.
</t>
<t>
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 by HIP nodes.
</t>
<section anchor="single" title="Simple Static Singly Homed End-Host">
<t>
A HIP node (R) with a single static network attachment, wishing to be
reachable by reference to its FQDN (www.example.com), would store in the DNS, in
addition to its IP address(es) (IP-R), its Host Identity (HI-R) and Host Identity Tag (HIT-R) in a HIP
resource record.
</t>
<t>
An Initiator willing to associate with a node would typically issue the following queries:
<list style="symbols">
<t>
QNAME=www.example.com, QTYPE=HIP
</t>
<t>
(QCLASS=IN is assumed and omitted from the examples)
</t>
</list>
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 section, but no RVS.
<list style="symbols">
<t>
QNAME=www.example.com, QTYPE=A
QNAME=www.example.com, QTYPE=AAAA
</t>
</list>
Which returns DNS packets with RCODE=0 and one or more A or AAAA RRs containing
IP address(es) of the Responder (e.g., IP-R) in the answer section.
</t>
<figure title="Static Singly Homed Host">
<artwork>
Caption: In the remainder of this document, for the sake of keeping
diagrams simple and concise, several DNS queries and answers
are represented as one single transaction, while in fact
there are several queries and answers flowing back and
forth, as described in the textual 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--------------| |
+-----+ +-----+
</artwork>
</figure>
<t>
The Initiator would then send an I1
to the Responder's IP addresses (IP-R).
</t>
</section>
<section anchor="mobile" title="Mobile end-host">
<t>
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 to its IP
address(es) (IP-R), its HI (HI-R), HIT (HIT-R), and the domain name(s)
of its rendezvous server(s) (e.g., rvs.example.com) in HIP resource record(s).
The mobile HIP node also needs to notify its rendezvous
servers of any change in its set of IP address(es).
</t>
<t>
An Initiator willing to associate with such a mobile node would typically issue the following queries:
<list style="symbols">
<t>
QNAME=www.example.com, QTYPE=HIP
</t>
</list>
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 rvs.example.com) of the Responder in the answer section.
<list style="symbols">
<t>
QNAME=rvs.example.com, QTYPE=A
QNAME=www.example.com, QTYPE=AAAA
</t>
</list>
Which returns DNS packets with RCODE=0 and one or more A or AAAA RRs containing
IP address(es) of the Responder's RVS (e.g., IP-RVS) in the answer section.
</t>
<!--<t>
QNAME=www.example.com, QTYPE=A
</t>
</list>
Which returns a DNS packet with RCODE=0 and an empty answer section.
-->
<figure title="Mobile End-Host">
<artwork>
[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------------| |
+-----+ +-----+
</artwork>
</figure>
<t>
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 address (IP-R), which will complete the HIP
exchange.
</t>
</section>
</section>
<section anchor="sec-overview-functionality"
title="Overview of Using the DNS with HIP">
<section title="Storing HI, HIT, and RVS in the DNS">
<t>
For any HIP node, its Host Identity (HI), the associated Host Identity
Tag (HIT), and the FQDN of its possible RVSs can be stored in a DNS HIP RR.
Any conforming implementation may store a Host Identity (HI) and its associated
Host Identity Tag (HIT) in a DNS HIP RDATA format. <!-- If a particular form of
an HI does not already have a specified RDATA format, a new RDATA-like format
SHOULD be defined for the HI.--> HI and HIT are defined in Section 3 of the <xref
target="I-D.ietf-hip-rfc5201-bis">HIP specification</xref>.
</t>
<!-- <section title="Different types of HITs">
<t>
There are two types of HITs. HITs of the first type, called Type 1
HIT, consist of an 8-bit prefix followed by 120 bits of the hash of
the public key. HITs of the second type (Type 2 HIT) consist of a
Host Assigning Authority Field (HAA), and only the last 64 bits come
from a SHA-1 hash of the Host Identity. This latter format for HIT
is recommended for 'well known' systems. It is possible to support a
resolution mechanism for these names in hierarchical directories,
like the DNS.
</t><t>
This document fully specifies only Type 2 HITs. Type 1 HITs
are specified in Section 3.1 of <xref target="I-D.ietf-hip-rfc5201-bis"/>.
</t><t>
Note that the format how HITs are stored in the HIP RRs may be
different form the format actually used in protocols,
the HIP base exchange <xref target="I-D.ietf-hip-rfc5201-bis"/> included. This is because
the DNS RR explicitly contains the HIT type and algorithm,
while some protocols may prefer to use a prefix
to indicate the HIT type. The implementations
are expected to use the actual HI when comparing
Host Identities. </t>
<section title="Host Assigning Authority (HAA) field">
<t>
The 64 bits of HAA supports two levels of delegation. The
first is a registered assigning authority (RAA). The second is
a registered identity (RI, commonly a company). The RAA is 24
bits with values assign sequentially by ICANN. The RI is 40
bits, also assigned sequentially but by the RAA.</t>
</section>
<section title="Storing HAA in HIP Resource Records">
<t>
Any conforming implementation may store a domain name Host Assigning Authority
(HAA) in a DNS HIP RDATA format. A HAA MUST be stored like a Type 2 HIT,
while the least significant bits of the HIT
extracted from the HI hash output are set to zero, the Host Identity Length is
set zero, and the Host Identity field is omitted. If a particular form of a HAA
does not already have an associated HIT specified RDATA format, a new
RDATA-like format SHOULD be defined for the HIT/HAA.
</t>
</section>
-->
<t>
Upon return of a HIP RR, a host MUST always calculate the
HI-derivative HIT to be used in the HIP exchange, as specified in Section 3
of the
<xref target="I-D.ietf-hip-rfc5201-bis">HIP specification</xref>, while
the HIT possibly embedded along SHOULD only be used as an
optimization (e.g., table lookup).
</t>
<t>
The HIP resource record may also contain
one or more domain name(s) of rendezvous
server(s) towards which HIP I1 packets might be sent to
trigger the establishment of an association with the
entity named by this resource record <xref
target="I-D.ietf-hip-rfc5204-bis"/>.
</t>
<t>
The rendezvous server field of the HIP resource record stored at a
given owner name MAY include the owner name itself. A semantically
equivalent situation occurs if no rendezvous server is present in the
HIP resource record stored at that owner name.
Such situations occur in two cases:
<list style="symbols">
<t>The host is mobile, and the A and/or AAAA resource record(s) stored
at its host name contain the IP address(es) of its rendezvous
server rather than its own one.</t>
<t>The host is stationary, and can be reached directly at the IP
address(es) contained in the A and/or AAAA resource record(s) stored at
its host name. This is a degenerated case of rendezvous service where
the host somewhat acts as a rendezvous server for itself.</t>
</list>
</t>
<t>
An RVS receiving such an I1 would then relay it to the appropriate
Responder (the owner of the I1 receiver HIT). The Responder will then
complete the exchange with the Initiator, typically without ongoing help
from the RVS.
</t>
</section>
<section title="Initiating Connections Based on DNS Names">
<t>
On a HIP node, a Host Identity Protocol exchange SHOULD
be initiated whenever a ULP attempts to
communicate with an entity and the DNS lookup returns
HIP resource records.
</t>
</section>
</section>
<section anchor="rdata" title="HIP RR Storage Format">
<t>
The RDATA for a HIP RR consists of a public key
algorithm type, the HIT length, a HIT, a public key, and
optionally one or more rendezvous server(s).
<figure>
<artwork>
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 ~
| |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+
</artwork>
</figure>
</t>
<t>
The HIT length, PK algorithm, PK length, HIT, and Public Key fields are REQUIRED.
The Rendezvous Servers field is OPTIONAL.
</t>
<!-- <artwork>
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 type | HIT algorithm | PK algorithm | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ HIT |
~ ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| /
/ Public Key /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
</artwork>
-->
<!--
<section anchor="hitt-rdata" title="HIT type format">
<t>
The HIT type field indicates the Host Identity Tag (HIT) type
and the implied HIT format.
</t>
<t>
The following values are defined:
</t>
<t><list style="empty">
<t>0 No HIT is present</t>
<t>1 A Type 1 HIT is present</t>
<t>2 A Type 2 HIT is present</t>
<t>3-6 Unassigned</t>
<t>7 A HAA is present</t>
</list>
</t>
-->
<section anchor="hita-rdata" title="HIT Length Format">
<t>
The HIT length indicates the length in bytes of the HIT field.
This is an 8-bit unsigned integer.
</t>
</section>
<section anchor="alg-rdata" title="PK Algorithm Format ">
<t>
The PK algorithm field indicates the public key
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 <xref target="RFC4025">
IPSECKEY RR</xref>.
</t>
<t>
Presently defined values are listed in <xref target="iana-cons"/> for reference.
</t>
<!-- <t> <list style="empty">
<t>1 A RSA key is present, in the format defined in <xref target="RFC3110">RFC3110</xref>.</t>
<t>2 A DSA key is present, in the format defined in <xref target="RFC2536">RFC2536</xref>.</t>
</list></t>
-->
</section>
<section anchor="hitpk-rdata" title="PK Length Format">
<t>
The PK length indicates the length in bytes
of the Public key field. This is a 16-bit unsigned integer in network byte order.
</t>
</section>
<section anchor="hittype-rdata" title="HIT Format">
<t>
The HIT is stored as a binary value in network byte order.
</t>
</section>
<section anchor="pk-rdata" title="Public Key Format">
<t>
Two of the public key types defined in this document
(RSA
and DSA) reuse the public key formats defined for
the <xref target="RFC4025">
IPSECKEY RR</xref>.
</t>
<t>The DSA key format is defined in <xref target="RFC2536">RFC
2536</xref>.</t>
<t>The RSA key format is defined in <xref
target="RFC3110">RFC 3110</xref> and the RSA key
size limit (4096 bits) is relaxed in the <xref
target="RFC4025"> IPSECKEY
RR</xref> specification.</t>
<t>
In addition, this document similarly defines the public key
format of type ECDSA as the algorithm-specific portion of the DNSKEY RR RDATA for
ECDSA <xref target="RFC6605"/>, i.e, 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.
</t>
</section>
<section anchor="hiprvs-rdata" title="Rendezvous Servers Format">
<t> The Rendezvous Servers field indicates one or more variable
length wire-encoded domain names of rendezvous server(s), as
described in Section 3.3 of <xref target="RFC1035">RFC 1035</xref>.
The wire-encoded format is self-describing, so the length is
implicit. The domain names MUST NOT be compressed. The rendezvous
server(s) are listed in order of preference (i.e., first rendezvous
server(s) are preferred), defining an implicit order amongst rendezvous servers
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 be used to infer a preference order
between rendezvous servers stored in different RRs. </t>
</section>
</section>
<section title="HIP RR Presentation Format">
<t>
This section specifies the representation of the HIP
RR in a zone master file.
</t>
<t>
The HIT length field is not represented, as it is implicitly known
thanks to the HIT field representation.
</t>
<t>
The PK algorithm field is represented
as unsigned integers.
</t>
<t>
The HIT field is represented as the <xref
target="RFC4648">Base16 encoding</xref> (a.k.a.
hex or hexadecimal) of the HIT. The encoding
MUST NOT contain whitespaces to distinguish
it from the public key field.
<!-- If no HIT is to be
indicated, then the HIT algorithm MUST be zero and the HIT
field must be "." (a single dot character).-->
</t>
<t>
The Public Key field is represented as the <xref
target="RFC4648">Base64 encoding</xref> of the
public key. The encoding MUST NOT contain whitespace(s) to
distinguish it from the Rendezvous Servers field.
</t>
<t>
The PK length field is not represented, as it is implicitly known
thanks to the Public key field representation containing no whitespaces.
</t>
<t>The Rendezvous Servers field is represented by one or more
domain name(s) separated by whitespace(s).</t>
<t>
The complete representation of the HPIHI record is:
<figure>
<artwork>
IN HIP ( pk-algorithm
base16-encoded-hit
base64-encoded-public-key
rendezvous-server[1]
...
rendezvous-server[n] )
</artwork>
</figure>
</t>
<t>
When no RVSs are present, the representation of the HPIHI record is:
<figure>
<artwork>
IN HIP ( pk-algorithm
base16-encoded-hit
base64-encoded-public-key )
</artwork>
</figure>
</t>
</section>
<section title="Examples">
<!-- <t>
Example of a node with a HI but no HIT:
<artwork>
www.example.com IN HIP ( 0 1 2
.
AB3NzaC1kc3MAAACBAOBhKn
TCPOuFBzZQX/N3O9dm9P9iv
UIMoId== )
</artwork>
</t>
-->
<t>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.</t>
<t>
Example of a node with HI and HIT but no RVS:
<figure>
<artwork>
www.example.com. IN HIP ( 2 200100107B1A74DF365639CC39F1D578
AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cI
vM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ry
ra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXd
XF5D )
</artwork>
</figure>
</t>
<t>
Example of a node with a HI, HIT, and one RVS:
<figure>
<artwork>
www.example.com. IN HIP ( 2 200100107B1A74DF365639CC39F1D578
AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cI
vM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ry
ra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXd
XF5D
rvs.example.com. )
</artwork>
</figure>
</t>
<t>
Example of a node with a HI, HIT, and two RVSs:
<figure>
<artwork>
www.example.com. IN HIP ( 2 200100107B1A74DF365639CC39F1D578
AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cI
vM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ry
ra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXd
XF5D
rvs1.example.com.
rvs2.example.com. )
</artwork>
</figure>
</t>
</section>
<!--
<section title="Retrieving Multiple HITs and IPs from the DNS">
<t>
If a host receives multiple HITs in a response to a DNS query, those
HITs MUST be considered to denote a single service, and be semantically
equivalent from that point of view. When initiating a base exchange
with the denoted service, the host SHOULD be prepared to accept any of
HITs as the peer's identity. A host MAY implement this by using the
opportunistic mode (destination HIT null in I1), or by sending multiple
I1s, if needed.
</t><t>
In particular, if a host receives multiple HITs and multiple IP
addresses in response to a DNS query, the host cannot know how the
HITs are reachable at the listed IP addresses. The mapping may be
any, i.e., all HITs may be reachable at all of the listed IP
addresses, some of the HITs may be reachable at some of the IP
addresses, or there may even be one-to-one mapping between the HITs
and IP addresses. In general, the host cannot know the mapping and
MUST NOT expect any particular mapping.
</t><t>
It is RECOMMENDED that if a host receives multiple HITs, the host
SHOULD first try to initiate the base exchange by using the
opportunistic mode. If the returned HIT does not match with any of the
expected HITs, the host SHOULD retry by sending further I1s, one at
time, trying out all of the listed HITs. If the host receives an R1
for any of the I1s, the host SHOULD continue to use the successful IP
address until an R1 with a listed HIT is received, or the host has
tried all HITs, and try the other IP addresses only after that. A host
MAY also send multiple I1s in parallel, but sending such I1s MUST be
rate-limited to avoid flooding (as per Section 8.4.1 of <xref
target="I-D.ietf-hip-rfc5201-bis"/>). </t>
</section>
-->
<!-- <section anchor="trans-cons" title="Transition mechanisms">
<t>
During a transition period, to allows to store the HIP informations of
a node in a DNS server which does not support the HIP and HIPRVS
RRs, A and AAAA RRs MAY be overloaded. A HIT would typically be stored
in a AAAA RR and an RVS in either a A or AAAA RR. If such a situation
occurs, the overloaded RRs MUST be returned as the last items of the
returned RRs set (A or AAAA), to avoid as most as possible conflicts
with non-HIP IPv6 nodes.
</t>
</section>
-->
<section anchor="sec-cons" title="Security Considerations">
<t>
This section contains a description of the
known threats involved with the usage of the HIP DNS
Extension.
</t> <t>
In a manner similar to the <xref
target="RFC4025"> IPSECKEY RR</xref>,
the HIP DNS Extension allows for the provision of two HIP nodes
with the public keying material (HI) of their peer. These
HIs will be subsequently used in a key exchange between the
peers. Hence, the HIP DNS Extension introduces the same
kind of threats that IPSECKEY does, plus threats caused by
the possibility given to a HIP node to initiate or accept a
HIP exchange using "opportunistic" or "unpublished
Initiator HI" modes.
</t>
<t>
A HIP node SHOULD obtain HIP RRs
from a trusted party trough a secure channel ensuring
data integrity and authenticity of the RRs. DNSSEC
<xref target="RFC4033"/>
<xref target="RFC4034"/>
<xref target="RFC4035"/>
provides such a secure channel. However, it should
be emphasized that DNSSEC only offers data integrity
and authenticity guarantees to 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 signature of
the HIP RRSet MUST NOT be misinterpreted as a certificate binding the
HI and/or the HIT to the owner name.
</t>
<t>
In the absence of a proper secure channel, both
parties are vulnerable to MitM and DoS attacks, and
unrelated parties might be subject to DoS attacks
as well. These threats are described in the following
sections.
</t>
<section title="Attacker Tampering with an Insecure HIP RR">
<t>
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 these are not sensitive
to attacks where an adversary gains knowledge of them.
However, an attacker that is able to mount an active
attack on the DNS, i.e., tampers with this HIP RR
(e.g., using DNS spoofing), is able to mount
Man-in-the-Middle attacks on the cryptographic core of
the eventual HIP exchange (Responder's HIP RR
rewritten by the attacker).
</t>
<t>
The HIP RR may contain a rendezvous server domain name resolved into a destination IP address where the
named peer is reachable by an I1, as per the
<xref target="I-D.ietf-hip-rfc5204-bis">HIP Rendezvous
Extension</xref>.
Thus, an attacker able to tamper with this RR
is able to redirect I1 packets sent
to the named peer to a chosen IP address for
DoS or MitM attacks. Note that this kind of attack
is not specific to HIP and exists independently of
whether or not HIP and the HIP RR are used. Such an
attacker might tamper with A and AAAA RRs as well.
</t>
<t>
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 spoofed DNS packet sent to the Initiator HI,
then redirect all exchanged packets to him
and mount a MitM on HIP. In this case, HIP won't
provide confidentiality nor Initiator HI protection
from eavesdroppers.
</t>
</section>
<!-- <section title="Opportunistic HIP">
<t>
A HIP Initiator may not be aware of its peer's HI, and/or
its HIT (e.g., because the DNS does not contains HIP
material, or the resolver isn't HIP-enabled), and attempt
an opportunistic HIP exchange towards its known IP
address, filling the Responder HIT field with zeros in
the I1 header. Such an Initiator is vulnerable to a MitM
attack because it can't validate the HI and HIT contained
in a replied R1. Hence, an implementation MAY choose not
to use opportunistic mode.
</t>
</section>
<section title="Unpublished Initiator HI">
<t>
A HIP Initiator may choose to use an unpublished HI,
which is not stored in the DNS by means of a HIP
RR. A Responder associating with such an Initiator
knowingly risks a MitM attack because it cannot
validate the Initiator's HI. Hence, an implementation
MAY choose not to use unpublished mode.
</t>
</section>
-->
<section title="Hash and HITs Collisions">
<t>
As with many cryptographic algorithms, some secure
hashes (e.g., 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
reasonable computation power breaks one of the
security features of the hash (e.g., its supposed
collision resistance). This is why a HIP end-node
implementation SHOULD NOT authenticate its HIP
peers based solely on a HIT retrieved from the DNS,
but SHOULD rather use HI-based authentication.
</t>
</section>
<section title="DNSSEC">
<t>
In the absence of DNSSEC, the HIP RR is subject to the
threats described in <xref target="RFC3833">RFC 3833</xref>.
</t>
</section>
</section>
<section title="IANA Considerations" anchor="iana-cons">
<t>
IANA has allocated one new RR type code (55) for the HIP RR
from the standard RR type space.
</t>
<t>
IANA does not need to open a new registry for
public key algorithms of the HIP RR because the HIP RR reuses "algorithms
types" defined for the <xref target="RFC4025">IPSECKEY RR
</xref>.
Presently defined values are:
</t>
<t><list style="empty">
<t>
0 is reserved
</t>
<t>
1 is DSA
</t>
<t>
2 is RSA
</t>
<t>
[IANA-TBD] is ECDSA
</t>
</list></t>
</section>
<section title="Contributors">
<t>
Pekka Nikander (pekka.nikander@nomadiclab.com) co-authored an earlier, experimental version of this specification <xref target="RFC5205"/>.
</t>
</section>
<section title="Acknowledgments">
<t>
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 <xref target="RFC4025">IPSECKEY RR</xref>
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 <xref
target="I-D.ietf-hip-rfc5201-bis">HIP specification</xref>.
</t>
</section>
</middle>
<back>
<references title="Normative references">
&RFC1034;
&RFC1035;
&RFC2119;
&RFC2181;
&RFC3596;
&RFC4025;
&RFC4033;
&RFC4034;
&RFC4035;
&RFC4648;
&I-D.ietf-hip-rfc5201-bis;
&I-D.ietf-hip-rfc5204-bis;
&RFC6605;
</references>
<references title="Informative references">
&RFC2536;
&RFC3110;
&RFC4423;
&RFC5205;
<reference anchor='RFC5206'>
<front>
<title>End-Host Mobility and Multihoming with the Host Identity
Protocol</title>
<author initials='T' surname='Henderson' fullname='Tom Henderson'
role='editor'>
<organization />
</author>
<date month="April" year="2008"/>
</front>
<seriesInfo name="RFC" value="5206" />
</reference>
&RFC3833;
</references>
<section title="Changes from RFC 5205">
<t>
<list style="symbols">
<t>
Updated HIP references to revised HIP specifications.
</t>
<t>
Extended DNS HIP RR to support for Host Identities based on Elliptic Curve Digital Signature Algorithm (ECDSA).
</t>
</list>
</t>
</section>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-23 20:52:41 |