draft-ietf-hip-hiccups-02.txt   draft-ietf-hip-hiccups-03.txt 
HIP Working Group G. Camarillo HIP Working Group G. Camarillo
Internet-Draft J. Melen Internet-Draft J. Melen
Intended status: Experimental Ericsson Intended status: Experimental Ericsson
Expires: September 5, 2010 March 4, 2010 Expires: January 8, 2011 July 7, 2010
HIP (Host Identity Protocol) Immediate Carriage and Conveyance of Upper- HIP (Host Identity Protocol) Immediate Carriage and Conveyance of Upper-
layer Protocol Signaling (HICCUPS) layer Protocol Signaling (HICCUPS)
draft-ietf-hip-hiccups-02 draft-ietf-hip-hiccups-03
Abstract Abstract
This document defines a new HIP (Host Identity Protocol) packet type This document defines a new HIP (Host Identity Protocol) packet type
called DATA. HIP DATA packets are used to securely and reliably called DATA. HIP DATA packets are used to reliably convey
convey arbitrary protocol messages over the Internet and various authenticated arbitrary protocol messages over various overlay
overlay networks. networks.
Status of this Memo Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet- other groups may also distribute working documents as Internet-
Drafts. Drafts.
skipping to change at page 1, line 40 skipping to change at page 1, line 40
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on September 5, 2010. This Internet-Draft will expire on January 8, 2011.
Copyright Notice Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the Copyright (c) 2010 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the BSD License. described in the BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Background on HIP . . . . . . . . . . . . . . . . . . . . . . 3 3. Background on HIP . . . . . . . . . . . . . . . . . . . . . . 4
3.1. Message formats . . . . . . . . . . . . . . . . . . . . . 4 3.1. Message formats . . . . . . . . . . . . . . . . . . . . . 4
3.1.1. HIP fixed header . . . . . . . . . . . . . . . . . . . 4 3.1.1. HIP fixed header . . . . . . . . . . . . . . . . . . . 4
3.1.2. HIP parameter format . . . . . . . . . . . . . . . . . 5 3.1.2. HIP parameter format . . . . . . . . . . . . . . . . . 5
3.2. HIP Base Exchange, Updates, and State Removal . . . . . . 5 3.2. HIP Base Exchange, Updates, and State Removal . . . . . . 5
4. Definition of the HIP DATA Packet . . . . . . . . . . . . . . 6 4. Definition of the HIP DATA Packet . . . . . . . . . . . . . . 6
4.1. Definition of the SEQ_DATA Parameter . . . . . . . . . . . 7 4.1. Definition of the SEQ_DATA Parameter . . . . . . . . . . . 7
4.2. Definition of the ACK_DATA Parameter . . . . . . . . . . . 7 4.2. Definition of the ACK_DATA Parameter . . . . . . . . . . . 8
4.3. Definition of the PAYLOAD_MIC Parameter . . . . . . . . . 8 4.3. Definition of the PAYLOAD_MIC Parameter . . . . . . . . . 9
4.4. Definition of the TRANSACTION_ID Parameter . . . . . . . . 9 4.4. Definition of the TRANSACTION_ID Parameter . . . . . . . . 10
5. Generation and Reception of HIP DATA Packets . . . . . . . . . 9 5. Generation and Reception of HIP DATA Packets . . . . . . . . . 10
5.1. Handling of SEQ_DATA and ACK_DATA . . . . . . . . . . . . 9 5.1. Handling of SEQ_DATA and ACK_DATA . . . . . . . . . . . . 10
5.2. Generation of a HIP DATA packet . . . . . . . . . . . . . 10 5.2. Generation of a HIP DATA packet . . . . . . . . . . . . . 11
5.3. Reception of a HIP DATA packet . . . . . . . . . . . . . . 11 5.3. Reception of a HIP DATA packet . . . . . . . . . . . . . . 12
5.3.1. Handling of SEQ_DATA in a Received HIP DATA packet . . 12 5.3.1. Handling of SEQ_DATA in a Received HIP DATA packet . . 13
5.3.2. Handling of ACK_DATA in a Received HIP DATA packet . . 12 5.3.2. Handling of ACK_DATA in a Received HIP DATA packet . . 13
6. Use of the HIP DATA Packet . . . . . . . . . . . . . . . . . . 13 6. Use of the HIP DATA Packet . . . . . . . . . . . . . . . . . . 14
7. Security considerations . . . . . . . . . . . . . . . . . . . 14 7. Security considerations . . . . . . . . . . . . . . . . . . . 15
8. IANA considerations . . . . . . . . . . . . . . . . . . . . . 14 8. IANA considerations . . . . . . . . . . . . . . . . . . . . . 16
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 14 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 14 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 16
10.1. Normative References . . . . . . . . . . . . . . . . . . . 14 10.1. Normative References . . . . . . . . . . . . . . . . . . . 16
10.2. Informative references . . . . . . . . . . . . . . . . . . 15 10.2. Informative references . . . . . . . . . . . . . . . . . . 16
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 15 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 16
1. Introduction 1. Introduction
Two hosts can use HIP [RFC5201] to establish a Security Association Two hosts can use HIP [RFC5201] to establish a Security Association
(SA) between them in order to exchange arbitrary protocol messages (SA) between them in order to exchange arbitrary protocol messages
over that security association. The establishment of such a security over that security association. The establishment of such a security
association involves a four-way handshake referred to as the HIP base association involves a four-way handshake referred to as the HIP base
exchange. When handling communications between the hosts, HIP exchange. When handling communications between the hosts, HIP
supports mobility, multihoming, security, and NAT traversal. Some supports mobility, multihoming, security, and NAT traversal. Some
applications require these features for their communications but applications require these features for their communications but
cannot accept the overhead involved in establishing a security cannot accept the overhead involved in establishing a security
association (i.e., the HIP base exchange) before those communications association (i.e., the HIP base exchange) before those communications
can start. can start.
In this document, we define the HIP DATA packet, which can be used to In this document, we define the HIP DATA packet, which can be used to
convey (in a secure and reliable way) protocol messages to a remote convey (in a authenticated and reliable way) protocol messages to a
host without running the HIP base exchange between them. HIP DATA remote host without running the HIP base exchange between them. The
packet has following semantics: unordered, duplicate free, reliable, HIP DATA packet has following semantics: unordered, duplicate free,
and authenticated message-based delivery service. We also discuss reliable, and authenticated message-based delivery service. We also
the trade offs involved in using this packet (i.e., less overhead but discuss the trade offs involved in using this packet (i.e., less
also less DoS protection) and the situations where it is appropriate overhead but also less DoS protection) and the situations where it is
to use this packet. The HIP_DATA packet is not aimed to be a appropriate to use this packet. The HIP_DATA packet is not intended
replacement for ESP transport instead it SHOULD only be used to to be a replacement for the Encapsulating Security Payload (ESP)
exchange few packets between the peers. If a continuous transport instead it SHOULD NOT be used to exchange more than a few
communication is required hosts SHOULD run the HIP base exchange to packets between the peers. If a continuous communication is required
set up ESP security association. Additionally APIs to higher-level or communication that requires confidentiality protection then hosts
protocols that might use this service are outside of the scope of MUST run the HIP base exchange to set up ESP security association.
this document. Additionally APIs to higher-level protocols that might use this
service are outside of the scope of this document.
2. Terminology 2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119]. document are to be interpreted as described in RFC 2119 [RFC2119].
In addition this document uses the terms defined in [RFC5201]. In addition this document uses the terms defined in [RFC5201].
Message Integrity Code (MIC) is a hash sum calculated over the Message Integrity Code (MIC) is a collision-resistant hash sum
message which is being integrity protected. MIC does not use calculated over the message which is being integrity protected.
secret keys and thus need be protected otherwise against The MIC does not use secret keys and thus it needs additional
tampering. Essentially MIC is same as MAC with the distinction means to ensure that it has not been tampered with during
that MIC does not use secret key. MIC is also often referred as transmission. Essentially MIC is same as Message Authentication
Integrity Check Value (ICV), fingerprint, or unkeyed MAC. Code (MAC) with the distinction that MIC does not use secret key.
MIC is also often referred as Integrity Check Value (ICV),
fingerprint, or unkeyed MAC.
3. Background on HIP 3. Background on HIP
The HIP protocol specification [RFC5201] defines a number of messages The HIP protocol specification [RFC5201] defines a number of messages
and parameters. The parameters are encoded as TLVs, as shown in and parameters. The parameters are encoded as TLVs, as shown in
Section 3.1.2. Furthermore, the HIP header carries a Next Header Section 3.1.2. Furthermore, the HIP header carries a Next Header
field, allowing other arbitrary packets to be carried within HIP field, allowing other arbitrary packets to be carried within HIP
packets. packets.
3.1. Message formats 3.1. Message formats
skipping to change at page 4, line 44 skipping to change at page 4, line 49
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
/ HIP Parameters / / HIP Parameters /
/ / / /
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The HIP header is logically an IPv6 extension header. The HIP The HIP header is logically an IPv6 extension header. The HIP
protocol specification [RFC5201] defines handling only for Next protocol specification [RFC5201] defines handling only for Next
Header value decimal 59, IPPROTO_NONE, the IPv6 'no next header' Header value decimal 59, IPPROTO_NONE [PROTOCOL-NUMBERS], the IPv6
value. This document describes processing for Next Header values 'no next header' value. This document describes processing for Next
other than decimal 59 which indicates that there is either more Header values other than decimal 59 which indicates that there are
extensions header or data following the HIP header. either more extensions header and/or data following the HIP header.
3.1.2. HIP parameter format 3.1.2. HIP parameter format
The HIP parameter format is defined in Section 5.2.1 of [RFC5201], The HIP parameter format is defined in Section 5.2.1 of [RFC5201],
and copied below. and copied below.
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type |C| Length | | Type |C| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
/ Contents / / Contents /
/ +-+-+-+-+-+-+-+-+ / +-+-+-+-+-+-+-+-+
| | Padding | | | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type Type code for the parameter Type Type code for the parameter. 16 bits long, C-bit
C Critical bit, part of the Type. being part of the Type code.
Length Length of the parameter, in bytes. C Critical. One if this parameter is critical, and
Contents Parameter specific, defined by Type. MUST be recognized by the recipient, zero otherwise.
Padding Padding, 0-7 bytes, added if needed. The C bit is considered to be a part of the Type
field. Consequently, critical parameters are always
odd and non-critical ones have an even value.
Length Length of the Contents, in octets.
Contents Parameter specific, defined by Type.
Padding Padding, 0-7 octets, added if needed.
3.2. HIP Base Exchange, Updates, and State Removal 3.2. HIP Base Exchange, Updates, and State Removal
The HIP base exchange is a four-message half-stateless authentication The HIP base exchange is a four-message authentication and key
and key exchange protocol that creates shared, mutually authenticated exchange protocol that creates shared, mutually authenticated keying
keying material at the communicating parties. These keying material at the communicating parties. These keying materials,
materials, together with associated public keys and IP addresses, together with associated public keys and IP addresses, form a HIP
form a HIP Security Association (SA). The details of the protocol Security Association (SA). The details of the protocol are defined
are defined in the HIP base exchange specification [RFC5201]. in the HIP base exchange specification [RFC5201].
In addition to creating the HIP SA, the base exchange messages may In addition to creating the HIP SA, the base exchange messages may
carry additional parameters that are used to create additional state. carry additional parameters that are used to create additional state.
For example, the HIP ESP specification [RFC5202] defines how HIP can For example, the HIP ESP specification [RFC5202] defines how HIP can
be used to create end-to-end, host-to-host IPsec ESP Security be used to create end-to-end, host-to-host IPsec ESP Security
Associations, used to carry data packets. However, it is important Associations, used to carry data packets. However, it is important
to understand that the HIP base exchange is by no means bound to to understand that the HIP base exchange is by no means bound to
IPsec; using IPsec ESP to carry data traffic forms just a baseline IPsec; using IPsec ESP to carry data traffic forms just a baseline
and ensures interoperability between initial HIP implementations. and ensures interoperability between initial HIP implementations.
skipping to change at page 6, line 13 skipping to change at page 6, line 18
specification also defines how one can remove a HIP SA once it is no specification also defines how one can remove a HIP SA once it is no
longer needed. longer needed.
4. Definition of the HIP DATA Packet 4. Definition of the HIP DATA Packet
The HIP DATA packet can be used to convey protocol messages to a The HIP DATA packet can be used to convey protocol messages to a
remote host without running the HIP base exchange between them. HIP remote host without running the HIP base exchange between them. HIP
DATA packets are transmitted reliably, as discussed in Section 5. DATA packets are transmitted reliably, as discussed in Section 5.
The payload of a HIP DATA packet is placed after the HIP header and The payload of a HIP DATA packet is placed after the HIP header and
protected by a PAYLOAD_MIC parameter, which is defined in protected by a PAYLOAD_MIC parameter, which is defined in
Section 4.3. The following is the definition of the HIP DATA packet: Section 4.3. The following is the definition of the HIP DATA packet
(see definition of notation in [RFC5201] section 2.2):
Header: Header:
Packet Type = [ TBD by IANA: 32 ] Packet Type = [ TBD by IANA: 32 ]
SRC HIT = Sender's HIT SRC HIT = Sender's HIT
DST HIT = Receiver's HIT DST HIT = Receiver's HIT
IP ( HIP ( [HOST_ID, ] SEQ_DATA, PAYLOAD_MIC, IP ( HIP ( [HOST_ID, ] SEQ_DATA, PAYLOAD_MIC, [ PAYLOAD_MIC, ..., ]
HIP_SIGNATURE) PAYLOAD ) HIP_SIGNATURE) PAYLOAD )
IP ( HIP ( [HOST_ID, ] SEQ_DATA, ACK_DATA, PAYLOAD_MIC, IP ( HIP ( [HOST_ID, ] SEQ_DATA, ACK_DATA, PAYLOAD_MIC,
HIP_SIGNATURE) PAYLOAD ) [ PAYLOAD_MIC, ..., ] HIP_SIGNATURE) PAYLOAD )
IP ( HIP ( [HOST_ID, ] ACK_DATA, HIP_SIGNATURE)) IP ( HIP ( [HOST_ID, ] ACK_DATA, HIP_SIGNATURE))
The SEQ_DATA and ACK_DATA parameters are defined in Section 4.1 and The SEQ_DATA and ACK_DATA parameters are defined in Section 4.1 and
Section 4.2 respectively. They are used to provide a reliable Section 4.2 respectively. They are used to provide a reliable
delivery of HIP DATA packets, as discussed in Section 5. delivery of HIP DATA packets, as discussed in Section 5.
The HOST_ID parameter is defined in Section 5.2.8 of [RFC5201]. This The HOST_ID parameter is defined in Section 5.2.8 of [RFC5201]. This
parameter is the sender's Host Identifier that is used to compute the parameter is the sender's Host Identifier that is used to compute the
HIP DATA packet's signature and to verify it against the received HIP DATA packet's signature and to verify it against the received
signature. signature. The HOST_ID parameter is optional as it MAY have been
delivered using out-of-band mechanism to the receiver. If host
doesn't have reliable information that the corresponding node has its
HOST_ID it MUST always include it in to the packet. If the receiver
is unable to verify the SIGNATURE then the packet MUST be dropped and
appropriate NOTIFY packet SHOULD be sent to the sender indicating
AUTHENTICATION_FAILED as described in [RFC5201] section 5.2.16.
The PAYLOAD_MIC parameter is defined in Section 4.3. This parameter The PAYLOAD_MIC parameter is defined in Section 4.3. This parameter
contains the MIC of the payload carried by the HIP DATA packet. The contains the MIC of the payload carried by the HIP DATA packet. The
PAYLOAD_MIC contains the checksum of the payload following after the PAYLOAD_MIC contains the collision-resistant hash of the payload
HIP DATA. The PAYLOAD_MIC is included in the signed part of the HIP following after the HIP DATA. The PAYLOAD_MIC is included in the
DATA packet giving integrity protection also for the payload carried signed part of the HIP DATA packet giving integrity protection also
after HIP DATA packet. for the payload carried after HIP DATA packet.
The HIP_SIGNATURE parameter is defined in Section 5.2.11. of The HIP_SIGNATURE parameter is defined in Section 5.2.11. of
[RFC5201]. It contains a signature over the contents of the HIP DATA [RFC5201]. It contains a signature over the contents of the HIP DATA
packet. The calculation and verification of the signature is defined packet. The calculation and verification of the signature is defined
Section 6.4.2. of [RFC5201] Section 6.4.2. of [RFC5201]
Section 5.3 of [RFC5201] states the following: Section 5.3 of [RFC5201] states the following:
In the future, an OPTIONAL upper-layer payload MAY follow the HIP In the future, an OPTIONAL upper-layer payload MAY follow the HIP
header. The Next Header field in the header indicates if there is header. The Next Header field in the header indicates if there is
additional data following the HIP header. additional data following the HIP header.
We have chosen to place the payload after the HIP extension header We have chosen to place the payload after the HIP extension header
and only to place an MIC of the payload in to the HIP extension and only to place an MIC of the payload in to the HIP extension
header in a PAYLOAD_MIC parameter because that way the data integrity header in a PAYLOAD_MIC parameter because that way the data integrity
is protected by a public key signature with help of MIC. The payload is protected by a public key signature with the help of MIC. The
that is protected by the PAYLOAD_MIC parameter has been linked to the payload that is protected by the PAYLOAD_MIC parameter has been
appropriate upper-layer protocol by storing the upper-layer protocol linked to the appropriate upper-layer protocol by storing the upper-
number, 8 bytes of payload data, and by calculating a hash sum (MIC) layer protocol number, 8 octets of payload data, and by calculating a
over the data. HIP DATA packet MAY contain one or more PAYLOAD_MIC hash sum (MIC) over the data. The HIP DATA packet MAY contain one or
parameter each bound to different next header type. Hash algorithm more PAYLOAD_MIC parameters each bound to different next header type.
used to generate MIC is same as the algorithm used to generate the The hash algorithm used to generate MIC is same as the algorithm used
Host Identity Tag [RFC5201]. to generate the Host Identity Tag [RFC5201].
Upper-layer protocol messages, such as overlay network control Upper-layer protocol messages, such as overlay network control
traffic, sent in HIP DATA messages may need to be matched to traffic, sent in HIP DATA messages may need to be matched to
different transactions. For this purpose, a DATA message MAY also different transactions. For this purpose, a DATA message MAY also
contain a TRANSACTION_ID parameter. The identifier value is a number contain a TRANSACTION_ID parameter. The identifier value is a 64-bit
that is unique for each transaction. A response to a request uses unsigned integer in network-byte-order that is unique for each
the same identifier value allowing receiver to match requests to transaction. A response to a request uses the same identifier value
responses. allowing the receiver to match requests to responses.
4.1. Definition of the SEQ_DATA Parameter 4.1. Definition of the SEQ_DATA Parameter
The following is the definition of the SEQ_DATA parameter: The following is the definition of the SEQ_DATA parameter:
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence number | | Sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type [ TBD by IANA: Type [ TBD by IANA:
4481 = (2^12 + 2^8 + 2^7 + 1) ] 4481 = (2^12 + 2^8 + 2^7 + 1) ]
Length 4 Length 4
Sequence number 32-bit sequence number Sequence number 32-bit unsigned integer in network byte order which
MUST NOT reused before it has been acknowledged by
the receiver.
This parameter has critical bit set and if it is not supported by the
receiver packet MUST be dropped and appropriate NOTIFY packet SHOULD
be sent to the sender indicating UNSUPPORTED_CRITICAL_PARAMETER_TYPE
as described in [RFC5201] section 5.2.16.
4.2. Definition of the ACK_DATA Parameter 4.2. Definition of the ACK_DATA Parameter
The following is the definition of the ACK_DATA parameter: The following is the definition of the ACK_DATA parameter:
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acked Sequence number | | Acked Sequence number /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type [ TBD by IANA: Type [ TBD by IANA:
4545 = (2^12 + 2^8 + 2^7 + 2^6 + 1) ] 4545 = (2^12 + 2^8 + 2^7 + 2^6 + 1) ]
Length variable (multiple of 4) Length variable (multiple of 4)
Acked Sequence number 32-bit sequence number corresponding to Acked Sequence number A sequence of 32-bit unsigned integers in
the sequence number being acknowledged network byte order corresponding to the
sequence numbers being acknowledged
This parameter has critical bit set and if it is not supported by the
receiver packet MUST be dropped and appropriate NOTIFY packet SHOULD
be sent to the sender indicating UNSUPPORTED_CRITICAL_PARAMETER_TYPE
as described in [RFC5201] section 5.2.16.
4.3. Definition of the PAYLOAD_MIC Parameter 4.3. Definition of the PAYLOAD_MIC Parameter
The following is the definition of the PAYLOAD_MIC parameter: The following is the definition of the PAYLOAD_MIC parameter:
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next header | Reserved | | Next header | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload Data | | Payload Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
/ Payload MIC / / MIC Value /
/ +-+-+-+-+-+-+-+-+ / +-+-+-+-+-+-+-+-+
| | Padding | | | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type [ TBD by IANA: Type [ TBD by IANA:
4577 = (2^12 + 2^8 + 2^7 + 2^6 + 2^5 + 1) ] 4577 = (2^12 + 2^8 + 2^7 + 2^6 + 2^5 + 1) ]
Length length in octets, excluding Type, Length, and Length length in octets, excluding Type, Length, and
Padding. Padding.
Next Header Identifies the data that protected by this MIC. Next Header Identifies the data that is protected by this MIC.
The values for are defined by IANA "Assigned The values for this field are defined by IANA
Numbers". "Protocol Numbers" [PROTOCOL-NUMBERS]
Payload Data 8 last bytes of the payload data over which the Payload Data 8 last octets of the payload data over which the
MIC is calculated. This field is used to MIC is calculated. This field is used to
uniquely bind PAYLOAD_MIC parameter to next header, uniquely bind PAYLOAD_MIC parameter to next header,
in case there are multiple copies of same type. in case there are multiple copies of same type.
Payload MIC MIC computed over the data to which the Next MIC Value MIC computed over the data to which the Next
Header and Payload Data points to. The size of Header and Payload Data points. The size of
the MIC is the natural size of the computation the MIC is the natural size of the computation
output depending on the used function. output depending on the function used.
This parameter has critical bit set and if it is not supported by the
receiver packet MUST be dropped and appropriate NOTIFY packet SHOULD
be sent to the sender indicating UNSUPPORTED_CRITICAL_PARAMETER_TYPE
as described in [RFC5201] section 5.2.16.
There is a theoretical possibility that when generating multiple
PAYLOAD_MIC parameters that will be carried in a single packet would
have identical Next Header and Payload Data fields thus it is
required that PAYLOAD_MIC parameters MUST follow the natural order of
extensions headers in the packet making it possible to bind
PAYLOD_MICs to correct payload data. In case the receiving host is
still unable to identify the payloads, it MUST drop the packet and
SHOULD send a NOTIFY packet to the sender indicating INVALID_SYNTAX
as described in [RFC5201] section 5.2.16.
4.4. Definition of the TRANSACTION_ID Parameter 4.4. Definition of the TRANSACTION_ID Parameter
The following is the definition of the TRANSACTION_ID parameter: The following is the definition of the TRANSACTION_ID parameter:
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier / | Identifier /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ | Padding | / | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type [ TBD by IANA; 982 ] Type [ TBD by IANA;
4580 = (2^12 + 2^8 + 2^7 + 2^6 + 2^5 + 2^2 ) ]
Length Length of the Identifier in octets Length Length of the Identifier in octets
Identifier The identifier value Identifier The identifier value
Padding 0-7 bytes of padding if needed Padding 0-7 octets of padding if needed
Figure 1: Format of the TRANSACTION_ID parameter Figure 1: Format of the TRANSACTION_ID parameter
5. Generation and Reception of HIP DATA Packets 5. Generation and Reception of HIP DATA Packets
HIP DATA packets are transmitted reliably. Reliable delivery is HIP DATA packets are transmitted reliably. Reliable delivery is
achieved through the use of retransmissions and of the SEQ_DATA and achieved through the use of retransmissions and of the SEQ_DATA and
ACK_DATA parameters. ACK_DATA parameters.
5.1. Handling of SEQ_DATA and ACK_DATA 5.1. Handling of SEQ_DATA and ACK_DATA
A HIP DATA packet MUST contain SEQ_DATA or ACK_DATA parameter if both A HIP DATA packet MUST contain at least one of a SEQ_DATA or an
parameters are missing then packet MUST be dropped as invalid. ACK_DATA parameter; if both parameters are missing, then packet MUST
be dropped as invalid.
A HIP DATA packet containing SEQ_DATA parameter MUST contain one or A HIP DATA packet containing SEQ_DATA parameter MUST contain one or
more PAYLOAD_MIC parameter otherwise packet MUST be dropped. The more PAYLOAD_MIC parameter or otherwise packet MUST be dropped. The
presence of a SEQ_DATA parameter indicates that the receiver MUST ACK presence of a SEQ_DATA parameter indicates that the receiver MUST ACK
the HIP DATA packet. A HIP DATA packet that does not contain a the HIP DATA packet. A HIP DATA packet that does not contain a
SEQ_DATA parameter is simply an ACK of a previous HIP DATA packet and SEQ_DATA parameter is simply an ACK of a previous HIP DATA packet and
MUST NOT be ACKed. MUST NOT be ACKed.
A HIP DATA packet contains zero or one ACK_DATA parameters. The ACK A HIP DATA packet containing ACK_DATA parameter echoes the SEQ_DATA
parameter echoes the SEQ_DATA sequence number of the HIP DATA packet sequence numbers of the HIP DATA packet packets being acknowledged.
packet being ACKed. One ACK_DATA parameter MUST contain one more ACK_DATA parameter MUST acknowledge at least one SEQ_DATA sequence
sequence numbers of the HIP DATA packets being ACKed. number and MAY acknowledge multiple SEQ_DATA sequence numbers by
adding all of them to the ACK_DATA parameter
A HIP DATA packet MAY contain both a SEQ_DATA and an ACK_DATA A HIP DATA packet MAY contain both a SEQ_DATA and an ACK_DATA
parameter. In this case, the ACK is being piggybacked on an outgoing parameter. In this case, the ACK is being piggybacked on an outgoing
HIP DATA packet. In general, HIP DATA packets carrying SEQ_DATA HIP DATA packet. In general, HIP DATA packets carrying SEQ_DATA
SHOULD be ACKed upon completion of the processing of the HIP DATA SHOULD be ACKed upon completion of the processing of the HIP DATA
packet. A host MAY choose to hold the HIP DATA packet carrying ACK packet. A host MAY choose to hold the HIP DATA packet carrying ACK
for a short period of time to allow for the possibility of for a short period of time to allow for the possibility of
piggybacking the ACK parameter, in a manner similar to TCP delayed piggybacking the ACK parameter, in a manner similar to TCP delayed
acknowledgments. acknowledgments.
skipping to change at page 10, line 43 skipping to change at page 11, line 48
by maintaining the value as a simple, 32-bit, "wrap-around" by maintaining the value as a simple, 32-bit, "wrap-around"
counter, incremented each time a packet is sent. It is an counter, incremented each time a packet is sent. It is an
implementation choice whether to maintain a single counter for implementation choice whether to maintain a single counter for
the node or multiple counters (one for each source HIT, the node or multiple counters (one for each source HIT,
destination HIT combination). destination HIT combination).
2. The host creates PAYLOAD_MIC parameter. MIC is a hash calculated 2. The host creates PAYLOAD_MIC parameter. MIC is a hash calculated
over the whole PAYLOAD which the Next Header field of PAYLOAD_MIC over the whole PAYLOAD which the Next Header field of PAYLOAD_MIC
parameter indicates. If there is multiple next header types parameter indicates. If there is multiple next header types
which the host wants to protect it SHOULD create separate which the host wants to protect it SHOULD create separate
PAYLOAD_MIC parameter for each of these. The receiver MUST PAYLOAD_MIC parameter for each of these. The receiver MUST
validate these MICs. For calculating MIC the host MUST use the validate all these MICs as described in Section 5.3.1. For
same hash algorithm as the one that has been used for generating calculating MIC the host MUST use the same hash algorithm as the
the host's HIT as defined in Section 3.2. of [RFC5201]. one that has been used for generating the host's HIT as defined
in Section 3.2. of [RFC5201].
3. The host creates HIP_SIGNATURE parameter. The signature is 3. The host creates HIP_SIGNATURE parameter. The signature is
calculated over the whole HIP envelope, excluding any parameters calculated over the whole HIP envelope, excluding any parameters
after the HIP_SIGNATURE, as defined in Section 5.2.11. of after the HIP_SIGNATURE, as defined in Section 5.2.11. of
[RFC5201]. The receiver MUST validate this signature. It MAY [RFC5201]. The receiver MUST validate this signature. It MAY
use either the HI in the packet or the HI acquired by some other use either the HI in the packet or the HI acquired by some other
means. means.
4. The hosts sends the created HIP DATA packet and starts a DATA 4. The hosts sends the created HIP DATA packet and starts a DATA
timer. The default value for the timer is 2 * RTT estimate. If timer. The default value for the timer is 3 seconds. If
multiple HIP DATA packets are outstanding, multiple timers are in multiple HIP DATA packets are outstanding, multiple timers are in
effect. effect.
5. If the DATA timer expires, the HIP DATA packet is resent. The 5. If the DATA timer expires, the HIP DATA packet is resent. The
HIP DATA packet can be resent DATA_RETRY_MAX times. The DATA HIP DATA packet can be resent DATA_RETRY_MAX times. The DATA
timer SHOULD be exponentially backed off for subsequent timer MUST be exponentially backed off for subsequent
retransmissions. If no acknowledgment is received from the peer retransmissions. If no acknowledgment is received from the peer
after DATA_RETRY_MAX times, the delivery of the HIP DATA packet after DATA_RETRY_MAX times, the delivery of the HIP DATA packet
is considered unsuccessful and the application is notified about is considered unsuccessful and the application is notified about
the error. The DATA timer is canceled upon receiving an ACK from the error. The DATA timer is canceled upon receiving an ACK from
the peer that acknowledges receipt of the HIP DATA packet. the peer that acknowledges receipt of the HIP DATA packet. The
default value for DATA_RETRY_MAX SHOULD be 5 retries, but it MAY
be changed through local policy.
5.3. Reception of a HIP DATA packet 5.3. Reception of a HIP DATA packet
A host receiving a HIP DATA packet makes decision whether to process A host receiving a HIP DATA packet makes a decision whether to
the packet or not. If the host, following its local policy, suspects process the packet or not. If the host, following its local policy,
that this packet could be part of a DoS attack. The host MAY respond suspects that this packet could be part of a DoS attack. The host
with an R1 packet to the HIP DATA packet, if the packet contained MAY respond with an R1 packet to the HIP DATA packet, if the packet
SEQ_DATA and PAYLOAD_MIC parameter, in order to indicate that HIP contained SEQ_DATA and PAYLOAD_MIC parameter, in order to indicate
base exchange MUST be completed before accepting payload packets from that HIP base exchange MUST be completed before accepting payload
the originator of the HIP DATA packet. If the host chooses to packets from the originator of the HIP DATA packet. If the host
respond to the HIP DATA with an R1 packet, it creates a new R1 or chooses to respond to the HIP DATA with an R1 packet, it creates a
selects a precomputed R1 according to the format described in new R1 or selects a precomputed R1 according to the format described
[RFC5201] Section 5.3.2. The host SHOULD drop the received data in [RFC5201] Section 5.3.2. The host SHOULD drop the received data
packet if it responded with a R1 packet to the HIP_DATA packet. The packet if it responded with a R1 packet to the HIP_DATA packet. The
sender of HIP_DATA packet is responsible of retransmission of the sender of HIP_DATA packet is responsible for retransmission of the
upper-layer protocol data after successful completion of the HIP Base upper-layer protocol data after successful completion of the HIP Base
Exchange. Exchange.
If the host, following its local policy, decides to process the If the host, following its local policy, decides to process the
incoming HIP DATA packet, it processes it according to the following incoming HIP DATA packet, it processes it according to the following
rules: rules:
If the HIP DATA packet contains a SEQ_DATA parameter and no 1. If the HIP DATA packet contains a SEQ_DATA parameter and no
ACK_DATA parameter, the HIP DATA packet is processed and replied ACK_DATA parameter, the HIP DATA packet is processed and replied
to as described in Section 5.3.1. to as described in Section 5.3.1.
If the HIP DATA packet contains an ACK_DATA parameter and no 2. If the HIP DATA packet contains an ACK_DATA parameter and no
SEQ_DATA parameter, the HIP DATA packet is processed as described SEQ_DATA parameter, the HIP DATA packet is processed as described
in Section 5.3.2. in Section 5.3.2.
If the HIP DATA packet contains both a SEQ_DATA parameter and an
ACK_DATA parameter, the HIP DATA packet is processed first as 3. If the HIP DATA packet contains both a SEQ_DATA parameter and an
described in Section 5.3.2 and then the rest of the HIP DATA ACK_DATA parameter, the HIP DATA packet is processed first as
packet is processed and replied to as described in Section 5.3.1. described in Section 5.3.2 and then the rest of the HIP DATA
packet is processed and replied to as described in Section 5.3.1.
5.3.1. Handling of SEQ_DATA in a Received HIP DATA packet 5.3.1. Handling of SEQ_DATA in a Received HIP DATA packet
The following steps define the conceptual processing rules for The following steps define the conceptual processing rules for
handling a SEQ_DATA parameter in a received HIP DATA packet. handling a SEQ_DATA parameter in a received HIP DATA packet.
If the value in the received SEQ_DATA corresponds to a HIP DATA
packet that has recently been processed, the packet is treated as a
retransmission. The SIGNATURE verification (next step) MUST NOT be
skipped. (A byte-by-byte comparison of the received and a stored
packet would be OK, though.) It is recommended that a host cache HIP
DATA packets sent with ACKs to avoid the cost of generating a new ACK
packet to respond to a retransmitted HIP DATA packet. The host MUST
acknowledge, again, such (apparent) HIP DATA packet retransmissions
but SHOULD also consider rate-limiting such retransmission responses
to guard against replay attacks.
The system MUST verify the SIGNATURE in the HIP DATA packet. If the The system MUST verify the SIGNATURE in the HIP DATA packet. If the
verification fails, the packet SHOULD be dropped and an error message verification fail, the packet SHOULD be dropped and an error message
logged. logged.
If the value in the received SEQ_DATA and MIC value received
PAYLOAD_MIC corresponds to a HIP DATA packet that has recently been
processed, the packet is treated as a retransmission. The SIGNATURE
verification (next step) MUST NOT be skipped. (A byte-by-byte
comparison of the received and a stored packet would be adequate,
though.) It is recommended that a host cache HIP DATA packets sent
with ACKs to avoid the cost of generating a new ACK packet to respond
to a retransmitted HIP DATA packet. The host MUST acknowledge,
again, such (apparent) HIP DATA packet retransmissions but SHOULD
also consider rate-limiting such retransmission responses to guard
against replay attacks.
The system MUST verify the PAYLOAD_MIC by calculating MIC over the The system MUST verify the PAYLOAD_MIC by calculating MIC over the
PAYLOAD which the Next Header field indicates. For calculating the PAYLOAD which the Next Header field indicates. For calculating the
MIC the host will use the same hash algorithm that has been used to MIC the host will use the same hash algorithm that has been used to
generate the sender's HIT as defined in Section 3.2. of [RFC5201]. generate the sender's HIT as defined in Section 3.2. of [RFC5201].
If the packet carried multiple PAYLOAD_MIC parameters each of them If the packet carried multiple PAYLOAD_MIC parameters each of them
are verified as described above. If one or more of the verification are verified as described above. If one or more of the verification
fails, the packet SHOULD be dropped and an error message logged. fails, the packet SHOULD be dropped and an error message logged.
If a new SEQ parameter is being processed, the parameters in the HIP If a new SEQ parameter is being processed, the parameters in the HIP
DATA packet are then processed. DATA packet are then processed.
skipping to change at page 12, line 47 skipping to change at page 14, line 5
the peer. This ACK_DATA parameter may be included in a separate HIP the peer. This ACK_DATA parameter may be included in a separate HIP
DATA packet or piggybacked in a HIP DATA packet with a SEQ_DATA DATA packet or piggybacked in a HIP DATA packet with a SEQ_DATA
parameter. The ACK_DATA parameter MAY acknowledge more than one of parameter. The ACK_DATA parameter MAY acknowledge more than one of
the peer's HIP DATA packets. the peer's HIP DATA packets.
5.3.2. Handling of ACK_DATA in a Received HIP DATA packet 5.3.2. Handling of ACK_DATA in a Received HIP DATA packet
The following steps define the conceptual processing rules for The following steps define the conceptual processing rules for
handling an ACK_DATA parameter in a received HIP DATA packet. handling an ACK_DATA parameter in a received HIP DATA packet.
The sequence number reported in the ACK_DATA must match with an
earlier sent HIP DATA packet that has not already been acknowledged.
If no match is found or if the ACK_DATA does not acknowledge a new
HIP DATA packet, the packet MUST either be dropped if no SEQ_DATA
parameter is present, or the processing steps in Section 5.3.1 are
followed.
The system MUST verify the SIGNATURE in the HIP DATA packet. If the The system MUST verify the SIGNATURE in the HIP DATA packet. If the
verification fails, the packet SHOULD be dropped and an error message verification fails, the packet SHOULD be dropped and an error message
logged. logged.
The sequence numbers reported in the ACK_DATA must match with an
previously sent HIP DATA packet containing SEQ_DATA that has not
already been acknowledged. If no match is found or if the ACK_DATA
does not acknowledge a new HIP DATA packets, the packet MUST either
be dropped if no SEQ_DATA parameter is present, or the processing
steps in Section 5.3.1 are followed.
The corresponding DATA timer is stopped so that the now acknowledged The corresponding DATA timer is stopped so that the now acknowledged
HIP DATA packet is no longer retransmitted. If multiple HIP DATA HIP DATA packet is no longer retransmitted. If multiple HIP DATA
packets are newly acknowledged, multiple timers are stopped. packets are newly acknowledged, multiple timers are stopped.
6. Use of the HIP DATA Packet 6. Use of the HIP DATA Packet
HIP currently requires always that the four-message base exchange is HIP currently requires that the four-message base exchange is
executed at the first encounter of hosts that have not communicated executed at the first encounter of hosts that have not communicated
before. This may add additional RTTs (Round Trip Time) to protocols before. This may add additional RTTs (Round Trip Time) to protocols
based on a single message exchange. However, the four-message based on a single message exchange. However, the four-message
exchange is essential to preserve the half-stateless DoS protection exchange is essential to preserve the DoS protection nature of the
nature of the base exchange. The use of the HIP DATA packet defined base exchange. The use of the HIP DATA packet defined in this
in this document reduces the initial overhead in the communications document reduces the initial overhead in the communications between
between two hosts at the expense of decreasing DoS protection. two hosts. However, the HIP DATA packet itself does not provide any
Therefore, applications SHOULD NOT use HIP DATA packets in protection against DoS attacks. Therefore, the HIP DATA packet MUST
environments where DoS attacks are believed to be an issue. For only be used in environment whose policies provide protection against
example, a HIP-based overlay may have policies in place to control DoS attacks. For example, a HIP-based overlay may have policies in
which nodes can join the overlay. Any particular node in the overlay place to control which nodes can join the overlay. Any particular
may want to accept HIP DATA packets from other nodes in the overlay node in the overlay may want to accept HIP DATA packets from other
given that those other were authorized to join the overlay. However, nodes in the overlay given that those other nodes were authorized to
the same node may not want to accept HIP DATA packets from random join the overlay. However, the same node will not accept HIP DATA
nodes that are not part of the overlay. packets from random nodes that are not part of the overlay.
Additionally, the HIP DATA packet itself does not provide
confidentiality for its payload. Therefore, the HIP DATA packet MUST
only be used in environments that provide a level of confidentiality
that is appropriate for the data to be transferred. For example, a
HIP-based overlay may only send HIP DATA packets over encrypted
connections between overlay nodes.
The type of data to be sent is also relevant to whether the use of a The type of data to be sent is also relevant to whether the use of a
HIP DATA packet is appropriate. HIP itself does not support HIP DATA packet is appropriate. HIP itself does not support
fragmentation but relies on underlying IP-layer fragmentation. This fragmentation but relies on underlying IP-layer fragmentation. This
may lead to reliability problems in the case where a message cannot may lead to reliability problems in the case where a message cannot
be easily split over multiple HIP messages. Therefore, applications be easily split over multiple HIP messages. Therefore, applications
in environments where fragmentation could be an issue SHOULD NOT in environments where fragmentation could be an issue SHOULD NOT
generate too large HIP DATA packets that may lead to fragmentation. generate too large HIP DATA packets that may lead to fragmentation.
The implementation SHOULD check the MTU of the link before sending The implementation SHOULD check the MTU of the link before sending
the packet and if the packet size is larger than MTU it SHOULD signal the packet and if the packet size is larger than MTU it SHOULD signal
to the upper-layer protocol if the packet results in to a ICMP error to the upper-layer protocol if the packet results in to a ICMP error
message. Note that there are environments where fragmentation is not message. Note that there are environments where fragmentation is not
an issue. For example, in some HIP-based overlays, nodes can an issue. For example, in some HIP-based overlays, nodes can
exchange HIP DATA packets on top of TCP connections that provide exchange HIP DATA packets on top of TCP connections that provide
transport-level fragmentation and, thus, avoid IP-level transport-level fragmentation and, thus, avoid IP-level
fragmentation. fragmentation.
HIP currently requires that all messages excluding I1s but including HIP currently requires that all messages excluding I1s but including
skipping to change at page 14, line 13 skipping to change at page 15, line 27
applications where security is not paramount, it is possible to use applications where security is not paramount, it is possible to use
very short keys, thereby reducing resource consumption. very short keys, thereby reducing resource consumption.
7. Security considerations 7. Security considerations
HIP is designed to provide secure authentication of hosts. HIP also HIP is designed to provide secure authentication of hosts. HIP also
attempts to limit the exposure of the host to various denial-of- attempts to limit the exposure of the host to various denial-of-
service and man-in-the-middle (MitM) attacks. However, HIP DATA service and man-in-the-middle (MitM) attacks. However, HIP DATA
packet, which can be sent without running the HIP base exchange packet, which can be sent without running the HIP base exchange
between hosts has a trade off that it does not provide the denial-of- between hosts has a trade off that it does not provide the denial-of-
service protection that HIP generally provides. Thus, the host service protection or confidentiality protection that HIP generally
should consider always situations where it is appropriate to send or provides. Thus, the host should consider always situations where it
receive HIP DATA packet. If the communication consists more than few is appropriate to send or receive HIP DATA packet. If the
round-trips of data or the data is highly sensitive in nature the communication consists more than few round-trips of data or the data
host SHOULD run the base exchange with the peer host. is highly sensitive in nature the host SHOULD run the base exchange
with the peer host.
HIP DATA packet is designed to protect hosts from second preimage
attacks allowing receiving host to be able to detect, if the message
was tampered during the transport. This property is also know as
weak-collision-resistance. If a host tries to generate a second
preimage it would need to generate such second image where 8 last
octets are matching with original message.
When handling the PAYLOAD_MIC parameter in the receiving host, using
the 8-last octets to identify the upper layer protocol doesn't give
any guarantee that the MIC would be correct thus an attacker could
send packets where the next header and last 8-octets matches to the
values carried by PAYLOAD_MIC parameter and thus it is always
mandatory to verify the MIC value by calculating the hash over the
payload.
8. IANA considerations 8. IANA considerations
This document updates the IANA Registry for HIP Packet types by This document updates the IANA Registry for HIP Packet types by
introducing new packet type for the new HIP_DATA (Section 4) packet. introducing new packet type for the new HIP_DATA (Section 4) packet.
This document updates the IANA Registry for HIP Parameter Types by This document updates the IANA Registry for HIP Parameter Types by
introducing new parameter values for the SEQ_DATA (Section 4.1), introducing new parameter values for the SEQ_DATA (Section 4.1),
ACK_DATA (Section 4.2), and PAYLOAD_MIC (Section 4.3) parameters. ACK_DATA (Section 4.2), PAYLOAD_MIC (Section 4.3), and TRANSACTION_ID
(Section 4.4) parameters.
9. Acknowledgments 9. Acknowledgments
Pekka Nikander was one of the original authors of the draft. Also, Pekka Nikander was one of the original authors of the draft. Also,
in the usual IETF fashion, a large number of people have contributed in the usual IETF fashion, a large number of people have contributed
to the actual text or ideas. The list of these people include Miika to the actual text or ideas. The list of these people include Miika
Komu, Tobias Heer, Ari Keranen, Samu Varjonen, Thomas Henderson, and Komu, Tobias Heer, Ari Keranen, Samu Varjonen, Thomas Henderson, and
Jukka Ylitalo. Our apologies to anyone whose name is missing. Jukka Ylitalo. Our apologies to anyone whose name is missing.
10. References 10. References
10.1. Normative References 10.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC5201] Moskowitz, R., Nikander, P., Jokela, P., and T. Henderson, [RFC5201] Moskowitz, R., Nikander, P., Jokela, P., and T. Henderson,
"Host Identity Protocol", RFC 5201, April 2008. "Host Identity Protocol", RFC 5201, April 2008.
[PROTOCOL-NUMBERS]
IANA, "Protocol Numbers",
<http://www.iana.org/assignments/protocol-numbers>.
10.2. Informative references 10.2. Informative references
[RFC5202] Jokela, P., Moskowitz, R., and P. Nikander, "Using the [RFC5202] Jokela, P., Moskowitz, R., and P. Nikander, "Using the
Encapsulating Security Payload (ESP) Transport Format with Encapsulating Security Payload (ESP) Transport Format with
the Host Identity Protocol (HIP)", RFC 5202, April 2008. the Host Identity Protocol (HIP)", RFC 5202, April 2008.
[RFC5206] Nikander, P., Henderson, T., Vogt, C., and J. Arkko, "End- [RFC5206] Nikander, P., Henderson, T., Vogt, C., and J. Arkko, "End-
Host Mobility and Multihoming with the Host Identity Host Mobility and Multihoming with the Host Identity
Protocol", RFC 5206, April 2008. Protocol", RFC 5206, April 2008.
 End of changes. 53 change blocks. 
192 lines changed or deleted 272 lines changed or added

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