INTERNET-DRAFT                                                   A. Dvir
Intended Status: Experimental                                 T. Holczer
Expires: July 11, 2012                                           L. Dora
                                                              L. Buttyan
                                                         January 8, 2012



                 Version Number and Rank Authentication
             draft-dvir-roll-security-authentication-01.txt

Abstract

   Designing a routing protocol for large low-power and lossy networks
   (LLNs), consisting of thousands of constrained nodes and unreliable
   links, presents new challenges.  The IPv6 Routing Protocol for Low-
   power and Lossy Networks (RPL), have been developed by the IETF ROLL
   Working Group as a preferred routing protocol to provide IPv6 routing
   functionality in LLNs.  Unfortunately, the currently available
   security services in RPL will not protect against a compromised
   internal node that can construct and disseminate fake messages.
   Therefore, in RPL special security care must be taken when the
   Destination Oriented Directed Acyclic Graph (DODAG) root is updating
   the Version Number by which reconstruction of the routing topology
   can be initiated.  The same care also must be taken to prevent an
   internal attacker (compromised DODAG node) to publish decreased Rank
   value, which causes a large part of the DODAG to connect to the DODAG
   root via the attacker and give it the ability to eavesdrop or
   manipulate a large part of the network traffic.  In this document, a
   new security service is described that prevents any misbehaving DODAG
   node from illegitimately increasing the Version Number or publish
   illegitimately decreased Rank values.

Status of this Memo

   This Internet-Draft is submitted to IETF in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."




Dvir, et al.                 July 11, 2012                      [Page 1]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/1id-abstracts.html.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

Copyright and License Notice

   Copyright (c) 2012 IETF Trust and the persons identified as the
   document authors. All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document. Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document. Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.































Dvir, et al.                 July 11, 2012                      [Page 2]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


Table of Contents

   1  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . . . 4
   2  Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . 5
   3  VeRA - Version Number and Rank Authentication  . . . . . . . . . 6
      3.1  Version Number Authentication . . . . . . . . . . . . . . . 8
      3.2  Rank Authentication . . . . . . . . . . . . . . . . . . .  10
      3.3  Format of the Authentication Option . . . . . . . . . . .  14
      3.4  The Security Scheme . . . . . . . . . . . . . . . . . . .  17
   4  Security Considerations  . . . . . . . . . . . . . . . . . . .  18
   5  IANA Considerations  . . . . . . . . . . . . . . . . . . . . .  18
      5.1  RPL Control Message Option  . . . . . . . . . . . . . . .  18
      5.2  New Registry for the Code Value Type  . . . . . . . . . .  19
      5.3  New Registry for the Algorithm Type . . . . . . . . . . .  20
   6  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .  21
   7  References . . . . . . . . . . . . . . . . . . . . . . . . . .  21
      7.1  Normative References  . . . . . . . . . . . . . . . . . .  21
      7.2  Informative References  . . . . . . . . . . . . . . . . .  21
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  23
































Dvir, et al.                 July 11, 2012                      [Page 3]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


1  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].
   This document adopts and conforms to the terminology defined in
   [I-D.ietf-roll-terminology] and in [RFC4949].

   As they form networks, LLN devices often mix the roles of 'host' and
   'router' when compared to traditional IP networks.  In this document,
   'host' refers to an LLN device that can generate but does not forward
   RPL [I-D.ietf-roll-rpl] traffic, 'router' refers to an LLN device
   that can forward as well as generate RPL traffic, and 'node' refers
   to any RPL device, either a host or a router.  This document
   introduces the following terminology:

   Compromised:  Taking control over a node.

   h():  Cryptographic one-way hash function [PseuFun].

   r:  Random number.

   V:  Version Number hash chain.

   i:  Index of the Version Number hash chain.

   V_0:  Root of the Version Number hash chain.

   V_i:  The ith Version Number hash chain element.

   n+1:  Version Number hash chain length.

   x_i:  Random number.

   R:  Rank hash chain.

   j:  Index of the Rank hash chain.

   l+1:  Rank hash chain length.

   R_(i,j):  The jth Rank hash value associated with the ith Version
   Number hash chain element.

   R_mrh=R_(i,l):  Max Rank hash value associated with the ith Version
   Number hash chain element.

   R_sender:  Rank element value.




Dvir, et al.                 July 11, 2012                      [Page 4]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


   Rank_root:  Rank value of the DODAG root.

   Rank_sender:  Rank value of the parent.

   M:  Message.

   Init_VN:  Initial value of the Version Number.

   VN:  Current Version Number value.

   IP:  Integrity Protection value.

   MAC:  Message authentication code.

   MHRI:  MinHopRankIncrease [I-D.ietf-roll-rpl].

   OF:  Objective Function [I-D.ietf-roll-rpl].

