<?xml version="1.0" ?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc rfcedstyle="yes"?>
<?rfc symrefs="yes"?>
<?rfc compact="yes"?>

<rfc ipr="trust200902" category="std" docName="draft-herberg-manet-rfc6622-bis-00" obsoletes="6622">

  <front>
    <title abbrev="ICV and Timestamp TLVs for MANETs">Integrity Check Value and
Timestamp TLV Definitions for&nbsp;Mobile&nbsp;Ad&nbsp;Hoc&nbsp;Networks&nbsp;(MANETs)</title>

    <author fullname="Ulrich Herberg" initials="U" surname="Herberg">
      <organization>Fujitsu Laboratories of America</organization>
      <address>
        <postal>
          <street>1240 E. Arques Ave.</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94085</code>
          <country>USA</country>
        </postal>
        <email>ulrich@herberg.name</email>
        <uri>http://www.herberg.name/</uri>
      </address>
    </author>

    <author fullname="Thomas Heide Clausen" initials="T" surname="Clausen">
      <organization>LIX, Ecole Polytechnique</organization>
      <address>
         <postal>
          <street></street>
          <city>91128 Palaiseau Cedex</city>
          <country>France</country>
        </postal>
        <phone>+33 6 6058 9349</phone>
        <email>T.Clausen@computer.org</email>
        <uri>http://www.thomasclausen.org/</uri>
      </address>
    </author>

    <author initials="C.M." surname="Dearlove" fullname="Christopher Dearlove">
      <organization>BAE Systems ATC</organization>
      <address>
        <phone>+44 1245 242194</phone>
        <email>chris.dearlove@baesystems.com</email>
        <uri>http://www.baesystems.com/</uri>
      </address>
    </author>
   
    <date month="February" year="2013"/>

    <workgroup>Mobile Ad hoc Networking (MANET)</workgroup>
    <keyword>MANET</keyword>

    <abstract>
      <t>
              This document extends and replaces RFC 6622. It describes general and
flexible TLVs for representing cryptographic Integrity Check Values (ICVs) (i.e.,
digital signatures or Message Authentication Codes (MACs)) as well as timestamps,
using the generalized Mobile Ad Hoc Network (MANET) packet/message format
defined in RFC 5444. It defines two Packet TLVs, two Message TLVs, and two
Address Block TLVs for affixing ICVs and timestamps to a packet, a message,
and an address, respectively.
      </t>
    </abstract>

  </front>

  <middle>
    <section title="Introduction">
      <t>
        This document, which extends and replaces <xref target="RFC6622"/>, specifies
        
        <list style="symbols">
                <t>
                Two TLVs for carrying Integrity Check Values (ICVs) and
timestamps in packets, messages, and address blocks as defined by <xref
target="RFC5444"/>.
                </t>

                <t>
                A generic framework for ICVs, accounting (for Message TLVs) for
mutable message header fields (&lt;msg-hop-limit&gt; and
&lt;msg&nbhy;hop&nbhy;count&gt;), where these fields are present in messages.
                </t>
        </list>
                </t>

                <t>
        This document describes, and updates where required, IANA registries
for recording code points for hash-functions, cryptographic functions, and
ICV calculations.
               </t>

               <t>

        Moreover, in <xref target="decomposition"/>, this document
defines the following:
        <list style="symbols">
                <t>
                One common method for generating ICVs as a cryptographic
function, calculated over the hash value of the content.
                </t>
        </list>
      </t>

    </section>

    <section title="Terminology" anchor="terminology">
      <t>
      The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
      "OPTIONAL" in this document are to be interpreted as described in 
      <xref target="RFC2119"/>.
      </t>

      <t>This document uses the terminology and notation defined in <xref
target="RFC5444"/>. In particular, the following TLV fields from <xref
target="RFC5444"/> are used in this specification:
        
                <list style="hanging">
                        <t hangText="&lt;msg-hop-limit&gt;"> is the hop limit of a message, as specified in Section&nbsp;5.2 of <xref target="RFC5444"/>.</t>
                        <t hangText="&lt;msg-hop-count&gt;"> is the hop count of a message, as specified in Section&nbsp;5.2 of <xref target="RFC5444"/>.</t>
                        <t hangText="&lt;length&gt;"> is the length of a TLV in octets, as specified in Section 5.4.1 of <xref target="RFC5444"/>.</t>
                </list>
                </t>        

      
    </section>

    <section title="Applicability Statement" anchor="applStatement">
                <t>
                      MANET routing protocols using the format defined in <xref
target="RFC5444"/> are accorded the ability to carry additional information in
control messages and packets, through the inclusion of TLVs. Information so
included MAY be used by a MANET routing protocol, or by an extension of a MANET
routing protocol, according to its specification.
                </t>
                <t>
                        This document specifies how to include an ICV for a
packet, a message, and addresses in address blocks within a message, by way of
such TLVs.  This document also specifies a) how to treat "mutable" fields,
specifically the &lt;msg-hop-count&gt; and &lt;msg-hop-limit&gt; fields, if
present in the message header when calculating ICVs, such that the resulting
ICV can be correctly verified by any recipient, and b) how to include this ICV.
                </t>
                <t>
                        This document describes a generic framework for
creating ICVs, and how to include these ICVs in TLVs. In <xref
target="decomposition"/>, an example method for calculating such ICVs is
given, using a cryptographic function over the hash value of the content.
                </t>
        </section>
        
        
        <section title="Security Architecture">
                <t>
                        Basic MANET routing protocol specifications are often
