| rfc7401v8.txt | rfc7401.txt | |||
|---|---|---|---|---|
| skipping to change at page 3, line 6 | skipping to change at page 3, line 6 | |||
| 4.1.8. HIP Opportunistic Mode .............................21 | 4.1.8. HIP Opportunistic Mode .............................21 | |||
| 4.2. Updating a HIP Association ................................24 | 4.2. Updating a HIP Association ................................24 | |||
| 4.3. Error Processing ..........................................24 | 4.3. Error Processing ..........................................24 | |||
| 4.4. HIP State Machine .........................................25 | 4.4. HIP State Machine .........................................25 | |||
| 4.4.1. State Machine Terminology ..........................26 | 4.4.1. State Machine Terminology ..........................26 | |||
| 4.4.2. HIP States .........................................27 | 4.4.2. HIP States .........................................27 | |||
| 4.4.3. HIP State Processes ................................28 | 4.4.3. HIP State Processes ................................28 | |||
| 4.4.4. Simplified HIP State Diagram .......................35 | 4.4.4. Simplified HIP State Diagram .......................35 | |||
| 4.5. User Data Considerations ..................................37 | 4.5. User Data Considerations ..................................37 | |||
| 4.5.1. TCP and UDP Pseudo-Header Computation for | 4.5.1. TCP and UDP Pseudo Header Computation for | |||
| User Data ..........................................37 | User Data ..........................................37 | |||
| 4.5.2. Sending Data on HIP Packets ........................37 | 4.5.2. Sending Data on HIP Packets ........................37 | |||
| 4.5.3. Transport Formats ..................................37 | 4.5.3. Transport Formats ..................................37 | |||
| 4.5.4. Reboot, Timeout, and Restart of HIP ................37 | 4.5.4. Reboot, Timeout, and Restart of HIP ................37 | |||
| 4.6. Certificate Distribution ..................................38 | 4.6. Certificate Distribution ..................................38 | |||
| 5. Packet Formats .................................................38 | 5. Packet Formats .................................................38 | |||
| 5.1. Payload Format ............................................38 | 5.1. Payload Format ............................................38 | |||
| 5.1.1. Checksum ...........................................40 | 5.1.1. Checksum ...........................................40 | |||
| 5.1.2. HIP Controls .......................................40 | 5.1.2. HIP Controls .......................................40 | |||
| 5.1.3. HIP Fragmentation Support ..........................40 | 5.1.3. HIP Fragmentation Support ..........................40 | |||
| skipping to change at page 6, line 32 | skipping to change at page 6, line 32 | |||
| explained in the HIP architecture description [HIP-ARCH]. | explained in the HIP architecture description [HIP-ARCH]. | |||
| There are two main representations of the Host Identity, the full | There are two main representations of the Host Identity, the full | |||
| Host Identity (HI) and the Host Identity Tag (HIT). The HI is a | Host Identity (HI) and the Host Identity Tag (HIT). The HI is a | |||
| public key and directly represents the Identity of a host. Since | public key and directly represents the Identity of a host. Since | |||
| there are different public key algorithms that can be used with | there are different public key algorithms that can be used with | |||
| different key lengths, the HI, as such, is unsuitable for use as a | different key lengths, the HI, as such, is unsuitable for use as a | |||
| packet identifier, or as an index into the various state-related | packet identifier, or as an index into the various state-related | |||
| implementation structures needed to support HIP. Consequently, a | implementation structures needed to support HIP. Consequently, a | |||
| hash of the HI, the Host Identity Tag (HIT), is used as the | hash of the HI, the Host Identity Tag (HIT), is used as the | |||
| operational representation. The HIT is 128 bits long and is used in | operational representation. The HIT is 128 bits long and is used | |||
| the HIP headers and to index the corresponding state in the end | in the HIP headers and to index the corresponding state in the | |||
| hosts. The HIT has an important security property in that it is | end hosts. The HIT has an important security property in that it | |||
| self-certifying (see Section 3). | is self-certifying (see Section 3). | |||
| 1.2. The HIP Base Exchange (BEX) | 1.2. The HIP Base Exchange (BEX) | |||
| The HIP base exchange is a two-party cryptographic protocol used to | The HIP base exchange is a two-party cryptographic protocol used to | |||
| establish communications context between hosts. The base exchange is | establish communications context between hosts. The base exchange is | |||
| a SIGMA-compliant [KRA03] four-packet exchange. The first party is | a SIGMA-compliant [KRA03] four-packet exchange. The first party is | |||
| called the Initiator and the second party the Responder. The | called the Initiator and the second party the Responder. The | |||
| protocol exchanges Diffie-Hellman [DIF76] keys in the 2nd and 3rd | protocol exchanges Diffie-Hellman [DIF76] keys in the 2nd and 3rd | |||
| packets, and authenticates the parties in the 3rd and 4th packets. | packets, and authenticates the parties in the 3rd and 4th packets. | |||
| The four-packet design helps to make HIP resistant to DoS attacks. | The four-packet design helps to make HIP resistant to DoS attacks. | |||
| skipping to change at page 9, line 8 | skipping to change at page 9, line 8 | |||
| HIP packet: A control packet carrying a HIP packet header relating | HIP packet: A control packet carrying a HIP packet header relating | |||
| to the establishment, maintenance, or termination of the HIP | to the establishment, maintenance, or termination of the HIP | |||
| association. | association. | |||
| Initiator: The host that initiates the BEX. This role is typically | Initiator: The host that initiates the BEX. This role is typically | |||
| forgotten once the BEX is completed. | forgotten once the BEX is completed. | |||
| Responder: The host that responds to the Initiator in the BEX. This | Responder: The host that responds to the Initiator in the BEX. This | |||
| role is typically forgotten once the BEX is completed. | role is typically forgotten once the BEX is completed. | |||
| Responder's HIT Hash Algorithm (RHASH): The Hash algorithm used for | Responder's HIT hash algorithm (RHASH): The hash algorithm used for | |||
| various hash calculations in this document. The algorithm is the | various hash calculations in this document. The algorithm is the | |||
| same as is used to generate the Responder's HIT. The RHASH is the | same as is used to generate the Responder's HIT. The RHASH is the | |||
| hash function defined by the HIT Suite of the Responder's HIT | hash function defined by the HIT Suite of the Responder's HIT | |||
| (cf. Section 5.2.10). | (cf. Section 5.2.10). | |||
| Length of the Responder's HIT Hash Algorithm (RHASH_len): The | Length of the Responder's HIT hash algorithm (RHASH_len): The | |||
| natural output length of RHASH in bits. | natural output length of RHASH in bits. | |||
| Signed data: Data that is signed is protected by a digital signature | Signed data: Data that is signed is protected by a digital signature | |||
| that was created by the sender of the data by using the private | that was created by the sender of the data by using the private | |||
| key of its HI. | key of its HI. | |||
| KDF: The Key Derivation Function (KDF) is used for deriving the | KDF: The Key Derivation Function (KDF) is used for deriving the | |||
| symmetric keys from the Diffie-Hellman key exchange. | symmetric keys from the Diffie-Hellman key exchange. | |||
| KEYMAT: The keying material derived from the Diffie-Hellman key | KEYMAT: The keying material derived from the Diffie-Hellman key | |||
| skipping to change at page 37, line 7 | skipping to change at page 37, line 7 | |||
| +---------------------| CLOSED |------------------------------+ | | +---------------------| CLOSED |------------------------------+ | | |||
| +--------+ | | +--------+ | | |||
| ^ | | | | ^ | | | | |||
| recv CLOSE, send CLOSE_ACK| | | timeout (UAL+2MSL) | | recv CLOSE, send CLOSE_ACK| | | timeout (UAL+2MSL) | | |||
| +-+ +------------------------------------+ | +-+ +------------------------------------+ | |||
| Figure 2 | Figure 2 | |||
| 4.5. User Data Considerations | 4.5. User Data Considerations | |||
| 4.5.1. TCP and UDP Pseudo-Header Computation for User Data | 4.5.1. TCP and UDP Pseudo Header Computation for User Data | |||
| When computing TCP and UDP checksums on user data packets that flow | When computing TCP and UDP checksums on user data packets that flow | |||
| through sockets bound to HITs, the IPv6 pseudo-header format | through sockets bound to HITs, the IPv6 pseudo header format | |||
| [RFC2460] MUST be used, even if the actual addresses in the header of | [RFC2460] MUST be used, even if the actual addresses in the header of | |||
| the packet are IPv4 addresses. Additionally, the HITs MUST be used | the packet are IPv4 addresses. Additionally, the HITs MUST be used | |||
| in place of the IPv6 addresses in the IPv6 pseudo-header. Note that | in place of the IPv6 addresses in the IPv6 pseudo header. Note that | |||
| the pseudo-header for actual HIP payloads is computed differently; | the pseudo header for actual HIP payloads is computed differently; | |||
| see Section 5.1.1. | see Section 5.1.1. | |||
| 4.5.2. Sending Data on HIP Packets | 4.5.2. Sending Data on HIP Packets | |||
| Other documents may define how to include user data in various HIP | Other documents may define how to include user data in various HIP | |||
| packets. However, currently the HIP header is a terminal header, and | packets. However, currently the HIP header is a terminal header, and | |||
| not followed by any other headers. | not followed by any other headers. | |||
| 4.5.3. Transport Formats | 4.5.3. Transport Formats | |||
| skipping to change at page 40, line 10 | skipping to change at page 40, line 10 | |||
| protocol may need to check these bits in order to determine how to | protocol may need to check these bits in order to determine how to | |||
| handle the packet. | handle the packet. | |||
| The HIT fields are always 128 bits (16 bytes) long. | The HIT fields are always 128 bits (16 bytes) long. | |||
| 5.1.1. Checksum | 5.1.1. Checksum | |||
| Since the checksum covers the source and destination addresses in the | Since the checksum covers the source and destination addresses in the | |||
| IP header, it MUST be recomputed on HIP-aware NAT devices. | IP header, it MUST be recomputed on HIP-aware NAT devices. | |||
| If IPv6 is used to carry the HIP packet, the pseudo-header [RFC2460] | If IPv6 is used to carry the HIP packet, the pseudo header [RFC2460] | |||
| contains the source and destination IPv6 addresses, HIP packet length | contains the source and destination IPv6 addresses, HIP packet length | |||
| in the pseudo-header Length field, a zero field, and the HIP protocol | in the pseudo header Length field, a zero field, and the HIP protocol | |||
| number (see Section 5.1) in the Next Header field. The Length field | number (see Section 5.1) in the Next Header field. The Length field | |||
| is in bytes and can be calculated from the HIP Header Length field: | is in bytes and can be calculated from the HIP Header Length field: | |||
| (HIP Header Length + 1) * 8. | (HIP Header Length + 1) * 8. | |||
| In case of using IPv4, the IPv4 UDP pseudo-header format [RFC0768] is | In case of using IPv4, the IPv4 UDP pseudo header format [RFC0768] is | |||
| used. In the pseudo-header, the source and destination addresses are | used. In the pseudo header, the source and destination addresses are | |||
| those used in the IP header, the zero field is obviously zero, the | those used in the IP header, the zero field is obviously zero, the | |||
| protocol is the HIP protocol number (see Section 4), and the length | protocol is the HIP protocol number (see Section 4), and the length | |||
| is calculated as in the IPv6 case. | is calculated as in the IPv6 case. | |||
| 5.1.2. HIP Controls | 5.1.2. HIP Controls | |||
| The HIP Controls field conveys information about the structure of the | The HIP Controls field conveys information about the structure of the | |||
| packet and capabilities of the host. | packet and capabilities of the host. | |||
| The following fields have been defined: | The following fields have been defined: | |||
| skipping to change at page 41, line 31 | skipping to change at page 41, line 31 | |||
| [KAU03]. "Hash and URL" schemes as defined in [RFC6253] for HIP | [KAU03]. "Hash and URL" schemes as defined in [RFC6253] for HIP | |||
| version 1 may be used to avoid fragmentation and mitigate resulting | version 1 may be used to avoid fragmentation and mitigate resulting | |||
| DoS attacks. | DoS attacks. | |||
| 5.2. HIP Parameters | 5.2. HIP Parameters | |||
| The HIP parameters carry information that is necessary for | The HIP parameters carry information that is necessary for | |||
| establishing and maintaining a HIP association. For example, the | establishing and maintaining a HIP association. For example, the | |||
| peer's public keys as well as the signaling for negotiating ciphers | peer's public keys as well as the signaling for negotiating ciphers | |||
| and payload handling are encapsulated in HIP parameters. Additional | and payload handling are encapsulated in HIP parameters. Additional | |||
| information, meaningful for end-hosts or middleboxes, may also be | information, meaningful for end hosts or middleboxes, may also be | |||
| included in HIP parameters. The specification of the HIP parameters | included in HIP parameters. The specification of the HIP parameters | |||
| and their mapping to HIP packets and packet types is flexible to | and their mapping to HIP packets and packet types is flexible to | |||
| allow HIP extensions to define new parameters and new protocol | allow HIP extensions to define new parameters and new protocol | |||
| behavior. | behavior. | |||
| In HIP packets, HIP parameters are ordered according to their numeric | In HIP packets, HIP parameters are ordered according to their numeric | |||
| type number and encoded in TLV format. | type number and encoded in TLV format. | |||
| The following parameter types are currently defined. | The following parameter types are currently defined. | |||
| skipping to change at page 65, line 39 | skipping to change at page 65, line 39 | |||
| attack using forged messages, this status may only be returned | attack using forged messages, this status may only be returned | |||
| for packets whose HIP_MAC (if present) and SIGNATURE have been | for packets whose HIP_MAC (if present) and SIGNATURE have been | |||
| verified. This status MUST be sent in response to any error not | verified. This status MUST be sent in response to any error not | |||
| covered by one of the other status types and SHOULD NOT contain | covered by one of the other status types and SHOULD NOT contain | |||
| details, to avoid leaking information to someone probing a node. | details, to avoid leaking information to someone probing a node. | |||
| To aid debugging, more detailed error information SHOULD be | To aid debugging, more detailed error information SHOULD be | |||
| written to a console or log. | written to a console or log. | |||
| NO_DH_PROPOSAL_CHOSEN 14 | NO_DH_PROPOSAL_CHOSEN 14 | |||
| None of the proposed group IDs were acceptable. | None of the proposed Group IDs were acceptable. | |||
| INVALID_DH_CHOSEN 15 | INVALID_DH_CHOSEN 15 | |||
| The DH Group ID field does not correspond to one offered | The DH Group ID field does not correspond to one offered | |||
| by the Responder. | by the Responder. | |||
| NO_HIP_PROPOSAL_CHOSEN 16 | NO_HIP_PROPOSAL_CHOSEN 16 | |||
| None of the proposed HIT Suites or HIP Encryption Algorithms were | None of the proposed HIT Suites or HIP Encryption Algorithms were | |||
| acceptable. | acceptable. | |||
| skipping to change at page 68, line 32 | skipping to change at page 68, line 32 | |||
| that the sender wants to get echoed back in the corresponding reply | that the sender wants to get echoed back in the corresponding reply | |||
| packet. | packet. | |||
| The ECHO_REQUEST_UNSIGNED and corresponding echo response parameters | The ECHO_REQUEST_UNSIGNED and corresponding echo response parameters | |||
| MAY be used for any purpose where a node wants to carry some state in | MAY be used for any purpose where a node wants to carry some state in | |||
| a request packet and get it back in a response packet. The | a request packet and get it back in a response packet. The | |||
| ECHO_REQUEST_UNSIGNED is not covered by the HIP_MAC and SIGNATURE. A | ECHO_REQUEST_UNSIGNED is not covered by the HIP_MAC and SIGNATURE. A | |||
| HIP packet can contain one or more ECHO_REQUEST_UNSIGNED parameters. | HIP packet can contain one or more ECHO_REQUEST_UNSIGNED parameters. | |||
| It is possible that middleboxes add ECHO_REQUEST_UNSIGNED parameters | It is possible that middleboxes add ECHO_REQUEST_UNSIGNED parameters | |||
| in HIP packets passing by. The creator of the ECHO_REQUEST_UNSIGNED | in HIP packets passing by. The creator of the ECHO_REQUEST_UNSIGNED | |||
| (end-host or middlebox) has to create the Opaque field so that it can | (end host or middlebox) has to create the Opaque field so that it can | |||
| later identify and remove the corresponding ECHO_RESPONSE_UNSIGNED | later identify and remove the corresponding ECHO_RESPONSE_UNSIGNED | |||
| parameter. | parameter. | |||
| The ECHO_REQUEST_UNSIGNED parameter MUST be responded to with an | The ECHO_REQUEST_UNSIGNED parameter MUST be responded to with an | |||
| ECHO_RESPONSE_UNSIGNED parameter. | ECHO_RESPONSE_UNSIGNED parameter. | |||
| 5.2.22. ECHO_RESPONSE_SIGNED | 5.2.22. ECHO_RESPONSE_SIGNED | |||
| 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 | |||
| skipping to change at page 114, line 24 | skipping to change at page 114, line 24 | |||
| negotiation, an aspect of cryptographic agility. The Initiator | negotiation, an aspect of cryptographic agility. The Initiator | |||
| may express a preference for the choice of a DH group in the I1 | may express a preference for the choice of a DH group in the I1 | |||
| packet and may suggest multiple possible choices. The Responder | packet and may suggest multiple possible choices. The Responder | |||
| replies with a preference based on local policy and the options | replies with a preference based on local policy and the options | |||
| provided by the Initiator. The Initiator may restart the base | provided by the Initiator. The Initiator may restart the base | |||
| exchange if the option chosen by the Responder is unsuitable | exchange if the option chosen by the Responder is unsuitable | |||
| (unsupported algorithms). | (unsupported algorithms). | |||
| o Another aspect of cryptographic agility that has been added is the | o Another aspect of cryptographic agility that has been added is the | |||
| ability to use different cryptographic hash functions to generate | ability to use different cryptographic hash functions to generate | |||
| the HIT. The Responder's HIT Hash Algorithm (RHASH) terminology | the HIT. The Responder's HIT hash algorithm (RHASH) terminology | |||
| was introduced to support this. In addition, HIT Suites have been | was introduced to support this. In addition, HIT Suites have been | |||
| introduced to group the set of cryptographic algorithms used | introduced to group the set of cryptographic algorithms used | |||
| together for public key signature, hash function, and hash | together for public key signature, hash function, and hash | |||
| truncation. The use of HIT Suites constrains the combinatorial | truncation. The use of HIT Suites constrains the combinatorial | |||
| possibilities of algorithm selection for different functions. HIT | possibilities of algorithm selection for different functions. HIT | |||
| Suite IDs are related to the ORCHID OGA ID field ([RFC7343]). | Suite IDs are related to the ORCHID OGA ID field ([RFC7343]). | |||
| o The puzzle mechanism has been slightly changed, in that the #I | o The puzzle mechanism has been slightly changed, in that the #I | |||
| parameter depends on the HIT Hash function (RHASH) selected, and | parameter depends on the HIT hash function (RHASH) selected, and | |||
| the specification now advises against reusing the same #I value to | the specification now advises against reusing the same #I value to | |||
| the same Initiator; more details are provided in Sections 4.1.2 | the same Initiator; more details are provided in Sections 4.1.2 | |||
| and 5.2.4). | and 5.2.4). | |||
| o Section 4.1.4 was extended to cover details about R1 generation | o Section 4.1.4 was extended to cover details about R1 generation | |||
| counter rollover or reset. | counter rollover or reset. | |||
| o Section 4.1.6 was added to describe procedures for aborting a HIP | o Section 4.1.6 was added to describe procedures for aborting a HIP | |||
| base exchange. | base exchange. | |||
| skipping to change at page 124, line 25 | skipping to change at page 124, line 25 | |||
| Header Length: 5 0x5 | Header Length: 5 0x5 | |||
| Packet Type: 1 0x1 | Packet Type: 1 0x1 | |||
| Version: 2 0x2 | Version: 2 0x2 | |||
| Reserved: 1 0x1 | Reserved: 1 0x1 | |||
| Control: 0 0x0 | Control: 0 0x0 | |||
| Checksum: 6750 0x1a5e | Checksum: 6750 0x1a5e | |||
| Sender's HIT: 2001:20::1 | Sender's HIT: 2001:20::1 | |||
| Receiver's HIT: 2001:20::2 | Receiver's HIT: 2001:20::2 | |||
| DH_GROUP_LIST type: 511 0x1ff | DH_GROUP_LIST type: 511 0x1ff | |||
| DH_GROUP_LIST length: 3 0x3 | DH_GROUP_LIST length: 3 0x3 | |||
| DH_GROUP_LIST group IDs: 3,4,8 | DH_GROUP_LIST Group IDs: 3,4,8 | |||
| C.2. IPv4 HIP Packet (I1 Packet) | C.2. IPv4 HIP Packet (I1 Packet) | |||
| The IPv4 checksum value for the example I1 packet is shown below. | The IPv4 checksum value for the example I1 packet is shown below. | |||
| Source Address: 192.0.2.1 | Source Address: 192.0.2.1 | |||
| Destination Address: 192.0.2.2 | Destination Address: 192.0.2.2 | |||
| Upper-Layer Packet Length: 48 0x30 | Upper-Layer Packet Length: 48 0x30 | |||
| Next Header: 139 0x8b | Next Header: 139 0x8b | |||
| Payload Protocol: 59 0x3b | Payload Protocol: 59 0x3b | |||
| Header Length: 5 0x5 | Header Length: 5 0x5 | |||
| Packet Type: 1 0x1 | Packet Type: 1 0x1 | |||
| Version: 2 0x2 | Version: 2 0x2 | |||
| Reserved: 1 0x1 | Reserved: 1 0x1 | |||
| Control: 0 0x0 | Control: 0 0x0 | |||
| Checksum: 61902 0xf1ce | Checksum: 61902 0xf1ce | |||
| Sender's HIT: 2001:20::1 | Sender's HIT: 2001:20::1 | |||
| Receiver's HIT: 2001:20::2 | Receiver's HIT: 2001:20::2 | |||
| DH_GROUP_LIST type: 511 0x1ff | DH_GROUP_LIST type: 511 0x1ff | |||
| DH_GROUP_LIST length: 3 0x3 | DH_GROUP_LIST length: 3 0x3 | |||
| DH_GROUP_LIST group IDs: 3,4,8 | DH_GROUP_LIST Group IDs: 3,4,8 | |||
| C.3. TCP Segment | C.3. TCP Segment | |||
| Regardless of whether IPv6 or IPv4 is used, the TCP and UDP sockets | Regardless of whether IPv6 or IPv4 is used, the TCP and UDP sockets | |||
| use the IPv6 pseudo-header format [RFC2460], with the HITs used in | use the IPv6 pseudo header format [RFC2460], with the HITs used in | |||
| place of the IPv6 addresses. | place of the IPv6 addresses. | |||
| Sender's HIT: 2001:20::1 | Sender's HIT: 2001:20::1 | |||
| Receiver's HIT: 2001:20::2 | Receiver's HIT: 2001:20::2 | |||
| Upper-Layer Packet Length: 20 0x14 | Upper-Layer Packet Length: 20 0x14 | |||
| Next Header: 6 0x06 | Next Header: 6 0x06 | |||
| Source port: 65500 0xffdc | Source port: 65500 0xffdc | |||
| Destination port: 22 0x0016 | Destination port: 22 0x0016 | |||
| Sequence number: 1 0x00000001 | Sequence number: 1 0x00000001 | |||
| Acknowledgment number: 0 0x00000000 | Acknowledgment number: 0 0x00000000 | |||
| End of changes. 18 change blocks. | ||||
| 23 lines changed or deleted | 23 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||