2  Introduction

   Low power and Lossy Networks (LLNs) consist largely of constrained
   nodes with limited processing power, memory, and sometimes energy,
   when they are battery operated.  These nodes are interconnected by
   unstable lossy links, typically supporting only low packet and data
   delivery rates.  Another characteristic of such networks is that
   point-to-point is not the typical traffic pattern, but point-to-
   multipoint and multipoint-to-point are.  Furthermore, such networks
   may potentially comprise up to thousands of nodes.

   These characteristics offer unique challenges to a routing solution.
   The IETF ROLL Working Group has defined application-specific routing
   requirements for a Low power and Lossy Network (LLN) routing
   protocol, specified in [RFC5867], [RFC5826], [RFC5673], and
   [RFC5548].  Moreover, based on those standards, an IPv6 Routing
   Protocol for Low power and Lossy Networks (RPL) has been proposed
   [I-D.ietf-roll-rpl] and a security framework for RPL is described in
   [I-D-roll-security-framework].

   Many LLN systems are deployed in unattended or remote locations, such
   as urban environments [RFC5548].  Hence, security mechanisms that
   provide confidentiality and authentication are critical for the
   operation of many applications.  The security services that RPL
   currently provides natively are sufficient to protect the network
   against such an attack if only an external attacker is assumed.
   However, native RPL security services will not protect against a
   compromised internal node.  Therefore, this document considers the
   case where the attacker is a compromised node, where the source of
   the compromise can be logical [FC_Code] or physical [Tamper] and the



Dvir, et al.                 July 11, 2012                      [Page 5]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


   attacker can intercept, forge, modify, inject, replay, and create
   messages (data or control) in order to interfere with the operation
   of entire network and exhaust nodes' batteries.

   An internal adversary can attack RPL in many different ways.
   However, some of these attacks have only a minor influence, while
   others may have a major influence in the network.  A consequence of
   an attack that will lead to reconstructing the entire DAG and exhaust
   the nodes' batteries, or eavesdropping a large part of the network
   traffic can have major or even critical influence.  One way for an
   internal adversary to achieve these goals is to change/modify the
   Version Number of the DODAG [I-D.ietf-roll-rpl], a sequential counter
   that is incremented by the DODAG root to form a new Version of a
   DODAG, or to change/modify the DODAG node Rank value
   [I-D.ietf-roll-rpl], representation of the location of that node
   within a DODAG.  Therefore, this document presents a security scheme
   to prevent the following attacks:

      (i)   An internal attacker impersonating a DODAG root and
         illegitimately increasing the Version Number.

      (ii)  An internal attacker publishing an illegitimately decreased
         Rank value.

   Implementation of the security service described in this document is
   OPTIONAL.  It is RECOMMENDED that implementers carefully consider
   security requirements and the availability of security mechanisms in
   their network.  The hash functions, MAC functions, and digital
   signature algorithms used in the protocols are based on sections 10.1
   and 10.9.2 of [I-D.ietf-roll-rpl], e. g., SHA-256 hash function
   specified in Section 6.2 of [FIPS180], message encoding rules of
   Section 8.1 of [RFC3447]. The elliptic curve cryptography (ECC) is
   based on section 2.7 of [SECG2].  The Hashed Message Authentication
   Mode (HMAC) is described in [RFC4868].

3  VeRA - Version Number and Rank Authentication

   A grounded DODAG offers connectivity to hosts that are required to
   satisfy the application-defined goal.  An attacker may try to become
   a grounded DODAG root by sending a well-constructed DIO message.  The
   scope of the current RPL security services is the link; therefore, in
   RPL the authenticity of the messages sent by the DODAG root relies on
   the trustworthiness of all intermediate DODAG nodes and the fact that
   none of the keys are compromised.  However, because of to the lack of
   physical protection, DODAG nodes can be compromised (including their
   keys).  This allows an attacker to send an authentic DIO message that
   will be accepted by all the DODAG nodes.  Therefore, a node that
   receives a DIO message from the attacker will multicast it to its



Dvir, et al.                 July 11, 2012                      [Page 6]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


   neighbors using uncompromised keys.  The content of the message from
   the attacker will affect other nodes participating in the DODAG.

   Version number is an element of each DIO message and related to the
   network.  The Version Number is monotonically incremented by the root
   each time the DODAG root decides to form a new Version of the DODAG
   in order to revalidate the integrity and allow global repairs to
   occur.  The Version Number is propagated unchanged Down the DODAG as
   routers join the new DODAG.  The Version Number value is globally
   significant in a DODAG and indicates the Version of the DODAG that a
   router is operating in.   An older (lesser) value indicates that the
   originating router has not migrated to the new DODAG and cannot be
   used as a parent once the receiving node has migrated to the newer
   DODAG [I-D.ietf-roll-rpl].  RPL allows the Version Number to be
   increased regularly or occasionally.  Moreover, reconstruction of the
   routing topology can be initiated by sending a DIO message with an
   increased Version Number.

   Therefore, preventing any misbehaving DODAG node from impersonating
   the actual DODAG root and increasing the Version Number is essential.
   Note that how often the Version Number is increased is out of scope
   of this draft (application dependent).

   The Rank is a value that helps the nodes to determine at what level
   they are in the directed acyclic graph.  The lower the Rank is, the
   closer (in a sense of the hop numbers) the node is to the DODAG root.
   Each node must set the Rank such that the Rank of all the selected
   DODAG parents are lower.  The siblings of a node are those
   neighboring nodes whose Rank value is equal to the Rank value of the
   node.  MinHopRankIncrease (MHRI) is the minimum increase in Rank
   value between a node and any of its DODAG parents.  RPL allows the
   nodes to increase their Rank in order to become distant from the
   DODAG root.  This can be beneficial for the node, because the node
   has to forward fewer messages, the closer a node is placed to the
   DODAG root the more messages it has to forward.  In that case the
   DODAG parents and the siblings of the node may change, and also the
   nodes that set this node as a parent have to change the relation,
   otherwise a loop may be formed. RPL has some mechanisms to detect
   loops that may arise because of other reasons than described above.
   If the network detects a loop that can be difficult to repair, it may
   reconstruct the whole graph.  The reconstruction, global repair, can
   be initiated by the DODAG root by sending DIO messages with an
   increased Version Number.

   By publishing a high Rank value, an attacker can move deeper in the
   DODAG in order to increase the size of the parent set or improve some
   other metric.  However, the most effective Rank attack is by
   decreasing the Rank.  By publishing a low Rank value, a large part of



