One document matched: draft-heer-hip-lhip-00.txt
Host Identity Protocol T. Heer
Internet-Draft RWTH Aachen University
Intended status: Standards Track February 2007
Expires: August 5, 2007
LHIP Lightweight Authentication Extension for HIP
draft-heer-hip-lhip-00
Status of this Memo
By submitting this Internet-Draft, each author represents that any
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
aware will be disclosed, in accordance with Section 6 of BCP 79.
This document may not be modified, and derivative works of it may not
be created, except to publish it as an RFC and to translate it into
languages other than English.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on August 5, 2007.
Copyright Notice
Copyright (C) The IETF Trust (2007).
Abstract
This document specifies the Lightweight authentication extension for
the Host Identifier Protocol (LHIP). The goal of LHIP is to reduce
the computational requirements of the Host Identifier Protocol (HIP),
thus, making its benefits, such as end-host mobility and multihoming,
accessible to CPU-restricted devices. LHIP reduces the computational
Heer Expires August 5, 2007 [Page 1]
Internet-Draft Lightweght HIP February 2007
cost of establishing, updating, and closing a HIP association by
providing an alternative way of signing and verifying HIP control
packets which is based on computationally inexpensive hash function
computations and hash chains. However, LHIP does not provide nor
does it aim at providing the same level of security as HIP does.
Especially, host authentication and payload encryption are not
possible. The LHIP extensions in this draft specify also mechanisms
for dynamic transitioning between lightweight and full HIP
associations on the fly.
Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119]
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5
2. LHIP Security . . . . . . . . . . . . . . . . . . . . . . . . 7
3. Cryptographic Techniques used in LHIP . . . . . . . . . . . . 8
3.1. One-Time Signatures . . . . . . . . . . . . . . . . . . . 8
3.2. Hash Chains . . . . . . . . . . . . . . . . . . . . . . . 8
3.3. Interactive Hash Chain-Based Signatures . . . . . . . . . 9
4. Lightweight Authentication Extension for HIP . . . . . . . . . 10
4.1. Supported Hash Functions . . . . . . . . . . . . . . . . . 10
4.2. Hash Chain Creation . . . . . . . . . . . . . . . . . . . 10
4.3. IHC-based Signatures in LHIP . . . . . . . . . . . . . . . 11
4.3.1. Initiating the Signature Process . . . . . . . . . . . 12
4.3.2. The First Signature Packet: S1 . . . . . . . . . . . . 13
4.3.3. The First Acknowledgement Packet: A1 . . . . . . . . . 13
4.3.4. The Second Signature Packet: S2 . . . . . . . . . . . 14
4.3.5. The Second Acknowledgement Packet: A2 . . . . . . . . 14
4.3.6. Host Mobility with LHIP . . . . . . . . . . . . . . . 15
4.3.7. Overhead of IHC-based Signatures . . . . . . . . . . . 16
4.4. LHIP Parameters . . . . . . . . . . . . . . . . . . . . . 16
4.4.1. HCA parameter . . . . . . . . . . . . . . . . . . . . 16
4.4.2. HCE Parameter . . . . . . . . . . . . . . . . . . . . 18
4.4.3. PS Parameter . . . . . . . . . . . . . . . . . . . . . 18
4.4.4. PACK, PNACK, HACK, and HNACK Parameters . . . . . . . 19
4.4.5. LFLAGS Parameter . . . . . . . . . . . . . . . . . . . 20
4.5. LHIP Packets . . . . . . . . . . . . . . . . . . . . . . . 21
4.5.1. The S1 Packet . . . . . . . . . . . . . . . . . . . . 21
4.5.2. The A1 Packet . . . . . . . . . . . . . . . . . . . . 21
4.5.3. The S2 Packet . . . . . . . . . . . . . . . . . . . . 22
4.5.4. The A2 Packet . . . . . . . . . . . . . . . . . . . . 22
4.5.5. Source and Destination Addresses . . . . . . . . . . . 22
Heer Expires August 5, 2007 [Page 2]
Internet-Draft Lightweght HIP February 2007
4.6. State Machines . . . . . . . . . . . . . . . . . . . . . . 23
4.6.1. Terminology . . . . . . . . . . . . . . . . . . . . . 23
4.6.2. SIGNER State Machine . . . . . . . . . . . . . . . . . 24
4.6.3. VERIFIER State Machine . . . . . . . . . . . . . . . . 26
4.6.4. State Loss . . . . . . . . . . . . . . . . . . . . . . 27
4.7. Predefined Signals . . . . . . . . . . . . . . . . . . . . 28
4.8. Unprotected HIP Control Packets . . . . . . . . . . . . . 28
4.9. LHIP Handshake . . . . . . . . . . . . . . . . . . . . . . 28
4.9.1. LHIP Transform Suites . . . . . . . . . . . . . . . . 29
4.9.2. Hash Chain Anchors . . . . . . . . . . . . . . . . . . 29
4.9.3. Diffie-Hellman Parameters . . . . . . . . . . . . . . 30
4.9.4. ECHO_REQUEST parameter . . . . . . . . . . . . . . . . 30
4.9.5. RSA and DSA Signatures . . . . . . . . . . . . . . . . 30
4.9.6. Authenticated Hash Chain Anchors . . . . . . . . . . . 31
4.9.7. Encrypted Host Identifiers . . . . . . . . . . . . . . 32
4.9.8. Puzzle Mechanism . . . . . . . . . . . . . . . . . . . 32
4.9.9. Basic LHIP Base Exchange Overview . . . . . . . . . . 32
4.9.10. Use of IPsec and Other Payload Transfer Protocols . . 33
4.9.11. Concluding the LHIP Base Exchange . . . . . . . . . . 34
4.10. Chained Bootstrapping . . . . . . . . . . . . . . . . . . 34
4.10.1. Chained Bootstrapping for the INITIATOR . . . . . . . 34
4.10.2. Chained Bootstrapping for the RESPONDER . . . . . . . 34
4.11. Hash Chain Extension . . . . . . . . . . . . . . . . . . . 37
4.12. LHIP Interaction with Middle-boxes . . . . . . . . . . . . 37
4.13. Closing an LHIP Association . . . . . . . . . . . . . . . 38
4.14. Upgrading an LHIP Association . . . . . . . . . . . . . . 38
4.14.1. The First Upgrade Packet . . . . . . . . . . . . . . . 38
4.14.2. The Second Upgrade Packet . . . . . . . . . . . . . . 40
4.14.3. Concurrent Upgrade Initialization . . . . . . . . . . 40
4.14.4. HIP Downgrade . . . . . . . . . . . . . . . . . . . . 40
4.14.5. Upgrade DoS Attack . . . . . . . . . . . . . . . . . . 40
4.14.6. Sequence Numbers . . . . . . . . . . . . . . . . . . . 40
4.15. State Loss . . . . . . . . . . . . . . . . . . . . . . . . 41
5. Security Considerations . . . . . . . . . . . . . . . . . . . 41
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 42
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 42
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 43
8.1. Normative References . . . . . . . . . . . . . . . . . . . 43
8.2. Informative References . . . . . . . . . . . . . . . . . . 44
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 44
Intellectual Property and Copyright Statements . . . . . . . . . . 45
Heer Expires August 5, 2007 [Page 3]
Internet-Draft Lightweght HIP February 2007
Notation
+-----------+-------------------------------------------------------+
| Symbol | Explanation |
+-----------+-------------------------------------------------------+
| [x] | indicates that x is optional. |
| [x/y] | indicates that either x or y is present. |
| x_y | indicates that y is an index of x. |
| x_{yz} | indicates that yz is an index of h. |
| X(y) | indicates that y is a parameter of X. |
| | | signifies concatenation. |
| x=?y | signifies a check whether x equals y. |
| peer | denotes the remote host the local host is |
| | communicating to, using HIP or LHIP. |
| MESSAGE | denotes a HIP control packet (I1, R1, UPDATE, etc) |
| | which a host intends to transmit to its peer. |
| | Transmitting a MESSAGE may require to transmit |
| | several packets. |
| MSG | is used as shorthand for MESSAGE. |
| SIG | is used as shorthand for SIGNATURE. |
| SIGNER | denotes the sender of an IHC-signed MESSAGE. |
| VERIFIER | denotes the receiver of an IHC-signed MESSAGE. |
| INITIATOR | is the host which initiates a HIP or LHIP |
| | association. |
| RESPONDER | is the host which responds to the INITIATOR. |
| --> | signifies "SIGNER to VERIFIER" or "INITIATOR to |
| | RESPONDER" communication. |
| <-- | signifies "VERIFIER to SIGNER" or "RESPONDER to |
| | INITIATOR" communication. |
| rcv | is used as shorthand for receive or received. |
| snd | is used as shorthand for send or sent. |
| ack, nack | are used as shorthands for acknowledgment and |
| | negative acknowledgment. |
| hybrid | denotes a hybrid host which supports HIP as well as |
| | LHIP. |
| anchor | denotes the first element of a hash chain (h_n) in |
| | reverse order of creation. |
| seed | denotes the last element of a hash chain (r) in |
| | reverse order of creation. The seed is the random or |
| | pseudo-random value from which the hash chain is |
| | created. |
| HMAC-F | denotes a function which generates an HMAC. The |
| | function takes a message as first parameter and a key |
| | as second parameter. |
+-----------+-------------------------------------------------------+
Heer Expires August 5, 2007 [Page 4]
Internet-Draft Lightweght HIP February 2007
1. Introduction
The Host Identity Protocol (HIP) [I-D.ietf-hip-base] decouples the
transport from the network layer by introducing a new namespace.
Using Host Identities (HIs) for addressing hosts allows IP addresses
to be pure locators which enables hosts to use several locators or to
change their locators without breaking transport-layer connections.
This way, HIP provides end-host mobility and multihoming support for
a wide range of appliances. HIP uses public-key cryptography to
verify the identity of hosts and to generate symmetric keys that are
used for data encryption and integrity protection. Despite of the
valuable security features which public-key cryptography offers, it
also imposes a non-negligible computational cost which complicates
the use of HIP on devices with few CPU resources.
LHIP puts aside the benefits of data encryption and end-host
authentication in favor of a computationally inexpensive way of
providing integrity protection for HIP control packets. Thus,
allowing CPU-restricted devices to use the mobility and multihoming
features of HIP. Therefore, HIP payload from upper protocol layers
is neither encrypted nor authenticated and the HIs of hosts are not
verified. Nevertheless, it is necessary to provide a way to
authenticate HIP control packets, especially the UPDATE packets which
allow to modify an established HIP association, in order to allow the
HIP protocol to perform secure mobility and multihoming updates.
The integrity protection mechanisms which HIP employs to secure HIP
control packets rely on public-key cryptography. Hosts use Hash
Message Authentication Codes (HMACs) with keys that are generated
from an Authenticated Diffie-Hellman (DH) key exchange [DH71].
Moreover, the UPDATE packets must be signed with RSA [RFC3110] or DSA
[RFC2536] signatures to allow verification by middle-boxes which are
not in possession of the shared secret for the HMAC. In order to
reduce HIPs dependency on PK cryptography, LHIP introduces a new way
of authenticating HIP control messages which is mainly based on
cryptographic hash functions and one-way hash chains. The
Interactive Hash Chain (IHC) approach [I-D.ylitalo-multi6-wimp] and
one-time signatures [Lam81] provide the basis for this authentication
mechanism.
The authentication functionality of LHIP is conceptually located
below the HIP-layer in order to be transparent to the basic HIP
protocol. The task of protecting HIP payload is delegated to LHIP.
Therefore, LHIP disables the security mechanisms which protect
control packets in HIP. HIP passes unprotected HIP control packets
to LHIP which applies lightweight packet authentication if necessary.
However, there are packets which can not be protected (payload) and
packets which do not not require protection. These packets are sent
Heer Expires August 5, 2007 [Page 5]
Internet-Draft Lightweght HIP February 2007
unprotected. Figure 1 depicts the location of LHIP in the networking
stack.
Layering of HIP and LHIP:
.-----------------------------------------------.
| |
| UDP / TCP |
| |
+-----------------------------------------------+
| | |
| HIP / LHIP | Payload |
+-----------------------------+ |
| LHIP authentication | |
| unprotected | protected | unprotected |
+-----------------------------+-----------------+
| |
| IP |
| |
+-----------------------------------------------+
Figure 1
LHIP and HIP share the same host identity namespace but LHIP does not
authenticate the HIs of hosts except in cases of conflicts and
potential attacks (cf. Section 4.9.5). This allows LHIP to reuse the
HIP namespace and name resolution mechanisms without performing CPU-
intensive PK computations. A host can use the same HI for HIP and
LHIP associations depending on whether the additional security
features of HIP are required or not. However, using LHIP and HIP for
an identical pair of source HI and destination HI at the same time is
not possible. Despite the benefits of sharing the same HI namespace,
some security issues arise when using the same HIs for LHIP and HIP.
Section 4.9.5 discusses these issues and specifies defense mechanisms
against potential attacks.
The life-cycle of a typical LHIP association is similar to the life-
cycle of a HIP association. First, two hosts establish a
communication context during the Base EXchange (BEX). Then, they
update the association due to locator changes and, finally, they
close the association. LHIP modifies all of these steps to reduce
the computational cost of each. Moreover, an LHIP host has the
option to upgrade an established LHIP association to a full HIP
association.
Heer Expires August 5, 2007 [Page 6]
Internet-Draft Lightweght HIP February 2007
LHIP was explicitly designed to support the basic HIP protocol
functions and basic mobility and multihoming. The generic design of
LHIP also enables PK-less authentication for many other HIP
extensions. However, defining the behavior of LHIP when it used with
other HIP extensions is future work.
The decision when to use HIP and when to use LHIP should either be
based on a set of policies or be taken by the application which
initiates or accepts a new HIP association. Applications should use
an appropriate API [I-D.komu-btns-api] [I-D.mkomu-hip-native-api] to
communicate this decision. The decision when to upgrade an LHIP
association should also be expressed via this API.
LHIP does not replace but extends HIP. Therefore, this document only
focuses on changes and extensions of the basic HIP protocol and its
mobility and multihoming extensions [I-D.ietf-hip-mm]. All aspects
of HIP which are not mentioned explicitly in this document remain
identical to HIP.
2. LHIP Security
LHIP does not use the Diffie-Hellman key exchange and, consequently,
can not use a shared secret to encrypt or authenticate packets with
symmetric encryption algorithms or conventional Hashed Message
Authentication Code (HMAC) [RFC2104]. Therefore, only payload
transport protocols which do not rely on symmetric keys can be used
with LHIP. The LHIP authentication mechanisms do not provide any
integrity protection for HIP payload. All authentication mechanisms
defined in this document refer to HIP control messages.
LHIP does not necessarily verify the identity of hosts as this
procedure requires the use of PK signatures. However, host
authentication is can be requested either by the INITIATOR or the
RESPONDER of an LHIP association during the BEX if necessary.
Similar to HIP end-hosts, middle-boxes can only verify the identity
of a host when this host uses RSA or DSA signatures during the BEX or
during the update process.
LHIP can not protect against Man in the Middle (MitM) attacks during
the BEX. However, it protects against such attacks after the BEX,
especially, during location updates. This is an important feature as
mobile devices are likely to be exposed to attackers on the
communication path if they change their point of network attachment
frequently.
The following list summarizes the security properties of LHIP:
Heer Expires August 5, 2007 [Page 7]
Internet-Draft Lightweght HIP February 2007
Integrity: LHIP allows to verify the integrity of HIP control
messages and, therefore, protects these against malicious data
manipulation. LHIP payload is unprotected.
Authentication of packet origin: LHIP allows to verify that several
consecutive HIP control packets relate to the same origin.
However the identity of the origin can only be verified if RSA or
DSA is used during the LHIP handshake. The origin of LHIP payload
can not be determined in any way.
Replay protection: LHIP protects HIP control messages from replay
attacks. It does not provide replay protection for payload.
Confidentiality: LHIP does neither encrypt HIP control packets nor
payload.
Protection against MitM attacks: LHIP protects against MitM attacks
after the BEX.
Due to the non-obligatory host authentication and the inability to
encrypt payload, it is RECOMMENDED to use LHIP only when the
application does not require such security. LHIP can be used when
security is employed by other protocols in higher or lower protocol
layers.
3. Cryptographic Techniques used in LHIP
This chapter introduces the necessary terms and principles which
relate to message authentication for LHIP.
3.1. One-Time Signatures
Lamport proposed one-time signatures based on hash functions [Lam81].
A host uses two sufficiently large random or pseudo-random numbers
r_1 and r_2, applies a pre-image-resistant cryptographic one-way hash
function H to both, and keeps them secret. It publishes H(r_1) and
H(r_2) as public key. The host signs a one-bit message by either
disclosing r_1 as signature S when the value of the bit is 1.
Otherwise, it discloses r_2. A receiver can verify the authenticity
of the single bit by comparing the hash of the signature H(S) to the
public key values H(r_1) and H(r_2).
3.2. Hash Chains
A host uses chains of hashes to create a sequence of related hash
values [Lam81]. The host uses such hash chains to tie together
several signatures, allowing the host to relate all signatures to one
Heer Expires August 5, 2007 [Page 8]
Internet-Draft Lightweght HIP February 2007
sender without repeatedly exchanging public-key hashes. Iterative
application of the hash function to a random or pseudo-random number
forms a sequence of values hc = {h_1 = H(r), h_2 = H(h_1) = H(H(r)),
... , Hn = H(h_n-1)}. The host discloses the elements of the hash
chain in reverse order of their creation beginning with h_n. This
sequence hc has three properties which are useful for LHIP:
i) Given h_{i-1} and h_i, it is easy to verify that h_{i-1} belongs
to the same hash chain as h_i by verifying that H(h_{i-1}) equals
h_i.
ii) It is computationally hard to find h_{i-1} if only h_i is given.
iii) Given h_{i+1}, it is hard to find an h_i' with H(h_i') =
h_{i+1}.
The first element of the hash chain in reverse order of creation
(h_i) is denoted hash chain anchor. The last element of the hash
chain in reverse order of creation (r) is denoted as the seed of the
hash chain.
3.3. Interactive Hash Chain-Based Signatures
HMAC provides a computationally inexpensive way to verify the
integrity of a packet. However, HMAC requires a shared secret (a
symmetric key) to be exchanged beforehand. Several communication
protocols (e.g. TESLA[RFC4082] and WIMP[I-D.ylitalo-multi6-wimp])
circumvent this restriction by using elements of hash chains as key
for the HMAC signature.
The basic idea behind hash chain based packet authentication is to
use HMACs with temporary secrets instead of shared secrets. A SIGNER
of a message sign the message with an HMAC which uses secret value,
only known to the SIGNER, as key. In the absence of an encrypted
channel to the VERIFIER, the SIGNER must transmit the message, the
signature, and the HMAC key in cleartext to the receiver in order to
allow it to verify the signature. Attackers cannot change the
message unnoticeably because hosts accept messages only if the
signature has been created before the key was disclosed. This
ensures that only the host in possession of the secret was able to
sign the message before it was disclosed. Using hash chains as
source for the keys, allows to relate several consequent signatures
to the owner of a hash chain.
Temporally separating the time of signing and transmitting the
message from the time of disclosing and transmitting the secret key
is crucial for the security of hash chain based signatures. WIMP
uses an interactive approach to guarantee this separation. Hosts
Heer Expires August 5, 2007 [Page 9]
Internet-Draft Lightweght HIP February 2007
must acknowledge the receipt of a signature before the secret key is
disclosed.
WIMP uses elements of hash chains to prevent attackers from sending
forged acknowledgments. Every host adds an element of its hash chain
h_i to the acknowledgment to allow the SIGNER to verify the origin of
the acknowledgment. The SIGNER can verify the origin of the hash
chain element by comparing H(h_i) to the most recently disclosed
element of the VERIFIER's hash chain h_{i+1} : H(h_i)=?h_{i+1}. It
only discloses the secret key (the next element of its own hash
chain) if this test succeeds.
4. Lightweight Authentication Extension for HIP
LHIP modifies the way in which HIP authenticates messages but leaves
most of the other functionality of HIP untouched. This way, other
HIP extensions can use LHIP transparently. The LHIP authentication
protocol is conceptually located below HIP and above the network
layer. LHIP acts as output and input filter for HIP control packets
and processes these whenever they arrive or are about to be sent.
LHIP uses two mechanisms to protect HIP control mechanisms. The
first of these mechanisms is based on IHC signatures and can be used
to sign and verify arbitrary content. The second mechanism is based
on one-time signatures and can be used to trigger predefined
processes. The following section specifies these mechanisms.
The following sections define the LHIP authentication mechanism
before the setup of an LHIP association is discussed. Note that this
order does not reflect the chronological order of the processes in
the LHIP protocol as the LHIP association must be established before
LHIP can authenticate HIP control packets.
4.1. Supported Hash Functions
LHIP hosts MUST support SHA-1 [RFC3174] for hash chain creation and
verification.
4.2. Hash Chain Creation
In order to create a hash chain, a host must pick a random or pseudo-
random number with the size of the hash function in use. The host
stores this number as first element of the hash chain (r). It
applies the selected hash function to it and stores the result as
second element of the hash chain (h_1). It repeats this process by
always using the recently generated hash chain element as input of
the hash function until it has stored a sufficient number of elements
Heer Expires August 5, 2007 [Page 10]
Internet-Draft Lightweght HIP February 2007
(n). It discloses the elements of the hash chain in reverse order of
creation, beginning with h_n which it publishes as anchor value. It
MUST NOT disclose parts of the hash chain before all previous
elements (in reverse order of creation) have been disclosed.
4.3. IHC-based Signatures in LHIP
This section gives an overview how LHIP authenticates HIP control
messages. The authentication process is based on the IHC signature
approach. It is only used to protect HIP control messages, such as
UPDATE messages, that are exchanged after the HIP and LHIP Base
EXchange (BEX) is completed. The following explanations assume that
the SIGNER and the VERIFIER of a MESSAGE have already established the
LHIP association successfully. Especially the anchor values of the
hash chains in use must be exchanged during the BEX. Moreover, the
hash function which is used for generating and verifying the hash
chains is negotiated during the BEX.
When an LHIP host is about to send a HIP control message, it
initiates the IHC-based signature process. The transmission of this
HIP MESSAGE with IHC-based protection requires to exchange four
packets. Two packets precede the HIP control message. These packets
are used to deliver the signature and to acknowledge its receipt.
Then the HIP control message (e.g. an UPDATE packet) is sent. LHIP
attaches additional parameters to this control message to allow IHC-
based authentication. The fourth packet delivers an acknowledgment
or negative acknowledgment of the successful verification of the
MESSAGE.
As four packets are used for securing one single MESSAGE, this
document differentiates between packets which are sent within the
IHC-based signature process and the MESSAGE which is protected by
these packets.
Each LHIP host uses two distinct IHC-signature related hash chains
for every LHIP association: one for signing MESSAGES and one for
receiving and acknowledging packets of the IHC-based signature
process. The hash chain which is used when the host acts as SIGNER
is denoted SIGNATURE_CHAIN and the hash chain which is used when the
host acts as VERIFIER is denoted TRIGGER_CHAIN. The hosts exchange
the anchors of SIGNATURE_CHAIN and TRIGGER_CHAIN during the BEX. In
the following description, the anchor of the SIGNER's SIGNATURE_CHAIN
is denoted hs_i and the anchor of the VERIFIER's TRIGGER_CHAIN is
denoted ht_i. These anchors have been exchanged previously.
A schematic overview of the signature process is depicted in
Figure 2. It is followed by a description of the packets and
mechanisms involved in the signature process.
Heer Expires August 5, 2007 [Page 11]
Internet-Draft Lightweght HIP February 2007
The modified IHC signature process as used by LHIP:
SIGNER VERIFIER
S1: hs_{i-1}, PRE_SIG
-------------------------->
H(hs_{i-1})?=hs_i:
Buffer PRE_SIG
A1: ht_i, PACK, PNACK
<--------------------------
H(ht_{i-1})=?ht_i:
Buffer PACK, PNACK
S2: hs_{i-2}, MESSAGE (i.e. UPDATE)
-------------------------->
HMAC-F(MESSAGE, hs_{i-2})=?
PRE_SIG
A2: ht_{i-2}, [secret_ack/
secret_nack]
<--------------------------
HMAC-F("__[n]ack[_]__"|
secret_[n]ack,
ht_{i-2})=?[PACK/PNACK]
... further signature processes....
S1: hs_{i-3}, PRE_SIG
-------------------------->
. .
. .
. .
Figure 2
4.3.1. Initiating the Signature Process
The signature process begins when an LHIP host is about to transmit a
protected MESSAGE (HIP control message) to its peer. The host which
intends to send the MESSAGE acts as SIGNER and the host which
receives the MESSAGE acts as VERIFIER. The SIGNER can only send
MESSAGES one by one. Therefore, it must enqueue and delay concurrent
Heer Expires August 5, 2007 [Page 12]
Internet-Draft Lightweght HIP February 2007
MESSAGES.
4.3.2. The First Signature Packet: S1
The first (S1) of the four signature packets contains a unused clear-
text element from the SIGNER's SIGNATURE_CHAIN (hs_{i-1}) which
allows the VERIFIER to verify the origin of the packet. It also
contains the signature of the MESSAGE which the SIGNER wants to
transmit. The signature is denoted pre-signature (PRE_SIG) because
the S1 packet does not contain the actual MESSAGE to which the
signature belongs to. The pre-signature is created with the HMAC
algorithm for which the next element of the SIGNER's SIGNATURE_CHAIN
is used as key. Due to the ambiguity of the term HMAC in HIP (HMAC
algorithm/function and HMAC parameter) the term HMAC-F is used when
referring to the algorithm. (PRE_SIG = HMAC-F(MESSAGE, hs_{i-2}) ).
The VERIFIER must verify that the packet was sent by the SIGNER by
comparing the hash of the clear-text hash chain element hs_{i-1} to
the anchor of the SIGNER's signature chain ( H(hs_{i-1})=?hs_i ). It
can not verify the MESSAGE at this point as it neither knows the
MESSAGE nor the key for the HMAC signature. Therefore, it stores the
PRE_SIG until the MESSAGE and the key are transmitted. The VERIFIER
must not accept any further packets containing hs_{i-1} and, most
importantly, MUST NOT buffer further PRE_SIGs after it has sent the
A1 packet.
4.3.3. The First Acknowledgement Packet: A1
The receiver sends an acknowledgment packet (A1) to the SIGNER to
acknowledge the receipt of the S1 packet. It attaches the next
undisclosed element of its TRIGGER_CHAIN ht_{i-1} to the packet as
proof that it has received the S1 packet.
LHIP provides an acknowledged MESSAGE delivery service which means
that the SIGNER gets a signed acknowledgment if the verification was
successful and a signed negative acknowledgment if the verification
has failed. LHIP piggy-backs these signed acks and nacks on the IHC-
signature packets to reduce the overhead for these. Therefore, the
VERIFIER attaches a pre-signature of the ack and the nack to the A1
message. As the outcome of the verification is unclear, when sending
the A2, it must attach both pre-signatures (for an ack and nack) to
the A1 packet. The pre-signature of the acknowledgment is denoted
PACK and the pre-signature of the negative acknowledgment is denoted
PNACK. They are computed as follows:
PACK = HMAC-F("__ack___" | secret_ack , ht_{i-2})
PNACK = HMAC-F("__nack__" | secret_nack, ht_{i-2})
Heer Expires August 5, 2007 [Page 13]
Internet-Draft Lightweght HIP February 2007
The message strings for the PACK and PNACK consist simple ASCII
strings concatenated with pseudo-random numbers (secret_ack and
secret_nack). The pseudo-random numbers prevent that the message
text can be guessed and that a acknowledgment or negative
acknowledgment can be forged.
On receipt of the A1 packet, the SIGNER MUST check that the clear-
text hash chain element in the A1 packet belongs to the VERIFIER's
TRIGGER chain by computing H(hs_{i-1})=?hs_i. A successful check
indicates that the VERIFIER has received the S1 packet and that the
SIGNER can send the MESSAGE and the key of the pre-signature now.
The SIGNER MUST buffer the PACK and the PNACK value from the A1
packet. It MUST not accept any further PACK or PNACK values before
receiving the S2 packet.
4.3.4. The Second Signature Packet: S2
The SIGNER sends the MESSAGE and the next undisclosed elements of its
hash chain hs_{i-2} to the VERIFIER in the second signature packet
(S2). This is the hash chain element which was used to create the
PRE_SIG value.
After receiving the S2 packet, the VERIFIER verifies that the packet
was sent by the SIGNER. It does so by computing
H(hs_{i-2})=?hs_{i-1}. If the test succeeds, it verifies the
integrity of the MESSAGE by computing PRE_SIG=?HMAC-F(MESSAGE,
hs_{i-2}). The signature is valid if this test succeeds. The
authentication protocol delivers the MESSAGE (the HIP control
message, such as an UPDATE) to the appropriate HIP protocol functions
in case of an successful verification.
4.3.5. The Second Acknowledgement Packet: A2
The A2 packet from the VERIFIER to the SIGNER contains the next
element of the VERIFIER's TRIGGER_CHAIN ht_{i-2} and the secret_ack
if the verification of the signature was successful. The packet
contains secret_nack if the signature was invalid.
The SIGNER determines whether the signature process was successful
after receiving the A2 packet. It verifies that the VERIFIER has
sent the A2 packet and compares the secret_ack or secret_nack to the
PACK or PNACK by computing PACK=?HMAC-F("__ack___" | secret_ack ,
ht_{i-2}) or PNACK=?HMAC-F("__nack__" | secret_nack , ht_{i-2}),
respectively. The acknowledgment or negative acknowledgment is valid
when this test succeeds.
Heer Expires August 5, 2007 [Page 14]
Internet-Draft Lightweght HIP February 2007
4.3.6. Host Mobility with LHIP
This section gives a short example how LHIP protects the message
exchange during an HIP location update. In our example, this basic
location update consists of three UPDATE MESSAGES. The mobile host
transmits a set of new locators in the first UPDATE MESSAGE. The
stationary host acknowledges this set of new locators and sends an
ECHO_REQUEST in the second UPDATE MESSAGE. The mobile host replies
the ECHO_RESPONSE in the third UPDATE MESSAGE.
The first and the second update MESSAGES are protected by IHC-based
signatures while the third UPDATE MESSAGE is unprotected. The
decision to leave this MESSAGE unprotected is based upon the fact
that modifications to this packet can not go unnoticed even without
signatures. The reason for this is that the packet carries only an
ECHO_RESPONSE in order to verify a locator. Figure 3 shows the whole
process in a simplified way. The protected HIP UPDATE MESSAGES are
marked with an (x).
HIP update with LHIP:
MOBILE HOST STATIONARY HOST
S1 (PRE_SIG of the 1st UPDATE packet)
------------------------------------>
A1 (Acknowledgment)
<-------------------------------------
S2 (1st UPDATE MESSAGE)
-------------------------------------> (x)
A2 (NACK or ACK)
* <-------------------------------------
S1 (PRE_SIG of the 2nd UPDATE packet)
* <-------------------------------------
A1 (Acknowledgment)
------------------------------------->
S2 (2nd UPDATE MESSAGE)
<------------------------------------- (x)
A2 (NACK or ACK)
* ------------------------------------->
3rd UPDATE packet (unprotected)
* -------------------------------------> (x)
Figure 3
Heer Expires August 5, 2007 [Page 15]
Internet-Draft Lightweght HIP February 2007
Notice that packets marked with an asterisk are sent in parallel,
thus, reducing the transmission delay from 4.5 RTTs to 3.5 RTTs.
4.3.7. Overhead of IHC-based Signatures
The four IHC signature packets replace a single conventional RSA,
DSA, or HMAC signed packet from the SIGNER to the VERIFIER. This
results in an additional delay of 1.5 Round-Trip Times (RTTs) per
MESSAGE compared to HIP. However, depending on the computational
cost of generating the conventional signature, and the processing
speed of the LHIP device, this signature scheme can still be
advantageous because of its low computational cost. Another
advantage of LHIP is that Middle-boxes can verify the signatures
without being in possession of a shared secret, which is required for
HMAC based signatures. This allows middle-boxes to verify the
contents of HIP packets without using PK cryptography.
4.4. LHIP Parameters
LHIP control packets are identical to HIP control packets with the
exception that HMAC parameters are calculated with a key of all
zeroes instead of the DH-generated shared secret. Therefore, the
HMAC parameter contained in LHIP packets is just a message digest.
LHIP uses this message digest as basis for the IHC-based signature.
It protects only the HMAC parameter with IHC-based signatures, thus,
protecting exactly the same fields of the HIP control packets that
are protected by the HMAC parameter. Reusing the HMAC parameter in
this way ensures that the semantics of the HMAC parameter remain
compatible with HIP. Furthermore, no DSA or RSA signatures are
applied which means that the corresponding HIP parameters are
missing. LHIP adds several other parameters to HIP control packets
which allow IHC-based authentication.
4.4.1. HCA parameter
LHIP defines several types of hash chain anchors which are
transmitted as Hash Chain Anchor (HCA) parameter in BEX or IHC-signed
UPDATE packets. A signed HIP control packet MAY contain several HCA
parameters. Unsigned HIP control packets MUST NOT contain any HCA
parameters. The different types of anchors are identified by an
8-bit type field. A packet MUST NOT contain several HCA parameters
with the same type ID. The VERIFIER MUST ignore such duplicate HCA
parameters.
Depending on the purpose of the hash chains that belong to the
anchors, these hash chains should differ in length. In the context
of hash chains, length refers the number of elements in a hash chain.
The SIGNATURE_CHAIN and the TRIGGER_CHAIN are used for IHC-based
Heer Expires August 5, 2007 [Page 16]
Internet-Draft Lightweght HIP February 2007
signatures. Each signature uses at least two hash chain elements.
Therefore, the hash chain MUST at least consist of three elements,
including the published anchor element to allow one successful
signature. It is RECOMMENDED to use larger number of elements to
allow a larger number of updates before the hash chains are depleted.
The CLOSE_CHAIN and the UPGRADE_CHAIN are used to secure predefined
signals (cf. Section 4.13 and Section 4.14). These two signals are
only invoked once. Therefore, a hash chain length of two elements is
sufficient. Other predefined signals, which may be defined by other
HIP extensions in the future, may be invoked more often and would,
therefore, require longer hash chains. An overview of the currently
defined hash chain types is given below.
+-----------------+---------+--------------------------+------------+
| Hash Chain | Type ID | Predefined Signal | Length |
+-----------------+---------+--------------------------+------------+
| SIGNATURE_CHAIN | 1 | - | 1 + 2 x S* |
| TRIGGER_CHAIN | 2 | - | 1 + 2 x S* |
| CLOSE_CHAIN | 3 | Close LHIP association | 2 |
| UPGRADE_CHAIN | 4 | Upgrade from LHIP to HIP | 2 |
+-----------------+---------+--------------------------+------------+
Hash chain attributes. *S means the number of expected signature
processes (positive value).
The structure of the HCA parameter is depicted below.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type |C| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Anchor Type | |
+-+-+-+-+-+-+-+-+ Hash Value /
/ /
/ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type 222
Length 21 for SHA-1
Anchor Type Type ID of the corresponding hash chain
Hash Value The first element of the corresponding hash chain in
reverse order of creation (h_n).
Heer Expires August 5, 2007 [Page 17]
Internet-Draft Lightweght HIP February 2007
4.4.2. HCE Parameter
The Hash Chain Element parameter (HCE) contains the recently released
element of the corresponding hash chain. HCE parameters are used
during the IHC-based signature process or to protect predefined
signals. When belonging to an IHC-based signature process, HCE
parameters from the SIGNER MUST contain elements of the SIGNER's
SIGNATURE_CHAIN and HCE parameters from the VERIFIER MUST contain
elements of the VERIFIER's TRIGGER_CHAIN. The length of the Hash
Chain Element field is determined by the hash function which
negotiated during the LHIP BEX (cf. Section 4.9). The structure of
the HCE parameter is depicted below.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type |C| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Chain Type | |
+---------------' Hash Chain Element /
/ /
/ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type 64702
Length 21 for SHA-1
Chain Type The ID of the corresponding hash chain to
distinguish several HCE parameters which are
assigned to different predefined signals or
signature processes.
Hash Chain Element An element of the corresponding hash chain.
4.4.3. PS Parameter
The Pre-Signature (PS) parameter carries the pre-signature in the A1
packet. The pre-signature is an Hashed Message Authentication Code
of the HMAC parameter contained in the HIP control packet. Note that
the HMAC parameter in the HIP packet is generated by using a key of
zeroes when using LHIP. Therefore, the HMAC does not protect the
packet but provides a message digest which covers the packet. The
pre-signature HMAC is generated from this digest with the next
undisclosed hash chain element as key. The pre-signature is computed
as follows: HMAC-F(HMAC,h_{i-1}).
Heer Expires August 5, 2007 [Page 18]
Internet-Draft Lightweght HIP February 2007
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type |C| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
/ Pre-Signature /
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type 64704
Length 20 for SHA-1
Pre-Signature The pre-signature used in the IHC-based signature
process.
4.4.4. PACK, PNACK, HACK, and HNACK Parameters
The Pre-ACKnowledgment parameter (PACK) and the Pre-Negative-
ACKnowledgment Parameter (PNACK) are used to transmit the PACK and
PNACK values from the VERIFIER to the SIGNER in the A2 packet.
The hash-based acknowledgment (HACK) and the corresponding negative
acknowledgment (HNACK) contain the secret that was used to create the
PACK or PNACK value, respectively. The size of the secret must equal
the output size of the hash function in use.
The PACK, PNACK, HACK, and HNACK MUST be calculated according to the
description in Section 4.3.3. All four parameters have the same
structure. They consist of the HIP parameter header and a byte field
containing the corresponding values.
Heer Expires August 5, 2007 [Page 19]
Internet-Draft Lightweght HIP February 2007
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type |C| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
/ [PACK/PNACK/secret_ack/secret_nack] /
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type 64725 for PACK
64727 for PNACK
64729 for HACK
64731 for HNACK
Length 20 for SHA-1
[PACK value/
PNACK value/
secret_ack/
secret_nack] The PACK, PNACK, secret_ack, or secret_nack value
4.4.5. LFLAGS Parameter
The LHIP-flags parameter allows hosts to transmit additional
information about an LHIP association to their peers. The LFLAGS
parameter is transmitted in the R1 and the I2 packet of the LHIP BEX.
It consists of the HIP parameter header and an 32-bit field. The 32-
bit field MUST be in network byte order. Setting the corresponding
bit to 1 indicates that the host sends the information defined below.
+---------------------+-----+---------+-----------------------------+
| Flag | Bit | Integer | Meaning |
+---------------------+-----+---------+-----------------------------+
| LFLAG_REQUIRE_AUTH | 0 | 1 | Peer must authenticate |
| LFLAG_OFFER_AUTH | 1 | 2 | Host is willing to |
| | | | authenticate |
| LFLAG_OFFER_UPGRADE | 2 | 4 | Host is willing to upgrade |
+---------------------+-----+---------+-----------------------------+
The structure of the LFLAGS parameter is depicted below.
Heer Expires August 5, 2007 [Page 20]
Internet-Draft Lightweght HIP February 2007
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type |C| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| FLAGS |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type 63404
Length 4
Flags A bit-mask as defined above.
4.5. LHIP Packets
LHIP uses several additional HIP control packet types which are used
to transmit the S1, A1, and A2 packet of the IHC-based signature
process. The Type of the S2 packet is determined by the type of the
HIP control message which is protected by the IHC-based signatures.
LHIP hosts MUST implement the S1, A1, and A2 packets. The packets
are defined as follows.
4.5.1. The S1 Packet
The transmission of the S1 packet is triggered by a transmission
request from the basic HIP protocol. The LHIP protocol queues and
delays this transmission and prepares a new S1 packet. This packet
consists of the HIP packet header, the next hash chain element of the
SIGNER encoded an HCE parameter, and the pre-signature of the queued
original MESSAGE encoded as PS parameter.
Header:
Packet Type = 22 (preliminary)
SRC HIT = SIGNER's HIT
DST HIT = VERIFIER's HIT
IP ( HIP ( HCE, PS ) )
Valid control bits: none
4.5.2. The A1 Packet
The A1 packet is only sent as direct response to an S1 packet from
the SIGNER. It contains the HIP packet header, the next element of
the VERIFIER's trigger-chain encoded as HCE parameter, and a PACK and
a NACK parameter.
Heer Expires August 5, 2007 [Page 21]
Internet-Draft Lightweght HIP February 2007
Header:
Packet Type = 23 (preliminary)
SRC HIT = VERIFIER's HIT
DST HIT = SIGNER's HIT
IP ( HIP ( HCE, PACK, PNACK ) )
Valid control bits: none
4.5.3. The S2 Packet
The second signature packet S2 is the queued MESSAGE which was
originally sent by the basic HIP protocol. LHIP attaches an HCE
parameter which contains the next undisclosed hash chain element from
the SIGNER's signature-chain. This HCE parameter allows the VERIFIER
to a) determine that the packet was sent by the SIGNER and b) to
verify the pre-signature sent in the S1 packet. There is no special
packet type for the S2 packet as the LHIP parameters are piggy-backed
on the original MESSAGE sent by the basic HIP protocol. The presence
of a valid HCE parameter is sufficient for the VERIFIER to identify
the packet as S2 packet.
4.5.4. The A2 Packet
The VERIFIER sends the A2 packet only as a direct response to the S2
packet. It contains the next element of the VERIFIER's hash chain
encoded as HCE parameter and an HACK or HNACK parameter depending on
whether the signed HIP MESSAGE was verified successfully or not.
Header:
Packet Type = 24 (preliminary)
SRC HIT = VERIFIER's HIT
DST HIT = SIGNER's HIT
IP ( HIP ( HCE, [HACK/HNACK] ) )
Valid control bits: none
4.5.5. Source and Destination Addresses
The correct choice of source and destination addresses in the IP
headers of the S1 and A1 packets is important because these packets
precede the actual HIP control message. The control message can be
part of an update process due to a change in a host's locator set.
The source and destination address of the S1 packet MUST be the same
as the source and destination address of the queued HIP control
message from the basic HIP protocol. The destination address of the
A1 packet MUST be set to the source address of the corresponding S1
Heer Expires August 5, 2007 [Page 22]
Internet-Draft Lightweght HIP February 2007
packet regardless of the preferred address and regardless of the
previously announced set of locators of the SIGNER. The source
address of the A1 packet MUST be the address of the VERIFIER's
interface on which the S1 packet was received.
4.6. State Machines
Temporally separating the transmission of the first and the third
signature packet is crucial for the security of the IHC-signature
scheme. The following section provides two state machines. They
ensure temporal separation and handling of duplicate transmissions,
undeliverable packets, and packet loss. These state machines focus
on the LHIP packet signature and verification process only. They do
not replace any existing HIP state machine but take over the process
of sending an authenticated MESSAGE. The state machines define the
behavior of the SIGNER and the VERIFIER of an IHC-signed MESSAGE.
Note that both LHIP peers MUST implement both state machines. Each
host can act as SIGNER of an IHC-signed MESSAGE and as VERIFIER of
another IHC-signed MESSAGE at the same time. Moreover, each host
holds separate state information for every LHIP association which
enables the host to process several IHC-signed MESSAGES from or to
different hosts simultaneously.
4.6.1. Terminology
Depending on whether an element in an HCE parameter belongs to the
peer's corresponding hash chain or not, and depending on when it was
disclosed, a host classifies LHIP authentication packets into three
classes:
Valid: A packet is valid when it contains a HCE parameter with the
predecessor element of the most recently disclosed hash chain
element of the same hash chain. When, for instance, h_i is the
last hash chain element disclosed by a host, only the value
h_{i-1}, which fulfills the equation H(h_{i-1}) = h_i, is
considered to be valid.
Old: A packet is old when the hash chain element in the HCE
parameter equals to the most recently disclosed hash chain element
of the corresponding hash chain. Assuming that h_i is the last
hash chain element disclosed by a host, further packets with h_i
in the HCE parameter are considered to be old.
Invalid: A packet is invalid when it is neither old nor valid.
LHIP hosts MUST drop packets with invalid HCE parameters. Packets
with old HCE parameters indicate duplicate transmissions or packet
loss and must be handled according to the state machines specified
Heer Expires August 5, 2007 [Page 23]
Internet-Draft Lightweght HIP February 2007
below.
4.6.2. SIGNER State Machine
The SIGNER state machine consists of three states. Figure 4 depicts
the SIGNER's state machine with conditions for the state transitions
and the corresponding actions. In the case of packet loss,
retransmissions are always initiated by the SIGNER to avoid the
possibility of traffic amplification for DoS attacks.
+---------------+---------------------------------------------------+
| State | Explanation |
+---------------+---------------------------------------------------+
| INITIAL/READY | State machine start, ready for new IHC signature |
| | process. Waiting for HIP control packet to be |
| | sent. |
| S1-SENT | Waiting for valid A1 |
| S2-SENT | Waiting for valid A2 |
+---------------+---------------------------------------------------+
Heer Expires August 5, 2007 [Page 24]
Internet-Draft Lightweght HIP February 2007
LHIP SIGNER IHC-based signature state machine :
Rcv A1:
drop A1;
Rcv A2:
drop A2
.-----.
| |
| V
.---------. (1) Send event: .---------. Timeout:
| | buffer HIP MSG, | |<-. resend S1;
| INITIAL | snd S1* | S1- | | Rcv A2:
-->| /READY |---------------------->| SENT | | drop A2
| | | |--' Rcv valid A1,
'---------' '---------' cancel process:
^ ^ | snd new S1 (x)
rcv valid A2| | |
ACK: | (2) Rcv valid A2 NACK: | | Rcv valid A1:
no action | resend S1* | | snd S2*,
| | | store PACK and PNACK
| .---------. | |
| | |---------' |
| | S2- | |
'--------| SENT | |
| |<-----------'
'---------'
| ^
| |
'-----'
Timeout:
resend S2;
Rcv A1:
drop A1
Figure 4
State transitions that require the use a new hash chain element from
the SIGNER's SIGNATURE_CHAIN are marked with an asterisk. The send
event (marked with (1)) is triggered when HIP hands an outgoing HIP
control packet (e.g. an UPDATE packet) to LHIP at the SIGNER. This
packet is queued and delayed until it is sent as S2 packet. The
retransmission of the S1 packet after a NACK (2) requires that the
SIGNER calculates a new pre-signature with an undisclosed hash chain
element from its SIGNATURE_CHAIN.
The SIGNER MUST queue all outgoing messages from the HIP base
protocol when these messages arrive while the queue is non-empty or
Heer Expires August 5, 2007 [Page 25]
Internet-Draft Lightweght HIP February 2007
when the SIGNER's state machine is not in state READY. The SIGNER
can handle one message in the queue at a time. The SIGNER removes a
message from the queue after receiving a valid A2 packet that
contains a valid HACK parameter.
The SIGNER MAY repeat the signature process if the VERIFIER sends a
HNACK parameter in the A2 packet. However, it SHOULD limit the
number of retries to avoid the depletion of its hash chain.
Consecutive signature failures indicate an attack because packets
with transmission errors are already detected by the checksums in the
IP header with high probability. Multi-homed hosts can try to use
alternative communication paths to circumvent an attacker.
The SIGNER uses timeouts to determine when a packet was lost on the
way to or from the VERIFIER. It resends the previously sent packet
without using a new hash chain element in such a case. The SIGNER
SHOULD abort the signature process if consecutive retransmissions
fail due to timeouts. It deletes the queued message belonging to the
IHC-based signature process from the queue and sends a new S1 packet
for the next message in the queue. In this case, the SIGNER MUST
repeat the signature process for the packet without considering this
failed signature as an attack if the VERIFIER sends an HNACK in the
A2 packet.
The LHIP IHC-signature protocol allows the SIGNER to gracefully abort
a signature process after receiving an A1 packet by sending a new S1
packet, thus, initiating a new signature process for the next queued
HIP control message. This mechanism delivers important packets with
higher priority. The corresponding conditions and state transitions
are marked with an (x) in both state machine diagrams.
4.6.3. VERIFIER State Machine
The VERIFIER state machine starts in the ready state, in which it
waits for the first S1 packet to arrive from the SIGNER. The SIGNER
sends the A1 packet and transitions to state A1-SENT. After
completing an IHC-based signature process by sending an
acknowledgment or negative acknowledgment, the VERIFIER state machine
transitions to state A2-SENT in which it waits until a new IHC-based
signature process is initiated by a valid S1 packet. The VERIFIER's
state machine is depicted in Figure 5.
+---------------+---------------------------------------------------+
| State | Explanation |
+---------------+---------------------------------------------------+
| INITIAL/READY | State machine start, waiting for valid S1 |
| A1-SENT | Waiting for valid S2 |
Heer Expires August 5, 2007 [Page 26]
Internet-Draft Lightweght HIP February 2007
| A2-SENT | IHC-signature process completed, Waiting for |
| | valid S1 |
+---------------+---------------------------------------------------+
LHIP VERIFIER IHC-based signature state machine :
Rcv S2:
drop S2
.-----.
| V Rcv old S1:
.---------. Rcv valid S1: .---------. resend A1;
| | snd A1*, | |<-. Rcv valid S1:
| INITIAL | store S1 | A1- | | snd new A1*; (x)
-->| READY |-------------->| SENT | | Rcv S2: drop S2
| | | |--'
'---------' '---------
^ |
| | (1)
Rcv valid S1: | | Rcv valid S2, signature valid:
snd A1*, | | snd A2 with HACK*, deliver MSG;
store S1 | | Rcv valid S2, signature invalid:
| | snd A2 with HNACK*
| |
| V
.---------.
Rcv old S2: .->| |
resend A2; | | A2- |
Rcv valid S2: | | SENT |
drop S2; '--| |
'---------'
Figure 5
The transitions marked with an asterisk require the VERIFIER to use a
new hash chain element from its TRIGGER_CHAIN. The VERIFIER sends
the secret_ack encoded as HACK parameter in the A2 packet when the
signature of the MESSAGE is valid (1). The LHIP authentication
process delivers the packet to the HIP only when the signature is
valid. Otherwise, it MUST drop the message and send the secret_nack
encoded as HNACK parameter to the SIGNER.
4.6.4. State Loss
Recovery from state loss during the authentication process is not
supported as the LHIP association, including all necessary hash
chains, would be lost as well. Recovery from state loss for the
whole LHIP association is handled in Section 4.15.
Heer Expires August 5, 2007 [Page 27]
Internet-Draft Lightweght HIP February 2007
4.7. Predefined Signals
Messages containing only one bit to be protected (e.g. the signaling
for triggering a predefined action), can be invoked by using one-way
signatures. LHIP uses binary hash chains which consist only of two
elements -- a pseudo-random number r and the hash of r, h_1 = H(r) --
for this purpose. The h_1 is exchanged beforehand as anchor value.
It is bound to a specific action. A local host can trigger this
action by disclosing r. Its peer can verify if the host has
requested the specific action by verifying that H(r) equals h_1.
This procedure provides a way to trigger actions such as the closing
of a HIP association in a secure way. It only requires to attach the
secret value r to the message which carries the unprotected signaling
for the predefined signal. The transmission of r substitutes the
IHC-based signature that would otherwise have been necessary to
secure the signaling of the action. Therefore, using predefined
signals instead of IHC-based signatures saves 1.5 RTTs. Anchors for
predefined signals must be exchanged and assigned to the signal in
the beginning of the communication process during the BEX.
4.8. Unprotected HIP Control Packets
For some control packets, it is not necessary to apply signatures as
these either do not carry data worth protecting or are protected by
other mechanisms. Apart from the following exceptions, all HIP
control packets MUST be protected with IHC-based signatures. Other
HIP extensions may define further exceptions.
List of MESSAGES which are not protected by IHC-based signatures:
1. UPDATE packets which only carry ACK and ECHO_RESPONSE because
manipulations can be detected without signatures (cf.
Section 4.3.6).
2. CLOSE packets because they are protected by predefined signals
(cf. Section 4.13).
3. UPDATE packets which are used for an LHIP to HIP upgrade because
they are protected by a predefined signal and an HMAC which uses
a shared key (cf. Section 4.14).
4.9. LHIP Handshake
HIP uses the BEX to create the HIP communication context, the HIP
association, on both hosts. LHIP extends the BEX in order to
establish the LHIP communication context. LHIP hosts generate hash
chains and exchange hash chain anchors with the peer during the base
exchange. Unlike the HIP base exchange, no PK operations are
Heer Expires August 5, 2007 [Page 28]
Internet-Draft Lightweght HIP February 2007
performed during the LHIP base exchange in the general case.
Therefore, all HIP specific packets and parameters except the RSA and
HMAC signatures in the I2 and R2 packet are present in the LHIP base
exchange. LHIP preserves the semantics and the functionality of HIP
parameters that excluded from this document. However, LHIP extends
the functionality of the TRANSFORM parameter and uses the new LFLAGS
parameters during the BEX.
4.9.1. LHIP Transform Suites
LHIP negotiates the type of association (LHIP or HIP) during the BEX
to allow interoperability of hybrid hosts and LHIP-unaware HIP hosts.
It uses the HIP_TRANSFORM parameter to determine whether LHIP or HIP
must be used.
LHIP defines one additional transform suite and suite-ID in addition
to the transform suites defined in [I-D.ietf-hip-base]:
+-----------------+-------+
| Suite-ID | Value |
+-----------------+-------+
| LHIP with SHA-1 | 7 |
+-----------------+-------+
LHIP uses SHA-1 hash chains and SHA-1 HMACs when transform suite 7 is
selected. Other transform suites have not been defined for LHIP yet
but may be defined in the future.
The RESPONDER indicates that it supports LHIP by including an LHIP
transform suite in the HIP_TRANSFORM parameter, carried by the R1
packet . The ordering of the transform suites indicates the
RESPONDER's preferences.
The INITIATOR selects two transform suites from the given set
transform suites in the HIP_TRANSFORM parameter in the R1 and sends
them back to the RESPONDER. LHIP MUST used when the INITIATOR
selects an LHIP transform suite as preferred (first) entry. The
INITIATOR also selects a second HIP transform suite other than an
LHIP transform suite in order to specify the HIP transform suite that
will be used after the upgrade from LHIP to HIP. The INITIATOR sends
back both selections in a HIP transform parameter in the I2 packet.
The RESPONDER buffers the second HIP transform suite for later use
during the upgrade process.
4.9.2. Hash Chain Anchors
The hosts must exchange their sets of hash chain anchors during the
base exchange in order to sign HIP control messages with the IHC-
Heer Expires August 5, 2007 [Page 29]
Internet-Draft Lightweght HIP February 2007
based approach and to use predefined signals later. These anchors
are added to the I2 packets and the R2 packets. This enables the
RESPONDER to stay stateless until it receives the I2 packet without
the need to buffer the INITIATOR's hash chain anchors. Moreover, the
RESPONDER can use the echo-request/response mechanism to verify the
routability of the INITIATOR's locator before creating the hash
chains. LHIP exchanges the the anchors of the SIGNATURE_CHAIN,
TRIGGER_CHAIN, CLOSE_CHAIN, and the UPGRADE_CHAIN during the BEX.
The corresponding HCA parameters MUST be present in the I2 and R2
packet.
4.9.3. Diffie-Hellman Parameters
LHIP does not use the Diffie-Hellman key exchange during the BEX in
order to reduce the computational complexity of the HIP base
exchange. Nevertheless, it is necessary to exchange the DH
parameters in order to allow an upgrade from LHIP to HIP at a later
point in time. Therefore, both hosts exchange their DH parameters as
specified in the HIP base protocol. Each host buffers the DH
parameters of its peer until these are used during the LHIP upgrade
process.
4.9.4. ECHO_REQUEST parameter
LHIP hosts MUST include an ECHO REQUEST in the R1 packet if they act
as RESPONDER and in the I2 packet if they act as INITIATOR. The
hosts must ensure that the ECHO_REQUESTS are unique for every
association. This uniqueness serves as replay protection for
authenticated LHIP associations. LHIP hosts MUST reply with an
ECHO_REQUEST_SIGNED parameter to ECHO_RESPONSE parameters.
4.9.5. RSA and DSA Signatures
RSA and DSA signatures are not obligatory for the I2 and R2 packet
during the LHIP base exchange. Only the R1 packet is REQUIRED to be
signed for compatibility reasons. However, some scenarios make the
selective use of these PK-signatures in the I2 and R2 packet
necessary. LHIP does not provide host authentication but, in case of
a name collisions (two different hosts use the same HI to contact a
RESPONDER), it is necessary to verify the identity of a host.
Especially when LHIP and HIP are used in combination, protection of
the HIP namespace is vital. We distinguish two different kinds of
attacks on unprotected HIs:
HI blocking attack: An attacker uses the HI of a victim host to
establish a connection to a RESPONDER in order to create an
incorrect binding between HI and an IP on the RESPONDER before or
after the victim contacts the RESPONDER. This leads to a
Heer Expires August 5, 2007 [Page 30]
Internet-Draft Lightweght HIP February 2007
situation in which the RESPONDER can not differentiate the
attacker from the victim if none of them authenticates by using
its private key.
HI stealing attack: An attacker uses an HI of a potential RESPONDER
of the victim to establish an LHIP association with the victim
before the victim contacts the RESPONDER. If the victim tries to
send data to the RESPONDER later, it will use the already
established LHIP association with the attacker and consequently
send all traffic to the attacker.
Using RSA or DSA to verify the HIs of the hosts during the BEX solves
both problems but increases the computational complexity of LHIP.
Therefore, LHIP only uses RSA or DSA signatures in case of name
collisions and potential HI stealing attacks. A RESPONDER MUST
request PK-authentication from an INITIATOR if it has already
maintains an open LHIP association with the HI of the INITIATOR.
This authentication serves as protection against the HI blocking
attack. Hosts which typically act as servers SHOULD authenticate all
outgoing LHIP associations. Hosts, which typically act as client,
SHOULD authenticate all incoming LHIP associations. A host MUST
either authenticate all incoming or outgoing associations. This
authentication scheme makes the HI stealing attack impossible.
4.9.6. Authenticated Hash Chain Anchors
Using RSA and DSA signatures to verify the HI of a peer also ties the
hash chain anchors to the HI because they are contained in the signed
part of the I2 and R2 packet. In this case, the LHIP association and
all following updates and modifications can be related to the
identity of a host.
Hosts can define their own policies when to verify the identity of a
peer and when they are willing to authenticate to the peer. For
instance, servers that only offer insensitive content can deny to
authenticate to clients in order to save CPU-resources. These
requirements and this willingness is expressed in the LFLAGS
parameter. This parameter is attached to the R1 packet and to the I2
packet. It provides three flags: LFLAG_AUTH_REQUIRED,
LFLAG_OFFER_AUTH, and LFLAG_OFFER_UPGRADE.
Setting LFLAG_AUTH_REQUIRED flag signals that the peer MUST
authenticate in order to continue the BEX. A host, which receives an
LFLAGS parameter with the LFLAG_AUTH_REQUIRED flag, MUST either sign
its next BEX packet (I2 or R2 depending on whether the host acts as
INITIATOR or RESPONDER) with its private key or abort the BEX.
The LFLAG_OFFER_AUTH flag signals that a host is willing to
Heer Expires August 5, 2007 [Page 31]
Internet-Draft Lightweght HIP February 2007
authenticate when its peer requires authentication. Denying
authentication is useful for servers which are vulnerable to DoS
attacks and do not provide sensible data or services.
The LFLAG_OFFER_UPGRADE indicates that a host will accept requests to
upgrade from LHIP to HIP. Setting this flag indicates implicitly the
willingness to use PK-signatures during the upgrade process.
Authenticated LHIP BEX packets MUST contain the ECHO_RESPONSE
parameter in the signed part of the packet. LHIP hosts MUST ensure
that an ECHO_RESPONSE parameter is only used once to avoid replay
attacks. Consecutive authenticated I2 and R2 packets with the same
ECHO_RESPONSE parameter contents MUST be discarded
4.9.7. Encrypted Host Identifiers
LHIP does not support encrypted HIs in the I2 packet as no symmetric
key is available to encrypt these.
4.9.8. Puzzle Mechanism
LHIP does not change the semantics or the functionality of the HIP
puzzle mechanism. LHIP RESPONDERS can use puzzles to generate CPU-
load on the INITIATOR. However, it is RECOMMENDED to use low puzzle
difficulties (e.g. 0) in order to keep the computational cost of LHIP
low.
4.9.9. Basic LHIP Base Exchange Overview
The LHIP BEX is depicted below. The anchors comprise all LHIP
anchors. The anchors of the INITIATOR are marked with an index i and
the anchors of the RESPONDER with an index r, accordingly.
Heer Expires August 5, 2007 [Page 32]
Internet-Draft Lightweght HIP February 2007
The basic LHIP BEX:
INITIATOR RESPONDER
Pre-calculate R1
I1: I1 contents
-------------------------->
Add LFLAGS to pre-
calculated R1:
set LFLAG_AUTH_REQUIRED
in case of collisions
R1: R1 contents, LFLAGS
<----------------------------
[Verify signature]
select LHIP transform suite,
select HIP transform suite,
[add signature to I2]
I2: I2 contents, anchors_i, [SIG], LFLAGS
---------------------------->
[Verify signature],
store anchors,
[add signature to R2]
R2: R2 contents, anchors_r, [SIG]
<----------------------------
[Verify signature],
store anchors.
The contents of the HIP BEX packets are summarized as I1, R1, I2, and
R2 contents. In contrast to the basic HIP BEX, the I2 and R2
contents do not necessarily contain RSA, DSA, or HMAC signatures.
Figure 6
4.9.10. Use of IPsec and Other Payload Transfer Protocols
When using IPsec [RFC2401] to transfer payload, the LHIP
communication peers must use the IPsec ESP BEET mode
[I-D.nikander-esp-beet-mode] with NULL encryption and with a key of
zeroes for authentication. The authentication algorithm must be set
according to the selected LHIP transform suite ID (cf.
Section 4.9.1). Note that using IPsec in this way neither ensures
integrity nor confidentiality for LHIP payload. Currently, the only
Heer Expires August 5, 2007 [Page 33]
Internet-Draft Lightweght HIP February 2007
supported transfer protocol for LHIP is IPsec. Specifying the use of
other ways for transferring payload, such as using plain IP or UDP
tunneling is future work.
4.9.11. Concluding the LHIP Base Exchange
In the end of the LHIP base exchange, both hosts have agreed to use
LHIP. Both hosts have also exchanged their hash chain anchors. The
hosts have an unencrypted ESP BEET tunnel between them. HIP control
messages are protected by IHC-based signatures.
4.10. Chained Bootstrapping
The LHIP base exchange is vulnerable to active attackers which are
able to eavesdrop the R1 packets and can send forged I2 packets with
spoofed locator information. One way to circumvent this attack is to
use a mechanism similar to chained bootstrapping as proposed in the
WIMP protocol[I-D.ylitalo-multi6-wimp]. Chained bootstrapping is
OPTIONAL for LHIP because it raises the computational cost for the
RESPONDER slightly. LHIP compliant hosts MAY implement and support
chained bootstrapping but are not obliged to do so.
4.10.1. Chained Bootstrapping for the INITIATOR
When using chained bootstrapping, the INITIATOR must compute its hash
chains before sending the I1 packet. It includes the pre-signature
of the I2 packet (including the anchors) in the I1 packet. This pre-
signature is created with a pseudo-random value r_1 as key. All
fields of the I2 packet which depend on the R1 packet of the
RESPONDER (the R1_COUNTER, the puzzle SOLUTION, the HIP_TRANSFORM,
the [encrypted] HOST_ID and the ECHO_RESPONSE) are excluded from the
signature. These parameters are not zeroed in the signature but
completely left out. It is important to include the anchors of the
hash chains in the pre-signature of the I1 packet to avoid that these
are forged by a third party when transmitted in cleartext in the I2
packet.
The RESPONDER can stay stateless when it includes the pre-signature
from the INITIATOR in the ECHO_REQUEST parameter of the R1 packet.
It MUST encrypt the pre-signature or apply other integrity protection
measures to the ECHO_REQUEST in order to avoid security compromise.
4.10.2. Chained Bootstrapping for the RESPONDER
Chained bootstrapping is also applicable to the R1 and the R2 packet.
The RESPONDER must generate its hash chains before sending the R1
packet. It generates an HMAC signature from the concatenation of the
R1 packet and the anchors of the hash chains and encodes it as PS
Heer Expires August 5, 2007 [Page 34]
Internet-Draft Lightweght HIP February 2007
parameter. It uses a pseudo-random value r_2 as key for the HMAC.
It attaches the PS parameter to the R1 packet. The RESPONDER must
store the anchors and the r2_value until the I2 message arrives.
Alternatively, it can use the ECHO_REQUEST parameter to send r_2 and
the seeds of the hash chains to the INITIATOR in an encrypted
envelope, keeping the key to the envelope disclosed. The INITIATOR
must send back the encrypted envelope from which the RESPONDER can
decrypt the seeds and the r_2 value. It can generate the very same
hash chains and hash chain anchors from the seeds. The details of
managing the anchors and the state like the choice of the encryption
algorithm are implementation details which only concern the
RESPONDER. Therefore, these details are not specified in this
document.
The INITIATOR can check the integrity of the R1 packet and the hash
chain anchors in the R2 packet after it has received the R2 packet
which contains the r_2 value. This means that the INITIATOR MUST
react to the unverified R1 packet in order to continue the BEX.
However, it MAY verify the RSA or DSA signature in the R1 packet.
Chaining the R1 and R2 packet ensures that both messages have been
sent by the same host and that neither the anchor values nor the
contents of the R1 packet have been modified. However, it is
possible that an MitM attacker modifies both messages and forges R1
and R2 packets with different contents and anchor values.
It is important to include the anchors in the pre-signature in the R1
packet to avoid that these are manipulated while the R2 packet is in
transit. This ensures that the anchors are related to the R1 packet.
Therefore, this avoids attacks after the INITIATOR has received the
R1 packet.
Heer Expires August 5, 2007 [Page 35]
Internet-Draft Lightweght HIP February 2007
The chained LHIP BEX with chaining on the INITIATOR's and RESPONDER's
side:
INITIATOR RESPONDER
Generate anchors,
PS=HMAC-F(I2, r_1),
I1: I1 contents, PS_1
-------------------------->
Generate anchors from seeds
PS_2=HMAC(R1|anchors_r, r_2),
ECHO=ENC(secret, PS_1|r_2|seeds)
R1: R1 contents, ECHO, PS_2
<--------------------------
Buffer PS_2
I2: I2 contents, anchors_i, r_1
-------------------------->
PS_1=?HMAC(I2|anchors_i, r_1),
seeds, r_2=DEC(secret, ECHO),
Generate anchors from seeds
R2: R2 contents, anchors_r, r_2
<--------------------------
PS_2=?HMAC(R1|anchors, r_2)
The contents of the HIP BEX packets are summarized in the I1, R1, I2,
and R2 content. Only parameters which are related to chained
bootstrapping are depicted. Further LHIP specific parameters are
depicted in Figure 6.
Figure 7
It is not necessary to explicitly announce that a host uses chained
bootstrapping as its peer can validate this from the presence of the
PS parameter in the I1 or R1 packet.
Heer Expires August 5, 2007 [Page 36]
Internet-Draft Lightweght HIP February 2007
4.11. Hash Chain Extension
Hash chains are finite. Therefore, it is necessary to replace
depleted hash chains with new ones to allow an infinite number of
signature processes. In order to accomplish this, a host must send
new anchors to the peer. The host MUST sign the packets that contain
anchors with IHC-based signatures. Therefore, the host can either
submit the anchors in a dedicated UPDATE packet or piggy-backed on
other signed HIP control packets. For example, UPDATE packets can be
used for piggy-backing. An LHIP host MUST check the contents of each
IHC-signed message and buffer new anchors when present.
A host MAY use the new replacement hash chains as soon as the
acknowledgment for the IHC-signed message, carrying the new anchors,
is received. It MAY also continue to use the old hash chains.
However, it MUST activate the new hash chains before the old hash
chains deplete. LHIP uses an implicit mechanism for activating the
new hash chains after they have been delivered to the peer. A host
activates the new hash chain by using an element of the new hash
chain in the HCE parameter of S1 packet or in the A1 packet. The
receiver of an S1 or A1 packet verifies whether the contained HCE
belongs to the old or the new hash chain. A host MUST remove the old
hash chain and MUST start to use the new hash chain after the it has
sent the first HCE parameter containing an element of the new hash.
A host, which receives a message with an HCE belonging to a new
anchor, MUST NOT accept HCE parameters which belong to old anchors or
hash chain elements.
4.12. LHIP Interaction with Middle-boxes
HIP UPDATE messages are not only processed by the communicating peers
but also by middle-boxes on the communication path. These middle-
boxes learn about new locators and SPI values by inspecting the
UPDATE messages. The IHC-based signatures can be authenticated by
middle-boxes. Therefore, in contrast to HIP, UPDATE packets do not
need to contain RSA or DSA signatures.
Like LHIP VERIFIERS, Middle-boxes must buffer the PS parameter in the
S1 packet of the IHC signature until the S2 packet with the
corresponding hash chain element and the message arrives. In order
to allow IHC-based signatures, the middle-box must let S1 and A1
packets pass through without verification and without restriction of
the source IP addresses contained in them. However, the middle box
SHOULD rate-limit the number of S1 and A1 packets that are sent to
the same IP address to avoid DoS attacks on hosts behind a middle-
box. It SHOULD also verify that the HCE parameter in these packets
are either valid or old. Packets containing invalid HCEs SHOULD NOT
be forwarded. It SHOULD also check that these packets contain no
Heer Expires August 5, 2007 [Page 37]
Internet-Draft Lightweght HIP February 2007
payload besides the HSE, the PS, the PACK, and the PNACK parameters
and SHOULD drop packets which contain further parameters to prevent
attacks with large parameter contents.
4.13. Closing an LHIP Association
Like HIP associations, LHIP associations are torn down when they are
not used any more. It is necessary to protect this closing process
to avoid attacks. However, it is not necessary for LHIP to protect
the CLOSE messages with IHC-based signatures as they only carry one
vital bit of information which requires protection: whether to close
the association. Therefore, it it sufficient to use a predefined
signal to securely announce the closing of an LHIP association. Both
hosts send HIP CLOSE or CLOSE_ACK messages without RSA, DSA and HMAC
signatures and attach a HCE parameter containing the second element
of the CLOSE_CHAIN. The peer MUST verify the CLOSE and CLOSE_ACK
message by comparing the hashed contents of the HCE parameter with
the anchor of the peer's CLOSE_CHAIN which was exchanged during the
LHIP BEX. The hosts proceed with the standard HIP closing procedure
if the HCE parameter is valid. CLOSE messages with old or invalid
HCE parameters MUST be discarded without further processing.
4.14. Upgrading an LHIP Association
A host can initiate an upgrade from an LHIP to a HIP association when
the security properties of a full HIP association are required. This
is the case when a process establishes an LHIP association and the
same or another process requests a HIP association with the same HIs
as endpoints later. LHIP associations are upgradable when both hosts
have indicated that they support upgrades in the LFLAGS parameter.
The upgrade process is a two-way message exchange. LHIP uses HIP
UPDATE messages to carry the upgrade information. In order to
achieve security properties of full HIP, LHIP uses RSA or DSA
signatures and the DH key exchange during the upgrade. The term
INITIATOR is used for the initiator of an upgrade and the term
RESPONDER for the host which reacts to the upgrade request.
4.14.1. The First Upgrade Packet
Before initiating an upgrade, the INITIATOR calculates the DH shared
secret from the DH keys exchanged during the BEX. It generates the
symmetric keys and the keys for the HMAC creation from this shared
secret. The key creation process follows the rules defined for the
key creation during the HIP BEX. The INITIATOR sets up new IPsec SPs
which use the algorithms selected in the second HIP transform. It
also sets up a new outgoing IPsec security association with the
symmetric keys.
Heer Expires August 5, 2007 [Page 38]
Internet-Draft Lightweght HIP February 2007
The INITIATOR sends the first message U1 of the upgrade process. It
is an UPDATE message which contains the SPI value of the new IPsec SA
encoded as ESP_INFO parameter (cf. [I-D.ietf-hip-esp]), HI, and an
HMAC to protect the SPI values. The freshly created symmetric keys
are used as key for the HMAC computation. The INITIATOR also adds an
RSA or DSA signature, generated with the private key if it has not
authenticated during the BEX. In this case, it MUST include the
ECHO_RESPONSE parameter in the U1 packet as replay protection. A
host which supports LHIP upgrades MUST ensure that the ECHO_REQUEST
in the R1 packet is unique for every LHIP association and that the
ECHO_RESPONSE in the first upgrade packet has not been used in order
to upgrade an LHIP association between the same HIs before.
The UPGRADE message triggers the DH shared key computation at the
RESPONDER. This operation is CPU-intensive and can be used in an
attack to provoke the DH calculations with a forged message.
Therefore, the upgrade process must be protected with signatures. As
for the CLOSE packets, using predefined signals is sufficient as all
other vital information in the packet is protected by the HMAC.
Therefore, both hosts include an HCE parameter containing the next
element of the UPGRADE_CHAIN in their upgrade message. The structure
of the U1 packet is depicted below.
IP ( HIP-UPDATE (
ESP_INFO,
ECHO_RESPONSE_SIGNED,
HMAC,
HIP_SIGNATURE,
HCE))
The host responding to U1 packet verifies that the HCE parameter
belongs to the peer's UPGRADE_CHAIN and that it is valid. This
comparison is inexpensive and proves that the legitimate peer
initiated the upgrade process. The host calculates the DH shared
secret if the hash chain verification is successful. The RESPONDER
generates the symmetric keys and the key for the HMAC signatures from
the shared secrets. The RESPONDER can verify the HMAC signature in
the UPGRADE message by using the freshly calculated keys. The
RESPONDER modifies the IPsec SPs in order to use the encryption
algorithms selected in the second HIP transform. It then sets up the
outgoing and incoming IPsec SAs corresponding to the remote peer's
SPI and the symmetric keys.
It is necessary to include the HIs of the peers in the UPGRADE
messages to support HIP-aware middle-boxes. The HIs in the packets
enable these middle-boxes to learn the public keys of the hosts, in
case the middle-box has not observed the BEX. This is the case when
either of the hosts has moved behind a new middle-box during the LHIP
Heer Expires August 5, 2007 [Page 39]
Internet-Draft Lightweght HIP February 2007
association.
4.14.2. The Second Upgrade Packet
The RESPONDER sends back an HMAC-protected UPDATE message which
contains its SPI value for the incoming IPsec SA encoded as ESP_INFO
parameter, the next element of its UPGRADE_CHAIN encoded as HCE
parameter, and its HI. The RESPONDER MUST prove its identity by
using its RSA or DSA private key, if it has not already done so
during the LHIP BEX. It MUST also include the ECHO_RESPONSE from the
LHIP BEX to avoid replay attacks. The INITIATOR can use the HMAC to
verify the UPDATE message. It sets up its outgoing SA with the SPI
given by the remote peer. At this point, both peers have upgraded to
HIP and established an encrypted BEET tunnel. They do not use the
LHIP authentication functions any more. The structure of the U2
packet is identical to the structure f the U1 packet.
4.14.3. Concurrent Upgrade Initialization
The first and the second upgrade packet are symmetrical. This avoids
problems with concurrent upgrades. A host which has sent the first
upgrade packet can use a simultaneously sent first upgrade packet as
second upgrade packet and complete the upgrade process successfully.
4.14.4. HIP Downgrade
A downgrade from HIP to LHIP is not desirable because both hosts are
already in possession of the shared secret which enables efficient
message authentication and symmetric encryption.
4.14.5. Upgrade DoS Attack
The upgrade process can be used as a tool to DoS attack a victim host
that uses LHIP. An attacker can open numerous LHIP associations to
the victim with low computational cost and upgrade all of these
connections at the same time. This would require the victim to
compute numerous Diffie-Hellman key exchanges which results in high
CPU utilization. Currently, there is no defense to this attack as
the puzzle mechanism is not applicable to the two-way upgrade
process. Therefore, hosts SHOULD limit the number of upgrades in a
certain time interval. Alternatively, hosts can refuse to upgrade
associations by not setting the LFLAG_OFFER_UPGRADE flag in the LFLAG
parameter.
4.14.6. Sequence Numbers
HIP uses sequence numbers to protect HIP UPDATE packets. LHIP allows
HIP extensions to send unprotected UPDATE packets when the contents
Heer Expires August 5, 2007 [Page 40]
Internet-Draft Lightweght HIP February 2007
of the UPDATE packet does not require authentication. Therefore,
attackers can modify the sequence numbers in these unprotected
packets. The IHC-based signature scheme of LHIP ensures the correct
sequence of protected HIP UPDATE packets. Therefore, LHIP hosts MUST
ignore the sequence numbers of HIP control packets. As sequence
numbers are vital for HIP to operate correctly, LHIP associations
which have been upgraded to HIP associations must obey the sequence
numbers. The sequence number counter of an upgraded LHIP association
must be set to the sequence number contained in the U1 or U2 packet,
respectively.
4.15. State Loss
A host can lose all information about an established LHIP association
due to events like hardware errors, software errors, or an operating
system reboot. In this case, the peers of the host still use the
context information of the broken LHIP association. Recovery from
state loss requires host authentication to avoid replay attacks.
A host that has lost its state reinitiates an LHIP association by
sending an I1 packet. As the RESPONDER has already associated state
with the other host's HI, the RESPONDER MUST require the INITIATOR to
authenticate by using its private key. The RESPONDER deletes the
existing state if the authentication is successful. It MUST silently
drop the I2 packet otherwise.
5. Security Considerations
LHIP aims at providing HIP mobility and multihoming support for
devices with few CPU resources. As discussed in Section 2, LHIP
provides no support for end-host authentication nor does it encrypt
payload from upper protocol layers. Therefore, it SHOULD only be
used when these properties are either provided by higher-layer
protocols or are not required at all.
LHIP uses the same host identifier namespace as HIP without
necessarily authenticating the HIs. As discussed in Section 4.9.5
attacks are possible if host authentication is omitted completely.
Therefore, it is important that all LHIP hosts implement the proposed
defense mechanisms against the HI stealing and HI blocking attack in
order to protect LHIP and, importantly, HIP hosts.
The question how to avoid DoS attacks caused by parallel LHIP
upgrades, as discussed in Section 4.14.5, is not solved completely.
Hosts which are prospective targets for such attacks SHOULD limit the
number of concurrent upgrades or categorically deny LHIP upgrades.
The option of tearing down an LHIP association and re-establishing a
Heer Expires August 5, 2007 [Page 41]
Internet-Draft Lightweght HIP February 2007
new HIP association remains as alternative way to switch from LHIP to
HIP. In that case, all security features of HIP, including the
puzzle mechanism, can be used to protect the RESPONDER.
In opposition to HIP, LHIP does not provide protection against MitM
attacks during the BEX if the hosts do not use authenticated hash
chains. Unauthenticated LHIP is vulnerable to MiTM attacks.
Impersonation attacks can only be detected and resulting conflicts
can only be resolved if two hosts use the same HI to establish an
association with a RESPONDER. It is out of scope for LHIP to protect
against these attacks as LHIP does not enforce host authentication.
Note that LHIP does not replace HIP in any way. LHIP is an extension
to HIP and requires a full HIP implementation including all security
and protocol features provided by the basic HIP protocol.
6. IANA Considerations
This document defines three new HIP packet types in Section 4.5 the
type numbers (22, 23, 24) for these packet types are preliminary and
need to be assigned through IETF consensus.
LHIP also defines several new parameter types in Section 4.4. The
preliminary parameter type numbers are 222, 64702, 64704, 64725,
64727, 64729, 64731, and 63404.
LHIP defines a new HIP transform suite ID (7). This suite ID is
preliminary and needs to be assigned in consensus with the IETF.
LHIP creates a new namespace for hash chains type identifiers. New
identifiers for further hash chain types which are either used in the
IHC-based signature process or for predefined signals are assigned
through IETF consensus.
Other HIP extensions may use the LFLAGS parameter to transmit LHIP
related flags as well. The position for these flags in the bit-mask
are assigned through IETF consensus.
7. Acknowledgments
Miika Komu, Stefan Goetz, Jukka Ylitalo, Pekka Nikander, Sasu
Tarkoma, Janne Lindqvist, Olaf Landsiedel, and Klaus Wehrle have
contributed valuable ideas and important feedback concerning LHIP and
the IHC-based signature process.
Heer Expires August 5, 2007 [Page 42]
Internet-Draft Lightweght HIP February 2007
8. References
8.1. Normative References
[I-D.ietf-hip-base]
Moskowitz, R., "Host Identity Protocol",
draft-ietf-hip-base-07 (work in progress), February 2007.
[I-D.ietf-hip-esp]
Jokela, P., "Using ESP transport format with HIP",
draft-ietf-hip-esp-05 (work in progress), February 2007.
[I-D.ietf-hip-mm]
Nikander, P., "End-Host Mobility and Multihoming with the
Host Identity Protocol", draft-ietf-hip-mm-04 (work in
progress), June 2006.
[I-D.komu-btns-api]
Komu, M., "IPsec Application Programming Interfaces",
draft-komu-btns-api-00 (work in progress), October 2006.
[I-D.mkomu-hip-native-api]
Komu, M., "Native Application Programming Interfaces for
the Host Identity Protocol", draft-mkomu-hip-native-api-00
(work in progress), March 2005.
[I-D.nikander-esp-beet-mode]
Melen, J. and P. Nikander, "A Bound End-to-End Tunnel
(BEET) mode for ESP", draft-nikander-esp-beet-mode-06
(work in progress), August 2006.
[I-D.ylitalo-multi6-wimp]
Ylitalo, J., "Weak Identifier Multihoming Protocol
(WIMP)", draft-ylitalo-multi6-wimp-01 (work in progress),
July 2004.
[RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-
Hashing for Message Authentication", RFC 2104,
February 1997.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2401] Kent, S. and R. Atkinson, "Security Architecture for the
Internet Protocol", RFC 2401, November 1998.
[RFC2536] Eastlake, D., "DSA KEYs and SIGs in the Domain Name System
(DNS)", RFC 2536, March 1999.
Heer Expires August 5, 2007 [Page 43]
Internet-Draft Lightweght HIP February 2007
[RFC3110] Eastlake, D., "RSA/SHA-1 SIGs and RSA KEYs in the Domain
Name System (DNS)", RFC 3110, May 2001.
[RFC3174] Eastlake, D. and P. Jones, "US Secure Hash Algorithm 1
(SHA1)", RFC 3174, September 2001.
[RFC4082] Perrig, A., Song, D., Canetti, R., Tygar, J., and B.
Briscoe, "Timed Efficient Stream Loss-Tolerant
Authentication (TESLA): Multicast Source Authentication
Transform Introduction", RFC 4082, June 2005.
8.2. Informative References
[DH71] Diffie, W. and M. Hellman, "New Directions in
Cryptography", IEEE Transactions on Information Theory vol.
IT-22, number 6, pages 644-654, 1976.
[Lam81] Lamport, L., "Password authentication with insecure
communication", Commun. of ACM 24 (11), pp. 770-772,
1981.
Author's Address
Tobias Heer
RWTH Aachen University, Distributed Systems Group
Ahornstrasse 55
Aachen 52062
Germany
Phone: +49 241 80 214 32
Email: tobias.heer@cs.rwth-aachen.de
URI: http://ds.cs.rwth-aachen.de/members/heer
Heer Expires August 5, 2007 [Page 44]
Internet-Draft Lightweght HIP February 2007
Full Copyright Statement
Copyright (C) The IETF Trust (2007).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Acknowledgment
Funding for the RFC Editor function is provided by the IETF
Administrative Support Activity (IASA).
Heer Expires August 5, 2007 [Page 45]
| PAFTECH AB 2003-2026 | 2026-04-23 09:37:05 |