"oblivious to security"; however, they have a clause allowing a control
message to be rejected as "badly formed" or "insecure" prior to the message
being processed or
forwarded. MANET routing protocols such as the Neighborhood Discovery
Protocol (NHDP) <xref target="RFC6130"/> and the Optimized Link State Routing
Protocol version 2 <xref target="OLSRv2"/> recognize external reasons
(such as failure to verify an ICV)
for rejecting a message that would be considered "invalid for processing". This
architecture is a result of the observation that with respect to security in
MANETs, "one size rarely fits all" and that MANET routing protocol deployment
domains have varying security requirements ranging from "unbreakable" to
"virtually none". The virtue of this approach is that MANET routing protocol
specifications (and implementations) can remain "generic", with extensions
providing proper security mechanisms specific to a deployment domain.
                </t>
                <t>
                        The MANET routing protocol "security architecture", in
which this specification situates itself, can therefore be summarized as
follows:

                        <list style="symbols">
                                <t> 
                                        Security-oblivious MANET routing
protocol specifications, with a clause allowing an extension to reject a
message (prior to processing/forwarding) as "badly formed" or "insecure".
                                </t>
                                <t>
                                        MANET routing protocol security
extensions, rejecting messages as "badly formed" or "insecure", as appropriate
for a given security requirement specific to a deployment domain.
                                </t>
                                <t>
                                        Code points and an exchange format for
information, necessary for specification of such MANET routing protocol
security extensions.
                                </t>
                        </list>
                </t>
                <t>
                        This document addresses the last of the issues
listed above by
specifying a common exchange format for cryptographic ICVs, making reservations
from within the Packet TLV, Message TLV, and Address Block TLV registries of
<xref target="RFC5444"/>, to be used (and shared) among MANET routing protocol
security extensions.
                </t>        
                <t>
                        For the specific decomposition of an ICV into a
cryptographic function over a hash value (specified in <xref
target="decomposition"/>), this document reports two IANA registries for
code points for hash functions and cryptographic functions adhering to <xref
target="RFC5444"/>.
                </t>

                <t>
                        With respect to <xref target="RFC5444"/>, this
document is
                        <list style="symbols">
                                <t>Intended to be used in the non-normative,
but intended, mode of use described in Appendix B of <xref
target="RFC5444"/>.</t>
                                <t>A specific example of the Security
Considerations section of <xref target="RFC5444"/> (the authentication
part).</t>
                        </list>
                </t>
    </section>


    <section title="Overview and Functioning" anchor="overview">
      <t>              
              This document specifies a syntactical representation of
security-related information for use with <xref target="RFC5444"/> addresses,
messages, and packets, and also reports and updates IANA registrations of TLV
types and type extension registries for these TLV types.
      </t>
      <t>              
              Moreover, this document provides guidelines for how MANET routing
protocols and MANET routing protocol extensions using this specification
should treat ICV and Timestamp TLVs, and mutable fields in messages. This
specification does not represent a stand-alone protocol; MANET routing
protocols and MANET routing protocol extensions, using this specification, MUST
provide instructions as to how to handle packets, messages, and addresses with
security information, associated as specified in this document.
      </t>

      <t>
              This document reports previously assigned TLV types from the
registries defined for Packet, Message, and Address Block TLVs in <xref
target="RFC5444"/>. When a TLV type is assigned from one of these registries, a
registry for type extensions for that TLV type is created by IANA. This
document reports and updates these type extension registries, in order to
specify internal structure (and accompanying processing) of the &lt;value&gt;
field of a TLV.
      </t>
      <t>
                For example, and as defined in this document, an ICV TLV with
type extension = 0 specifies that the &lt;value&gt; field has no pre-defined
internal structure but is simply a sequence of octets. An ICV TLV with type
extension = 1 specifies that the &lt;value&gt; field has a pre-defined internal
structure and defines its interpretation. An ICV TLV with type extension = 2
specifies a modified version of this definition. (Specifically, with
type extension = 1 or type extension = 2, the &lt;value&gt;
field consists of a cryptographic operation over a hash value, with fields
indicating which hash function and cryptographic operation have been used;
this is specified in <xref target="decomposition"/>. The difference between
the two type extensions is that the ICV TLV with type extension = 2 also
protects the source address of the IP datagram carrying the packet,
message, or address block.)
          </t>
          <t>
                Other documents can request assignments for other type
extensions; if they do so, they MUST specify their internal structure (if any)
and interpretation.
      </t>

    </section>

        
        <section title="General ICV TLV Structure" anchor="ICVTLVformat">
                <t>
                   The value of the ICV TLV is
                </t>
                <figure>
                        <artwork>
   &lt;value&gt; := &lt;ICV-value&gt;
                        </artwork>
                </figure>
                
                <t>
                        where
                </t>
                
                <t>
                        <list style="hanging">
                                <t hangText="&lt;ICV-value&gt;"> 
                                        is a field, of &lt;length&gt; octets,
which contains the information to be interpreted by the ICV verification
process, as specified by the type extension. 
                                </t>
                        </list>
                </t>
                
                <t>
                        Note that this does not stipulate how to calculate the
&lt;ICV-value&gt; nor the internal structure thereof, if any; such information
MUST be specified by way of the type extension for the ICV TLV type.
See <xref target="IANA"/>. This document specifies three such type extensions --
one for ICVs without pre-defined structures, and two for ICVs constructed by
way of a cryptographic operation over a hash value.
                </t>
        </section>
                
        <section title="General Timestamp TLV Structure" anchor="timestampTLVformat">
                <t>
                   The value of the Timestamp TLV is
                </t>
                <figure>
        <artwork>
   &lt;value&gt; := &lt;time-value&gt;
        </artwork>
        </figure>
        <t>
   where
        <list style="hanging">
                <t hangText="&lt;time-value&gt;"> 
                        is an unsigned integer field, of length &lt;length&gt;,
which contains the timestamp.
                </t>
                
                <t>
                        Note that this does not stipulate how to calculate the