Dvir, et al.                 July 11, 2012                      [Page 7]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


   the DODAG will connect to the DODAG root via the attacker, and give
   it the ability to eavesdrop and manipulate a large part of the
   network traffic.

3.1  Version Number Authentication

   By authenticating the Version Number, each DODAG node can securely
   forward the DIO message in order to bootstrap or update the DODAG
   Version.

   Upon initialization, a DODAG root generates a random number r and
   calculates a hash chain [L1981], named as Version Number hash chain,
   of size n+1: V_n, V_(n-1)..., V_1, V_0 where V_n=h(r),
   V_i=h(V_(i+1)), with the random number r, where h() is a
   cryptographic hash function.

   Then the DODAG root reveals the root of the Version Number hash chain
   V_0 and using any supported integrity protection algorithm (e. g.,
   digital signature or MAC) the DODAG root binds the root value to a
   particular DODAG,  {V_0}_sign/mac.  Finally, the DODAG root
   multicasts the DIO message (M#1, in Figure 1) with V_0, the initial
   value Init_VN of the Version Number and the integrity protection
   data; the DODAG root can resend the signed DIO message until the
   first Version Number update occurs.

   Upon receiving the signed DIO message, each intermediate DODAG node
   verifies the authentication data and in case of success saves the
   integrity protection data, the root V_0 of the Version Number hash
   chain, and the initial value Init_VN of the Version Number.  When the
   trickle timer [RFC6206] expires, it multicasts to all neighbors the
   DIO message (M#2) according to [I-D.ietf-roll-rpl].  If the message
   is not authentic, the intermediate DODAG node MUST ignore the
   message.

   Upon Version Number update, the DODAG root reveal the next Version
   Number hash chain element V_i and sends a DIO message (M#3) with a
   new Version Number VN and V_i.  Upon receiving a DIO message with a
   new Version Number, an intermediate DODAG node can easily verify the
   message because, if the Version Number is increased by the DODAG
   root, h^{i}(V_i) must be equal to V_0. Upon success, the intermediate
   DODAG node saves the current Version Number value.  When the trickle
   timer [RFC6206] expires, it multicasts to all neighbors the DIO
   message (M#4) after updating according to section 6.3.1. of
   [I-D.ietf-roll-rpl].

   If an attacker wants to increase the Version Number, then it has to
   compute a pre-image of the last revealed hash chain element of the
   Version Number hash chain. However, computing the next element



Dvir, et al.                 July 11, 2012                      [Page 8]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


   V_(i+1) knowing V_i is hard when r is not known and h() is a
   cryptographic one-way hash function.

   In the case when a new node wants to join the DODAG, any DODAG node
   receiving a unicast DIS message (M#5) from the new node (Non DODAG
   node), MUST reply with a DIO message (M#6) containing the current
   Version Number value VN, the initial Version Number value Init_VN,
   the root of the Version Number hash chain V_0, the current Version
   Number hash chain element V_i, and the integrity protection data IP.
   Note that all these data is stored by every DODAG node in the network
   following our scheme.

   It is RECOMMENDED to use the integrity protection mechanism.  When a
   digital signature is used, each node has to know the public signature
   verification key.  For a normal node it is very costly to digitally
   sign and verify; therefore it is RECOMMENDED to use the sign
   procedure only for bootstrapping or in case the DODAG root revealed
   all the hash chain elements of the current hash chain and need to
   generate a new hash chain.  The first DIO message which contains the
   new hash chain root, MUST be signed.  Moreover, it is OPTIONAL to
   resend the first DIO message with the hash chain root and the
   signature till the first Version Number update.  In order to minimize
   the computation time and memory usage of the hash chain, the
   implementer can use the technique in [OptHash] on the DODAG root
   side.  In case the implementer decides to authenticate the hash chain
   root using MAC function, the Version Number hash chain root needs to
   be transported reliably.

   The sequence diagram of the Version Number Authentication algorithm
   has three parts: authentication procedure, Version Number update, and
   admission of a new node in the DODAG.

   Root               Node v          Node u                 New Node

     | VN=Init_VN, V_0, IP|                 |                       |
     |---------------->M#1|                 |                       |
     |                    |VN=Init_VN,V_0,IP|                       |
     |                    |----------->M#2  |                       |
     |                    |                 |                       |
     :                    :                 :                       :
     |                    |                 |                       |
     | VN=Init_VN+i, V_i  |                 |                       |
     |---------------->M#3|VN=Init_VN+i, V_i|                       |
     |                    |----------->M#4  |                       |
     |                    |                 |                       |
     :                    :                 :                       :
     |                    |                 |                       |
     |                    |                 | Unicast DIS           |



Dvir, et al.                 July 11, 2012                      [Page 9]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


     |                    |                |M#5<-------------------|
     |                    |                |                       |
     |                    |                | VN,Init_VN,V_0,V_i,IP |
     |                    |                |------------------->M#6|
     |                    |                |                       |

   Figure 1: Sequence Diagram of Version Number Authentication Algorithm

3.2  Rank Authentication

   By authenticating the Rank value, each DODAG node can conclude that
   its Rank value is greater than its parent Rank value and from the
   DODAG root towards the current DODAG node, the Rank values are
   monotonically increasing.

   Upon initialization, a DODAG root generates a random number r and
   calculates a hash chain[L1981], named as Version Number hash chain,
   of size n+1: V_n, V_(n-1)..., V_1, V_0 where V_n=h(r),
   V_i=h(V_(i+1)), with the random number r.  For each element V_i of
   the Version Number hash chain the DODAG root generates a new random
   number x_i and calculates a new hash chain, named as Rank hash chain,
   of size l+1: R_(i,0), R_(i,1)..., R_(i,l-1), R_(i,l) where R_(i,0)=
   h(x_i), R_(i,j)=h(R_(i,j-1)), with the new random number x_i.  In
   theory, l should be 65535 to have a different value for each possible
   Rank value (Rank is 16 bits long [I-D.ietf-roll-rpl]).  In practice,
   256 is large enough as for most of the operations DAGRank
   [I-D.ietf-roll-rpl] is used (the DAG Rank of a node is the upper 8
   bits of the Rank), which is 8 bits long.  If DAGRank is used when
   defining the hash chain, then all occurrences of Rank must be
   substituted by DAGRank in the sequel.  Figure 2 illustrates the hash
   chains'.  Note that, in order to decrease the size of Rank hash
   chain, in any case we are using the Rank value as the indicator to
   the number of times to hash (h^{}()) we divided the Rank value by
   MinHopRankIncrease (Rank/MinHopRankIncrease).

   Then the DODAG root reveals the root of the Version Number hash chain
   V_0, computes MAC_{V_1}(R_(mrh)) a message authentication code (MAC)
   value computed over the Max Rank hash (mrh) value R_(mrh)=R_(1,l) of
   the next Rank Hash chain with the next Version Number hash chain
   element V_1 as the key.  Finally, the DODAG root multicast a DIO
   message with V_0,  MAC_{V_1}(R_(mrh)); the DODAG root can resend the
   DIO message till the DODAG needs to update its Rank value or update
   the Version Number.

   Upon receiving the DIO message, each intermediate DODAG node saves
   the root V_0 of the Version Number hash chain, and the MAC value
   MAC_{V_1}(R_(mrh)).  When the trickle timer [RFC6206] expires, it
   multicasts to all neighbors the DIO message according to



Dvir, et al.                 July 11, 2012                     [Page 10]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


   [I-D.ietf-roll-rpl].  Figure 3 illustrates the initialization of the
   Rank Authentication algorithm.

   Upon Version Number update, the DODAG root sends a DIO message with
   the following parameters: next Version Number value VN as described
   in [I-D.ietf-roll-rpl], next Version Number hash chain element V_i, a
   message authentication code (MAC) value MAC_{V_(i+1)}(R_(mrh))
   computed over the Max Rank hash value R_mrh=R_(i+1,l) with the next
   Version Number hash chain element V_(i+1) as the key, and a Rank
   element value R_sender=h^{Rank_root}(x_i), where Rank_root is the new
   Rank value of the DODAG root.

   Upon receiving a DIO message with a new Version Number or new Rank
   value, an intermediate DODAG node use the revealed key V_i, the MAC
   value from the previous update MAC_{V_(i)}(R_(mrh)) and the Rank
   element R_sender, to verify whether the Rank value of its parent is
   monotonically increasing as follows:

         o  It generates R_check= h^{l-Rank_sender}(R_sender), where
         Rank_sender is the Rank value of the parent.

         o  It checks if MAC_{V_(i)}(R_mrh), from the previous update,
         is equal to MAC_{V_(i)}(R_check).

         o  If so, intermediate DODAG node v can conclude that the Rank
         is monotonically increasing and:

            o  It calculates its Rank value regarding its Objective
            Function, Rank_v.

            o  It calculates delta= Rank_v - Rank_(sender), the
            difference between the DODAG node Rank value and its parent
            Rank value. Node v has the parent Rank from the DIO message.

            o  It calculates R_sender= h^{delta}(R_sender).

            o  When the trickle timer [RFC6206] expires, it multicasts
            to all neighbors the DIO message according to
            [I-D.ietf-roll-rpl] with the new R_sender value.

   If an attacker wants to decrease the Rank [I-D.ietf-roll-rpl], then
   it has to compute a pre-image of the last R_sender.  However,
   computing the previous R_(i-1) knowing R_(i) is hard when x_i is not
   known and h() is a cryptographic one-way hash function.  Figure 4
   illustrates the Rank update algorithm.

   In the case when a new node wants to join the DODAG, any node
   receiving a unicast DIS message from the new node MUST reply with a



Dvir, et al.                 July 11, 2012                     [Page 11]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


   DIO message containing the last MAC value.





               Version Number Hash Chain, V_i=h(V_(i+1))
                    h         h        h           h     h
       r=random  V_n=h(r)->V_(n-1)-->...V_i-->....->V_2-->V_1-->V_0

                                           |
                                           V

                                       x_i=random

                                        R_(i,0)=h(x_i)
                                            |
                                         h  |
                                            v
                                        R_(i,1)
                                            |
                                         h  |
                                            v
                                        R_(i,2)

                                            .
                                            .
                                         h  .
                                            v
                                        R_(i,l-1)
                                            |
                                         h  |
                                            v
                                        R_(i,l), Max Rank hash value

                  Rank Hash Chain, R_(i,j) = h(R_(i,j-1))

            Figure 2: The Hash Chains.


         DODAG root                             DODAG node v

   Generate Random Number r                         Get
               |                            DIO: V_o, MAC_{V_1}(R_mrh)
               |                                  signature
               v                                     |
   Calculate hash chain                              v
     h(h(...h(r)))),V_0                       Verify ? -- No-> Delete



Dvir, et al.                 July 11, 2012                     [Page 12]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


               |                                      |
               |                                      |
               |                                     Yes
               |                                      |
               |                                      v
               |                   Save V_o, MAC_{V_1}(R_mrh), signature
               |                                     |
               v                                     |
   For each V_i generate                             v
   random number x_i                                Send
               |                   DIO: V_o, MAC_{V_1}(R_mrh), signature
               |
               v
   For each V_i calculate hash chain
    h(h(...h(x_i)))),R_mrh
               |
               |
               v
   Rank= OF(root)
               |
               |
               v
   Signature = Sign (V_0, MAC_{V_1}(R_mrh))
               |
               |
               v
   Send
   DIO: V_o, MAC_{V_1}(R_mrh)
   signature


            Figure 3: Rank Authentication Algorithm - Initialization






         DODAG root                             DODAG node v

   Version Number Update                          Get
             |                 DIO:V_i, MAC_{V_(i+1)}(R_mrh), R_sender
             |                                     |
             v                                     v
   Rank= OF(root)                  R_check=h^{l-Rank_parent}(R_sender)
             |                                     |
             |                                     |
             v                                     v



Dvir, et al.                 July 11, 2012                     [Page 13]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


   R_sender=h^{Rank}(x_i)                      Calculate
             |                            MAC_check=MAC_{V_i}(R_mrh)
             |                                     |
             |                                     |
             v                                     v
   R_mrh= h(h(...h(x_(i+1)))))               MAC_check == MAC_i
             |                                     |
             |                                     |
             |                                     v
             v                          Rank Monotonically increase
            Send                               Rank=OF(v)
   DIO: V_i, MAC_{V_(i+1)}(R_mrh), R_sender        |
                                                   |
                                                   v
                                         delta= Rank_v - Rank_Parent
                                                   |
                                                   |
                                                   v
                                         R_sender=h^{delta}(R_sender)
                                                   |
                                                   |
                                                   v
                                                 Send
                              DIO: V_i, MAC_{V_(i+1)}(R_mrh), R_sender


            Figure 4: Rank Authentication Algorithm -  Update

3.3  Format of the Authentication Option

   In order to authenticate the Version Number or/and the Rank, a DIO
   MUST carry one "Authentication" option.  An Authentication option
   consists of the following fields:

        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
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |   Type=10     | Option Length |Code |  Flags  |   Algorithm   |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                                                               |
       +                                                               +
       |                                                               |
       :                    Authentication Data                        :
       |                                                               |
       +                                                               +
       |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+




Dvir, et al.                 July 11, 2012                     [Page 14]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


             Figure 5:  Format of the Authentication Option

   Option Type:  0x0A (to be confirmed by IANA)

   Option Length:  8-bit unsigned integer, variable length of the option
         in octets excluding the Type and Length fields.

   Code: 3-bit unsigned integer, identifies the type of Authentication
         option.  This document defines codes for the following
         Authentication types (all codes are to be confirmed by IANA
         Section):

             +-----+-------------------------------+
             |Value|      Code Value Type          |
             +-----+-------------------------------+
             |   0 |Version Number Hash Chain Value|
             |     |                               |
             |   1 |Version Number Hash Chain Root |
             |     |                               |
             |   2 |Rank Hash Chain Value          |
             |     |                               |
             |   3 |MAC of Max Rank Hash Value     |
             |     |                               |
             |   4 |Integrity Protection Value     |
             |     |                               |
             | else|Unassigned                     |
             |     |                               |
             +-----+-------------------------------+
             Figure 6:  Code Type

   Flags:  5-bit unused field.  The field MUST be initialized to zero by
         the sender and MUST be ignored by the receiver.

   Algorithm:  8-bit field, indicating which algorithm is being used.
         The type of the algorithm is set by the Code field:

         o  Code Field = 0: Hash Function.

         o  Code Field = 1: Hash Function.

         o  Code Field = 2: Hash Function.


             +----------+--------------------------+
             |Bit Number|     Hash Function        |
             +----------+--------------------------+
             |    0     |   SHA-256                |
             |          |                          |



Dvir, et al.                 July 11, 2012                     [Page 15]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


             |    1     |   SHA-512                |
             |          |                          |
             |   else   |   Unassigned             |
             +----------+--------------------------+

             Figure 7:  Hash Function

             fi
         o  Code Field = 3: MAC Function.


             +----------+--------------------------+
             |Bit Number|     MAC Function         |
             +----------+--------------------------+
             |    0     |   HMAC-SHA-256           |
             |          |                          |
             |    1     |   HMAC-SHA-512           |
             |          |                          |
             |   else   |   Unassigned             |
             +----------+--------------------------+

             Figure 8:  MAC Function

         o  Code Field = 4: Integrity Protection algorithm (Digital
         Signature/MAC).

             +----------+--------------------------+
             |Bit Number|   Integrity Protection   |
             +----------+--------------------------+
             |    0     |   HMAC-SHA-256           |
             |          |                          |
             |    1     |   HMAC-SHA-512           |
             |          |                          |
             |    2     |   RSA with SHA-256       |
             |          |                          |
             |    3     |ECC-SECP256K1 with SHA-256|
             |          |                          |
             |   else   |   Unassigned             |
             +----------+--------------------------+

             Figure 9:  Integrity Protection

   Authentication Data:  Contains the authentication data compatible
         with the Code and Function Type fields.

   Unassigned bits of the Authentication option are reserved. They MUST
   be set to zero on transmission and MUST be ignored on reception.




Dvir, et al.                 July 11, 2012                     [Page 16]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


3.4  The Security Scheme

   Using the two algorithms described above in one Security Scheme
   prevents an internal attacker from impersonating a DODAG root,
   illegitimately increasing the Version Number and compromise an
   illegitimately decreased Rank value.  The following tables describe
   which Authentication option types to use in each step of the
   algorithms to prevent both Version Number and Rank attacks:

   VNHA:  Version Number Hash Chain Value.

   VNR:  Version Number Hash Chain Root.

   RHV:  Rank Hash Chain Value.

   MRHM:  MAC of Max Rank Hash Value.

                  +------+-------+---------+
                  | Init | Update| New Node|
             -----+------+-------+---------+
             |VNHV|   -  |   +   |    +    |
             -----+------+-------+---------+
             |VNR |   +  |   -   |    +    |
             -----+------+-------+---------+
             |RHV |   -  |   -   |    -    |
             -----+------+-------+---------+
             |MRHM|   -  |   -   |    -    |
             -----+------+-------+---------+
             |IP  |   +  |   -   |    +    |
             -----+------+-------+---------+
             Figure 10:  Version Number Authentication


                  +------+-------+---------+
                  | Init | Update| New Node|
             -----+------+-------+---------+
             |VNHV|   -  |   -   |    -    |
             -----+------+-------+---------+
             |VNR |   -  |   -   |    -    |
             -----+------+-------+---------+
             |RHV |   -  |   +   |    +    |
             -----+------+-------+---------+
             |MRHM|   +  |   +   |    +    |
             -----+------+-------+---------+
             |IP  |   -  |   -   |    -    |
             -----+------+-------+---------+
             Figure 11:  Rank Authentication




Dvir, et al.                 July 11, 2012                     [Page 17]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


                  +------+-------+---------+
                  | Init | Update| New Node|
             -----+------+-------+---------+
             |VNHV|   -  |   +   |    +    |
             -----+------+-------+---------+
             |VNR |   +  |   -   |    +    |
             -----+------+-------+---------+
             |RHV |   -  |   +   |    +    |
             -----+------+-------+---------+
             |MRHM|   +  |   +   |    +    |
             -----+------+-------+---------+
             |IP  |   +  |   -   |    +    |
             -----+------+-------+---------+
             Figure 12:  Version Number and Rank Authentication

4  Security Considerations

   The security mechanism in this draft extend the RPL security
   mechanisms, sections 6.1 and 10 of [I-D.ietf-roll-rpl].  Therefore,
   the security consideration described in section 18 of
   [I-D.ietf-roll-rpl] exists in this document.  The scope of the
   current RPL security services is the link; the authenticity of the
   messages sent by the DODAG root relies on the trustworthiness of all
   intermediate nodes and the fact that none of the keys are
   compromised.  The herein proposed Authentication scheme extends the
   data integrity and data origin authentication [RFC3552] to network
   level by authenticating Version Number and the Rank.  Note that when
   using the Version Number authentication, only the root can increase
   the Version Number, so it can control exhaustion of the chain.

   This draft prevents two powerful attacks: a)  An internal attacker
   impersonating a DODAG root and updating the Version Number; and b)
   An internal attacker publishing decreased Rank in order to be on the
   path to the DODAG root for the majority of the nodes and by that to
   be able to eavesdrop a large part of network traffic.

