draft-ietf-hip-applications-02.txt   draft-ietf-hip-applications-03.txt 
Network Working Group T. Henderson Network Working Group T. Henderson
Internet-Draft The Boeing Company Internet-Draft The Boeing Company
Intended status: Informational P. Nikander Intended status: Informational P. Nikander
Expires: May 21, 2008 Ericsson Research NomadicLab Expires: December 30, 2008 Ericsson Research NomadicLab
M. Komu M. Komu
Helsinki Institute for Information Helsinki Institute for Information
Technology Technology
November 18, 2007 June 28, 2008
Using the Host Identity Protocol with Legacy Applications Using the Host Identity Protocol with Legacy Applications
draft-ietf-hip-applications-02 draft-ietf-hip-applications-03
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 38 skipping to change at page 1, line 38
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on May 21, 2008. This Internet-Draft will expire on December 30, 2008.
Copyright Notice
Copyright (C) The IETF Trust (2007).
Abstract Abstract
This document is an informative overview of how legacy applications This document is an informative overview of how legacy applications
can be made to work with the Host Identity Protocol (HIP). HIP can be made to work with the Host Identity Protocol (HIP). HIP
proposes to add a cryptographic name space for network stack names. proposes to add a cryptographic name space for network stack names.
From an application viewpoint, HIP-enabled systems support a new From an application viewpoint, HIP-enabled systems support a new
address family of host identifiers, but it may be a long time until address family of host identifiers, but it may be a long time until
such HIP-aware applications are widely deployed even if host systems such HIP-aware applications are widely deployed even if host systems
are upgraded. This informational document discusses implementation are upgraded. This informational document discusses implementation
and Application Programming Interface (API) issues relating to using and Application Programming Interface (API) issues relating to using
HIP in situations in which the system is HIP-aware but the HIP in situations in which the system is HIP-aware but the
applications are not, and is intended to aid implementors and early applications are not, and is intended to aid implementors and early
adopters in thinking about and locally solving systems issues adopters in thinking about and locally solving systems issues
regarding the incremental deployment of HIP. regarding the incremental deployment of HIP.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Approaches for supporting legacy applications . . . . . . . . 5 3. Enabling HIP transparently within the system . . . . . . . . . 6
3.1. Using IP addresses in applications . . . . . . . . . . . . 5 3.1. Applying HIP to cases in which IP addresses are used . . . 6
3.2. Using DNS to map domain names to HIs . . . . . . . . . . . 7 3.2. Interposing a HIP-aware agent in the DNS resolution . . . 7
3.3. Connecting directly to a HIT . . . . . . . . . . . . . . . 8 3.3. Discussion . . . . . . . . . . . . . . . . . . . . . . . . 8
3.4. Local address management . . . . . . . . . . . . . . . . . 9 4. Users Invoking HIP with a Legacy Application . . . . . . . . . 10
4. Security Considerations . . . . . . . . . . . . . . . . . . . 11 4.1. Connecting to a HIT or LSI . . . . . . . . . . . . . . . . 10
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 4.2. Using a modified DNS name . . . . . . . . . . . . . . . . 10
6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13 4.3. Other techniques . . . . . . . . . . . . . . . . . . . . . 11
7. Informative References . . . . . . . . . . . . . . . . . . . . 14 5. Local address management . . . . . . . . . . . . . . . . . . . 12
Appendix A. Changes from previous versions . . . . . . . . . . . 15 6. Security Considerations . . . . . . . . . . . . . . . . . . . 14
A.1. From version-01 to version-02 (current) . . . . . . . . . 15 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 17 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17
Intellectual Property and Copyright Statements . . . . . . . . . . 18 9. Informative References . . . . . . . . . . . . . . . . . . . . 18
Appendix A. Changes from previous versions . . . . . . . . . . . 19
A.1. From version-01 to version-02 . . . . . . . . . . . . . . 19
A.2. From version-02 to version-03 (current) . . . . . . . . . 20
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 21
Intellectual Property and Copyright Statements . . . . . . . . . . 22
1. Introduction 1. Introduction
The Host Identity Protocol (HIP) [1] is an experimental effort in the The Host Identity Protocol (HIP) [RFC5201] is an experimental effort
IETF and IRTF to study a new public-key-based name space for use as in the IETF and IRTF to study a new public-key-based name space for
host identifiers in Internet protocols. Fully deployed, the HIP use as host identifiers in Internet protocols. Fully deployed, the
architecture would permit applications to explicitly request the HIP architecture would permit applications and users to explicitly
system to send packets to another host by expressing a location- request the system to send packets to another host by expressing a
independent name of the host when the system call to send packets is location-independent unique name of a peer host when the system call
performed. However, there will be a transition period during which to connect or send packets is performed. However, there will be a
systems become HIP-enabled but applications are not. This transition period during which systems become HIP-enabled but
informational document does not propose normative specification or applications are not. This informational document does not propose
even suggest that different HIP implementations use more uniform normative specification or even suggest that different HIP
methods for legacy application support, but is intended instead to implementations use more uniform methods for legacy application
aid implementors and early adopters in thinking about and solving support, but is intended instead to aid implementors and early
systems issues regarding the incremental deployment of HIP. adopters in thinking about and solving systems issues regarding the
incremental deployment of HIP.
When applications and systems are both HIP-aware, the coordination When applications and systems are both HIP-aware, the coordination
between the application and the system can be straightforward. For between the application and the system can be straightforward. For
example, using the terminology of the widely used sockets Application example, using the terminology of the widely used sockets Application
Programming Interface (API), the application can issue a system call Programming Interface (API), the application can issue a system call
to send packets to another host by naming it explicitly, and the to send packets to another host by naming it explicitly, and the
system can perform the necessary name-to-address mapping to assign system can perform the necessary name-to-address mapping to assign
appropriate routable addresses to the packets. To enable this, a new appropriate routable addresses to the packets. To enable this, a new
address family for hosts could be defined, and additional API address family for hosts could be defined, and additional API
extensions could be defined (such as allowing IP addresses to be extensions could be defined (such as allowing IP addresses to be
passed in the system call, along with the host name, as hints of passed in the system call, along with the host name, as hints of
where to initially try to reach the host). where to initially try to reach the host).
This document does not define a native HIP API such as described This document does not define a native HIP API such as described
above. Rather, this document is concerned with the scenario in which above. Rather, this document is concerned with the scenario in which
the application is not HIP-aware and a traditional IP-address-based the application is not HIP-aware and a traditional IP-address-based
API is used by the application. To use HIP in such a situation, API is used by the application.
there are a few basic possibilities: i) allow applications to use IP
addresses as before, and provide a mapping from IP address to host
identifier (and back to IP address) within the system, ii) take
advantage of domain name resolution to provide the application with
either an alias for the host identifier or (in the case of IPv6) the
host identity tag (HIT) itself, and iii) support the use of HITs
directly (without prior DNS resolution) in place of IPv6 addresses.
This document describes several variations of the above strategies
and points out tradeoffs with each approach.
When HITs are used (rather than IP addresses) as peer names at the The discussion so far assumes that applications are written directly
system API level, they can provide a type of "channel binding" in to a sockets API. However, many applications are built on top of
that the Encapsulating Security Payload (ESP) association formed by middleware that exports a higher-level API to the application. In
HIP is cryptographically bound to the name (HIT) invoked by the this case, for the purpose of this document, we refer to the
calling application. combination of the middleware and the middleware- based application
as an overall application, or client of the sockets API.
When HIP is enabled on a system, but the applications are not HIP-
aware, there are a few basic possibilities to use HIP, each of which
may or may not be supported by a given HIP implementation. We report
here on techniques that have been used or considered by experimental
HIP implementations. We organize the discussion around the policy
chosen to use or expose HIP to the applications. The first option is
that users are completely unaware of HIP, or are unable to control
whether or not HIP is invoked, but rather the system chooses to
enable HIP for some or all sessions based on policy. The second
option is that the user makes a decision to try to use HIP by
conveying this information somehow within the constraints of the
unmodified application. We discuss both of these use cases in detail
below.
HIP was designed to work with unmodified applications, to ease
incremental deployment. For instance, the HIT is the same size as
the IPv6 address, and the design thinking was that, during initial
experiments and transition periods, the HITs could substitute in data
structures where IPv6 addresses were expected. However, to a varying
degree depending on the mechanism employed, such use of HIP can alter
the semantics of what is considered to be an IP address by
applications. Applications use IP addresses as short-lived local
handles, long-lived application associations, callbacks, referrals,
and identity comparisons. The transition techniques described below
have implications on these different uses of IP addresses by legacy
applications, and we will try to clarify these implications in the
below discussions.
2. Terminology 2. Terminology
Callback: The application at one end retrieves the IP address of
the peer and uses that to later communicate "back" to the peer.
An example is the FTP PORT command.
Host Identity: An abstract concept applied to a computing platform. Host Identity: An abstract concept applied to a computing platform.
Host Identifier (HI): A public key of an asymmetric key pair used as Host Identifier (HI): A public key of an asymmetric key pair used as
a name for a Host Identity. More details are available in [1]. a name for a Host Identity. More details are available in
[RFC5201].
Host Identity Tag (HIT): A 128-bit quantity composed with the hash Host Identity Tag (HIT): A 128-bit quantity composed with the hash
of a Host Identity. More details are available in [2] and [1]. of a Host Identity. More details are available in [RFC4843] and
[RFC5201].
Local Scope Identifier (LSI): A 32- or 128-bit quantity locally Local Scope Identifier (LSI): A 32- or 128-bit quantity locally
representing the Host Identity at the IPv4 or IPv6 API. representing the Host Identity at the IPv4 or IPv6 API.
Referral: An event when the application passes what it believes to Referral: In an application with more than two parties, party B
be an IP address to another application instance on another host, takes the IP address of party A and passes that to party C. After
within its application data stream. An example is the FTP PORT this party C uses the IP address to communicate with A.
command.
Resolver: The system function used by applications to resolve domain Resolver: The system function used by applications to resolve domain
names to IP addresses. names to IP addresses.
3. Approaches for supporting legacy applications Short-lived local handle: The IP addresses is never retained by the
application. The only usage is for the application to pass it
from the DNS APIs (e.g., getaddrinfo()) and the API to the
protocol stack (e.g., connect() or sendto()).
This section provides examples of how legacy applications, using Long-lived application associations: The IP address is retained by
legacy APIs, can operate on a HIP-enabled system and use HIP. The the application for several instances of communication.
examples are organized by the name used by an application (or
application user) to name the peer system: an IP address, a domain
name, or a HIT. Finally, some local address management issues are
discussed.
Applications use IP addresses as short-lived local handles, long- 3. Enabling HIP transparently within the system
lived application associations, callbacks, referrals, and identity
comparisons. Each of the below mechanisms has implications on these
different uses of IP addresses by legacy applications.
3.1. Using IP addresses in applications When both users and applications are unaware of HIP, but the host
administrator chooses to use HIP between hosts, a few options are
possible. The first basic option is to perform a mapping of the
application-provided IP address to a host identifier within the
stack. The second option, if DNS is used, is to interpose a local
agent in the DNS resolution process and to return to the application
a HIT or a locally scoped handle, formatted like an IP address.
3.1. Applying HIP to cases in which IP addresses are used
Consider the case in which an application issues a "connect(ip)" Consider the case in which an application issues a "connect(ip)"
system call to set the default destination to a system named by system call to set the default destination to a system named by
address "ip", but for which we would like to enable HIP to protect address "ip", but for which the host administrator would like to
the communications. Since the application or user can not indicate a enable HIP to protect the communications. The user or application
desire to use HIP through the standard sockets API when IP addresses intends for the system to communicate with the host reachable at that
are used, the decision to invoke HIP must be done on the basis of IP address. The decision to invoke HIP must be done on the basis of
host policy. For example, when an IPsec-based implementation of HIP host policy. For example, when an IPsec-based implementation of HIP
is being used, a policy may be entered into the security policy is being used, a policy may be entered into the security policy
database that mandates to use or try HIP based on a match on the database that mandates to use or to try HIP based on a match on the
source or destination IP address, or other factors. The mapping of source or destination IP address, port numbers, or other factors.
IP address to host identifier may be implemented by modifying the The mapping of IP address to host identifier may be implemented by
host operating system or by wrapping the existing sockets API, such modifying the host operating system or by wrapping the existing
as in the TESLA approach [3]. sockets API, such as in the TESLA approach [paper.tesla].
There are a number of ways that HIP could be used in such a scenario. There are a number of ways that HIP could be configured by the host
administrator in such a scenario.
Manual configuration: Manual configuration:
Pre-existing SAs may be available due to previous administrative Pre-existing SAs may be available due to previous administrative
action, or a binding between an IP address and a HIT could be action, or a binding between an IP address and a HIT could be
stored in a configuration file or database. stored in a configuration file or database.
Opportunistically: Opportunistically:
The system could send an I1 to the Responder with an empty value The system could send an I1 to the Responder with an empty value
for Responder HIT. for Responder HIT.
Using DNS to map IP addresses to HIs: Using DNS to map IP addresses to HIs:
If the responder has host identifiers registered in the forward If the responder has host identifiers registered in the forward
DNS zone and has a PTR record in the reverse zone, the Initiator DNS zone and has a PTR record in the reverse zone, the Initiator
could perform a reverse+forward lookup to learn the HIT associated could perform a reverse+forward lookup to learn the HIT associated
with the address. Although the approach should work under normal with the address. Although the approach should work under normal
circumstances, it has not been tested to verify that there are no circumstances, it has not been tested to verify that there are no
recursion or bootstrapping issues, particularly if HIP is used to recursion or bootstrapping issues, particularly if HIP is used to
secure the connection to the DNS servers. Unless secured with DNS secure the connection to the DNS servers. Discussion of the
security extensions, the use of the reverse DNS map is subject to security implications of the use or absence of DNSSEC is deferred
well-known security limitations (an attacker may cause an to the security considerations section.
incorrect IP address to domain name binding to occur).
Using the opportunistic mode or using DNS in the above fashion can Using HIP in the above fashion can cause additional setup delays
cause additional setup delays compared to using plain IP. For compared to using plain IP. For opportunistic mode, a host must wait
opportunistic mode, a host must wait to learn whether the peer is to learn whether the peer is HIP-capable, although the delays may be
HIP-capable, although the delays may be mitigated in some mitigated in some implementations by sending initial packets (e.g.,
implementations by sending initial packets (e.g., TCP SYN) in TCP SYN) in parallel to the HIP I1 packet and waiting some time to
parallel to the HIP I1 packet. For DNS lookups, there are resolution receive a HIP R1 before processing a TCP SYN/ACK. Note that there
latencies. presently does not exist specification for how to invoke such
connections in parallel. Resolution latencies may also be incurred
when using DNS in the above fashion.
A possible way to reduce latencies noted above, in the case that the
application uses DNS, would be for the system to opportunistically
query for HIP records in parallel to other DNS resource records, and
to temporarily cache the HITs returned with a DNS lookup, indexed by
the IP addresses returned in the same entry, and pass the IP
addresses up to the application as usual. If an application connects
to one of those IP addresses within a short time after the lookup,
the host should initiate a base exchange using the cached HITs. The
benefit is that this removes the uncertainty/delay associated with
opportunistic HIP, because the DNS record suggests that the peer is
HIP-capable.
3.2. Interposing a HIP-aware agent in the DNS resolution
In the previous section, it was noted that a HIP-unaware application
might typically use the DNS to fetch IP addresses prior to invoking
socket calls. A HIP-enabled system might make use of DNS to
transparently fetch host identifiers for such domain names prior to
the onset of communication.
A system with a local DNS agent could alternately return a Local
Scope Identifier (LSI) or HIT rather than an IP address, if HIP
information is available in the DNS or other directory that binds a
particular domain name to a host identifier, and otherwise to return
an IP address as usual. The system can then maintain a mapping
between LSI and host identifier and perform the appropriate
conversion at the system call interface or below. The application
uses the LSI or HIT as it would an IP address. This technique has
been used in overlay networking experiments such as the Internet
Indirection Infrastructure (i3) and by at least one HIP
implementation.
In the case when resolvers can return multiple destination
identifiers for an application, it may be configured that some of the
identifiers can be HIP-based identifiers, and the rest can be IPv4 or
IPv6 addresses. The system resolver may return HIP-based identifiers
in front of the list of identifiers when the underlying system and
policies support HIP. An application processing the identifiers
sequentially will then first try a HIP-based connection and only then
other non-HIP based connections. However, certain applications may
launch the connections in parallel. In such a case, the non-HIP
connections may succeed before HIP connections. Based on local
system policies, a system may disallow such behaviour and return only
HIP-based identifiers when they are found from DNS.
If the application obtains LSIs or HITs that it treats as IP
addresses, a few potential hazards arise. First, applications that
perform referrals may pass the LSI to another system that has no
system context to resolve the LSI back to a host identifier or an IP
address. Note that these are the same type of applications that will
likely break if used over certain types of network address
translators (NATs). Second, applications may cache the results of
DNS queries for a long time, and it may be hard for a HIP system to
determine when to perform garbage collection on the LSI bindings.
However, when using HITs, the security of using the HITs for identity
comparison may be stronger than in the case of using IP addresses.
Finally, applications may generate log files, and administrators or
other consumers of these log files may become confused to find LSIs
or HITs instead of IP addresses. Therefore, it is recommended that
the HIP software logs the HITs, LSIs (if applicable), and FQDN-
related information so that administrators can correlate other logs
with HIP identifiers.
It may be possible for an LSI or HIT to be routable or resolvable,
either directly or through an overlay, in which case it would be
preferable for applications to handle such names instead of IP
addresses. However, such networks are out of scope of this document.
3.3. Discussion
Solutions preserving the use of IP addresses in the applications have Solutions preserving the use of IP addresses in the applications have
the benefit of better support for applications that use IP addresses the benefit of better support for applications that use IP addresses
for long-lived application associations, callbacks, and referrals, for long-lived application associations, callbacks, and referrals,
although it should be noted that applications are discouraged from although it should be noted that applications are discouraged from
using IP addresses in this manner due to the frequent presence of using IP addresses in this manner due to the frequent presence of
NATs [4] and Section 3.3, because the binding between host identifier NATs [RFC1958]. However, they have weaker security properties than
and address is weak and not visible to the application or user. In the approaches outlined in Section 3.2 and Section 4, because the
fact, the semantics of the application's "connect(ip)" call may be binding between host identifier and address is weak and not visible
interpreted as "connect me to the system reachable at IP address ip" to the application or user. In fact, the semantics of the
but perhaps no stronger semantics than that. HIP can be used in this application's "connect(ip)" call may be interpreted as "connect me to
case to provide perfect forward secrecy and authentication, but not the system reachable at IP address ip" but perhaps no stronger
to strongly authenticate the peer at the onset of communications. semantics than that. HIP can be used in this case to provide perfect
DNS with security extensions (DNSSEC) [5] could be used to forward secrecy and authentication, but not to strongly authenticate
authenticate the bindings between IP address and host identifier, if the peer at the onset of communications.
the necessary DNSSEC records were available and trusted.
The legacy application is unaware of HIP and cannot therefore notify
the user when the application uses HIP. However, the operating
system can notify the user of the usage of HIP through a user agent.
Further, it is possible for the user agent to name the network
application that caused a HIP-related event. This way, the user is
aware when he or she is using HIP even though the legacy network
application is not.
Using IP addresses at the application layer may not provide the full Using IP addresses at the application layer may not provide the full
potential benefits of HIP mobility support. It allows for mobility potential benefits of HIP mobility support. It allows for mobility
if the system is able to readdress long-lived, connected sockets upon if the system is able to readdress long-lived, connected sockets upon
a HIP readdress event. However, as in current systems, mobility will a HIP readdress event. However, as in current systems, mobility will
break in the connectionless case, when an application caches the IP break in the connectionless case, when an application caches the IP
address and repeatedly calls sendto(), or in the case of TCP when the address and repeatedly calls sendto(), or in the case of TCP when the
system later opens additional sockets to the same destination. system later opens additional sockets to the same destination.
Section 4.1.6 of the base HIP protocol specification [1] states that Section 4.1.6 of the base HIP protocol specification [RFC5201] states
implementations that learn of HIT-to-IP address bindings through the that implementations that learn of HIT-to-IP address bindings through
use of HIP opportunistic mode must not enforce those bindings on the use of HIP opportunistic mode must not enforce those bindings on
later communications sessions. This implies that when IP addresses later communications sessions. This implies that when IP addresses
are used by the applications, systems that attempt to are used by the applications, systems that attempt to
opportunistically set up HIP must not assume that later sessions to opportunistically set up HIP must not assume that later sessions to
the same address will communicate with the same host. the same address will communicate with the same host.
3.2. Using DNS to map domain names to HIs The legacy application is unaware of HIP and therefore cannot notify
the user when the application uses HIP. However, the operating
In the previous section, it was pointed out that a HIP-enabled system system can notify the user of the usage of HIP through a user agent.
might make use of DNS to transparently fetch host identifiers prior Further, it is possible for the user agent to name the network
to the onset of communication. For applications that make use of application that caused a HIP-related event. This way, the user is
DNS, the name resolution process is another opportunity to use HIP. aware when he or she is using HIP even though the legacy network
If host identifiers are bound to domain names (with a trusted DNS), application is not. Based on usability tests from initial
the following are possible: deployments, displaying the HITs and LSIs should be avoided in user
interfaces. Instead, traditional security measures (lock pictures,
Return HIP LSIs and HITs instead of IP addresses: colored address bars) should be used where possible.
The system resolver could be configured to return a Local Scope
Identifier (LSI) or HIT rather than an IP address, if HIP
information is available in the DNS that binds a particular domain
name to a host identifier, and otherwise to return an IP address
as usual. The system can then maintain a mapping between LSI and
host identifier and perform the appropriate conversion at the
system call interface or below. The application uses the LSI or
HIT as it would an IP address. This technique has been used in
overlay networking experiments such as the Internet Indirection
Infrastructure (i3).
Locally use a HIP-specific domain name prefix:
One drawback to spoofing the DNS resolution is that some One drawback to spoofing the DNS resolution is that some
applications actually may want to fetch IP addresses (e.g., applications, or selected instances of an application, actually may
diagnostic applications such as ping, or processes that generate want to fetch IP addresses (e.g., diagnostic applications such as
system log files). One way to provide finer granularity on ping). One way to provide finer granularity on whether the resolver
whether the resolver returns an IP address or an LSI is to returns an IP address or an LSI is to have the user form a modified
distinguish by the presence of a domain name prefix. domain name when he or she wants to invoke HIP. This leads us to
Specifically, if the application requests to resolve "HIP- consider, in the next section, use cases for which the end user
www.example.com" (or some similar prefix string), then the system explicitly and selectively chooses to enable HIP.
returns an LSI, while if the application requests to resolve
"www.example.com", IP address(es) are returned as usual. The use
of a prefix rather than suffix is recommended, and the use of a
string delimiter that is not a dot (".") is also recommended, to
reduce the likelihood that such modified DNS names are mistakenly
treated as names rooted at a new top-level domain.
Fetch HIP records transparently:
A third option would be for the system to opportunistically query
for HIP records in parallel to other DNS resource records, and to
temporarily cache the HITs returned with a DNS lookup, indexed by
the IP addresses returned in the same entry, and pass the IP
addresses up to the application as usual. If an application
connects to one of those IP addresses within a short time after
the lookup, initiate a base exchange using the cached HITs. The
benefit is that this removes the uncertainty/delay associated with
opportunistic HIP, because the DNS record suggests that the peer
is HIP-capable.
Since the LSI or HIT is non-routable, a couple of potential hazards 4. Users Invoking HIP with a Legacy Application
arise, in the case of referrals, callbacks, and long-lived
application associations. First, applications that perform referrals
may pass the LSI to another system that has no system context to
resolve the LSI back to a host identifier or an IP address. Note
that these are the same type of applications that will likely break
if used over certain types of network address translators (NATs).
Second, applications may cache the results of DNS queries for a long
time, and it may be hard for a HIP system to determine when to
perform garbage collection on the LSI bindings. However, when using
HITs, the security of using the HITs for identity comparison may be
stronger than in the case of using IP addresses.
It may be possible for an LSI or HIT to be routable or resolvable, The previous section described approaches for configuring HIP for
either directly or through an overlay, in which case it would be legacy applications that did not necessarily involve the user.
preferable for applications to handle such names instead of IP However, there may be cases in which a legacy application user wants
addresses. However, such networks are out of scope of this document. to use HIP for a given application instance by signaling to the HIP-
enabled system in some way. If the application user interface or
configuration file accepts IP addresses, there may be an opportunity
to provide a HIT or an LSI in its place. Furthermore, if the
application uses DNS, a user may provide a specially crafted domain
name to signal to the resolver to fetch HIP records and to signal to
the system to use HIP. We describe both of these approaches below.
3.3. Connecting directly to a HIT 4.1. Connecting to a HIT or LSI
The previous two sections describe the use of IP addresses and LSIs Section 3.2 above describes the use of HITs or LSIs as spoofed return
as local handles to host identifiers. A third approach, for IPv6 values of the DNS resolution process. A similar approach that is
applications, is to configure the application to connect directly to more explicit is to configure the application to connect directly to
a HIT (e.g., "connect(HIT)" as a socket call). This scenario has a HIT (e.g., "connect(HIT)" as a socket call). This scenario has
stronger security semantics, because the application is asking the stronger security semantics, because the application is asking the
system to send packets specifically to the named peer system. HITs system to send packets specifically to the named peer system. HITs
have been defined as Overlay Routable Cryptographic Hash Identifiers have been defined as Overlay Routable Cryptographic Hash Identifiers
(ORCHIDs) such that they cannot be confused with routable IP (ORCHIDs) such that they cannot be confused with routable IP
addresses; see [2]. addresses; see [RFC4843].
This approach also has a few challenges. Using HITs can be more This approach also has a few challenges. Using HITs can be more
cumbersome for human users (due to the flat HIT name space) than cumbersome for human users (due to the flat HIT name space) than
using either IPv6 addresses or domain names, Another challenge with using either IPv6 addresses or domain names. Another challenge with
this approach is in actually finding the IP addresses to use, based this approach is in actually finding the IP addresses to use, based
on the HIT. Some type of HIT resolution service would be needed in on the HIT. Some type of HIT resolution service would be needed in
this case. A third challenge of this approach is in supporting this case. A third challenge of this approach is in supporting
callbacks and referrals to possibly non-HIP-aware hosts. However, callbacks and referrals to possibly non-HIP-aware hosts. However,
since most communications in this case would likely be to other HIP- since most communications in this case would likely be to other HIP-
aware hosts (else the initial HIP associations would fail to aware hosts (else the initial HIP associations would fail to
establish), the resulting referral problem may be that the peer host establish), the resulting referral problem may be that the peer host
supports HIP but is not able to perform HIT resolution for some supports HIP but is not able to perform HIT resolution for some
reason. reason.
3.4. Local address management 4.2. Using a modified DNS name
The previous sections focused mainly on client behavior (HIP Specifically, if the application requests to resolve "HIP-
initiator). We must also consider the behavior for servers. www.example.com" (or some similar prefix string), then the system
Typically, a server binds to a wildcard IP address and well-known returns an LSI, while if the application requests to resolve
port. In the case of HIP use with legacy server implementations, "www.example.com", IP address(es) are returned as usual. The use of
there are again a few options. As in Section 3.1 above, the system a prefix rather than suffix is recommended, and the use of a string
may be configured manually to always, optionally (depending on the delimiter that is not a dot (".") is also recommended, to reduce the
client behavior), or never use HIP with a particular service, as a likelihood that such modified DNS names are mistakenly treated as
matter of policy, when the server specifies a wildcard (IP) address. names rooted at a new top-level domain. Limits of domain name length
or label length (255 or 63, respectively) should be considered when
prepending any prefixes.
When a system API call such as getaddrinfo [6] is used for resolving 4.3. Other techniques
local addresses, it may also return HITs or LSIs, if the system has
assigned HITs or LSIs to internal virtual interfaces (common in many
HIP implementations). The application may use such identifiers as
addresses in subsequent socket calls.
In the case when resolvers can return multiple destination Alternatives to using a modified DNS name that have been experimented
identifiers for an application, it may be configured that some of the with include the following. Command-line tools or tools with a
identifiers can be HIP-based identifiers, and the rest can be IPv4 or graphical user interface (GUI) can be provided by the system to allow
IPv6 addresses. The system resolver may return HIP-based identifiers a user to set the policy on which applications use HIP. Another
in front of the list of identifiers when the underlying system and common technique, for dynamically linked applications, is to
policies support HIP. An application processing the identifiers dynamically link the application to a modified library that wraps the
sequentially will then first try a HIP-based connection and only then system calls and interposes HIP layer communications on them; this
other non-HIP based connections. However, certain applications may can be invoked by the user by running commands through a special
launch the connections in parallel. In such a case, the non-HIP shell, for example.
connections may succeed before HIP connections. Based on local
system policies, a system may disallow such behaviour and return only 5. Local address management
HIP-based identifiers when they are found from DNS.
The previous two sections focused mainly on controlling client
behavior (HIP initiator). We must also consider the behavior for
servers. Typically, a server binds to a wildcard IP address and
well-known port. In the case of HIP use with legacy server
implementations, there are again a few options. The system may be
configured manually to always, optionally (depending on the client
behavior), or never use HIP with a particular service, as a matter of
policy, when the server specifies a wildcard (IP) address.
When a system API call such as getaddrinfo [RFC3493] is used for
resolving local addresses, it may also return HITs or LSIs, if the
system has assigned HITs or LSIs to internal virtual interfaces
(common in many HIP implementations). The application may use such
identifiers as addresses in subsequent socket calls.
Some applications may try to bind a socket to a specific local Some applications may try to bind a socket to a specific local
address, or may implement server-side access control lists based on address, or may implement server-side access control lists based on
socket calls such as getsockname() and getpeername() in the C-based socket calls such as getsockname() and getpeername() in the C-based
socket APIs. If the local address specified is an IP address, again, socket APIs. If the local address specified is an IP address, again,
the underlying system may be configured to still use HIP. If the the underlying system may be configured to still use HIP. If the
local address specified is a HIT (Section 3.3), the system should local address specified is a HIT (Section 4), the system should
enforce that connections to the local application can only arrive to enforce that connections to the local application can only arrive to
the specified HIT. If a system has many HITs, an application that the specified HIT. If a system has many HITs, an application that
binds to a single HIT cannot accept connections to the other HITs in binds to a single HIT cannot accept connections to the other HITs in
the system. the system.
When a host has multiple HIs and the socket behavior does not When a host has multiple HIs and the socket behavior does not
prescribe the use of any particular HI as a local identifier, it is a prescribe the use of any particular HI as a local identifier, it is a
matter of local policy as to how to select a HI to serve as a local matter of local policy as to how to select a HI to serve as a local
identifier. However, systems that bind to a wildcard may face identifier. However, systems that bind to a wildcard may face
problems when multiple HITs or LSIs are defined. These problems are problems when multiple HITs or LSIs are defined. These problems are
skipping to change at page 10, line 30 skipping to change at page 12, line 51
As an example, consider a client application that sends an UDP As an example, consider a client application that sends an UDP
datagram to a server that is bound to a wildcard. The server datagram to a server that is bound to a wildcard. The server
application receives the packet using recvfrom() and sends a response application receives the packet using recvfrom() and sends a response
using sendto(). The problem here is that sendto() may actually use a using sendto(). The problem here is that sendto() may actually use a
different server HIT than the client assumes. The client will drop different server HIT than the client assumes. The client will drop
the response packet when the client implements access control on the the response packet when the client implements access control on the
UDP socket (e.g. using connect()). UDP socket (e.g. using connect()).
Reimplementing the server application using the sendmsg() and Reimplementing the server application using the sendmsg() and
recvmsg() to support multihoming (particularly considering the recvmsg() to support multihoming (particularly considering the
anchillary data) would be the ultimate solution to this problem, but ancillary data) would be the ultimate solution to this problem, but
with legacy applications is not an option. As a workaround, we make with legacy applications is not an option. As a workaround, we make
suggestion for servers providing UDP-based services with non- suggestion for servers providing UDP-based services with non-
multihoming capable services. Such servers should announce only the multihoming capable services. Such servers should announce only the
HIT that matches to the default outgoing HIT of the host to avoid HIT or public key that matches to the default outgoing HIT of the
such problems. host to avoid such problems.
Finally, some applications may create a connection to a local HIT. Finally, some applications may create a connection to a local HIT.
In such a case, the local system may use NULL encryption to avoid In such a case, the local system may use NULL encryption to avoid
unnecessary encryption overhead, and may be otherwise more permissive unnecessary encryption overhead, and may be otherwise more permissive
than usual such as excluding authentication, Diffie-Hellman exchange, than usual such as excluding authentication, Diffie-Hellman exchange,
and puzzle. and puzzle.
4. Security Considerations 6. Security Considerations
In this section we discuss the security of the system in general In this section we discuss the security of the system in general
terms, outlining some of the security properties. However, this terms, outlining some of the security properties. However, this
section is not intended to provide a complete risk analysis. Such an section is not intended to provide a complete risk analysis. Such an
analysis would, in any case, be dependent on the actual application analysis would, in any case, be dependent on the actual application
using HIP, and is therefore considered out of scope. using HIP, and is therefore considered out of scope.
The three outlined scenarios differ considerably in their security The scenarios outlined above differ considerably in their security
properties. There are further differences related to whether DNSSEC properties. When the DNS is used, there are further differences
is used or not, and whether the DNSSEC zones are considered related to whether DNSSEC [RFC4033] is used or not, and whether the
trustworthy enough. Here we mean that the delegation chain from the DNS zones are considered trustworthy enough. Here we mean that there
reverse IP root should be trusted (typical trust anchor issues), and should exist a delegation chain to whatever trust anchors are
the DNS zone administrators in charge of the netblock should be available in the respective trees, and the DNS zone administrators in
trusted to put in the right information. charge of the netblock should be trusted to put in the right
information.
When IP addresses are used to represent the peer system, the security When IP addresses are used by applications to name the peer system,
properties depend on the the configuration method. With manual the security properties depend on the configuration method. With
configuration, the security of the system is comparable to a non-HIP manual configuration, the security of the system is comparable to a
system with similar IPsec policies. The security semantics of an non-HIP system with similar IPsec policies. The security semantics
initial opportunistic key exchange are roughly equal to non-secured of an initial opportunistic key exchange are roughly equal to non-
IP; the exchange is vulnerable to man-in-the-middle attacks. secured IP; the exchange is vulnerable to man-in-the-middle attacks.
However, the system is less vulnerable to connection hijacking However, the system is less vulnerable to connection hijacking
attacks. If the DNS is used, if both zones are secured (or the HITs attacks. If the DNS is used, if both zones are secured (or the HITs
are stored in the reverse DNS record) and the client trusts the are stored in the reverse DNS record) and the client trusts the
DNSSEC signatures, the system may provide a fairly high security DNSSEC signatures, the system may provide a fairly high security
level. However, much depends on the details of the implementation, level. However, much depends on the details of the implementation,
the security and administrative practices used when signing the DNS the security and administrative practices used when signing the DNS
zones, and other factors. zones, and other factors.
Using the forward DNS to map a domain name into an LSI is a case that Using the forward DNS to map a domain name into an LSI is a case that
is closest to the most typical use scenarios today. If DNSSEC is is closest to the most typical use scenarios today. If DNSSEC is
used, the result is fairly similar to the current use of certificates used, the result is fairly similar to the current use of certificates
with TLS. If DNSSEC is not used, the result is fairly similar to the with TLS. If DNSSEC is not used, the result is fairly similar to the
current use of plain IP, with the exception that HIP provides current use of plain IP, with the additional protection of data
protection against connection hijacking attacks. integrity, confidentiality, and prevention of connection hijacking
that opportunistic HIP provides. If DNSSEC is used, data integrity
and data origin authentication services are added to the normal DNS
query protocol, thereby providing more certainty that the desired
host is being contacted, if the DNS records themselves are
trustworthy.
If the application is basing its operations on HITs, the connections If the application is basing its operations on HITs, the connections
become automatically secured due to the implicit channel bindings in become automatically secured due to the implicit channel bindings in
HIP. That is, when the application makes a connect(HIT) system call, HIP. That is, when the application makes a connect(HIT) system call,
the resulting packets will either be sent to a node possessing the the resulting packets will either be sent to a node possessing the
corresponding private key or the security association will fail to be corresponding private key or the security association will fail to be
established. established.
When the system provides (spoofs) LSIs or HITs instead of IP When the system provides (spoofs) LSIs or HITs instead of IP
addresses as the result of name resolution, the resultant fields may addresses as the result of name resolution, the resultant fields may
inadvertently show up in user interfaces and system logs, which may inadvertently show up in user interfaces and system logs, which may
cause operational concerns for some network administrators. cause operational concerns for some network administrators.
Therefore, it is recommended that the HIP software logs the HITs,
LSIs (if applicable), and FQDN-related information so that
administrators can correlate other logs with HIP identifiers.
5. IANA Considerations 7. IANA Considerations
This document has no actions for IANA. This document has no actions for IANA.
6. Acknowledgments 8. Acknowledgments
Jeff Ahrenholz, Gonzalo Camarillo, Alberto Garcia, Teemu Koponen, Jeff Ahrenholz, Gonzalo Camarillo, Alberto Garcia, Teemu Koponen,
Julien Laganier, and Jukka Ylitalo have provided comments on Julien Laganier, and Jukka Ylitalo have provided comments on
different versions of this draft. Erik Nordmark provided the different versions of this draft. Erik Nordmark provided the
taxonomy of how applications use IP addresses in a previously expired taxonomy of how applications use IP addresses in a previously expired
Internet Draft. The document received substantial and useful Internet Draft. The document received substantial and useful
comments during the review phase from David Black, Pekka Savola, Lars comments during the review phase from David Black, Pekka Savola, Lars
Eggert, and the DNS directorate. Eggert, and Peter Koch.
7. Informative References 9. Informative References
[1] Moskowitz, R., Nikander, P., Jokela, P., and T. Henderson, "Host [RFC5201] Moskowitz, R., Nikander, P., Jokela, P., and T. Henderson,
Identity Protocol", draft-ietf-hip-base-10 (work in progress), "Host Identity Protocol", RFC 5201, April 2008.
October 2007.
[2] Nikander, P., Laganier, J., and F. Dupont, "An IPv6 Prefix for [RFC4843] Nikander, P., Laganier, J., and F. Dupont, "An IPv6 Prefix
Overlay Routable Cryptographic Hash Identifiers (ORCHID)", for Overlay Routable Cryptographic Hash Identifiers
RFC 4843, April 2007. (ORCHID)", RFC 4843, April 2007.
[3] Salz, J., Balakrishnan, H., and A. Snoeren, "TESLA: A [paper.tesla]
Transparent, Extensible Session-Layer Architecture for End-to- Salz, J., Balakrishnan, H., and A. Snoeren, "TESLA: A
end Network Services", Proceedings of USENIX Symposium on Transparent, Extensible Session-Layer Architecture for
Internet Technologies and Systems (USITS), pages 211-224, End-to-end Network Services", Proceedings of USENIX
March 2003. Symposium on Internet Technologies and Systems (USITS),
pages 211-224, March 2003.
[4] Carpenter, B., "Architectural Principles of the Internet", [RFC1958] Carpenter, B., "Architectural Principles of the Internet",
RFC 1958, June 1996. RFC 1958, June 1996.
[5] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S.
"DNS Security Introduction and Requirements", RFC 4033, Rose, "DNS Security Introduction and Requirements",
March 2005. RFC 4033, March 2005.
[6] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W. [RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W.
Stevens, "Basic Socket Interface Extensions for IPv6", RFC 3493, Stevens, "Basic Socket Interface Extensions for IPv6",
February 2003. RFC 3493, February 2003.
Appendix A. Changes from previous versions Appendix A. Changes from previous versions
This section is to be removed by the RFC Editor before publication. This section is to be removed by the RFC Editor before publication.
It summarizes resolution of issues raised in the following reviews: It summarizes resolution of issues raised in the following reviews:
(1) IESG last call, (2) Gen-ART review, and (3) DNS directorate (1) IESG last call, (2) Gen-ART review, and (3) DNS directorate
review. Mobility and secdir reviews did not result in actionable review. Mobility and secdir reviews did not result in actionable
comments. comments.
A.1. From version-01 to version-02 (current) A.1. From version-01 to version-02
Better clarity in the abstract and introduction about the goal of the Better clarity in the abstract and introduction about the goal of the
draft; namely, that it is informational to help implementors and draft; namely, that it is informational to help implementors and
early adopters think about and solve deployment issues (comment from early adopters think about and solve deployment issues (comment from
Pekka Savola). Pekka Savola).
Delete the second paragraph of 3 about the general applicability of Delete the second paragraph of 3 about the general applicability of
replacing IP addresses with LSIs and HITs at the socket layer. replacing IP addresses with LSIs and HITs at the socket layer.
(comment from Pekka Savola). (comment from Pekka Savola).
skipping to change at page 17, line 5 skipping to change at page 20, line 29
handled in Section 3.4: i) clarify multihoming issue for servers with handled in Section 3.4: i) clarify multihoming issue for servers with
multiple HITs, when receiving UDP, ii) clarify a problem that might multiple HITs, when receiving UDP, ii) clarify a problem that might
arise for applications that do parallel connect, and iii) suggest arise for applications that do parallel connect, and iii) suggest
that loopback HIP connections could use a NULL encryption. that loopback HIP connections could use a NULL encryption.
Removed expired references and updated active references. Removed expired references and updated active references.
Incorporated additional review comments from Miika Komu, and some Incorporated additional review comments from Miika Komu, and some
suggested replacement text, and added him as a co-author. suggested replacement text, and added him as a co-author.
A.2. From version-02 to version-03 (current)
DNSSEC clarifications added based on dns-dir review from Peter Koch
Editing pass through document. Organizationally, everything except
security considerations was in one section. The existing text of
Sections 3.1 through 3.3 was moved to new Sections 3 and 4, the
previous text of section 3.4 has been moved to section 5, and the
previous Section 4 (security considerations) is now Section 6.
Performed further wordsmithing and cleanup.
Authors' Addresses Authors' Addresses
Thomas Henderson Thomas Henderson
The Boeing Company The Boeing Company
P.O. Box 3707 P.O. Box 3707
Seattle, WA Seattle, WA
USA USA
Email: thomas.r.henderson@boeing.com Email: thomas.r.henderson@boeing.com
skipping to change at page 18, line 7 skipping to change at page 22, line 7
Helsinki Institute for Information Technology Helsinki Institute for Information Technology
Metsaenneidonkuja 4 Metsaenneidonkuja 4
Helsinki FIN-02420 Helsinki FIN-02420
FINLAND FINLAND
Phone: +358503841531 Phone: +358503841531
Email: miika@iki.fi Email: miika@iki.fi
Full Copyright Statement Full Copyright Statement
Copyright (C) The IETF Trust (2007). Copyright (C) The IETF Trust (2008).
This document is subject to the rights, licenses and restrictions This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors contained in BCP 78, and except as set forth therein, the authors
retain all their rights. retain all their rights.
This document and the information contained herein are provided on an This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
skipping to change at page 18, line 44 skipping to change at line 734
attempt made to obtain a general license or permission for the use of attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr. http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at this standard. Please address the information to the IETF at
ietf-ipr@ietf.org. ietf-ipr@ietf.org.
Acknowledgment
Funding for the RFC Editor function is provided by the IETF
Administrative Support Activity (IASA).
 End of changes. 57 change blocks. 
251 lines changed or deleted 340 lines changed or added

This html diff was produced by rfcdiff 1.35. The latest version is available from http://tools.ietf.org/tools/rfcdiff/