&lt;time&nbhy;value&gt; nor the internal structure thereof, if any; such information
MUST be specified by way of the type extension for the TIMESTAMP TLV type.
See <xref target="IANA"/>.
                </t>
        </list>
        
         A timestamp is essentially "freshness information".  As such, its
setting and interpretation are to be determined by the MANET routing protocol,
or MANET routing protocol extension, that uses the timestamp and can,
for example, correspond to a UNIX timestamp, GPS timestamp, or a simple
sequence number.
        </t>
          </section>
          
        <section title="Packet TLVs" anchor="packetICVs">
          <t>
                Two Packet TLVs are defined: one for including the
cryptographic ICV of a packet and one for including the timestamp
indicating the time at which the cryptographic ICV was calculated.
          </t>
         
          <section title="Packet ICV TLV" anchor="packetICVTLV">
                <t>
                        A Packet ICV TLV is an example of an ICV TLV as
described in <xref target="ICVTLVformat"/>.</t>
                        
                        <t>The following considerations apply:
                        <list style="symbols">
                                <t>
                                       Because packets as defined in <xref
target="RFC5444"/> are never forwarded by routers, no special considerations
are required regarding mutable fields (e.g., &lt;msg-hop-count&gt; and
&lt;msg-hop-limit&gt;), if present, when calculating the ICV.
                                </t>
                                <t>
                                        Any Packet ICV TLVs already present in
the Packet TLV block MUST be removed before calculating the ICV, and the Packet
TLV block size MUST be recalculated accordingly. Removed ICV TLVs MUST be
restored after having calculated the ICV value.
                                </t>
                        </list></t>
                        
                        <t>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 packet, e.g., using different ICV functions.</t>
                          
          </section>
        
          <section title="Packet TIMESTAMP TLV" anchor="packettimestampTLV">
                <t>
                        A Packet TIMESTAMP TLV is an example of a Timestamp TLV
as described in <xref target="timestampTLVformat"/>. If a packet contains a
TIMESTAMP TLV and an 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.
                </t>
          </section>
   </section>  
        
        
        <section title="Message TLVs" anchor="messageICVs">
          <t>
                Two Message TLVs are defined: one for including the
cryptographic ICV of a message and one for including the timestamp
indicating the time at which the cryptographic ICV was calculated.
          </t>
         

          <section title="Message ICV TLV" anchor="ICVTLV">
                <t>
                        A Message ICV TLV is an example of an ICV TLV as
described in <xref target="ICVTLVformat"/>. When determining the
&lt;ICV-value&gt; for a message, the following considerations MUST be applied:
                        <list style="symbols">
                                <t>
                                        The fields &lt;msg-hop-limit&gt; and
&lt;msg-hop-count&gt;, if present, MUST both be assumed to have the value 0
(zero) when calculating the ICV.
                                </t>
                                <t>
                                        Any Message ICV TLVs already present in
the Message TLV block MUST be removed before calculating the ICV, and the
message size as well as the Message TLV block size MUST be recalculated
accordingly. Removed ICV TLVs MUST be restored after having calculated the ICV
value.
                                </t>
                        </list>
                </t>
                
                <t>
                        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 message, e.g., using different ICV functions.
                </t>
        </section>

          <section title="Message TIMESTAMP TLV" anchor="timestampTLV">
                <t>
                        A Message TIMESTAMP TLV is an example of a Timestamp
TLV as described in <xref target="timestampTLVformat"/>. If a message contains
a TIMESTAMP TLV and an 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.
                </t>
          </section>
          
        </section>
        
        
        <section title="Address Block TLVs" anchor="addressblockICVs">
          <t>
                Two Address Block TLVs are defined: one for associating a
cryptographic ICV to an address and one for including the timestamp
indicating the time at which the cryptographic ICV was calculated.
          </t>
         

          <section title="Address Block ICV TLV" anchor="addressblockICVTLV">
                <t>
                        An Address Block ICV TLV is an example of an ICV TLV as
described in <xref target="ICVTLVformat"/>. The ICV is calculated over the
address, concatenated with any other values -- for example, any other Address
Block TLV &lt;value&gt; fields -- associated with that address. A MANET
routing protocol or MANET routing protocol extension using Address Block ICV
TLVs MUST specify how to include any such concatenated attribute of the address
in the verification process of the ICV. When determining the &lt;ICV&nbhy;value&gt;
for an address, the following consideration MUST be applied:

                        <list style="symbols">
                                <t>If other TLV values are concatenated with
the address for calculating the ICV, these TLVs MUST NOT be Address Block ICV
TLVs already associated with the address.
                                </t>
                        </list>

                          The rationale for not concatenating the address with
any ICV TLV values already associated with the address when calculating the ICV
is that several ICVs may be added to the same address, e.g., using different
ICV functions.
                </t>
          </section>
        
          <section title="Address Block TIMESTAMP TLV" anchor="addressblocktimestampTLV">
                <t>
                        An Address Block TIMESTAMP TLV is an example of a
Timestamp TLV as described in <xref target="timestampTLVformat"/>. If both a
TIMESTAMP TLV and an ICV TLV are associated with an address, the TIMESTAMP TLV
&lt;value&gt; MUST be covered when calculating the value of the ICV to be
contained in the ICV TLV value (i.e., concatenated with the associated address
and any other values as described in <xref target="addressblockICVTLV"/>).
                </t>
          </section>
   </section>
   

  <section title="ICV: Basic" anchor="simple">
        <t>
                The basic ICV, represented by way of an ICV TLV with type