5  IANA Considerations

5.1  RPL Control Message Option

   IANA is requested to create a registry for the RPL Control Message
   Options.

   New values may be allocated only by an IETF Review.  Each value
   should be tracked with the following qualities:

   o  Value




Dvir, et al.                 July 11, 2012                     [Page 18]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


   o  Capability description

   o  Defining RFC

   The following bits are currently defined:

             +----------+------------------------+---------------+
             |  Value   |   Description          | Reference     |
             +----------+------------------------+---------------+
             |   0x0A   |   Authentication       | This document |
             +----------+------------------------+---------------+
                   RPL Control Message Option


5.2  New Registry for the Code Value Type

   IANA is requested to create a registry for the Code Value Type Field,
   which is contained in the Authentication option.

   New values may be allocated only by an IETF Review.  Each value
   should be tracked with the following qualities:

   o  Value

   o  Code Value Type

   o  Defining RFC

   The following bits are currently defined:

             +-----+-------------------------------+---------------+
             |Value|      Code Value Type          |  Reference    |
             +-----+-------------------------------+---------------+
             |   0 |Version Number Hash Chain Value| This document |
             |     |                               |               |
             |   1 |Version Number Hash Chain Root | This document |
             |     |                               |               |
             |   2 |Rank Hash Chain Value          | This document |
             |     |                               |               |
             |   3 |MAC of Max Rank Hash Value     | This document |
             |     |                               |               |
             |   4 |Integrity Protection Value     | This document |
             |     |                               |               |
             | else|Unassigned                     | This document |
             |     |                               |               |
             +-----+-------------------------------+---------------+

                   Code Field in  Authentication Option



