draft-ietf-manet-rfc6622-bis-00.txt | draft-ietf-manet-rfc6622-bis-01.txt | |||
---|---|---|---|---|
Mobile Ad hoc Networking (MANET) U. Herberg | Mobile Ad hoc Networking (MANET) U. Herberg | |||
Internet-Draft Fujitsu Laboratories of America | Internet-Draft Fujitsu Laboratories of America | |||
Obsoletes: 6622 (if approved) T. Clausen | Obsoletes: 6622 (if approved) T. Clausen | |||
Intended status: Standards Track LIX, Ecole Polytechnique | Intended status: Standards Track LIX, Ecole Polytechnique | |||
Expires: September 23, 2013 C. Dearlove | Expires: September 24, 2013 C. Dearlove | |||
BAE Systems ATC | BAE Systems ATC | |||
March 22, 2013 | March 23, 2013 | |||
Integrity Check Value and Timestamp TLV Definitions | Integrity Check Value and Timestamp TLV Definitions | |||
for Mobile Ad Hoc Networks (MANETs) | for Mobile Ad Hoc Networks (MANETs) | |||
draft-ietf-manet-rfc6622-bis-00 | draft-ietf-manet-rfc6622-bis-01 | |||
Abstract | Abstract | |||
This document extends and replaces RFC 6622. It describes general | This document extends and replaces RFC 6622. It describes general | |||
and flexible TLVs for representing cryptographic Integrity Check | and flexible TLVs for representing cryptographic Integrity Check | |||
Values (ICVs) (i.e., digital signatures or Message Authentication | Values (ICVs) (i.e., digital signatures or Message Authentication | |||
Codes (MACs)) as well as timestamps, using the generalized Mobile Ad | Codes (MACs)) as well as timestamps, using the generalized Mobile Ad | |||
Hoc Network (MANET) packet/message format defined in RFC 5444. It | Hoc Network (MANET) packet/message format defined in RFC 5444. It | |||
defines two Packet TLVs, two Message TLVs, and two Address Block TLVs | defines two Packet TLVs, two Message TLVs, and two Address Block TLVs | |||
for affixing ICVs and timestamps to a packet, a message, and an | for affixing ICVs and timestamps to a packet, a message, and an | |||
skipping to change at page 1, line 41 | skipping to change at page 1, line 41 | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
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." | |||
This Internet-Draft will expire on September 23, 2013. | This Internet-Draft will expire on September 24, 2013. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2013 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 Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Differences from RFC6622 . . . . . . . . . . . . . . . . . 3 | ||||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Applicability Statement . . . . . . . . . . . . . . . . . . . 3 | 3. Applicability Statement . . . . . . . . . . . . . . . . . . . 4 | |||
4. Security Architecture . . . . . . . . . . . . . . . . . . . . 4 | 4. Security Architecture . . . . . . . . . . . . . . . . . . . . 4 | |||
5. Overview and Functioning . . . . . . . . . . . . . . . . . . . 5 | 5. Overview and Functioning . . . . . . . . . . . . . . . . . . . 5 | |||
6. General ICV TLV Structure . . . . . . . . . . . . . . . . . . 6 | 6. General ICV TLV Structure . . . . . . . . . . . . . . . . . . 6 | |||
7. General Timestamp TLV Structure . . . . . . . . . . . . . . . 6 | 7. General Timestamp TLV Structure . . . . . . . . . . . . . . . 7 | |||
8. Packet TLVs . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 8. Packet TLVs . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
8.1. Packet ICV TLV . . . . . . . . . . . . . . . . . . . . . . 7 | 8.1. Packet ICV TLV . . . . . . . . . . . . . . . . . . . . . . 7 | |||
8.2. Packet TIMESTAMP TLV . . . . . . . . . . . . . . . . . . . 7 | 8.2. Packet TIMESTAMP TLV . . . . . . . . . . . . . . . . . . . 8 | |||
9. Message TLVs . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 9. Message TLVs . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
9.1. Message ICV TLV . . . . . . . . . . . . . . . . . . . . . 8 | 9.1. Message ICV TLV . . . . . . . . . . . . . . . . . . . . . 8 | |||
9.2. Message TIMESTAMP TLV . . . . . . . . . . . . . . . . . . 8 | 9.2. Message TIMESTAMP TLV . . . . . . . . . . . . . . . . . . 9 | |||
10. Address Block TLVs . . . . . . . . . . . . . . . . . . . . . . 8 | 10. Address Block TLVs . . . . . . . . . . . . . . . . . . . . . . 9 | |||
10.1. Address Block ICV TLV . . . . . . . . . . . . . . . . . . 8 | 10.1. Address Block ICV TLV . . . . . . . . . . . . . . . . . . 9 | |||
10.2. Address Block TIMESTAMP TLV . . . . . . . . . . . . . . . 9 | 10.2. Address Block TIMESTAMP TLV . . . . . . . . . . . . . . . 9 | |||
11. ICV: Basic . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 11. ICV: Basic . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
12. ICV: Hash Function and Cryptographic Function . . . . . . . . 9 | 12. ICV: Hash Function and Cryptographic Function . . . . . . . . 10 | |||
12.1. General ICV TLV Structure . . . . . . . . . . . . . . . . 9 | 12.1. General ICV TLV Structure . . . . . . . . . . . . . . . . 10 | |||
12.1.1. Rationale . . . . . . . . . . . . . . . . . . . . . . 10 | 12.1.1. Rationale . . . . . . . . . . . . . . . . . . . . . . 11 | |||
12.2. Considerations for Calculating the ICV . . . . . . . . . . 11 | 12.2. Considerations for Calculating the ICV . . . . . . . . . . 11 | |||
12.2.1. Packet ICV TLV . . . . . . . . . . . . . . . . . . . 11 | 12.2.1. Packet ICV TLV . . . . . . . . . . . . . . . . . . . 12 | |||
12.2.2. Message ICV TLV . . . . . . . . . . . . . . . . . . . 11 | 12.2.2. Message ICV TLV . . . . . . . . . . . . . . . . . . . 12 | |||
12.2.3. Address Block ICV TLV . . . . . . . . . . . . . . . . 11 | 12.2.3. Address Block ICV TLV . . . . . . . . . . . . . . . . 12 | |||
12.3. Example of a Message Including an ICV . . . . . . . . . . 12 | 12.3. Example of a Message Including an ICV . . . . . . . . . . 12 | |||
13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | |||
13.1. Expert Review: Evaluation Guidelines . . . . . . . . . . . 13 | 13.1. Expert Review: Evaluation Guidelines . . . . . . . . . . . 14 | |||
13.2. Packet TLV Type Registrations . . . . . . . . . . . . . . 13 | 13.2. Packet TLV Type Registrations . . . . . . . . . . . . . . 14 | |||
13.3. Message TLV Type Registrations . . . . . . . . . . . . . . 14 | 13.3. Message TLV Type Registrations . . . . . . . . . . . . . . 15 | |||
13.4. Address Block TLV Type Registrations . . . . . . . . . . . 15 | 13.4. Address Block TLV Type Registrations . . . . . . . . . . . 16 | |||
13.5. Hash Functions . . . . . . . . . . . . . . . . . . . . . . 16 | 13.5. Hash Functions . . . . . . . . . . . . . . . . . . . . . . 17 | |||
13.6. Cryptographic Functions . . . . . . . . . . . . . . . . . 17 | 13.6. Cryptographic Functions . . . . . . . . . . . . . . . . . 18 | |||
14. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | 14. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | |||
15. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 18 | 15. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
16. References . . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 16. References . . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
16.1. Normative References . . . . . . . . . . . . . . . . . . . 18 | 16.1. Normative References . . . . . . . . . . . . . . . . . . . 19 | |||
16.2. Informative References . . . . . . . . . . . . . . . . . . 20 | 16.2. Informative References . . . . . . . . . . . . . . . . . . 21 | |||
1. Introduction | 1. Introduction | |||
This document, which extends and replaces [RFC6622], specifies: | This document, which extends and replaces [RFC6622], specifies: | |||
o Two TLVs for carrying Integrity Check Values (ICVs) and timestamps | o Two TLVs for carrying Integrity Check Values (ICVs) and timestamps | |||
in packets, messages, and address blocks as defined by [RFC5444]. | in packets, messages, and address blocks as defined by [RFC5444]. | |||
o A generic framework for ICVs, accounting (for Message TLVs) for | o A generic framework for ICVs, accounting (for Message TLVs) for | |||
mutable message header fields (<msg-hop-limit> and | mutable message header fields (<msg-hop-limit> and | |||
skipping to change at page 3, line 26 | skipping to change at page 3, line 26 | |||
This document retains the IANA registries, defined in [RFC6622], for | This document retains the IANA registries, defined in [RFC6622], for | |||
recording code points for hash-functions, cryptographic functions, | recording code points for hash-functions, cryptographic functions, | |||
and ICV calculations. This document requests additional allocations | and ICV calculations. This document requests additional allocations | |||
from these registries. | from these registries. | |||
Moreover, in Section 12, this document defines the following: | Moreover, in Section 12, this document defines the following: | |||
o A method for generating ICVs using a combination of a | o A method for generating ICVs using a combination of a | |||
cryptographic function and a hash function. | cryptographic function and a hash function. | |||
1.1. Differences from RFC6622 | ||||
This document obsoletes [RFC6622]. The changes introduced by this | ||||
document are, however, small. In addition to editorial updates, this | ||||
document adds a new type extension for the ICV TLV that is specified | ||||
in Section 12 of this document. The TLV value of a TLV with this | ||||
type extension has the same internal structure as a TLV with type | ||||
extension 1, but is calculated also over the source address of the IP | ||||
datagram carrying the packet, message, or address block. | ||||
The rationale for adding this type extension is that some MANET | ||||
protocols, such as [RFC6130] and [OLSRv2], use the IP source address | ||||
of the IP datagram carrying the packet, message or address block, | ||||
e.g., to identify links with neighbor routers. If this address is | ||||
not otherwise contained in the packet, message, or address block | ||||
payload (which is permitted, e.g., in [RFC6130]), the address is not | ||||
protected against tampering. | ||||
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", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
[RFC2119]. | [RFC2119]. | |||
This document uses the terminology and notation defined in [RFC5444]. | This document uses the terminology and notation defined in [RFC5444]. | |||
In particular, the following TLV fields from [RFC5444] are used in | In particular, the following TLV fields and notation from [RFC5444] | |||
this specification: | are used in this specification: | |||
<msg-hop-limit> is the hop limit of a message, as specified in | <msg-hop-limit> is the hop limit of a message, as specified in | |||
Section 5.2 of [RFC5444]. | Section 5.2 of [RFC5444]. | |||
<msg-hop-count> is the hop count of a message, as specified in | <msg-hop-count> is the hop count of a message, as specified in | |||
Section 5.2 of [RFC5444]. | Section 5.2 of [RFC5444]. | |||
<length> is the length of a TLV in octets, as specified in Section | <length> is the length of the value field in a TLV in octets, as | |||
5.4.1 of [RFC5444]. | specified in Section 5.4.1 of [RFC5444]. | |||
single-length is the length of a single value in the value field in | ||||
a TLV in octets, as specified in Section 5.4.1 of [RFC5444]. (It | ||||
is equal to <length> except in a multivalue Address Block TLV.) | ||||
3. Applicability Statement | 3. Applicability Statement | |||
MANET routing protocols using the format defined in [RFC5444] are | MANET routing protocols using the format defined in [RFC5444] are | |||
accorded the ability to carry additional information in control | accorded the ability to carry additional information in control | |||
messages and packets, through the inclusion of TLVs. Information so | messages and packets, through the inclusion of TLVs. Information so | |||
included MAY be used by a MANET routing protocol, or by an extension | included MAY be used by a MANET routing protocol, or by an extension | |||
of a MANET routing protocol, according to its specification. | of a MANET routing protocol, according to its specification. | |||
This document specifies how to include an ICV for a packet, a | This document specifies how to include an ICV for a packet, a | |||
message, and addresses in address blocks within a message, using such | message, and addresses in address blocks within a message, using such | |||
TLVs. This document also specifies how to treat "mutable" fields, | TLVs. This document also specifies how to treat "mutable" fields, | |||
specifically the <msg-hop-count> and <msg-hop-limit> fields, if | specifically the <msg-hop-count> and <msg-hop-limit> fields, if | |||
present in the message header when calculating ICVs, such that the | present in the message header when calculating ICVs, such that the | |||
resulting ICV can be correctly verified by any recipient. | resulting ICV can be correctly verified by any recipient. | |||
This document describes a generic framework for creating ICVs, and | This document describes a generic framework for creating ICVs, and | |||
how to include these ICVs in TLVs. In Section 12, an example method | how to include these ICVs in TLVs. In Section 12, an example method | |||
for calculating such ICVs is given, using a cryptographic function | for calculating such ICVs is given, using a cryptographic function | |||
over the hash value of the content. | and a hash function. | |||
4. Security Architecture | 4. Security Architecture | |||
Basic MANET routing protocol specifications are often "oblivious to | Basic MANET routing protocol specifications are often "oblivious to | |||
security"; however, they have a clause allowing a control message to | security"; however, they may have a clause allowing a control message | |||
be rejected as "badly formed" or "insecure" prior to the message | to be rejected as "badly formed" or "insecure" prior to the message | |||
being processed or forwarded. MANET routing protocols such as the | being processed or forwarded. In particular, MANET routing protocols | |||
Neighborhood Discovery Protocol (NHDP) [RFC6130] and the Optimized | such as the Neighborhood Discovery Protocol (NHDP) [RFC6130] and the | |||
Link State Routing Protocol version 2 [OLSRv2] recognize external | Optimized Link State Routing Protocol version 2 [OLSRv2] recognize | |||
reasons (such as failure to verify an ICV) for rejecting a message | external reasons (such as failure to verify an ICV) for rejecting a | |||
that would be considered "invalid for processing". This architecture | message that would be considered "invalid for processing". | |||
is a result of the observation that with respect to security in | ||||
MANETs, "one size rarely fits all" and that MANET routing protocol | This architecture is a result of the observation that with respect to | |||
deployment domains have varying security requirements ranging from | security in MANETs, "one size rarely fits all" and that MANET routing | |||
"unbreakable" to "virtually none". The virtue of this approach is | protocol deployment domains have varying security requirements | |||
that MANET routing protocol specifications (and implementations) can | ranging from "unbreakable" to "virtually none". The virtue of this | |||
remain "generic", with extensions providing proper security | approach is that MANET routing protocol specifications (and | |||
mechanisms specific to a deployment domain. | implementations) can remain "generic", with extensions providing | |||
proper security mechanisms specific to a deployment domain. | ||||
The MANET routing protocol "security architecture", in which this | The MANET routing protocol "security architecture", in which this | |||
specification situates itself, can therefore be summarized as | specification situates itself, can therefore be summarized as | |||
follows: | follows: | |||
o Security-oblivious MANET routing protocol specifications, with a | o MANET routing protocol specifications, with a clause allowing an | |||
clause allowing an extension to reject a message (prior to | extension to reject a message (prior to processing/forwarding) as | |||
processing/forwarding) as "badly formed" or "insecure". | "badly formed" or "insecure". | |||
o MANET routing protocol security extensions, rejecting messages as | o MANET routing protocol security extensions, rejecting messages as | |||
"badly formed" or "insecure", as appropriate for a given security | "badly formed" or "insecure", as appropriate for a given security | |||
requirement specific to a deployment domain. | requirement specific to a deployment domain. | |||
o Code points and an exchange format for information, necessary for | o Code points and an exchange format for information, necessary for | |||
specification of such MANET routing protocol security extensions. | specification of such MANET routing protocol security extensions. | |||
This document addresses the last of the issues listed above by | This document addresses the last of the issues listed above by | |||
specifying a common exchange format for cryptographic ICVs, making | specifying a common exchange format for cryptographic ICVs, making | |||
reservations from within the Packet TLV, Message TLV, and Address | reservations from within the Packet TLV, Message TLV, and Address | |||
Block TLV registries of [RFC5444], to be used (and shared) among | Block TLV registries of [RFC5444], to be used (and shared) among | |||
MANET routing protocol security extensions. | MANET routing protocol security extensions. | |||
For the specific decomposition of an ICV into a cryptographic | For the specific decomposition of an ICV using a cryptographic | |||
function over a hash value (specified in Section 12), this document | function and a hash function (specified in Section 12), this document | |||
reports the two IANA registries from [RFC6622] for code points for | reports the two IANA registries from [RFC6622] for code points for | |||
hash functions and cryptographic functions adhering to [RFC5444]. | hash functions and cryptographic functions adhering to [RFC5444]. | |||
With respect to [RFC5444], this document is: | With respect to [RFC5444], this document is: | |||
o Intended to be used in the non-normative, but intended, mode of | o Intended to be used in the non-normative, but intended, mode of | |||
use described in Appendix B of [RFC5444]. | use described in Appendix B of [RFC5444]. | |||
o A specific example of the Security Considerations section of | o A specific example of the Security Considerations section of | |||
[RFC5444] (the authentication part). | [RFC5444] (the authentication part). | |||
5. Overview and Functioning | 5. Overview and Functioning | |||
This document specifies a syntactical representation of security- | This document specifies a syntactical representation of security- | |||
related information for use with [RFC5444] addresses, messages, and | related information for use with [RFC5444] addresses, messages, and | |||
packets, and also reports and updates IANA registrations (from | packets, and also reports and updates IANA registrations (from | |||
[RFC6622]) of TLV types and type extension registries for these TLV | [RFC6622]) of TLV types and type extension registries for these TLV | |||
types. | types. | |||
Moreover, this document provides guidelines for how MANET routing | Moreover, this document provides guidelines for how MANET routing | |||
protocols and MANET routing protocol extensions using this | protocols, and MANET routing protocol extensions using this | |||
specification should treat ICV and Timestamp TLVs, and mutable fields | specification, should treat ICV and Timestamp TLVs, and mutable | |||
in messages. This specification does not represent a stand-alone | fields in messages. This specification does not represent a stand- | |||
protocol; MANET routing protocols and MANET routing protocol | alone protocol; MANET routing protocols, and MANET routing protocol | |||
extensions, using this specification, MUST provide instructions as to | extensions using this specification, MUST provide instructions as to | |||
how to handle packets, messages, and addresses with security | how to handle packets, messages, and addresses with security | |||
information, associated as specified in this document. | information, associated as specified in this document. | |||
This document reports previously assigned TLV types (from [RFC6622]) | This document reports previously assigned TLV types (from [RFC6622]) | |||
from the registries defined for Packet, Message, and Address Block | from the registries defined for Packet, Message, and Address Block | |||
TLVs in [RFC5444]. When a TLV type is assigned from one of these | TLVs in [RFC5444]. When a TLV type is assigned from one of these | |||
registries, a registry for type extensions for that TLV type is | registries, a registry for type extensions for that TLV type is | |||
created by IANA. This document reports and updates these type | created by IANA. This document reports and updates these type | |||
extension registries, in order to specify internal structure (and | extension registries, in order to specify internal structure (and | |||
accompanying processing) of the <value> field of a TLV. | accompanying processing) of the <value> field of a TLV. | |||
skipping to change at page 6, line 24 | skipping to change at page 7, line 4 | |||
they do so, they MUST specify their internal structure (if any) and | they do so, they MUST specify their internal structure (if any) and | |||
interpretation. | interpretation. | |||
6. General ICV TLV Structure | 6. General ICV TLV Structure | |||
The value of the ICV TLV is: | The value of the ICV TLV is: | |||
<value> := <ICV-value> | <value> := <ICV-value> | |||
where | where | |||
<ICV-value> is a field, of <length> octets, which contains the | <ICV-value> is a field, of <length> octets, which contains the | |||
information to be interpreted by the ICV verification process, as | information to be interpreted by the ICV verification process, as | |||
specified by the type extension. | specified by the type extension. | |||
Note that this does not stipulate how to calculate the <ICV-value> | Note that this does not stipulate how to calculate the <ICV-value> | |||
nor the internal structure thereof, if any; such information MUST be | nor the internal structure thereof, if any; such information MUST be | |||
specified by way of the type extension for the ICV TLV type. See | specified by the type extension for the ICV TLV type; see Section 13. | |||
Section 13. This document specifies three such type extensions -- | This document specifies three such type extensions -- one for ICVs | |||
one for ICVs without pre-defined structures, and two for ICVs | without pre-defined structures, and two for ICVs constructed | |||
constructed combining a cryptographic function and a hash function. | combining a cryptographic function and a hash function. | |||
7. General Timestamp TLV Structure | 7. General Timestamp TLV Structure | |||
The value of the Timestamp TLV is: | The value of the Timestamp TLV is: | |||
<value> := <time-value> | <value> := <time-value> | |||
where: | where: | |||
<time-value> is an unsigned integer field, of length <length>, which | <time-value> is an unsigned integer field, of length <length>, which | |||
contains the timestamp. | contains the timestamp. | |||
Note that this does not stipulate how to calculate the | Note that this does not stipulate how to calculate the | |||
<time-value> nor the internal structure thereof, if any; such | <time-value> nor the internal structure thereof, if any; such | |||
information MUST be specified by way of the type extension for the | information MUST be specified by the type extension for the | |||
TIMESTAMP TLV type. See Section 13. | TIMESTAMP TLV type; see Section 13. | |||
A timestamp is essentially "freshness information". As such, its | A timestamp is essentially "freshness information". As such, its | |||
setting and interpretation are to be determined by the MANET routing | setting and interpretation are to be determined by the MANET routing | |||
protocol, or MANET routing protocol extension, that uses the | protocol, or MANET routing protocol extension, that uses the | |||
timestamp and can, for example, correspond to a UNIX timestamp, GPS | timestamp and can, for example, correspond to a POSIX timestamp, GPS | |||
timestamp, or a simple sequence number. | timestamp, or a simple sequence number. | |||
8. Packet TLVs | 8. Packet TLVs | |||
Two Packet TLVs are defined: one for including the cryptographic ICV | Two Packet TLVs are defined: one for including the cryptographic ICV | |||
of a packet and one for including the timestamp indicating the time | of a packet and one for including the timestamp indicating the time | |||
at which the cryptographic ICV was calculated. | at which the cryptographic ICV was calculated. | |||
8.1. Packet ICV TLV | 8.1. Packet ICV TLV | |||
skipping to change at page 7, line 43 | skipping to change at page 8, line 21 | |||
The rationale for removing any Packet ICV TLV already present prior | The rationale for removing any Packet ICV TLV already present prior | |||
to calculating the ICV is that several ICVs may be added to the same | to calculating the ICV is that several ICVs may be added to the same | |||
packet, e.g., using different ICV functions. | packet, e.g., using different ICV functions. | |||
8.2. Packet TIMESTAMP TLV | 8.2. Packet TIMESTAMP TLV | |||
A Packet TIMESTAMP TLV is an example of a Timestamp TLV as described | A Packet TIMESTAMP TLV is an example of a Timestamp TLV as described | |||
in Section 7. If a packet contains a TIMESTAMP TLV and an ICV TLV, | in Section 7. If a packet contains a TIMESTAMP TLV and an ICV TLV, | |||
the TIMESTAMP TLV SHOULD be added to the packet before any ICV TLV, | the TIMESTAMP TLV SHOULD be added to the packet before any ICV TLV, | |||
in order that it be included in the calculation of the ICV. | in order to include it in the calculation of the ICV. | |||
9. Message TLVs | 9. Message TLVs | |||
Two Message TLVs are defined: one for including the cryptographic ICV | Two Message TLVs are defined: one for including the cryptographic ICV | |||
of a message and one for including the timestamp indicating the time | of a message and one for including the timestamp indicating the time | |||
at which the cryptographic ICV was calculated. | at which the cryptographic ICV was calculated. | |||
9.1. Message ICV TLV | 9.1. Message ICV TLV | |||
A Message ICV TLV is an example of an ICV TLV as described in | A Message ICV TLV is an example of an ICV TLV as described in | |||
skipping to change at page 8, line 30 | skipping to change at page 9, line 10 | |||
The rationale for removing any Message ICV TLV already present prior | The rationale for removing any Message ICV TLV already present prior | |||
to calculating the ICV is that several ICVs may be added to the same | to calculating the ICV is that several ICVs may be added to the same | |||
message, e.g., using different ICV functions. | message, e.g., using different ICV functions. | |||
9.2. Message TIMESTAMP TLV | 9.2. Message TIMESTAMP TLV | |||
A Message TIMESTAMP TLV is an example of a Timestamp TLV as described | A Message TIMESTAMP TLV is an example of a Timestamp TLV as described | |||
in Section 7. If a message contains a TIMESTAMP TLV and an ICV TLV, | in Section 7. If a message contains a TIMESTAMP TLV and an ICV TLV, | |||
the TIMESTAMP TLV SHOULD be added to the message before the ICV TLV, | the TIMESTAMP TLV SHOULD be added to the message before the ICV TLV, | |||
in order that it be included in the calculation of the ICV. | in order to include it in the calculation of the ICV. | |||
10. Address Block TLVs | 10. Address Block TLVs | |||
Two Address Block TLVs are defined: one for associating a | Two Address Block TLVs are defined: one for associating a | |||
cryptographic ICV to an address and one for including the timestamp | cryptographic ICV to an address and one for including the timestamp | |||
indicating the time at which the cryptographic ICV was calculated. | indicating the time at which the cryptographic ICV was calculated. | |||
10.1. Address Block ICV TLV | 10.1. Address Block ICV TLV | |||
An Address Block ICV TLV is an example of an ICV TLV as described in | An Address Block ICV TLV is an example of an ICV TLV as described in | |||
Section 6. The ICV is calculated over the address, concatenated with | Section 6. The ICV is calculated over the address, concatenated with | |||
any other values -- for example, any other Address Block TLV <value> | any other values -- for example, any other Address Block TLV <value> | |||
fields -- associated with that address. A MANET routing protocol or | fields -- associated with that address. A MANET routing protocol or | |||
MANET routing protocol extension using Address Block ICV TLVs MUST | MANET routing protocol extension using Address Block ICV TLVs MUST | |||
specify how to include any such concatenated attribute of the address | specify how to include any such concatenated attribute of the address | |||
in the verification process of the ICV. When determining the | in the calculation and verification processes for the ICV. When | |||
<ICV-value> for an address, the following consideration MUST be | determining the <ICV-value> for an address, the following | |||
applied: | consideration MUST be applied: | |||
o If other TLV values are concatenated with the address for | o If other TLV values are concatenated with the address for | |||
calculating the ICV, these TLVs MUST NOT be Address Block ICV TLVs | calculating the ICV, these TLVs MUST NOT be Address Block ICV TLVs | |||
already associated with the address. | already associated with the address. | |||
The rationale for not concatenating the address with any ICV TLV | The rationale for not concatenating the address with any ICV TLV | |||
values already associated with the address when calculating the ICV | values already associated with the address when calculating the ICV | |||
is that several ICVs may be added to the same address, e.g., using | is that several ICVs may be added to the same address, e.g., using | |||
different ICV functions. | different ICV functions. | |||
skipping to change at page 10, line 15 | skipping to change at page 10, line 44 | |||
where: | where: | |||
<hash-function> is an 8-bit unsigned integer field specifying the | <hash-function> is an 8-bit unsigned integer field specifying the | |||
hash function. | hash function. | |||
<cryptographic-function> is an 8-bit unsigned integer field | <cryptographic-function> is an 8-bit unsigned integer field | |||
specifying the cryptographic function. | specifying the cryptographic function. | |||
<key-id-length> is an 8-bit unsigned integer field specifying the | <key-id-length> is an 8-bit unsigned integer field specifying the | |||
length of the <key-id> field in number of octets. The value 0x00 | length of the <key-id> field in number of octets. The value 0x00 | |||
is reserved for using a pre-installed, shared key. | is reserved for using a single pre-installed, shared key. | |||
<key-id> is a field specifying the key identifier of the key that | <key-id> is a field specifying the key identifier of the key that | |||
was used to calculate the ICV of the message, which allows unique | was used to calculate the ICV of the message, which allows unique | |||
identification of different keys with the same originator. It is | identification of different keys with the same originator. It is | |||
the responsibility of each key originator to make sure that | the responsibility of each key originator to make sure that | |||
actively used keys that it issues have distinct key identifiers. | actively used keys that it issues have distinct key identifiers. | |||
If <key-id-length> equals 0x00, the <key-id> field is not | If <key-id-length> equals 0x00, the <key-id> field is not | |||
contained in the TLV, and a pre-installed, shared key is used. | contained in the TLV, and a single pre-installed, shared key is | |||
used. | ||||
<ICV-data> is an unsigned integer field, whose length is | <ICV-data> is an unsigned integer field, whose length is <length> - | |||
<length> - 3 - <key-id-length>, and which contains the | 3 - <key-id-length>, except in a multivslue Address Block TLV, in | |||
cryptographic ICV. | which it is single-length - 3 - <key-id-length>, and which | |||
contains the cryptographic ICV. | ||||
The version of this TLV, specified in this section, assumes that, | The version of this TLV, specified in this section, assumes that, | |||
unless otherwise specified, calculating the ICV can be decomposed | unless otherwise specified, calculating the ICV can be decomposed | |||
into: | into: | |||
ICV-value = cryptographic-function(hash-function(content)) | ICV-value = cryptographic-function(hash-function(content)) | |||
In some cases a different combination of cryptographic function and | In some cases a different combination of cryptographic function and | |||
hash function may be specified. This is the case for the HMAC | hash function may be specified. This is the case for the HMAC | |||
function, which is specified as defined in Section 13.6, which | function, which is specified as defined in Section 13.6, using the | |||
applies the hash function twice. | hash function twice. | |||
The hash function and the cryptographic function correspond to the | The hash function and the cryptographic function correspond to the | |||
entries in two IANA registries, which are reported by this | entries in two IANA registries, which are reported by this | |||
specification and are described in Section 13. | specification and are described in Section 13. | |||
12.1.1. Rationale | 12.1.1. Rationale | |||
The rationale for separating the hash function and the cryptographic | The rationale for separating the hash function and the cryptographic | |||
function into two octets instead of having all combinations in a | function into two octets instead of having all combinations in a | |||
single octet -- possibly as a TLV type extension -- is that adding | single octet -- possibly as a TLV type extension -- is that adding | |||
further hash functions or cryptographic functions in the future may | further hash functions or cryptographic functions in the future may | |||
lead to a non-contiguous number space. | lead to a non-contiguous number space. | |||
The rationale for not including a field that lists parameters of the | The rationale for not including a field that lists parameters of the | |||
cryptographic ICV in the TLV is that, before being able to validate a | cryptographic ICV in the TLV is that, before being able to validate a | |||
cryptographic ICV, routers have to exchange or acquire keys (e.g., | cryptographic ICV, routers have to exchange or acquire keys (e.g., | |||
public keys). Any additional parameters can be provided together | public keys). Any additional parameters can be provided together | |||
with the keys in that bootstrap process. It is therefore not | with the keys in that bootstrap process. It is therefore not | |||
necessary, and would even entail an extra overhead, to transmit the | necessary, and would even entail an extra overhead, to transmit the | |||
parameters within every message. One implicitly available parameter | parameters within every message. One implicitly available parameter | |||
is the length of the ICV, which is <length> - 3 - <key-id-length>, | is the length of an ICV, which is <length> - 3 - <key-id-length> (or | |||
and which depends on the choice of the cryptographic function. | single-length - 3 - <key-id-length> in a multivalue Address Block | |||
TLV) and which depends on the choice of the cryptographic function. | ||||
12.2. Considerations for Calculating the ICV | 12.2. Considerations for Calculating the ICV | |||
The considerations listed in the following subsections MUST be | The considerations listed in the following subsections MUST be | |||
applied when calculating the ICV for Packet, Message, and Address | applied when calculating the ICV for Packet, Message, and Address | |||
Block ICV TLVs, respectively. | Block ICV TLVs, respectively. | |||
12.2.1. Packet ICV TLV | 12.2.1. Packet ICV TLV | |||
When determining the <ICV-value> for a packet, with type extension = | When determining the <ICV-value> for a packet, with type extension = | |||
skipping to change at page 14, line 39 | skipping to change at page 15, line 39 | |||
| | | | may represent any random value | | | | | | may represent any random value | | |||
| | | 4-251 | Unassigned; Expert Review | | | | | 4-251 | Unassigned; Expert Review | | |||
| | | 252-255 | Experimental Use | | | | | 252-255 | Experimental Use | | |||
+-----------+------+-----------+------------------------------------+ | +-----------+------+-----------+------------------------------------+ | |||
Table 1: Packet TLV Types | Table 1: Packet TLV Types | |||
More than one ICV Packet TLV with the same type extension MAY be | More than one ICV Packet TLV with the same type extension MAY be | |||
included in a packet if these represent different ICV calculations | included in a packet if these represent different ICV calculations | |||
(e.g., with type extension 1 or 2 and different cryptographic | (e.g., with type extension 1 or 2 and different cryptographic | |||
function and/or hash function). ICV Packet TLVs that carry what is | function and/or hash function, or with a different key identifier). | |||
declared to be the same information MUST NOT be included in the same | ICV Packet TLVs that carry what is declared to be the same | |||
packet. | information MUST NOT be included in the same packet. | |||
13.3. Message TLV Type Registrations | 13.3. Message TLV Type Registrations | |||
IANA has, in accordance with [RFC6622], made allocations from the | IANA has, in accordance with [RFC6622], made allocations from the | |||
"Message TLV Types" namespace of [RFC5444] for the Message TLVs | "Message TLV Types" namespace of [RFC5444] for the Message TLVs | |||
specified in Table 2. IANA are requested to modify this allocation | specified in Table 2. IANA are requested to modify this allocation | |||
(defining type extension = 2) as indicated. | (defining type extension = 2) as indicated. | |||
+-----------+------+-----------+------------------------------------+ | +-----------+------+-----------+------------------------------------+ | |||
| Name | Type | Type | Description | | | Name | Type | Type | Description | | |||
skipping to change at page 15, line 37 | skipping to change at page 16, line 37 | |||
| | | | may represent any random value | | | | | | may represent any random value | | |||
| | | 4-251 | Unassigned; Expert Review | | | | | 4-251 | Unassigned; Expert Review | | |||
| | | 252-255 | Experimental Use | | | | | 252-255 | Experimental Use | | |||
+-----------+------+-----------+------------------------------------+ | +-----------+------+-----------+------------------------------------+ | |||
Table 2: Message TLV Types | Table 2: Message TLV Types | |||
More than one ICV Message TLV with the same type extension MAY be | More than one ICV Message TLV with the same type extension MAY be | |||
included in a message if these represent different ICV calculations | included in a message if these represent different ICV calculations | |||
(e.g., with type extension 1 or 2 and different cryptographic | (e.g., with type extension 1 or 2 and different cryptographic | |||
function and/or hash function). ICV Message TLVs that carry what is | function and/or hash function, or with a different key identifier). | |||
declared to be the same information MUST NOT be included in the same | ICV Message TLVs that carry what is declared to be the same | |||
message. | information MUST NOT be included in the same message. | |||
13.4. Address Block TLV Type Registrations | 13.4. Address Block TLV Type Registrations | |||
IANA has, in accordance with [RFC6622], made allocations from the | IANA has, in accordance with [RFC6622], made allocations from the | |||
"Address Block TLV Types" namespace of [RFC5444] for the Packet TLVs | "Address Block TLV Types" namespace of [RFC5444] for the Packet TLVs | |||
specified in Table 3. IANA are requested to modify this allocation | specified in Table 3. IANA are requested to modify this allocation | |||
(defining type extension = 2) as indicated. | (defining type extension = 2) as indicated. | |||
+-----------+------+-----------+------------------------------------+ | +-----------+------+-----------+------------------------------------+ | |||
| Name | Type | Type | Description | | | Name | Type | Type | Description | | |||
skipping to change at page 16, line 36 | skipping to change at page 17, line 36 | |||
| | | | length with no constraints such as | | | | | | length with no constraints such as | | |||
| | | | monotonicity. In particular, it | | | | | | monotonicity. In particular, it | | |||
| | | | may represent any random value | | | | | | may represent any random value | | |||
| | | 4-251 | Unassigned; Expert Review | | | | | 4-251 | Unassigned; Expert Review | | |||
| | | 252-255 | Experimental Use | | | | | 252-255 | Experimental Use | | |||
+-----------+------+-----------+------------------------------------+ | +-----------+------+-----------+------------------------------------+ | |||
Table 3: Address Block TLV Types | Table 3: Address Block TLV Types | |||
More than one ICV Address Block TLV with the same type extension MAY | More than one ICV Address Block TLV with the same type extension MAY | |||
be associated with an Address Block if these represent different ICV | be associated with an address if these represent different ICV | |||
calculations (e.g., with type extension 1 or 2 and different | calculations (e.g., with type extension 1 or 2 and different | |||
cryptographic function and/or hash function). ICV Address Block TLVs | cryptographic function and/or hash function, or with a different key | |||
that carry what is declared to be the same information MUST NOT be | identifier). ICV Address Block TLVs that carry what is declared to | |||
associated with the same Address Block. | be the same information MUST NOT be associated with the same address. | |||
13.5. Hash Functions | 13.5. Hash Functions | |||
IANA has, in accordance with [RFC6622], created a new registry for | IANA has, in accordance with [RFC6622], created a new registry for | |||
hash functions that can be used when creating an ICV, as specified in | hash functions that can be used when creating an ICV, as specified in | |||
Section 12 of this document. The initial assignments and allocation | Section 12 of this document. The initial assignments and allocation | |||
policies are specified in Table 4. This registry is unchanged by | policies are specified in Table 4. This registry is unchanged by | |||
this specification. | this specification. | |||
+-------------+-----------+-----------------------------------------+ | +-------------+-----------+-----------------------------------------+ | |||
skipping to change at page 21, line 5 | skipping to change at page 22, line 5 | |||
Thomas Heide Clausen | Thomas Heide Clausen | |||
LIX, Ecole Polytechnique | LIX, Ecole Polytechnique | |||
91128 Palaiseau Cedex | 91128 Palaiseau Cedex | |||
France | France | |||
Phone: +33 6 6058 9349 | Phone: +33 6 6058 9349 | |||
EMail: T.Clausen@computer.org | EMail: T.Clausen@computer.org | |||
URI: http://www.thomasclausen.org/ | URI: http://www.thomasclausen.org/ | |||
Christopher Dearlove | Christopher Dearlove | |||
BAE Systems ATC | BAE Systems Advanced Technology Centre | |||
West Hanningfield Road | ||||
Great Baddow, Chelmsford | ||||
United Kingdom | ||||
Phone: +44 1245 242194 | Phone: +44 1245 242194 | |||
EMail: chris.dearlove@baesystems.com | EMail: chris.dearlove@baesystems.com | |||
URI: http://www.baesystems.com/ | URI: http://www.baesystems.com/ | |||
End of changes. 37 change blocks. | ||||
90 lines changed or deleted | 119 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/ |