extension = 0, is a simple bit-field containing the cryptographic ICV. This
assumes that the mechanism stipulating how ICVs are calculated and verified is
established outside of this specification, e.g., by way of administrative
configuration or external out-of-band signaling. Thus, the &lt;ICV-value&gt;,
when using type extension = 0, is
        </t>
                <figure>
                        <artwork>
   &lt;ICV-value&gt; := &lt;ICV-data&gt;
                        </artwork>
                </figure>

        <t>
                where
                <list style="hanging">
                        <t hangText="&lt;ICV-data&gt;"> 
                                is an unsigned integer field, of length
&lt;length&gt;, which contains the cryptographic ICV.
                        </t>
                </list>
        </t>
</section>

<section title="ICV: Cryptographic Function over a Hash Value" anchor="decomposition">

        <t>
                One common way of calculating an ICV is applying a
cryptographic function over a hash value of the content. This decomposition is
specified in this section, using either type extension = 1 or type extension = 2,
in the ICV TLVs.

        </t>

        <section title="General ICV TLV Structure">
                <t>
                   The following data structure allows representation of a
cryptographic ICV, including specification of the appropriate hash function and
cryptographic function used for calculating the ICV:
                </t>
                <figure>
                        <artwork>
                &lt;ICV-value&gt; := &lt;hash-function&gt;
                               &lt;cryptographic-function&gt;
                               &lt;key-id-length&gt;
                               &lt;key-id&gt;
                               &lt;ICV-data&gt;
                        </artwork>
                </figure>
                <t>
                where
                <list style="hanging">
                        <t hangText="&lt;hash-function&gt;"> is an 8-bit
unsigned integer field specifying the hash function. 
                        </t>

                        <t hangText="&lt;cryptographic-function&gt;"> is an
8-bit unsigned integer field specifying the cryptographic function.
                        </t>

                        <t hangText="&lt;key-id-length&gt;"> is an 8-bit
unsigned integer field specifying the length of the &lt;key-id&gt; field in
number of octets. The value 0x00 is reserved for using a pre-installed, shared
key. 
                        </t>

                        <t hangText="&lt;key-id&gt;"> is a field specifying the
key identifier of the key that was used to calculate the ICV of 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 identifiers. If
&lt;key-id-length&gt; equals 0x00, the &lt;key-id&gt; field is not contained
in the TLV, and a pre-installed, shared key is used.
                        </t>

                        <t hangText="&lt;ICV-data&gt;"> is an unsigned integer
field, whose length is &lt;length&gt;&nbsp;-&nbsp;3 - &lt;key-id-length&gt;, and which
contains the cryptographic ICV.
                        </t>                
                </list>

                The version of this TLV, specified in this section, assumes
that calculating the ICV can be decomposed into
                        <list style="hanging">
                                <t>ICV-value =
cryptographic-function(hash-function(content))</t>
                        </list>
                        
                The hash function and the cryptographic function correspond to
the entries in two IANA registries, which are reported by this specification
and are described in <xref target="IANA"/>.
                </t>

                <section title="Rationale" anchor="rationale">
                
                        <t>
                        The rationale for separating the hash function and the
cryptographic function into two octets instead of having all combinations in a
single octet -- possibly as a TLV type extension -- is that adding further hash
functions or cryptographic functions in the future may lead to a non-contiguous
number space.
                        </t>
                        
                        <t>
                        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, routers have to exchange or acquire keys
(e.g., public keys). Any additional parameters can be provided together
with the
keys in that bootstrap process. It is therefore not necessary, and would even
entail an extra overhead, to transmit the parameters within every message.
                        One implicitly available parameter is the length of the
ICV, which is &lt;length&gt; - 3 - &lt;key-id-length&gt;, and which depends on
the choice of the cryptographic function.
                        </t>
                </section>
        </section>
        
          
        <section title="Considerations for Calculating the ICV">
          <t>
                The considerations listed in the following subsections MUST be
applied when calculating the ICV for Packet, Message, and Address ICV TLVs,
respectively.
          </t>
         

          <section title="Packet ICV TLV">
                <t>
                        When determining the &lt;ICV-value&gt; for a packet,
with type extension = 1, the ICV is calculated over the fields &lt;hash-function&gt;,
&lt;cryptographic-function&gt;, &lt;key&nbhy;id&nbhy;length&gt;, and -- if present --
&lt;key-id&gt; (in that order), concatenated with the entire packet, including
the packet header, all Packet TLVs (other than Packet ICV TLVs), and all
included Messages and their message headers, in accordance with <xref
target="packetICVTLV"/>. When determining the &lt;ICV-value&gt; for a packet,
with type extension = 2, the same procedure is used, except that the
source address of the IP datagram carrying the packet is also concatenated,
in the first position, with the data used.
                </t>          
          </section>
                 

          <section title="Message ICV TLV">
                <t>
                        When determining the &lt;ICV-value&gt; for a message,
with type extension = 1, the ICV is calculated over the fields &lt;hash-function&gt;,
&lt;cryptographic-function&gt;, &lt;key&nbhy;id&nbhy;length&gt;, and -- if present --
&lt;key-id&gt; (in that order), concatenated with the entire message. The
considerations in <xref target="ICVTLV"/> MUST be applied. When determining the
&lt;ICV-value&gt; for a message, with type extension = 2, the same procedure is
used, except that the source address of the IP datagram carrying the message is
also concatenated, in the first position, with the data used.

                </t>
          </section>


          <section title="Address Block ICV TLV">
                <t>
                        When determining the &lt;ICV-value&gt; for an address,