Dvir, et al.                 July 11, 2012                     [Page 19]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


5.3  New Registry for the Algorithm Type

   IANA is requested to create one registry for the Algorithm Field per
   allocated Code value

   New values may be allocated only by an IETF Review.  Each value
   should be tracked with the following qualities:

   o  Code Value

   o  Algorithm Value

   o  Capability description

   o  Defining RFC

   The following bits are currently defined:

             +------+-----+--------------------------+--------------+
             | Code |Algo |       Description        |  Reference   |
             +------+-----+--------------------------+--------------+
             | 0    |   0 |SHA-256                   | This document|
             |      |     |                          |              |
             | 0    |   1 |SHA-512                   | This document|
             |      |     |                          |              |
             | 1    |   0 |SHA-256                   | This document|
             |      |     |                          |              |
             | 1    |   1 |SHA-512                   | This document|
             |      |     |                          |              |
             | 2    |   0 |SHA-256                   | This document|
             |      |     |                          |              |
             | 2    |   1 |SHA-512                   | This document|
             |      |     |                          |              |
             | 3    |   0 |HMAC-SHA-256              | This document|
             |      |     |                          |              |
             | 3    |   1 |HMAC-SHA-512              | This document|
             |      |     |                          |              |
             | 4    |   0 |HMAC-SHA-256              | This document|
             |      |     |                          |              |
             | 4    |   1 |HMAC-SHA-512              | This document|
             |      |     |                          |              |
             | 4    |   2 |RSA with SHA-256          | This document|
             |      |     |                          |              |
             | 4    |   3 |ECC-SECP256K1 with SHA-256| This document|
             |      |     |                          |              |
             |else  |else |Unassigned                | This document|
             +------+-----+--------------------------+--------------+




