draft-ietf-manet-packetbb-sec-00.txt | draft-ietf-manet-packetbb-sec-01.txt | |||
---|---|---|---|---|
Mobile Ad hoc Networking (MANET) U. Herberg | Mobile Ad hoc Networking (MANET) U. Herberg | |||
Internet-Draft T. Clausen | Internet-Draft T. Clausen | |||
Intended status: Standards Track LIX, Ecole Polytechnique | Intended status: Standards Track LIX, Ecole Polytechnique | |||
Expires: December 22, 2010 June 20, 2010 | Expires: January 28, 2011 July 27, 2010 | |||
MANET Cryptographical Signature TLV Definition | MANET Cryptographical Signature TLV Definition | |||
draft-ietf-manet-packetbb-sec-00 | draft-ietf-manet-packetbb-sec-01 | |||
Abstract | Abstract | |||
This document describes a general and flexible TLV (type-length-value | This document describes general and flexible TLVs (type-length-value | |||
structure) for representing cryptographic signatures as well as | structure) for representing cryptographic signatures as well as | |||
timestamps, using the generalized MANET packet/message format | timestamps, using the generalized MANET packet/message format | |||
[RFC5444]. It defines two Packet TLVs, two Message TLVs, and two | [RFC5444]. It defines two Packet TLVs, two Message TLVs, and two | |||
Address Block TLVs, for affixing cryptographic signatures and | Address Block TLVs, for affixing cryptographic signatures and | |||
timestamps to a packet, message and address, respectively. | timestamps to a packet, message and address, respectively. | |||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
skipping to change at page 1, line 35 | skipping to change at page 1, line 35 | |||
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 December 22, 2010. | This Internet-Draft will expire on January 28, 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 Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Applicability Statement . . . . . . . . . . . . . . . . . . . 4 | 3. Applicability Statement . . . . . . . . . . . . . . . . . . . 3 | |||
4. Protocol Overview and Functioning . . . . . . . . . . . . . . 5 | 4. Security Architecture . . . . . . . . . . . . . . . . . . . . 4 | |||
5. General Signature TLV Structure . . . . . . . . . . . . . . . 6 | 5. Protocol Overview and Functioning . . . . . . . . . . . . . . 5 | |||
5.1. Rationale . . . . . . . . . . . . . . . . . . . . . . . . 6 | 6. Imported TLV Fields . . . . . . . . . . . . . . . . . . . . . 5 | |||
6. General Timestamp TLV Structure . . . . . . . . . . . . . . . 7 | 7. General Signature TLV Structure . . . . . . . . . . . . . . . 5 | |||
7. Packet TLVs . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 7.1. Rationale . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
7.1. Packet SIGNATURE TLV . . . . . . . . . . . . . . . . . . . 7 | 8. General Timestamp TLV Structure . . . . . . . . . . . . . . . 6 | |||
7.2. Packet TIMESTAMP TLV . . . . . . . . . . . . . . . . . . . 8 | 9. Packet TLVs . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
8. Message TLVs . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 9.1. Packet SIGNATURE TLV . . . . . . . . . . . . . . . . . . . 7 | |||
8.1. Message SIGNATURE TLV . . . . . . . . . . . . . . . . . . 8 | 9.2. Packet TIMESTAMP TLV . . . . . . . . . . . . . . . . . . . 8 | |||
8.2. Message TIMESTAMP TLV . . . . . . . . . . . . . . . . . . 8 | 10. Message TLVs . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
9. Address Block TLVs . . . . . . . . . . . . . . . . . . . . . . 8 | 10.1. Message SIGNATURE TLV . . . . . . . . . . . . . . . . . . 8 | |||
9.1. Address Block SIGNATURE TLV . . . . . . . . . . . . . . . 9 | 10.2. Message TIMESTAMP TLV . . . . . . . . . . . . . . . . . . 8 | |||
9.2. Address Block TIMESTAMP TLV . . . . . . . . . . . . . . . 9 | 11. Address Block TLVs . . . . . . . . . . . . . . . . . . . . . . 9 | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 11.1. Address Block SIGNATURE TLV . . . . . . . . . . . . . . . 9 | |||
10.1. TLV Registrations . . . . . . . . . . . . . . . . . . . . 9 | 11.2. Address Block TIMESTAMP TLV . . . . . . . . . . . . . . . 9 | |||
10.1.1. Expert Review: Evaluation Guidelines . . . . . . . . 9 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
10.1.2. Packet TLV Type Registrations . . . . . . . . . . . . 9 | 12.1. TLV Registrations . . . . . . . . . . . . . . . . . . . . 9 | |||
10.1.3. Message TLV Type Registrations . . . . . . . . . . . 10 | 12.1.1. Expert Review: Evaluation Guidelines . . . . . . . . 10 | |||
10.1.4. Address Block TLV Type Registrations . . . . . . . . 11 | 12.1.2. Packet TLV Type Registrations . . . . . . . . . . . . 10 | |||
10.2. New IANA Registries . . . . . . . . . . . . . . . . . . . 12 | 12.1.3. Message TLV Type Registrations . . . . . . . . . . . 10 | |||
10.2.1. Expert Review: Evaluation Guidelines . . . . . . . . 12 | 12.1.4. Address Block TLV Type Registrations . . . . . . . . 11 | |||
10.2.2. Hash Function . . . . . . . . . . . . . . . . . . . . 12 | 12.2. New IANA Registries . . . . . . . . . . . . . . . . . . . 11 | |||
10.2.3. Cryptographic Algorithm . . . . . . . . . . . . . . . 13 | 12.2.1. Expert Review: Evaluation Guidelines . . . . . . . . 12 | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 12.2.2. Hash Function . . . . . . . . . . . . . . . . . . . . 12 | |||
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 14 | 12.2.3. Cryptographic Algorithm . . . . . . . . . . . . . . . 12 | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 13. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | |||
13.1. Normative References . . . . . . . . . . . . . . . . . . . 14 | 14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
13.2. Informative References . . . . . . . . . . . . . . . . . . 14 | 15. References . . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 15 | 15.1. Normative References . . . . . . . . . . . . . . . . . . . 13 | |||
A.1. Example of a Signed Message . . . . . . . . . . . . . . . 15 | 15.2. Informative References . . . . . . . . . . . . . . . . . . 14 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 17 | Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 14 | |||
A.1. Example of a Signed Message . . . . . . . . . . . . . . . 14 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 16 | ||||
1. Introduction | 1. Introduction | |||
This document: | This document specifies: | |||
o specifies two TLVs for carrying cryptographic signatures and | o two TLVs for carrying cryptographic signatures and timestamps in | |||
timestamps in packets, messages and address blocks as defined by | packets, messages and address blocks as defined by [RFC5444], | |||
[RFC5444], | ||||
o requests IANA allocations for these Packet, Message, and Address | o how cryptographic signatures are calculated, taking (for Message | |||
Block TLVs from the 0-223 Packet TLV range, the 0-127 Message TLV | TLVs) into account the mutable message header fields (<msg-hop- | |||
range and the 0-127 Address Block TLV range from [RFC5444], | limit> and <msg-hop-count>) where these fields are present in | |||
messages. | ||||
o describes how cryptographic signatures are calculated, taking (for | This document requests from IANA: | |||
Message TLVs) into account the mutable message header fields | ||||
(<msg-hop-limit> and <msg-hop-count>) where these fields are | ||||
present in messages, | ||||
o requests creation of two IANA registries for recording code points | o allocations for these Packet, Message, and Address Block TLVs from | |||
for hash function and signature calculation, respectively. | the 0-223 Packet TLV range, the 0-127 Message TLV range and the | |||
0-127 Address Block TLV range from [RFC5444], | ||||
This document does not stipulate how to sign or validate messages. A | o creation of two IANA registries for recording code points for hash | |||
specification of a routing protocol or routing protocol extension, | function and signature calculation, respectively. | |||
using the security representation of this document, MUST specify | ||||
appropriate interpretation of the TLVs. This document does | ||||
specifically not suggest specific cryptographic algorithms or hash | ||||
functions, but rather establishes IANA registries for such. | ||||
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]. | |||
Additionally, it defines the following terminology: | ||||
o Hash-Function | ||||
A hash function is an algorithm that takes a message of any | ||||
length as input and produces a fixed-length string as output. | ||||
Hash functions are used in cryptography for authentication and | ||||
message integrity. | ||||
o Object | ||||
An object, here, is any sequence of bytes that is used to | ||||
calculate the signature over (e.g. a packet, a message, an | ||||
address as defined in [RFC5444], a timestamp, or a combination | ||||
of these). | ||||
o Signature | ||||
A digital signature can be used to (i) authenticate the | ||||
originator and (ii) to assure that the object, which has been | ||||
signed, has not been altered in transit. In many cases, a | ||||
signature is calculated by encrypting a hash of the object, | ||||
which is the basic assumption of this specification. | ||||
o Timestamp | ||||
The timestamp indicates the time when the timestamp has been | ||||
created. If a timestamp is added to an object before signing | ||||
the object, this information can be useful to determine the | ||||
"freshness" of the signed object. "Old" objects can indicate | ||||
replayed objects. The minimal requirement for a timestamp is | ||||
to provide a logical representation of time (e.g. Lamport | ||||
time). Using timestamps may require - at least roughly - | ||||
synchronized clocks among the routers in the network. | ||||
3. Applicability Statement | 3. Applicability Statement | |||
The packet and message format defined in [RFC5444] accords MANET | MANET routing protocols using the format defined in [RFC5444] are | |||
routing protocols, using this format, the ability to carry additional | accorded the ability to carry additional information in control | |||
information in control messages, through inclusion of TLVs. | messages and packets, through inclusion of TLVs. Information so | |||
Information so included in a control message MAY be used by the | included MAY be used by a routing protocol, or by an extension of a | |||
routing protocol, or by an extension of the routing protocol, | routing protocol, according to its specification. | |||
according to its specification. | ||||
This document specifies how to include a cryptographic signature for | This document specifies how to include a cryptographic signature for | |||
a packet, message or address block by way of such TLVs. This | a packet, message or address by way of such TLVs. This document also | |||
document also specifies how to treat "mutable" fields (<msg-hop- | specifies how to treat "mutable" fields (<msg-hop-count> and <msg- | |||
count> and <msg-hop-limit>) in the message header when calculating | hop-limit>), if present, in the message header when calculating | |||
signatures, such that the resulting signature can be correctly | signatures, such that the resulting signature can be correctly | |||
verified by any recipient, and how to include this signature. A | verified by any recipient, and how to include this signature. | |||
MANET routing protocol, or an extension of a MANET routing protocol, | ||||
MAY use such included cryptographic signatures for, for example, | 4. Security Architecture | |||
rejecting messages where signature verification fails. | ||||
Basic MANET routing protocol specifications are often "oblivious to | Basic MANET routing protocol specifications are often "oblivious to | |||
security", however have a clause allowing a control message to be | security", however have a clause allowing a control message to be | |||
rejected as "badly formed" prior to it being processed or forwarded. | rejected as "badly formed" prior to it being processed or forwarded. | |||
Protocols such as [NHDP] and [OLSRv2] recognize external reasons | Protocols such as [NHDP] and [OLSRv2] recognize external reasons | |||
(such as failure to verify a signature) as being reasons for | (such as failure to verify a signature) for rejecting a message as | |||
rejecting a message as "badly formed", and therefore "invalid for | "badly formed", and therefore "invalid for processing". This | |||
processing". This architecture is a result of the observation that | architecture is a result of the observation that with respect to | |||
with respect to security in MANETs, "one size rarely fits all" and | security in MANETs, "one size rarely fits all" and that MANET routing | |||
that MANET routing protocol deployment domains have varying security | protocol deployment domains have varying security requirements | |||
requirements ranging from "unbreakable" to "virtually none". The | ranging from "unbreakable" to "virtually none". The virtue of this | |||
virtue of this approach is that MANET routing protocol specifications | approach is that MANET routing protocol specifications (and | |||
(and implementations) can remain "generic", with extensions providing | implementations) can remain "generic", with extensions providing | |||
proper deployment-domain specific security mechanisms. | proper deployment-domain specific security mechanisms. | |||
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 Security-oblivious MANET routing protocol specifications, with a | |||
clause allowing an extension to reject a message (prior to | clause allowing an extension to reject a message (prior to | |||
processing/forwarding) as "badly formed". | processing/forwarding) as "badly formed". | |||
o MANET routing protocol security extensions, rejecting messages as | o MANET routing protocol security extensions, rejecting messages as | |||
"badly formed", as appropriate for a given deployment-domain | "badly formed", as appropriate for a given deployment-domain | |||
specific security requirement. | specific security requirement. | |||
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 security extensions. | specification of such MANET routing protocol security extensions. | |||
This document addresses the last of these issues, by specifying a | This document addresses the last of these issues, by specifying a | |||
common exchange format for cryptographic signatures. This document | common exchange format for cryptographic signatures, making | |||
also makes reservations from within the Packet TLV, Message TLV and | reservations from within the Packet TLV, Message TLV and Address | |||
Address Block TLV registries of [RFC5444], to be used (and shared) | Block TLV registries of [RFC5444], to be used (and shared) among | |||
among MANET routing protocol security extensions. Finally, this | MANET routing protocol security extensions, establishing two IANA | |||
document establishes two IANA registries for code-points for hash | registries for code-points for hash functions and cryptographic | |||
functions and cryptographic algorithms for use by protocols adhering | functions adhering to [RFC5444]. | |||
to [RFC5444]. | ||||
With respect to [RFC5444], this document: | With respect to [RFC5444], this document: | |||
o is intended to be used in the non-normative, but intended, mode of | o is intended to be used in the non-normative, but intended, mode of | |||
use of [RFC5444] as described in its Appendix B. | use of [RFC5444] as described in its Appendix B. | |||
o is a specific example of the Security Considerations section of | o is a specific example of the Security Considerations section of | |||
[RFC5444] (the authentication part). | [RFC5444] (the authentication part). | |||
4. Protocol Overview and Functioning | 5. Protocol Overview and Functioning | |||
This specification does not describe a protocol, nor does it mandate | This specification does not describe a protocol, nor does it mandate | |||
specific router or protocol behavior. It represents a purely | specific router or protocol behavior. It represents a purely | |||
syntactical representation of security related information for use | syntactical representation of security related information for use | |||
with [RFC5444] messages and packets, as well as establishes IANA | with [RFC5444] addresses, messages and packets, as well as | |||
registrations and registries. | establishes IANA registrations and registries. | |||
5. General Signature TLV Structure | 6. Imported TLV Fields | |||
In this specification, the following TLV fields from [RFC5444] are | ||||
used: | ||||
<msg-hop-limit> - hop limit of a message, as specified in Section | ||||
5.2 of [RFC5444]. | ||||
<msg-hop-count> - hop count of a message, as specified in Section | ||||
5.2 of [RFC5444]. | ||||
<length> - length of a TLV in octets, as specified in Section 5.4.1 | ||||
of [RFC5444]. | ||||
7. General Signature TLV Structure | ||||
The following data structure allows representation of a cryptographic | The following data structure allows representation of a cryptographic | |||
signature, including specification of the appropriate hash function | signature, including specification of the appropriate hash function | |||
and cryptographic algorithm used for calculating the signature. This | and cryptographic function used for calculating the signature. This | |||
<signature> data structure is specified, using the regular expression | <signature> data structure is specified, using the regular expression | |||
syntax of [RFC5444], as: | syntax of [RFC5444], as: | |||
<signature> := <hash-function> | <signature> := <hash-function> | |||
<cryptographic-algorithm> | <cryptographic-function> | |||
<key-index> | ||||
<signature-value> | <signature-value> | |||
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-algorithm> is an 8-bit unsigned integer field | <cryptographic-function> is an 8-bit unsigned integer field | |||
specifying the cryptographic algorithm. | specifying the cryptographic function. | |||
<key-index> is an 8-bit unsigned integer field specifying the key | ||||
index of the key which was used to sign the message, which allows | ||||
unique identification of different keys with the same originator. | ||||
It is the responsibility of each key originator to make sure that | ||||
actively used keys that it issues have distinct key indices and | ||||
that all key indices have a value unequal to 0x00. Value 0x00 is | ||||
reserved for a pre-installed, shared key. | ||||
<signature-value> is an unsigned integer field, whose length is | <signature-value> is an unsigned integer field, whose length is | |||
<tlv-length>-2, and which contains the cryptographic signature. | <length>-2, and which contains the cryptographic signature. | |||
The basic version of this TLV assumes that calculating the signature | The basic version of this TLV assumes that calculating the signature | |||
can be decomposed into: | can be decomposed into: | |||
signature-value = cryptographic-function(hash-function(message)) | signature-value = cryptographic-function(hash-function(content)) | |||
The hash function and the cryptographic algorithm correspond to the | The hash function and the cryptographic function correspond to the | |||
IANA registry in the two registries set up by this specification, see | entries in two IANA registries, set up by this specification in | |||
Section 10. | Section 12. | |||
5.1. Rationale | 7.1. Rationale | |||
The rationale for separating the hash function and the cryptographic | The rationale for separating the hash function and the cryptographic | |||
algorithm 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 TLV type extension - is twofold: First, if | single octet - possibly as TLV type extension - is twofold: First, if | |||
further hash functions or cryptographic algorithms are added in the | further hash functions or cryptographic functions are added in the | |||
future, the number space might not remain continuous. More | future, the number space might not remain continuous. More | |||
importantly, the number space of 256 possible combinations would be | importantly, the number space of possible combinations would be | |||
rapidly exhausted: 16 different hash functions and 16 different | rapidly exhausted. As new or improved cryptographic mechanism are | |||
cryptographic algorithms would lead to exhaustion. As new or | continuously being developed and introduced, this format should be | |||
improved cryptographic mechanism are continuously being developed and | able to accommodate such for the foreseeable future. | |||
introduced, this format should be able to accommodate such for the | ||||
foreseeable future. | ||||
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 signature in the TLV is the following: Before being | cryptographic signature in the TLV is, that before being able to | |||
able to to validate a cryptographic signature, routers have to | validate a cryptographic signature, routers have to exchange or | |||
exchange keys (e.g. public keys). Any additional parameters can be | acquire keys (e.g. public keys). Any additional parameters can be | |||
exchanged together with the keys in this bootstrap process. It is | provided together with the keys in that bootstrap process. It is | |||
therefore not necessary, and would even entail an extra overhead, to | therefore not necessary, and would even entail an extra overhead, to | |||
transmit the parameters within every message. One inherently | transmit the parameters within every message. One inherently | |||
included parameter is the length of the signature, which is tlv- | included parameter is the length of the signature, which is <length> | |||
length - 2 and which depends on the choice of the cryptographic | - 2 and which depends on the choice of the cryptographic function. | |||
algorithm. | ||||
6. General Timestamp TLV Structure | 8. General Timestamp TLV Structure | |||
The following data structure allows the representation of a | The following data structure allows the representation of a | |||
timestamp. This <timestamp> data structure is specified as: | timestamp. This <timestamp> data structure is specified as: | |||
<timestamp> := <time-value> | <timestamp> := <time-value> | |||
where: | where: | |||
<time-value> is an unsigned integer field, whose length is <tlv- | <time-value> is an unsigned integer field, whose length is <length>, | |||
length>, and which contains the timestamp. The value of this | and which contains the timestamp. The value of this variable is | |||
variable is to be interpreted by the routing protocol as specified | to be interpreted by the routing protocol as specified by the type | |||
by the type extension of the Timestamp TLV (refer to Table 1). | extension of the Timestamp TLV, see Section 12. | |||
A timestamp is essentially "freshness information". As such, its | A timestamp is essentially "freshness information". As such, its | |||
setting and interpretation is to be determined by the routing | setting and interpretation is to be determined by the routing | |||
protocol (or the extension to a routing protocol) that uses it, and | protocol (or the extension to a routing protocol) that uses it, and | |||
may e.g. correspond to a UNIX-timestamp, GPS timestamp or a simple | may e.g. correspond to a UNIX-timestamp, GPS timestamp or a simple | |||
sequence number. This is out of the scope of this specification. | sequence number. | |||
7. Packet TLVs | 9. Packet TLVs | |||
Two Packet TLVs are defined, for including the cryptographic | Two Packet TLVs are defined, for including the cryptographic | |||
signature of a packet, and for including the timestamp indicating the | signature of a packet, and for including the timestamp indicating the | |||
time at which the cryptographic signature was calculated. | time at which the cryptographic signature was calculated. | |||
7.1. Packet SIGNATURE TLV | 9.1. Packet SIGNATURE TLV | |||
A Packet SIGNATURE TLV is an example of a Signature TLV as described | A Packet SIGNATURE TLV is an example of a Signature TLV as described | |||
in Section 5. When calculating the <signature-value> for a Packet, | in Section 7. When calculating the <signature-value> for a Packet, | |||
the signature is calculated over the entire Packet, including the | the signature is calculated over the three fields <hash-function>, | |||
packet header, all Packet TLVs (other than Packet SIGNATURE TLVs) and | <cryptographic-function> and <key-index> (in that order), | |||
all included Messages and their message headers. | concatenated with the entire Packet, including the packet header, all | |||
Packet TLVs (other than Packet SIGNATURE TLVs) and all included | ||||
Messages and their message headers. | ||||
7.2. Packet TIMESTAMP TLV | The following considerations apply: | |||
o As packets defined in [RFC5444] are never forwarded by routers, it | ||||
is unnecessary to consider mutable fields (e.g. <msg-hop-count> | ||||
and <msg-hop-limit>), if present, when calculating the signature. | ||||
o any Packet SIGNATURE TLVs already present in the Packet TLV block | ||||
MUST be removed before calculating the signature, and the Packet | ||||
TLV block size MUST be recalculated accordingly. The TLVs can be | ||||
restored after having calculated the signature value. | ||||
The rationale for removing any Packet SIGNATURE TLV already present | ||||
prior to calculating the signature, is that several signatures may be | ||||
added to the same packet, e.g., using different signature functions. | ||||
9.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 6. If a packet contains a TIMESTAMP TLV and a SIGNATURE | in Section 8. If a packet contains a TIMESTAMP TLV and a SIGNATURE | |||
TLV, the TIMESTAMP TLV SHOULD be added to the packet before the | TLV, the TIMESTAMP TLV SHOULD be added to the packet before any | |||
SIGNATURE TLV, in order that it be included in the calculation of the | SIGNATURE TLV, in order that it be included in the calculation of the | |||
signature. | signature. | |||
8. Message TLVs | 10. Message TLVs | |||
Two Message TLVs are defined, for including the cryptographic | Two Message TLVs are defined, for including the cryptographic | |||
signature of a message, and for including the timestamp indicating | signature of a message, and for including the timestamp indicating | |||
the time at which the cryptographic signature was calculated. | the time at which the cryptographic signature was calculated. | |||
8.1. Message SIGNATURE TLV | 10.1. Message SIGNATURE TLV | |||
A Message SIGNATURE TLV is an example of a Signature TLV as described | A Message SIGNATURE TLV is an example of a Signature TLV as described | |||
in Section 5. When determining the <signature-value> for a message, | in Section 7. When determining the <signature-value> for a message, | |||
the signature is calculated over the entire message with the | the signature is calculated over the three fields <hash-function>, | |||
following considerations: | <cryptographic-function>, and <key-index> (in that order), | |||
concatenated with the entire message with the following | ||||
considerations: | ||||
o the fields <msg-hop-limit> and <msg-hop-count> MUST be both | o the fields <msg-hop-limit> and <msg-hop-count>, if present, MUST | |||
assumed to have the value 0 (zero). | both be assumed to have the value 0 (zero) when calculating the | |||
signature. | ||||
o all Message SIGNATURE TLVs MUST be removed before calculating the | o any Message SIGNATURE TLVs already present in the Message TLV | |||
signature, and the message size as well as the Message TLV block | block MUST be removed before calculating the signature, and the | |||
size MUST be recalculated accordingly. The TLVs can be restored | message size as well as the Message TLV block size MUST be | |||
after having calculated the signature value. | recalculated accordingly. The TLVs can be restored after having | |||
calculated the signature value. | ||||
8.2. Message TIMESTAMP TLV | The rationale for removing any Message SIGNATURE TLV already present | |||
prior to calculating the signature, is that several signatures may be | ||||
added to the same message, e.g., using different signature functions. | ||||
10.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 6. If a message contains a TIMESTAMP TLV and a SIGNATURE | in Section 8. If a message contains a TIMESTAMP TLV and a SIGNATURE | |||
TLV, the TIMESTAMP TLV SHOULD be added to the message before the | TLV, the TIMESTAMP TLV SHOULD be added to the message before the | |||
SIGNATURE TLV, in order that it be included in the calculation of the | SIGNATURE TLV, in order that it be included in the calculation of the | |||
signature. | signature. | |||
9. Address Block TLVs | 11. Address Block TLVs | |||
Two Address Block TLVs are defined, for associating a cryptographic | Two Address Block TLVs are defined, for associating a cryptographic | |||
signature to an address, and for including the timestamp indicating | signature to an address, and for including the timestamp indicating | |||
the time at which the cryptographic signature was calculated. | the time at which the cryptographic signature was calculated. | |||
9.1. Address Block SIGNATURE TLV | 11.1. Address Block SIGNATURE TLV | |||
An Address Block SIGNATURE TLV is an example of a Signature TLV as | An Address Block SIGNATURE TLV is an example of a Signature TLV as | |||
described in Section 5. The signature can be calculated over any | described in Section 7. The signature is calculated over the three | |||
object, including, for example, the address to which this TLV is | fields <hash-function>, <cryptographic-function>, and <key-index> (in | |||
associated to. | that order), concatenated with the address, concatenated with any | |||
other values, for example, any other TLV value that is associated | ||||
with that address. A routing protocol or routing protocol extension | ||||
using Address Block SIGNATURE TLVs MUST specify how to include any | ||||
such concatenated attribute of the address in the verification | ||||
process of the signature. | ||||
9.2. Address Block TIMESTAMP TLV | 11.2. Address Block TIMESTAMP TLV | |||
An Address Block TIMESTAMP TLV is an example of a Timestamp TLV as | An Address Block TIMESTAMP TLV is an example of a Timestamp TLV as | |||
described in Section 6. If both a TIMESTAMP TLV and a SIGNATURE TLV | described in Section 8. If both a TIMESTAMP TLV and a SIGNATURE TLV | |||
are associated with an address, the timestamp value should be | are associated with an address, the timestamp value should be | |||
considered when calculating the value of the signature. | considered when calculating the value of the signature. | |||
10. IANA Considerations | 12. IANA Considerations | |||
10.1. TLV Registrations | This section specifies requests to IANA. | |||
12.1. TLV Registrations | ||||
This specification defines: | This specification defines: | |||
o two Packet TLV types which must be allocated from the 0-223 range | o two Packet TLV types which must be allocated from the 0-223 range | |||
of the "Assigned Packet TLV Types" repository of [RFC5444] as | of the "Assigned Packet TLV Types" repository of [RFC5444] as | |||
specified in Table 1, | specified in Table 1, | |||
o two Message TLV types which must be allocated from the 0-127 range | o two Message TLV types which must be allocated from the 0-127 range | |||
of the "Assigned Message TLV Types" repository of [RFC5444] as | of the "Assigned Message TLV Types" repository of [RFC5444] as | |||
specified in Table 2, | specified in Table 2, | |||
o and two Address Block TLV types which must be allocated from the | o and two Address Block TLV types which must be allocated from the | |||
0-127 range of the "Assigned Address Block TLV Types" repository | 0-127 range of the "Assigned Address Block TLV Types" repository | |||
of [RFC5444] as specified in Table 3. | of [RFC5444] as specified in Table 3. | |||
This specification requests: | ||||
o set up of type extension registries for these TLV types. | ||||
IANA is requested to assign the same numerical value to the Packet | IANA is requested to assign the same numerical value to the Packet | |||
TLV, Message TLV and Address Block TLV types with the same name. | TLV, Message TLV and Address Block TLV types with the same name. | |||
10.1.1. Expert Review: Evaluation Guidelines | 12.1.1. Expert Review: Evaluation Guidelines | |||
For the registries for TLV type extensions where an Expert Review is | For the registries for TLV type extensions where an Expert Review is | |||
required, the designated expert SHOULD take the same general | required, the designated expert SHOULD take the same general | |||
recommendations into consideration as are specified by [RFC5444]. | recommendations into consideration as are specified by [RFC5444]. | |||
10.1.2. Packet TLV Type Registrations | For the Timestamp TLV, the same type extensions for all Packet, | |||
Message and Address TLVs should be numbered identically. | ||||
12.1.2. Packet TLV Type Registrations | ||||
The Packet TLVs as specified in Table 1 must be allocated from the | The Packet TLVs as specified in Table 1 must be allocated from the | |||
"Packet TLV Types" namespace of [RFC5444]. | "Packet TLV Types" namespace of [RFC5444]. | |||
+-----------+------+-----------+------------------------------------+ | +-----------+------+-----------+------------------------------------+ | |||
| Name | Type | Type | Description | | | Name | Type | Type | Description | | |||
| | | Extension | | | | | | Extension | | | |||
+-----------+------+-----------+------------------------------------+ | +-----------+------+-----------+------------------------------------+ | |||
| SIGNATURE | TBD3 | 0 | Signature of a packet | | | SIGNATURE | TBD3 | 0 | Signature of a packet | | |||
| | | 1-223 | Expert Review | | | | | 1-223 | Expert Review | | |||
| | | 224-255 | Experimental Use | | | | | 224-255 | Experimental Use | | |||
| TIMESTAMP | TBD4 | 0 | Unsigned timestamp of arbitrary | | | TIMESTAMP | TBD4 | 0 | Unsigned timestamp of arbitrary | | |||
| | | | length, given by the tlv-length | | | | | | length, given by the TLV length | | |||
| | | | field. The timestamp is assumed to | | | | | | field. The MANET routing protocol | | |||
| | | | increase strictly monotonously by | | | | | | has to define how to interpret | | |||
| | | | steps of 1. The MANET routing | | | | | | this timestamp | | |||
| | | | protocol has to define how to | | | | | 1-223 | Expert Review | | |||
| | | | interpret this timestamp | | ||||
| | | 1 | Unsigned 32-bit timestamp as | | ||||
| | | | specified in [POSIX] | | ||||
| | | 2 | NTP timestamp format as defined in | | ||||
| | | | [RFC4330] | | ||||
| | | 3 | Signed timestamp of arbitrary | | ||||
| | | | length with no constraints such as | | ||||
| | | | monotonicity. In particular, it | | ||||
| | | | may represent any random value | | ||||
| | | 4-223 | Expert Review | | ||||
| | | 224-255 | Experimental Use | | | | | 224-255 | Experimental Use | | |||
+-----------+------+-----------+------------------------------------+ | +-----------+------+-----------+------------------------------------+ | |||
Table 1: Packet TLV types | Table 1: Packet TLV types | |||
10.1.3. Message TLV Type Registrations | 12.1.3. Message TLV Type Registrations | |||
The Message TLVs as specified in Table 2 must be allocated from the | The Message TLVs as specified in Table 2 must be allocated from the | |||
"Message TLV Types" namespace of [RFC5444]. | "Message TLV Types" namespace of [RFC5444]. | |||
+-----------+------+-----------+------------------------------------+ | +-----------+------+-----------+------------------------------------+ | |||
| Name | Type | Type | Description | | | Name | Type | Type | Description | | |||
| | | Extension | | | | | | Extension | | | |||
+-----------+------+-----------+------------------------------------+ | +-----------+------+-----------+------------------------------------+ | |||
| SIGNATURE | TBD1 | 0 | Signature of a message | | | SIGNATURE | TBD1 | 0 | Signature of a message | | |||
| | | 1-223 | Expert Review | | | | | 1-223 | Expert Review | | |||
| | | 224-255 | Experimental Use | | | | | 224-255 | Experimental Use | | |||
| TIMESTAMP | TBD2 | 0 | Unsigned timestamp of arbitrary | | | TIMESTAMP | TBD2 | 0 | Unsigned timestamp of arbitrary | | |||
| | | | length, given by the tlv-length | | | | | | length, given by the TLV length | | |||
| | | | field. The timestamp is assumed to | | | | | | field. | | |||
| | | | increase strictly monotonously by | | | | | 1-223 | Expert Review | | |||
| | | | steps of 1. The MANET routing | | ||||
| | | | protocol has to define how to | | ||||
| | | | interpret this timestamp | | ||||
| | | 1 | Unsigned 32-bit timestamp as | | ||||
| | | | specified in [POSIX] | | ||||
| | | 2 | NTP timestamp format as defined in | | ||||
| | | | [RFC4330] | | ||||
| | | 3 | Signed timestamp of arbitrary | | ||||
| | | | length with no constraints such as | | ||||
| | | | monotonicity. In particular, it | | ||||
| | | | may represent any random value | | ||||
| | | 4-223 | Expert Review | | ||||
| | | 224-255 | Experimental Use | | | | | 224-255 | Experimental Use | | |||
+-----------+------+-----------+------------------------------------+ | +-----------+------+-----------+------------------------------------+ | |||
Table 2: Message TLV types | Table 2: Message TLV types | |||
10.1.4. Address Block TLV Type Registrations | 12.1.4. Address Block TLV Type Registrations | |||
The Address Block TLVs as specified in Table 3 must be allocated from | The Address Block TLVs as specified in Table 3 must be allocated from | |||
the "Address Block TLV Types" namespace of [RFC5444]. | the "Address Block TLV Types" namespace of [RFC5444]. | |||
+-----------+------+-----------+------------------------------------+ | +-----------+------+-----------+------------------------------------+ | |||
| Name | Type | Type | Description | | | Name | Type | Type | Description | | |||
| | | Extension | | | | | | Extension | | | |||
+-----------+------+-----------+------------------------------------+ | +-----------+------+-----------+------------------------------------+ | |||
| SIGNATURE | TBD1 | 0 | Signature of an object (e.g. an | | | SIGNATURE | TBD1 | 0 | Signature of an object (e.g. an | | |||
| | | | address) | | | | | | address) | | |||
| | | 1-223 | Expert Review | | | | | 1-223 | Expert Review | | |||
| | | 224-255 | Experimental Use | | | | | 224-255 | Experimental Use | | |||
| TIMESTAMP | TBD2 | 0 | Unsigned timestamp of arbitrary | | | TIMESTAMP | TBD2 | 0 | Unsigned timestamp of arbitrary | | |||
| | | | length, given by the tlv-length | | | | | | length, given by the TLV length | | |||
| | | | field. The timestamp is assumed to | | | | | | field. | | |||
| | | | increase strictly monotonously by | | | | | 1-223 | Expert Review | | |||
| | | | steps of 1. The MANET routing | | ||||
| | | | protocol has to define how to | | ||||
| | | | interpret this timestamp | | ||||
| | | 1 | Unsigned 32-bit timestamp as | | ||||
| | | | specified in [POSIX] | | ||||
| | | 2 | NTP timestamp format as defined in | | ||||
| | | | [RFC4330] | | ||||
| | | 3 | Signed timestamp of arbitrary | | ||||
| | | | length with no constraints such as | | ||||
| | | | monotonicity. In particular, it | | ||||
| | | | may represent any random value | | ||||
| | | 4-223 | Expert Review | | ||||
| | | 224-255 | Experimental Use | | | | | 224-255 | Experimental Use | | |||
+-----------+------+-----------+------------------------------------+ | +-----------+------+-----------+------------------------------------+ | |||
Table 3: Address Block TLV types | Table 3: Address Block TLV types | |||
10.2. New IANA Registries | 12.2. New IANA Registries | |||
This document introduces three namespaces that have been registered: | This document introduces three namespaces that have been registered: | |||
Packet TLV Types, Message TLV Types, and Address Block TLV Types. | Packet TLV Types, Message TLV Types, and Address Block TLV Types. | |||
This section specifies IANA registries for these namespaces and | This section specifies IANA registries for these namespaces and | |||
provides guidance to the Internet Assigned Numbers Authority | provides guidance to the Internet Assigned Numbers Authority | |||
regarding registrations in these namespaces. | regarding registrations in these namespaces. | |||
The following terms are used with the meanings defined in [BCP26]: | The following terms are used with the meanings defined in [BCP26]: | |||
"Namespace", "Assigned Value", "Registration", "Unassigned", | "Namespace", "Assigned Value", "Registration", "Unassigned", | |||
"Reserved", "Hierarchical Allocation", and "Designated Expert". | "Reserved", "Hierarchical Allocation", and "Designated Expert". | |||
The following policies are used with the meanings defined in [BCP26]: | The following policies are used with the meanings defined in [BCP26]: | |||
"Private Use", "Expert Review", and "Standards Action". | "Private Use", "Expert Review", and "Standards Action". | |||
10.2.1. Expert Review: Evaluation Guidelines | 12.2.1. Expert Review: Evaluation Guidelines | |||
For the registries for the following tables where an Expert Review is | For the registries for the following tables where an Expert Review is | |||
required, the designated expert SHOULD take the same general | required, the designated expert SHOULD take the same general | |||
recommendations into consideration as are specified by [RFC5444]. | recommendations into consideration as are specified by [RFC5444]. | |||
10.2.2. Hash Function | 12.2.2. Hash Function | |||
IANA is requested to create a new registry for the hash functions | IANA is requested to create a new registry for the hash functions | |||
that can be used when creating a signature. The initial assignments | that can be used when creating a signature. The initial assignments | |||
and allocation policies are specified in Table 4. | and allocation policies are specified in Table 4. | |||
+-------------+-----------+-----------------------------------------+ | +-------------+-----------+-----------------------------------------+ | |||
| Hash | Algorithm | Description | | | Hash | Algorithm | Description | | |||
| function | | | | | function | | | | |||
| value | | | | | value | | | | |||
+-------------+-----------+-----------------------------------------+ | +-------------+-----------+-----------------------------------------+ | |||
| 0 | none | The "identity function": the hash value | | | 0 | none | The "identity function": the hash value | | |||
| | | of an object is the object itself | | | | | of an object is the object itself | | |||
| 1 | MD5 | The hash function as specified in | | | 1-223 | | Expert Review | | |||
| | | [RFC1321] | | ||||
| 2 | SHA1 | The hash function as specified in | | ||||
| | | [RFC3174] | | ||||
| 3 | SHA256 | The hash function as specified in | | ||||
| | | [SHA256] | | ||||
| 4-223 | | Expert Review | | ||||
| 224-255 | | Experimental Use | | | 224-255 | | Experimental Use | | |||
+-------------+-----------+-----------------------------------------+ | +-------------+-----------+-----------------------------------------+ | |||
Table 4: Hash-Function registry | Table 4: Hash-Function registry | |||
10.2.3. Cryptographic Algorithm | 12.2.3. Cryptographic Algorithm | |||
IANA is requested to create a new registry for the cryptographic | IANA is requested to create a new registry for the cryptographic | |||
algorithm. Initial assignments and allocation policies are specified | function. Initial assignments and allocation policies are specified | |||
in Table 5. | in Table 5. | |||
+-----------------+-----------+-------------------------------------+ | +----------------+-----------+--------------------------------------+ | |||
| Cryptographic | Algorithm | Description | | | Cryptographic | Algorithm | Description | | |||
| algorithm value | | | | | function value | | | | |||
+-----------------+-----------+-------------------------------------+ | +----------------+-----------+--------------------------------------+ | |||
| 0 | none | The "identity function": the value | | | 0 | none | The "identity function": the value | | |||
| | | of an encrypted hash is the hash | | | | | of an encrypted hash is the hash | | |||
| | | itself | | | | | itself | | |||
| 1 | RSA | RSA as specified in [RFC2437] | | | 1-223 | | Expert Review | | |||
| 2 | DSA | DSA as specified in [DSA] | | | 224-255 | | Experimental Use | | |||
| 3 | HMAC | HMAC as specified in [RFC2104] | | +----------------+-----------+--------------------------------------+ | |||
| 4 | 3DES | 3DES as specified in [3DES] | | ||||
| 5 | AES | AES as specified in [AES] | | ||||
| 6-223 | | Expert Review | | ||||
| 224-255 | | Experimental Use | | ||||
+-----------------+-----------+-------------------------------------+ | ||||
Table 5: Cryptographic algorithm registry | Table 5: Cryptographic function registry | |||
11. Security Considerations | 13. Security Considerations | |||
This document does not specify a protocol itself. However, it | This document does not specify a protocol itself. However, it | |||
provides a syntactical component for cryptographic signatures of | provides a syntactical component for cryptographic signatures of | |||
messages and packets as defined in [RFC5444]. It can be used to | messages and packets as defined in [RFC5444]. It can be used to | |||
address security issues of a protocol or extension that uses the | address security issues of a protocol or extension that uses the | |||
component specified in this document. As such, it has the same | component specified in this document. As such, it has the same | |||
security considerations as [RFC5444]. | security considerations as [RFC5444]. | |||
In addition, a protocol that includes this component MUST specify the | In addition, a protocol that includes this component MUST specify the | |||
usage as well as the security that is attained by the cryptographic | usage as well as the security that is attained by the cryptographic | |||
signatures of a message or a packet. | signatures of a message or a packet. | |||
As an example, a routing protocol that uses this component to reject | As an example, a routing protocol that uses this component to reject | |||
"badly formed" messages if a control message does not contain a valid | "badly formed" messages if a control message does not contain a valid | |||
signature, should indicate the security assumption that if the | signature, should indicate the security assumption that if the | |||
signature is valid, the message is considered valid. It also should | signature is valid, the message is considered valid. It also should | |||
indicate the security issues that are counteracted by this measure | indicate the security issues that are counteracted by this measure | |||
(e.g. link or identity spoofing) as well as the issues that are not | (e.g. link or identity spoofing) as well as the issues that are not | |||
counteracted (e.g. compromised keys). | counteracted (e.g. compromised keys). | |||
12. Acknowledgements | 14. Acknowledgements | |||
The authors would like to thank Jerome Milan (Ecole Polytechnique) | The authors would like to thank Jerome Milan (Ecole Polytechnique) | |||
for his advice as cryptographer. In addition, many thanks to Alan | for his advice as cryptographer. In addition, many thanks to Bo | |||
Cullen (BAE), Justin Dean (NRL), Christopher Dearlove (BAE), and | Berry (Cisco), Alan Cullen (BAE), Justin Dean (NRL), Christopher | |||
Henning Rogge (FGAN) for their constructive comments on the document. | Dearlove (BAE), Paul Lambert (Marvell), and Henning Rogge (FGAN) for | |||
their constructive comments on the document. | ||||
13. References | 15. References | |||
13.1. Normative References | 15.1. Normative References | |||
[BCP26] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [BCP26] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
IANA Considerations Section in RFCs", RFC 5226, BCP 26, | IANA Considerations Section in RFCs", RFC 5226, BCP 26, | |||
May 2008. | May 2008. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", RFC 2119, BCP 14, March 1997. | Requirement Levels", RFC 2119, BCP 14, March 1997. | |||
[RFC5444] Clausen, T., Dearlove, C., Dean, J., and C. Adjih, | [RFC5444] Clausen, T., Dearlove, C., Dean, J., and C. Adjih, | |||
"Generalized MANET Packet/Message Format", RFC 5444, | "Generalized MANET Packet/Message Format", RFC 5444, | |||
February 2009. | February 2009. | |||
13.2. Informative References | 15.2. Informative References | |||
[3DES] American National Standards Institute, "Triple Data | ||||
Encryption Algorithm Modes of Operation", ANSI X9.52-1998, | ||||
1998. | ||||
[AES] National Institute of Standards & Technology, "Advanced | ||||
Encryption Standard (AES)", FIPS 197, November 2001. | ||||
[DSA] National Institute of Standards & Technology, "Digital | ||||
Signature Standard", NIST, FIPS PUB 186, May 1994. | ||||
[NHDP] Clausen, T., Dean, J., and C. Dearlove, "MANET | [NHDP] Clausen, T., Dean, J., and C. Dearlove, "MANET | |||
Neighborhood Discovery Protocol (NHDP)", work in | Neighborhood Discovery Protocol (NHDP)", work in | |||
progress draft-ietf-manet-nhdp-12.txt, March 2010. | progress draft-ietf-manet-nhdp-14.txt, July 2010. | |||
[OLSRv2] Clausen, T., Dearlove, C., and P. Jacquet, "The Optimized | [OLSRv2] Clausen, T., Dearlove, C., and P. Jacquet, "The Optimized | |||
Link State Routing Protocol version 2", work in | Link State Routing Protocol version 2", work in | |||
progress draft-ietf-manet-olsrv2-11.txt, April 2010. | progress draft-ietf-manet-olsrv2-11.txt, April 2010. | |||
[POSIX] IEEE Computer Society, "1003.1-2008 Standard for | ||||
Information Technology - Portable Operating System | ||||
Interface (POSIX)", Base Specifications Issue 7, | ||||
December 2008. | ||||
[RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, | ||||
April 1992. | ||||
[RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- | ||||
Hashing for Message Authentication", RFC 2104, | ||||
February 1997. | ||||
[RFC2437] Kaliski, B. and J. Staddon, "PKCS #1: RSA Cryptography | ||||
Specifications Version 2.0", RFC 2437, October 1998. | ||||
[RFC3174] Eastlake, D. and P. Jones, "US Secure Hash Algorithm 1 | ||||
(SHA1)", RFC 3174, September 2001. | ||||
[RFC4330] Mills, D., "Simple Network Time Protocol (SNTP) Version 4 | ||||
for IPv4, IPv6 and OSI", RFC 4330, January 2006. | ||||
[SHA256] National Institute of Standards and Technology, "Secure | ||||
Hash Algorithm", NIST FIPS 180-2, August 2002. | ||||
Appendix A. Examples | Appendix A. Examples | |||
A.1. Example of a Signed Message | A.1. Example of a Signed Message | |||
The sample message depicted in Figure 1 is taken from the appendix of | The sample message depicted in Figure 1 is derived from the appendix | |||
[RFC5444]. However, a SIGNATURE Message TLV has been added. It is | of [RFC5444]. A SIGNATURE Message TLV has been added, with the value | |||
assumed that the SIGNATURE TLV type is lesser than the TLV type of | representing a 15 octet long signature of the whole message. | |||
the second message TLV (i.e. it comes first in the order of Message | ||||
TLVs). The TLV value represents a 16 octet long signature of the | ||||
whole message. | ||||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 0 1 0 0 0| Packet Sequence Number | Message Type | | |0 0 0 0 1 0 0 0| Packet Sequence Number | Message Type | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|1 1 1 1 0 0 1 1|0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0| Orig Addr | | |1 1 1 1 0 0 1 1|0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0| Orig Addr | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Originator Address (cont) | Hop Limit | | | Originator Address (cont) | Hop Limit | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Hop Count | Message Sequence Number |0 0 0 0 0 0 0 0| | | Hop Count | Message Sequence Number |0 0 0 0 0 0 0 0| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 1 1 1 1 0| SIGNATURE |0 0 0 1 0 0 0 0|0 0 0 1 0 0 1 0| | |0 0 0 1 1 1 1 0| SIGNATURE |0 0 0 1 0 0 0 0|0 0 0 1 0 0 1 0| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Hash Func | Crypto Func | Signature Value | | | Hash Func | Crypto Func | Key Index | Sign. Value | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Signature Value (cont) | | | Signature Value (cont) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Signature Value (cont) | | | Signature Value (cont) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Signature Value (cont) | | | Signature Value (cont) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Signature Value (cont) | TLV Type |0 0 0 1 0 0 0 0| | | Signature Value (cont) | TLV Type |0 0 0 1 0 0 0 0| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 0 0 1 1 0| Value | | |0 0 0 0 0 1 1 0| Value | | |||
End of changes. 81 change blocks. | ||||
311 lines changed or deleted | 249 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/ |