block, with type extension = 2, the ICV is calculated over the fields &lt;hash-function&gt;,
&lt;cryptographic-function&gt;, &lt;key-id-length&gt;, and -- if present --
&lt;key-id&gt; (in that order), concatenated with the address, and concatenated
with any other values -- for example, any other address block TLV &lt;value&gt;
that is associated with that address. A MANET routing protocol or MANET routing
protocol extension using Address Block ICV TLVs MUST specify how to include any
such concatenated attribute of the address in the verification process of the
ICV. The considerations in <xref target="addressblockICVTLV"/> MUST be
applied. When determining the &lt;ICV-value&gt; for an address block, with type
extension = 2, the same procedure is used, except that the source address of the
IP datagram carrying the address block is also concatenated, in the first position,
with the data used.

                </t>
          </section>

   </section>
          
          
      <section title="Example of a Message Including an ICV">
        <t>
                The sample message depicted in <xref target="exampleMessage"/>
is derived from Appendix D of <xref target="RFC5444"/>. The message contains
an ICV Message TLV, with the value representing an ICV that is 16 octets long of the
whole message, and a key identifier that is 4 octets long. The type extension of the
Message TLV is 1, for the specific decomposition of an ICV into a cryptographic
function over a hash value, as specified in <xref target="decomposition"/>. 
        </t>
        
        <figure anchor="exampleMessage" title="Example Message with ICV">
          <artwork>
   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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | PV=0 |  PF=8  |    Packet Sequence Number     | Message Type  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | MF=15 | MAL=3 |      Message Length = 44      | Msg. Orig Addr|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |       Message Originator Address (cont)       |   Hop Limit   |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |   Hop Count   |    Message Sequence Number    | Msg. TLV Block|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | Length = 27   |     ICV       |  MTLVF = 144  |  MTLVExt = 1  |  
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |Value Len = 23 |   Hash Func   |  Crypto Func  |Key ID length=4|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                          Key Identifier                       |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                          ICV Value                            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                          ICV Value (cont)                     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                          ICV Value (cont)                     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                          ICV Value (cont)                     |        
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          </artwork>
        </figure>
      </section>
    </section>
    
    <section anchor="IANA" title="IANA Considerations">
    
              <t>
              This specification reports the following, originally specified in <xref target="RFC6622"/>:
              <list style="symbols">
                        <t>Two Packet TLV types, which have been allocated from
the 0-223 range of the "Packet TLV Types" repository of <xref
target="RFC5444"/>, as specified in <xref
target="table_IANA_packet_TLV_types"/>.</t>

                        <t>Two Message TLV types, which have been allocated from
the 0-127 range of the "Message TLV Types" repository of <xref
target="RFC5444"/>, as specified in <xref
target="table_IANA_message_TLV_types"/>.</t>

                        <t>Two Address Block TLV types, which have been allocated
from the 0-127 range of the "Address Block TLV Types" repository of
<xref target="RFC5444"/>, as specified in <xref
target="table_IANA_addressblock_TLV_types"/>.</t>
                </list>
                
                This specification updates the following, created in <xref target="RFC6622"/>:
              <list style="symbols">
                        <t>A type extension registry for each of these TLV
types with values as listed in
Tables <xref target="table_IANA_packet_TLV_types" format="counter"/>,
<xref target="table_IANA_message_TLV_types" format="counter"/>, and 
<xref target="table_IANA_addressblock_TLV_types" format="counter"/>.</t>
                </list>
                
                </t>

                <t>
                        The following terms are used as defined
in <xref target="BCP26"/>: "Namespace", "Registration", and "Designated
Expert".
                </t>
                <t>
                        The following policy is used as defined
in <xref target="BCP26"/>: "Expert Review".
                </t>        
                
      <section title="Expert Review: Evaluation Guidelines">
        <t>
                For TLV type extensions registries where an Expert
Review is required, the Designated Expert SHOULD take the same general
recommendations into consideration as those specified by <xref target="RFC5444"/>.</t>
           
        <t>For the Timestamp TLV, the same type extensions for all Packet,
Message, and Address Block TLVs SHOULD be numbered identically.
        </t>

      </section>


      <section title="Packet TLV Type Registrations">
              <t>
                      IANA has, in accordance with <xref target="RFC6622"/>, made allocations from the "Packet
TLV Types" namespace of <xref target="RFC5444"/> for the Packet TLVs  specified
in <xref target="table_IANA_packet_TLV_types"/>. IANA are requested to modify this allocation (defining
type extension = 2) as indicated.
              </t>

    <t>
      <vspace blankLines="999"/>
    </t>

        <texttable anchor="table_IANA_packet_TLV_types" title="Packet TLV Types">
          <ttcol align='center'>Name</ttcol>
          <ttcol align='center'>Type</ttcol>
          <ttcol align='center'>Type Extension</ttcol>
          <ttcol align='center'>Description</ttcol>
          <c>ICV</c>
          <c>5</c>
          <c>0</c>
          <c>ICV of a packet</c>
          
          <c></c>
          <c></c>
          <c>1-2</c>
          <c>ICV, decomposed into cryptographic function over a hash value, as specified in <xref target="decomposition"/> of this document</c>

          <c></c>
          <c></c>
          <c>3-251</c>
          <c>Unassigned; Expert Review</c>
          
          <c></c>
          <c></c>
          <c>252-255</c>
          <c>Experimental Use</c>
          <c>TIMESTAMP</c>
          <c>6</c>
          <c>0</c>
          <c>Unsigned timestamp of arbitrary length, given by the TLV Length field.&nbsp; The MANET routing protocol has to define how to interpret this timestamp</c>
          
          <c></c>
          <c></c>
          <c>1</c>
          <c>Unsigned 32-bit timestamp, as specified in <xref target="IEEE 1003.1-2008 (POSIX)"/></c>
          
          <c></c>
          <c></c>
          <c>2</c>
          <c>NTP timestamp format, as defined in <xref target="RFC5905"/></c>
          
          <c></c>
          <c></c>
          <c>3</c>
          <c>Signed timestamp of arbitrary length with no constraints such as monotonicity.&nbsp; In particular, it may represent any random value</c>
          
          <c></c>
          <c></c>
          <c>4-251</c>
          <c>Unassigned; Expert Review</c>
          <c></c>
          <c></c>
          <c>252-255</c>
          <c>Experimental Use</c>

        </texttable>
        <t>
                </t>
      </section>
      
      <section title="Message TLV Type Registrations">
              <t>
 
                       IANA has, in accordance with <xref target="RFC6622"/>, made allocations from the