Dvir, et al.                 July 11, 2012                     [Page 20]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


             Security Algorithm Field in Authentication Option

6  Acknowledgements

   The work described in this paper is based on results of the WSAN4CIP
   project, which receives research funding from the European
   Community's 7th Framework Programme.  Apart from this, the European
   Commission has no responsibility for the content of this document.
   Amit Dvir has also been supported by the Marie Curie Mobility Grant,
   OTKA-HUMAN-MB08-B 81654 and Levente Buttyan has been supported by the
   Hungarian Academy of Sciences through the Bolyai Janos Research
   Fellowship.  The authors would also like to acknowledge the review
   and comments from Yoav Ben Yehezkel.


7  References


7.1  Normative References

   [I-D.ietf-roll-rpl]
              Winter, T., Thubert, P., Brandt, A., Clausen, T., Hui,
              J., Kelsey, R., Levis, P., Pister, K., Struik, R., and J.
              Vasseur, "RPL: IPv6 Routing Protocol for Low power and
              Lossy Networks", draft-ietf-roll-rpl-19 (work in
              progress), Sept 2011.

   [RFC6206]  Levis, P., Clausen, T., Hui, J., Gnawali, O., and J. Ko,
              "The Trickle Algorithm", RFC 6206, March  2011.

   [RFC2119]  S. Bradner, "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC3552]  Rescorla E., and B. Korver, "Guidelines for Writing RFC
              Text on Security Considerations", BCP 72, RFC 3552, March
              2003.

   [RFC3447]  Jonsson, J., and B. Kaliski, "Public-Key Cryptography
              Standards (PKCS) #1: RSA Cryptography Specifications
              Version 2.1", RFC 3447, February 2003.

7.2  Informative References

   [I-D.ietf-roll-terminology]
              Vasseur, J., "Terminology in Low power And Lossy
              Networks", draft-ietf-roll-terminology-06 (work
              in progress), March 2012.




Dvir, et al.                 July 11, 2012                     [Page 21]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


   [I-D-roll-security-framework]
              Tsao T., Alexander R., Dohler M., Daza V., and A. Lozano,
              "A Security Framework for Routing over Low Power and
              Lossy Networks", |%draft-ietf-roll-security-framework-06,
              (work in progress) December 2011.

   [draft-ietf-roll-minrank-hysteresis]
              Gnawali, O., and P. Levis, "The Minimum Rank Objective
              Function with Hysteresis", draft-ietf-roll-minrank
              -hysteresis-of-04 (work in progress), Nov 2011.

   [RFC5826]  Brandt, A., Buron, J., and G. Porcu, "Home Automation
              Routing Requirements in Low-Power and Lossy Networks", RFC
              5826, April 2010.

   [RFC5867]  Martocci, J., De Mil, P., Riou, N., and W. Vermeylen,
              "Building Automation Routing Requirements in Low-Power and
              Lossy Networks", RFC 5867, June 2010.

   [RFC5548]  Dohler, M., Watteyne, T., Winter, T., and D. Barthel,
              "Routing Requirements for Urban Low-Power and Lossy
              Networks", RFC 5548, May 2009.

   [RFC5673]  Pister, K., Thubert, P., Dwars, S., and T. Phinney,
              "Industrial Routing Requirements in Low-Power and Lossy
              Networks", RFC 5673, October 2009.

   [RFC4949]  R. Shirey, "Internet Security Glossary", RFC 4949, FYI 36,
              August 2007.

   [RFC4868]  Kelly, S., and S. Frankel, "Using HMAC-SHA-256, HMAC-SHA-
              384, and HMAC-SHA-512 with IPsec", RFC 4868, May 2007.

   [FC_Code]  Francillon, A., C. Castelluccia, "Code injection attacks
              on harvard-architecture devices", ACM conference on
              Computer and communications security, pp. 15-25, 2008,
              Virginia, USA.

   [PseuFun]  Goldreich, O., Goldwasser, S., and S. Micali,  "How to
              Construct Random Functions", Journal of the ACM, Volume
              33, Number. 4, 1986, pp 210-217.

   [Tamper]   Anderson, R., and M. Kuhn, "Tamper Resistance - a
              Cautionary Note", USENIX Workshop on Electronic Commerce
              Proceedings, pp 1-11, 1996, Oakland, California.

   [L1981]    Lamport L., "Password Authentication with Insecure
              Communication", ACM Journal of Communications Volume 24