"Message TLV Types" namespace of <xref target="RFC5444"/> for the Message TLVs
specified in <xref target="table_IANA_message_TLV_types"/>. IANA are requested to modify this allocation (defining
type extension = 2) as indicated.

                </t>
                
        <texttable anchor="table_IANA_message_TLV_types" title="Message TLV Types">
          <ttcol align='center'>Name</ttcol>
          <ttcol align='center'>Type</ttcol>
          <ttcol align='center'>Type Extension</ttcol>
          <ttcol align='center'>Description</ttcol>
          <c>ICV</c>
          <c>5</c>
          <c>0</c>
          <c>ICV of a message</c>
          
          <c></c>
          <c></c>
          <c>1-2</c>
          <c>ICV, decomposed into cryptographic function over a hash value, as specified in <xref target="decomposition"/> of this document</c>
          
          <c></c>
          <c></c>
          <c>3-251</c>
          <c>Unassigned; Expert Review</c>
          
          <c></c>
          <c></c>
          <c>252-255</c>
          <c>Experimental Use</c>
          
          <c>TIMESTAMP</c>
          <c>6</c>
          <c>0</c>
          <c>Unsigned timestamp of arbitrary length, given by the TLV Length field.</c>
          
          <c></c>
          <c></c>
          <c>1</c>
          <c>Unsigned 32-bit timestamp, as specified in <xref target="IEEE 1003.1-2008 (POSIX)"/></c>
          
          <c></c>
          <c></c>
          <c>2</c>
          <c>NTP timestamp format, as defined in <xref target="RFC5905"/></c>
         
          <c></c>
          <c></c>
          <c>3</c>
          <c>Signed timestamp of arbitrary length with no constraints such as monotonicity.&nbsp; In particular, it may represent any random value</c>

          <c></c>
          <c></c>
          <c>4-251</c>
          <c>Unassigned; Expert Review</c>
          
          <c></c>
          <c></c>
          <c>252-255</c>
          <c>Experimental Use</c>
        </texttable>

 </section>
      
      
      <section title="Address Block TLV Type Registrations">
              <t>
                      IANA has, in accordance with <xref target="RFC6622"/>, made allocations from the "Address
Block TLV Types" namespace of <xref target="RFC5444"/> for the Packet TLVs
specified in <xref target="table_IANA_addressblock_TLV_types"/>. IANA are requested to modify this allocation (defining
type extension = 2) as indicated.

                </t>
                
        <texttable anchor="table_IANA_addressblock_TLV_types" title="Address Block TLV Types">
          <ttcol align='center'>Name</ttcol>
          <ttcol align='center'>Type</ttcol>
          <ttcol align='center'>Type Extension</ttcol>
          <ttcol align='center'>Description</ttcol>
          <c>ICV</c>
          <c>5</c>
          <c>0</c>
          <c>ICV of an object (e.g., an address)</c>
          
          <c></c>
          <c></c>
          <c>1-2</c>
          <c>ICV, decomposed into cryptographic function over a hash value, as specified in <xref target="decomposition"/> of this document</c>
          
          <c></c>
          <c></c>
          <c>3-251</c>
          <c>Unassigned; Expert Review</c>
          
          <c></c>
          <c></c>
          <c>252-255</c>
          <c>Experimental Use</c>
          
          <c>TIMESTAMP</c>
          <c>6</c>
          <c>0</c>
          <c>Unsigned timestamp of arbitrary length, given by the TLV Length field</c>
          
          <c></c>
          <c></c>
          <c>1</c>
          <c>Unsigned 32-bit timestamp, as specified in <xref target="IEEE 1003.1-2008 (POSIX)"/></c>
          
          <c></c>
          <c></c>
          <c>2</c>
          <c>NTP timestamp format, as defined in <xref target="RFC5905"/></c>
          
          <c></c>
          <c></c>
          <c>3</c>
          <c>Signed timestamp of arbitrary length with no constraints such as monotonicity.&nbsp; In particular, it may represent any random value</c>
          
          <c></c>
          <c></c>
          <c>4-251</c>
          <c>Unassigned; Expert Review</c>
          
          <c></c>
          <c></c>
          <c>252-255</c>
          <c>Experimental Use</c>
        </texttable>

                </section>

      
        <section title="Hash Functions">
        <t>
                IANA has, in accordance with <xref target="RFC6622"/>, created a new registry for hash functions
that can be used when creating an ICV, as specified in <xref
target="decomposition"/> of this document. The initial assignments and
allocation policies are specified in <xref target="table_hash_registry"/>.
This registry is unchanged by this specification.
        </t>

    <texttable anchor="table_hash_registry" title="Hash-Function Registry">
       <ttcol align='center'>Hash Function Value</ttcol>
       <ttcol align='center'>Algorithm</ttcol>
       <ttcol align='center'>Description</ttcol>
       <c>0</c>
       <c>none</c>
       <c>The "identity function": The hash value of an object is the object itself</c>
       <c>1</c>
       <c>SHA1</c>
       <c><xref target="NIST-FIPS-180-2"/></c>
       
       <c>2</c>
       <c>SHA224</c>
       <c><xref target="NIST-FIPS-180-2-change"/></c>
       
       <c>3</c>
       <c>SHA256</c>
       <c><xref target="NIST-FIPS-180-2"/></c>
       
       <c>4</c>
       <c>SHA384</c>
       <c><xref target="NIST-FIPS-180-2"/></c>
       
       <c>5</c>
       <c>SHA512</c>
       <c><xref target="NIST-FIPS-180-2"/></c>
       
       <c>6-251</c>
       <c></c>
       <c>Unassigned; Expert Review</c>
       
       <c>252-255</c>
       <c></c>
       <c>Experimental Use</c>
    </texttable>

        </section>

        <section title="Cryptographic Functions">
        <t>
                IANA has, in accordance with <xref target="RFC6622"/>, created a new registry for the