Dvir, et al.                 July 11, 2012                     [Page 22]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


              Issue 11, pp 770-772, Nov. 1981.

   [SECG2]    D. R. L. Brown, "Standards for Efficient Cryptography
              Group (SECG), "SEC 2: Recommended Elliptic Curve Domain
              Parameters version 2.0", Version 2.0, January 2010.

   [OptHash]  Don, C., and M. Jakobsson, "Almost Optimal Hash Sequence
              Traversal", Fourth Conference on Financial Cryptography,
              2002.

   [FIPS180]  National Institute of Standards and Technology, "FIPS Pub
              180-3, Secure Hash Standard (SHS)", US Department of
              Commerce , February 2008,
              <http://www.nist.gov/itl/upload/fips180-3_final.pdf>.

Authors' Addresses


              Amit Dvir
              Laboratory of Cryptography and Systems Security (CrySyS)
              Budapest University of Technology and Economics
              BME-HIT, PO Box 91, 1521 Budapest
              Hungary

              EMail: azdvir@gmail.com

              Tamas Holczer
              Laboratory of Cryptography and Systems Security (CrySyS)
              Budapest University of Technology and Economics
              BME-HIT, PO Box 91, 1521 Budapest
              Hungary

              EMail: tamas.holczer@crysys.hu

              Laszlo Dora
              Laboratory of Cryptography and Systems Security (CrySyS)
              Budapest University of Technology and Economics
              BME-HIT, PO Box 91, 1521 Budapest
              Hungary

              EMail: laszlo.dora@crysys.hu

              Levente Buttyan
              Laboratory of Cryptography and Systems Security (CrySyS)
              Budapest University of Technology and Economics
              BME-HIT, PO Box 91, 1521 Budapest
              Hungary




Dvir, et al.                 July 11, 2012                     [Page 23]


INTERNET DRAFT   Version Number and Rank Authentication  January 8, 2012


              EMail: buttyan@crysys.hu


















































Dvir, et al.                 July 11, 2012                     [Page 24]