cryptographic functions, as specified in <xref target="decomposition"/> of this
document. Initial assignments and allocation policies are specified in <xref
target="table_cryptographic_registry"/>. This registry is unchanged by this specification.
        </t>

    <texttable anchor="table_cryptographic_registry" title="Cryptographic Function Registry">
        <ttcol align='center'>Cryptographic Function Value</ttcol>
        <ttcol align='center'>Algorithm</ttcol>
        <ttcol align='center'>Description</ttcol>
        <c>0</c>
        <c>none</c>
        <c>The "identity function": The value of an encrypted hash is the hash itself</c>
        <c>1</c>
        <c>RSA</c>
        <c><xref target="RFC3447"/></c>
        
        <c>2</c>
        <c>DSA</c>
        <c><xref target="NIST-FIPS-186-3"/></c>
       
        <c>3</c>
        <c>HMAC</c>
        <c><xref target="RFC2104"/></c>
        
        <c>4</c>
        <c>3DES</c>
        <c><xref target="NIST-SP-800-67"/></c>
        
        <c>5</c>
        <c>AES</c>
        <c><xref target="NIST-FIPS-197"/></c>

        <c>6</c>
        <c>ECDSA</c>
        <c><xref target="ANSI-X9-62-2005"/></c>
        
        <c>7-251</c>
       <c></c>
       <c>Unassigned; Expert Review</c>
       <c>252-255</c>
       <c></c>
       <c>Experimental Use</c>
    </texttable>


        </section>
</section>
    <section anchor="Security" title="Security Considerations">
      <t>
              This document does not specify a protocol. It provides a
syntactical component for cryptographic ICVs of messages and packets, as defined
in <xref target="RFC5444"/>. It can be used to address security issues of a
MANET routing protocol or MANET routing protocol extension. As such, it has the
same security considerations as <xref target="RFC5444"/>.</t>
              
              <t>In addition, a MANET routing protocol or MANET routing protocol
extension that uses this specification MUST specify how to use the
framework, and the TLVs presented in this document.  In addition, the
protection that the MANET routing protocol or MANET routing protocol
extensions attain by using this framework MUST be described.</t>

              <t>As an example, a MANET routing protocol that uses this
component to reject "badly formed" or "insecure" messages if a control
message does not contain a valid ICV SHOULD indicate the security
assumption that if the ICV is valid, the message is considered valid.
It also SHOULD indicate the security issues that are counteracted by
this measure (e.g., link or identity spoofing) as well as the issues
that are not counteracted (e.g., compromised keys). 
      </t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to thank Bo Berry (Cisco), Alan Cullen (BAE Systems),
Justin Dean (NRL), Paul Lambert (Marvell), Jerome
Milan (Ecole Polytechnique), and Henning Rogge (FGAN) for their constructive
comments on <xref target="RFC6622"/>.</t>

      <t>The authors also appreciate the detailed reviews of <xref target="RFC6622"/> from the Area
Directors, in particular Stewart Bryant (Cisco), Stephen Farrell (Trinity
College Dublin), and Robert Sparks (Tekelec), as well as Donald Eastlake
(Huawei) from the Security Directorate.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
  <reference anchor="BCP26">
    <front>
      <title abbrev="foo">Guidelines for Writing an IANA Considerations Section in RFCs</title>
      <author initials="T." surname="Narten" fullname="Thomas Narten">
      </author>
      <author initials="H." surname="Alvestrand" fullname="H Alvestrand">
      </author>
      <date month="May" year="2008" />
    </front>
    <seriesInfo name="BCP" value="26" />
    <seriesInfo name="RFC" value="5226" />
  </reference>

    
  <reference anchor="RFC2119">
    <front>
      <title abbrev="foo">Key words for use in RFCs to Indicate Requirement Levels</title>
      <author initials="S." surname="Bradner" fullname="Scott Bradner">
      </author>
      <date month="March" year="1997" />
    </front>
    <seriesInfo name="BCP" value="14" />
    <seriesInfo name="RFC" value="2119" />
  </reference>
  

  <reference anchor="RFC5444">
    <front>
      <title abbrev="RFC5444">Generalized Mobile Ad Hoc Network (MANET) Packet/Message Format</title>
        <author initials="T.H." surname="Clausen" fullname="Thomas Heide Clausen">
        </author>
        <author initials="C.M." surname="Dearlove" fullname="Christopher Dearlove">
        </author>
        <author initials="J.W." surname="Dean" fullname="Justin W. Dean">
        </author>
        <author initials="C." surname="Adjih" fullname="Cedric Adjih">
        </author>
        <date month="February" year="2009" />
      </front>
      <seriesInfo name="RFC" value="5444"/>
    </reference>

<reference anchor='RFC5905'>
<front>
<title>Network Time Protocol Version 4: Protocol and Algorithms Specification</title>
<author initials='D.' surname='Mills' fullname='D. Mills'>
<organization /></author>
<author initials='J.' surname='Martin' fullname='J. Martin' role="editor">
<organization /></author>
<author initials='J.' surname='Burbank' fullname='J. Burbank'>
<organization /></author>
<author initials='W.' surname='Kasch' fullname='W. Kasch'>
<organization /></author>
<date year='2010' month='June' />
</front>
<seriesInfo name='RFC' value='5905' />
</reference>

 <reference anchor='RFC3447'>
        <front>
                <title abbrev='PKCS #1'>Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1</title>
                <author initials='J.' surname='Jonsson' fullname='Jakob Jonsson'>
                </author>
                <author initials='B.' surname='Kaliski' fullname='Burt Kaliski'>
                </author>
                <date year='2003' month='February' />
        </front>
        <seriesInfo name='RFC' value='3447' />
  </reference>

  
  <reference anchor='RFC2104'>
                <front>
                <title abbrev='HMAC'>HMAC: Keyed-Hashing for Message Authentication</title>
                <author initials='H.' surname='Krawczyk' fullname='Hugo Krawczyk'>
                </author>
                <author initials='M.' surname='Bellare' fullname='Mihir Bellare'>
                </author>
                <author initials='R.' surname='Canetti' fullname='Ran Canetti'>
                </author>
                <date year='1997' month='February' />
            </front>
                
                <seriesInfo name='RFC' value='2104' />
   </reference>


	<reference anchor="NIST-FIPS-197">
    <front>
      <title>Specification for the Advanced Encryption Standard (AES)</title>
      <author initials="" surname="National Institute of Standards and Technology" fullname="">
      </author>
      <date month="November" year="2001"/>
    </front>
     <seriesInfo name="FIPS" value="197" />
  </reference>

    <reference anchor="NIST-FIPS-186-3">
    <front>
      <title>Digital Signature Standard (DSS)</title>
      <author initials="" surname="National Institute of Standards and Technology" fullname="">
      </author>
      <date month="June" year="2009"/>
        
    </front>
     <seriesInfo name="FIPS" value="186-3" />
  </reference>
  
  
  <reference anchor="ANSI-X9-62-2005">
    <front>
      <title>Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Algorithm (ECDSA)</title>
      <author initials="" surname="American National Standards Institute" fullname="">
      </author>
      <date month="November" year="2005"/>
    </front>
     <seriesInfo name="ANSI" value="X9.62-2005" />
  </reference>
  
  
  <reference anchor="NIST-SP-800-67">
    <front>
      <title>Recommendation for the Triple Data Encryption Algorithm              (TDEA) Block Cipher</title>
      <author initials="" surname="National Institute of Standards and Technology" fullname="">
      </author>
      <date month="May" year="2004"/>
    </front>
     <seriesInfo name="Special Publication" value="800-67" />
  </reference>

  
  <reference anchor="NIST-FIPS-180-2">
    <front>
      <title>Specifications for the Secure Hash Standard</title>
      <author initials="" surname="National Institute of Standards and Technology" fullname="">
      </author>
      <date month="August" year="2002"/>
    </front>
     <seriesInfo name="FIPS" value="180-2" />
  </reference>
  
  <reference anchor="NIST-FIPS-180-2-change">
    <front>
      <title>Federal Information Processing Standards Publication 180-2 (+ Change Notice to include SHA-224)</title>
      <author initials="" surname="National Institute of Standards and Technology" fullname="">
      </author>
      <date month="August" year="2002"/>
    </front>
     <seriesInfo name="FIPS" value="180-2" />
     <format type="TXT" target="http:// csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf"/>
  </reference>
  
    <reference anchor="IEEE 1003.1-2008 (POSIX)">
    <front>
      <title>1003.1-2008 Standard for Information Technology - Portable Operating System Interface (POSIX) Base Specifications, Issue 7</title>
      <author initials="" surname="IEEE Computer Society" fullname="">
      </author>
      <date month="December" year="2008"/>
    </front>
  </reference>
    
</references>

<references title="Informative References">

<reference anchor='RFC6130'>
<front>
<title>Mobile Ad Hoc Network (MANET) Neighborhood Discovery Protocol (NHDP)</title>
<author initials='T.' surname='Clausen' fullname='T. Clausen'>
<organization /></author>
<author initials='C.' surname='Dearlove' fullname='C. Dearlove'>
<organization /></author>
<author initials='J.' surname='Dean' fullname='J. Dean'>
<organization /></author>
<date year='2011' month='April' />
</front>
<seriesInfo name='RFC' value='6130' />
</reference>

			<reference anchor="RFC6622">
				<front>
					<title>Integrity Check Value and Timestamp TLV Definitions for Mobile Ad Hoc Networks (MANETs)</title>
					<author fullname="Ulrich Herberg" initials="U" surname="Herberg">
						<organization>Fujitsu Laboratories of America</organization>
					</author>
					<author fullname="Thomas Heide Clausen" initials="T" surname="Clausen">
						<organization>LIX, Ecole Polytechnique</organization>
					</author>
					<date year="2012" month="May"/>
				</front>
				<seriesInfo name="RFC" value="6622"/>
			</reference>
			
<!-- draft-ietf-manet-olsrv2 ("I-D Exists") -->
  <reference anchor="OLSRv2">
    <front>
      <title>The Optimized Link State Routing Protocol version 2</title>
      <author initials="T.H." surname="Clausen" fullname="Thomas Heide Clausen">
      </author>
      <author initials="C.M." surname="Dearlove" fullname="Christopher Dearlove">
      </author>
      <author initials="P." surname="Jacquet" fullname="Philippe Jacquet">
      </author>
      <author initials="U." surname="Herberg" fullname="Ulrich Herberg">
      </author>
        <date month="March" year="2012"/>
    </front>
    <seriesInfo name="Work in" value="Progress" />
  </reference>

</references>

  </back>
</rfc>
