<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="draft-sarikaya-6lo-ap-nd-03_files/rfc2629.xslt" type="text/xsl"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [


]>
<?rfc strict="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc iprnotified="no" ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<rfc category="std" ipr="trust200902" docName="draft-ietf-6lo-ap-nd-03" updates="6775"> 
<!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

<front> 

    <title abbrev="Address Protection ND for LLN"> 
    Address Protected Neighbor Discovery for Low-power and Lossy Networks 
    </title>
   
   
   
    <author initials="B.S." surname="Sarikaya" fullname="Behcet Sarikaya">
    <organization></organization>
    <address>
    <postal>
    <street></street>
    <street/>
    <city>Plano</city> <region>TX</region> <code></code>
       <country>USA</country>
    </postal>
    
    <email>sarikaya@ieee.org</email>
    </address>
    </author>   


   
 
     
   <author initials="P" surname="Thubert" fullname="Pascal Thubert">
      <organization abbrev="Cisco">Cisco Systems, Inc</organization>
      <address>
         <postal>
            <street>Building D</street>
            <street>45 Allee des Ormes - BP1200 </street>
            <city>MOUGINS - Sophia Antipolis</city>
            <code>06254</code>
            <country>FRANCE</country>
         </postal>
         <phone>+33 497 23 26 34</phone>
         <email>pthubert@cisco.com</email>
      </address>
    </author>    

   <author initials="M.S." surname="Sethi" fullname="Mohit Sethi">
    <organization>Ericsson</organization>
    <address>
    <postal>
    <street>Hirsalantie</street>
    <street/>
    <city>Jorvas</city> <region/> <code>02420</code>
    </postal> 
    <email>mohit@piuha.net</email>
    </address>
    </author>   
   <date/>

   <workgroup>6lo</workgroup>

   <abstract>
   <t>
<!--	Modifications to 6LoWPAN Neighbor
Discovery protocol are proposed in order to secure the neighbor discovery for low-power
and lossy networks. -->
This document defines an extension to 6LoWPAN Neighbor Discovery RFC 6775. <!--This extension is designed for low-power and lossy network environments and it supports multi-hop operation. -->Nodes supporting this extension compute a cryptographic Owner Unique Interface ID and associate it with one or more of their Registered Addresses.<!-- The Cryptographic ID uniquely identifies the owner of the Registered Address and can be verified. It is used in place of the EUI-64 address that is specified in RFC 6775. --> Once an address is registered with a Cryptographic ID, only the owner of that ID can modify the anchor state information of the Registered Address, and Source Address Validation can be enforced.
   <!--
Cryptographically Generated Address and digital signatures
are calculated using Elliptic Curve Cryptography, so that the cryptographic
operations are suitable for low power devices. An optimal version of this 
protocol is also specified which supports faster CGA calculation and multi-hop operation.-->
   </t>
   </abstract>

</front>

<middle>

<section title="Introduction">
	<t> 
         <!--
		In this document, <xref target="RFC4861">Neighbor Discovery for IPv6</xref> and <xref target="RFC4862">Stateless Address Autoconfiguration</xref> along with their extensions are collectively referred to as the classical IPv6 Neighbor Discovery Protocol (IPv6 ND). They are defined for regular hosts that have sufficient memory and computation capabilities. These protocols are however not suitable for resource-constrained devices. Therefore, they require adaptation to work on resource-constrained hosts operating over a low-power and lossy network (LLN).
In order to enable IPv6 Neighbor Discovery Protocol (IPv6 ND) operations over a constrained low-power and lossy network (LLN),        --> 
		<xref target="RFC6775">"Neighbor Discovery Optimizations for 6LoWPAN networks"</xref> (6LoWPAN ND) adapts the classical IPv6 ND protocol <xref target="RFC4861"/><xref target="RFC4862"/> (IPv6 ND) for operations over a constrained low-power and lossy network (LLN). In particular, 6LoWPAN ND introduces a unicast host address registration mechanism that contributes to reduce the use of multicast messages that are present in the classical IPv6 ND protocol. 6LoWPAN ND defines a new Address Registration Option (ARO) that is carried in the unicast Neighbor Solicitation (NS) and Neighbor Advertisement (NA) messages between the 6LoWPAN Node (6LN) and the 6LoWPAN Router (6LR). Additionally, it also defines the Duplicate Address Request (DAR) and Duplicate Address Confirmation (DAC) messages between the 6LR and the 6LoWPAN Border Router (6LBR). In LLN networks, the 6LBR is the central repository of all the registered addresses in its domain.
	</t>  
  <!--
      With <xref target="RFC6775">6LoWPAN ND</xref>, the ARO option includes a Owner Unique ID (OUID) field that carries an EUI-64 interface ID, and is used to uniquely identify the interface of the Registered Address on the registering device, so as to correlate further registrations for the same address and avoid address duplication.-->
     <!-- The EUI-64 interface ID is not secure and its ownership cannot be verified. Consequently, any device claiming the same EUI-64 interface ID may take over an existing registration and attract the traffic for that address. 
      The address registration mechanism in 6LoWPAN ND does not provide a way to prove the ownership of the OUID. 
      With 6LoWPAN ND, an Address Registration Option (ARO) is carried in the unicast Neighbor Solicitation (NS) and Neighbor Advertisement (NA) messages between the 6LoWPAN Node (6LN) and the 6LoWPAN Router (6LR), as well as the Duplicate Address Request (DAR) and Duplicate Address Confirmation (DAC) messages between the 6LR and the 6LoWPAN Border Router (6LBR).-->
      
   
    	<t>
    		The registration mechanism in <xref target="RFC6775">6LoWPAN ND</xref> prevents the use of an address if that address is already present in the subnet (first come first serve). In order to validate address ownership, the registration mechanism enables the 6LR and 6LBR to validate claims for a registered address with an associated Owner Unique Interface IDentifier (OUID). 6LoWPAN ND specifies that the OUID is derived from the MAC address of the device (EUI-64), which can be spoofed. Therefore, any node connected to the subnet and aware of a registered-address-to-OUID mapping could effectively fake the OUID, steal the address and redirect traffic for that address towards a different 6LN. The <xref target="I-D.ietf-6lo-rfc6775-update">"Update to 6LoWPAN ND"</xref> defines an Extended ARO (EARO) option that allows to transport alternate forms of OUIDs,
            and is a prerequisite for this specification.     
      	</t>

      	<t>
      		According to this specification, a 6LN generates a cryptographic ID (Crypto-ID) and places it in the OUID field in the registration of one (or more) of its addresses with the 6LR(s) that the 6LN uses as default router(s). Proof of ownership of the cryptographic ID (Crypto-ID) is passed with the first registration to a given 6LR, and enforced at the 6LR, in a new Crypto-ID Parameters Option (CIPO). The 6LR validates ownership of the cryptographic ID upon the creation of a registration state, or a change in the anchor information, such as Link-Layer Address and associated Layer-2 cryptographic material.
      	</t>
     	
      	<t>
      		The protected address registration protocol proposed in this document enables the enforcement of Source Address Validation (SAVI) <xref target="RFC7039"/>, which ensures that only the correct owner uses a registered address in the source address field in IPv6 packets. Consequently, a 6LN that sources a packet has to use a 6LR to which the source address of the packet is registered to forward the packet. The 6LR maintains state information for the registered addressed, including the MAC address, and a link-layer cryptographic key associated with the 6LN. In SAVI-enforcement mode, the 6LR allows only packets from a connected Host if the connected Host owns the registration of the source address of the packet.
      	</t>
        
        
  
  	<!--t> When this mode is enforced throughout a network, a destination node can trust that the source is the real owner of the IPv6 address.
      
      A cryptographic ID (Crypto-ID) is used as a correlator associated with the registration of the IP address, and is used to validate updates to the registration.
   </t>
 		In order to achieve this ownership verification, in this extension specification, the EUI-64 interface ID used in 6LoWPAN ND is replaced with cryptographic material whose ownership can be verified. The extension also provides new means for the 6LR to validate ownership of the registration, and thus, the ownership of registered address. The resulting protocol is called Protected Address Registration protocol (ND-PAR).
   	</t>
   	<t>
   		In ND-PAR, a node typically generates one 64-bit cryptographic ID (Crypto-ID) and uses it as OUID in the registration of one (or more) of its addresses with the 6LR, which it attaches to and uses as default router. The 6LR validates ownership of the cryptographic ID typically upon creation or update of a registration state, for instance following an apparent movement from one point of attachment to another. The ARO option is modified to carry the Unique Interface ID, and through the DAR/DAC exchange.
   </t-->
   
   		<t>
   			The 6lo adaptation layer framework (<xref target="RFC4944"/>, <xref target="RFC6282"/>) expects that a device forms its IPv6 addresses based on Layer-2 address, so as to enable a better compression. This is incompatible with <xref target="RFC3971">"Secure Neighbor Discovery (SEND)"</xref> and <xref target="RFC3972">"Cryptographically Generated Addresses (CGAs)"</xref>, which derive the Interface ID (IID) in the IPv6 addresses from cryptographic material. <xref target="RFC7721">"Privacy Considerations for IPv6 Address Generation Mechanisms"</xref> places additional recommendations on the way addresses should be formed and renewed.
    	</t>
   	

   		<t>
   			This document specifies that a device may form and register addresses at will, without a constraint on the way the address is formed or the number of addresses that are registered in parallel. It enables to protect multiple addresses with a single cryptographic material and to send the proof only once to a given 6LR for multiple addresses and refresher registrations.
   		</t>
  

</section> 

  

<section title="Terminology">

		<t>
			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 <xref target="RFC2119"/>.
		</t>

   
    	<t> 
    		Readers are expected to be familiar with all the terms and concepts that are discussed in <xref target="RFC3971"/>, <xref target="RFC3972"/>, <xref target="RFC4861"/>,  <xref target="RFC4919"/>, <xref target="RFC6775"/>, and <xref target="I-D.ietf-6lo-backbone-router"/> which proposes an evolution of <xref target="RFC6775"/> for wider applicability.
    	</t>

    	<t>
    		This document defines Crypto-ID as an identifier of variable size which in most cases is 64 bits long. It is generated using cryptographic means explained later in this document <xref target="cryptoidalg"/>.
    	</t>

    	<t>
    		The document also conforms to the terms and models described in <xref target="RFC5889"/> and uses the vocabulary and the concepts defined in <xref target="RFC4291"/> for the IPv6 Architecture. Finally, common terminology related to Low power And Lossy Networks (LLN) defined in <xref target="RFC7102"/> is also used.
    	</t>
  

  
</section>


 	<section title="Updating RFC 6775">
        <t>
            This specification defines a cryptographic identifier (Crypto-ID) that can be used as a replacement 
            to the MAC address in the OUID field of the EARO option; the computation of the Crypto-ID is detailed in
            <xref target="cryptoidalg"/>.
        	A node in possession of the necessary cryptographic material SHOULD use Crypto-ID by default as OUID in its registration. Whether a OUID is a Crypto-ID is indicated by a new "C" flag in the NS(EARO) message.
        </t>
        <t>
        	This specification introduces a new option, the CIPO, that is used to prove ownership of the Crypto-ID. A node that registers for the first time to a 6LR SHOULD place a CIPO option in its registration. However, it is not expected to place the option in the periodic refresher registrations for that address, or to register other addresses with the same OUID. When a 6LR receives a NS(EARO) registration with a new Crypto-ID as a OUID, it SHOULD challenge by responding with a NA(EARO) with a status of "Validation Requested". This process of validation MAY be skipped in networks where there is no mobility.
        </t>
        <t>
        	The challenge MUST also be triggered in the case of a registration for which the Source Link-Layer Address is not consistent with a state that already exists either at the 6LR or the 6LBR. In the latter case, the 6LBR returns a status of "Validation Requested" in the DAR/DAC exchange, which is echoed by the 6LR in the NA (EARO) back to the registering node. This flow should not alter a preexisting state in the 6LR or the 6LBR.        
        </t>
        <t>
        	Upon receiving a NA(EARO) with a status of "Validation Requested", the registering node SHOULD retry its registration with a CIPO option that proves its ownership of the Crypto-ID. 
        </t>
        <t>
        	If the 6LR cannot validate the CIPO, it responds with a status of "Validation Failed". After receiving a NA(EARO) with a status of "Validation Failed", the registering node MUST NOT use this Crypto-ID for registering with that 6LR. 
        </t>
        
    	
</section>

        <section anchor="cryptoifldg" title="New Fields and Options">

        <section anchor="cryptoidalg" title="New Crypto-ID">
    	<!--TODO: Reference to CGA Parameter in the next paragraph without explaining it anywhere?-->
    	<t>
    		Elliptic Curve Cryptography (ECC) is used to calculate the Crypto-ID. Each 6LN using a Crypto-ID for registration MUST have a public/private key pair. The digital signature is constructed by using the 6LN's private key over its EUI-64 (MAC) address. The signature value is computed using the ECDSA signature algorithm and the hash function used is SHA-256 <xref target="RFC6234"/>. Public Key is the most important parameter in CGA Parameters (sent by 6LN in an NS message). ECC Public Key could be in uncompressed form or in compressed form where the first octet of the OCTET STRING is 0x04 and 0x02 or 0x03, respectively. Point compression can further reduce the key size by about 32 octets. 
       	</t>
       	<!--t>
    		After calculating its Crypto-ID, a 6LN sends it along with the CGA parameters in the first NS message, see <xref target="Dynamic-fig"/>. In order to send Crypto-ID, a modified address registration option called Enhanced Address Registration Option (EARO) is defined in <xref target="crypto-fig"/>. As defined in the figure this ID is variable length, varying between 64 to 128 bits. This ID is 128 bits long only if it is used as IPv6 address. This may happen when some application uses one IP address of the device as device ID. It would make sense in that case to build a real CGA IPv6 address. The prefix of the address would be obtained from prefix information option (PIO in RA) <xref target="RFC4861"/>. 
    	</t>
    	<t>
    		6LN also sends some other parameters to enable 6LR or 6LBR to verify the Crypto-ID. The option shown in <xref target="cgapar-fig"/> can be used. In the figure, CGA Parameters field contains the public key, prefix and some other values. It is a simplified form of CGA Option defined in <xref target="RFC3971"/>.
    	</t-->
    	<t>
        The Crypto-ID is computed as follows:
        <list style="numbers">
        <t>the modifier is set to a random or pseudo-random 128-bit value
        </t><t>
        the modifier, 9 zero octets and the ECC public key are concatenated from left to right. 
        </t><t>
        the SHA-256 algorithm is applied on the concatenation
        </t><t>
        the 112 leftmost bits of the hash value are retained
        </t><t>
        the modifier value, the subnet prefix and the encoded public key are concatenated from left to right 
        </t><t>
        NIST P-256 is executed on the concatenation
        </t><t>
        the leftmost bits of the result are used as the Crypto-ID. 
        </t>
        </list>
        With this specification, the last 64 bits are retained, but it could be expanded to more bits in the future by increasing the size of the OUID field. 
    	</t>
    	<t>
    		To support cryptographic algorithm agility <xref target="RFC7696"/>, Curve25519 <xref target="RFC7748"/> can also be used instead of NIST P-256. This is indicated by 6LN using the Crypto Type field in the CIPO option. The document currently only defines two possible values for the Crypto Type field. A value of 0 indicates that NIST P-256 is used for the signature operation and SHA-256 as the hash algorithm. A value of 1 indicates that Curve25519 is used for the signature operation and SHA-256 as the hash algorithm. New values for the Crypto Type maybe defined in the future for new curves. 
    	</t>
    	   	
            
</section>

 <section anchor="cryptoEARO" title="Updated EARO">
 
    	<t> This specification updates the EARO option as follows:
        </t>
    	   <figure anchor="crypto-fig" title="Enhanced Address Registration Option">   
     <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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |     Length    |    Status     |    Reserved   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Reserved  |C|T|     TID       |     Registration Lifetime     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +          Owner Unique ID (EUI-64 or equivalent)               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    
                                                          
     </artwork>   
    </figure>
    
  <t>
    <list hangIndent="16"  style='hanging'>
    	<t hangText="Type:">
    	<!--vspace blankLines="1"/ -->  	
       33
    	</t>
    	
    	<t hangText="Length:">
    	<!--vspace blankLines="1"/ -->
        8-bit unsigned integer. The length of the option (including the type and length fields) in units of 8 bytes.<!-- A value of 3 with the C flag set indicates a Crypto-ID of 128 bits. -->
    	</t>
    	
    	<t hangText="Status:">
    	<!--vspace blankLines="1"/ -->
        8-bit unsigned integer. Indicates the status of a registration in the NA response. MUST be set to 0 in NS messages. This specification uses values introduced in the <xref target="I-D.ietf-6lo-rfc6775-update"> update to 6LoWPAN ND</xref>, such as "Validation Requested" and "Validation Failed".  No additional value is defined.
       	</t>
    	
    	<t hangText="Reserved:">
    	<!--vspace blankLines="1"/ -->
        This field is unused. It MUST be initialized to zero by the sender and MUST be ignored by the receiver.
      </t>
    	
    	<t hangText="C:">
    	 <!--vspace blankLines="1"/ -->
        This "C" flag is set to indicate that the Owner Unique ID field contains a Crypto-ID.
      </t>
      		
      <t hangText="T and TID:">
    	<!--vspace blankLines="1"/ -->
       Defined in <xref target="I-D.ietf-6lo-rfc6775-update"/>.
      </t>
    	
    	<t hangText="Owner Unique ID:">
    	<!--vspace blankLines="1"/ -->
        When the "C" flag is set, this field contains a Crypto-ID. 
      </t>
    </list>
  </t>
    			 
</section>

 <section anchor="cryptoidopt" title="New Crypto-ID Parameters Option">
 <t> This specification introduces a new option, the Crypto-ID Parameters Option (CIPO), that carries the proof of ownership of a crypto-ID.
 </t>
 
<figure anchor="cgapar-fig" title="Crypto-ID Parameters Option">
<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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |   Pad Length  |  Crypto Type  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                      Modifier (16 octets)                     +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                    Subnet Prefix (8 octets)                   +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                                                               |
   +                  Public Key (variable length)                 +
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   .                                                               .
   .                           Padding                             .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    
</artwork>
</figure>
<t>	
<list hangIndent="16"  style='hanging'>
	<t hangText="Type:">
	<!--vspace blankLines="1"/ -->
    	 CIPO, to be assigned by IANA.
	</t>
	
	<t hangText="Length:">
	<!--vspace blankLines="1"/ -->
      The length of the option in units of 8 octets.
	</t>
	
	<t hangText="Pad Length:">
	<!--vspace blankLines="1"/ -->
      The length of the Padding field.
	</t>
	<t hangText="Crypto Type:">
		<!--vspace blankLines="1"/ -->
    	  The type of cryptographic algorithm used in calculation Crypto-ID. Default value of all zeros indicate NIST P-256. A value of 1 is assigned for Curve25519. New values may be defined later. 
	</t>
	
	<t hangText="Modifier:">
		<!--vspace blankLines="1"/ -->
	     128 bit random value.
	</t>
	
	<t hangText="Subnet Prefix:">
		<!--vspace blankLines="1"/ -->
       	 64 bit subnet prefix.
	</t>
	
	<t hangText="Public Key:">
		<!--vspace blankLines="1"/ -->
     	 ECC public key of 6LN.  
	</t>
	
	<t hangText="Padding:">
		<!--vspace blankLines="1"/ -->
      		A variable-length field making the option length a multiple of 8, containing as many octets as specified in the Pad Length field.
    </t>
   </list>
  </t>	
    	
    </section>
    </section>
 	<section title="Protocol Overview">
    
        
        
 	<section title="Protocol Scope">
    	<t>
      		The scope of the present work is a 6LoWPAN Low Power Lossy Network  (LLN), typically a stub network connected to a larger IP network via a Border Router called a 6LBR per <xref target="RFC6775"/>.
      	</t>
      	<t>
      		The 6LBR maintains a registration state for all devices in the attached LLN, and, in conjunction with the first-hop router (the 6LR), is in a position to validate uniqueness and grant ownership of an IPv6 address before it can be used in the LLN. This is a fundamental difference with a classical network that relies on IPv6 address auto-configuration <xref target="RFC4862"/>, where there is no guarantee of ownership from the network, and any IPv6 Neighbor Discovery packet must be individually secured <xref target="RFC3971"/>.  
      	</t>
<figure anchor="figco" title="Basic Configuration">
<artwork><![CDATA[
            ---+-------- ............ 
               |      External Network
               |                         
            +-----+                      
            |     | 6LBR               
            +-----+
          o    o   o
   o     o   o     o
      o   o LLN   o    o     o
         o   o   o       (6LR)
                 o         (6LN)
                 
         ]]></artwork>
</figure>
      	<t>      
      		In a mesh network, the 6LR is directly connected to the host device. This specification expects that the peer-wise layer-2 security is deployed so that all the packets from a particular host are securely identifiable by the 6LR. The 6LR may be multiple hops away from the 6LBR. Packets are routed between the 6LR and the 6LBR via other 6LRs. This specification expects that a chain of trust is established so that a packet that was validated by the first 6LR can be safely routed by the next 6LRs to the 6LBR.
      	</t>
        
 	</section>
        
 	<section title="Protocol Flows">
    
      	<t>
      		<xref target="figReg"/> illustrates a registration flow all the way to a 6LowPAN Backbone Router (6BBR). 
      	</t>
     	 <t>
      		A new device that joins the network auto-configures an address and performs an initial registration to an on-link 6LR with an NS message that carries an Address Registration Option (EARO) <xref target="RFC6775"/>. The 6LR validates the address with the central 6LBR using a DAR/DAC exchange, and the 6LR confirms (or denies) the address ownership with an NA message that also carries an Address Registration Option.
      	</t>

     	<t>
      		In a multihop 6LoWPAN, the registration with Crypto-ID is propagated to 6LBR as described in <xref target="mhopo"/>. If a chain of trust is present between the 6LR and the 6LBR, then there is no need to propagate the proof of ownership to the 6LBR. All the 6LBR needs to know is that this particular OUID is randomly generated, so as to enforce that any update via a different 6LR is also random.
      	</t>
<figure anchor="figReg" suppress-title="false" title="(Re-)Registration Flow">
<artwork><![CDATA[

     6LN              6LR             6LBR            6BBR    
      |                |               |                |
      |   NS(EARO)     |               |                |
      |--------------->|               |                |
      |                | Extended DAR  |                |
      |                |-------------->|                |
      |                |               |                |
      |                |               | proxy NS(EARO) |
      |                |               |--------------->|
      |                |               |                | NS(DAD)
      |                |               |                | ------> 
      |                |               |                |
      |                |               |                | <wait>
      |                |               |                |
      |                |               | proxy NA(EARO) |
      |                |               |<---------------|
      |                | Extended DAC  |                |
      |                |<--------------|                |          
      |   NA(EARO)     |               |                |
      |<---------------|               |                |
      |                |               |                | 
                                 
]]></artwork>
</figure>
    	<!--t>
    		The Target Address field in NS message is set to the prefix concatenated with the node's address. This address does not need duplicate address detection as Crypto-ID is globally unique. So a host cannot steal an address that is already registered unless it has the key used for generating the Crypto-ID. The same Crypto-ID can thus be used to protect multiple addresses e.g. when the node receives a different prefix. 
    	 </t-->
    	 <t>
    	 	On-link (local) protocol interactions are shown in <xref target="Dynamic-fig"/>. Crypto-ID and ARO are passed to and stored by the 6LR  on the first NS and not sent again in the next NS. The operation starts with 6LR sending a Router Advertisement (RA) message to 6LN.
    	</t>
    	
    	<t> 
		 	The 6LR/6LBR ensures first-come/first-serve by storing the ARO and the Crypto-ID correlated to the node being registered. The node is free to claim any address it likes as long as it is the first to make such a claim. After a successful registration, the node becomes the owner of the registered address and the address is bound to the Crypto-ID in the 6LR/6LBR registry. This binding can be verified later, which prevents other nodes from stealing the address and trying to attract traffic for that address or use it as their source address.
    	</t>
    	<t>
    		A node may use multiple IPv6 addresses at the same time. The node may use the same Crypto-ID to protect multiple IPv6 addresses.  The separation of the address and the Crypto-ID avoids the constrained device to compute multiple keys for multiple addresses. The registration process allows the node to bind all of its addresses to the same Crypto-ID. 
    	</t>
    	<!-- t>
    		Note that if the device that moves may form a new MAC and/or IP address <xref target="RFC6775"/>, then this new address can be used for registration. In case of a collision of the new MAC and therefore IP address, the node can easily form a new IPv6 address. This is one case where the use of Crypto-ID would not be needed. Crypto-ID or ND-PAR should be activated when the IP address is claimed at another place, or for a different MAC address at the same place, e.g. for MAC address privacy <xref target="RFC7721"/-->
    

<figure anchor="Dynamic-fig" suppress-title="false" title="On-link Protocol Operation">
<artwork><![CDATA[
      6LN                                                6LR
       |                                                  |
       |<------------------- RA --------------------------|
       |                                                  |
       |----------- NS with ARO and Crypto-ID ----------->|
       |                                                  |
       |<---------- NA with ARO (status=proof requested) -|
       |                                                  |
       |----------- NS with ARO and Crypto-ID ----------->|
       |                                                  |
       |<---------------- NA with ARO --------------------|
       |                                                  |
       ...                                              ...
       |                                                  |
       |------------ NS with ARO and Crypto-ID ---------->|
       |                                                  |
       |                                                  |
       |<---------------- NA with ARO --------------------|
       ...                                              ...
       |                                                  |
       |----------- NS with ARO and Crypto-ID ----------->|
       |                                                  |
       |                                                  |
       |<---------------- NA with ARO --------------------|
 ]]></artwork>   
</figure> 
   <t></t>

</section>
 <section anchor="mhopo" title="Multihop Operation">
    	<t>
    		In a multihop 6LoWPAN, a 6LBR sends RAs with prefixes downstream and the 6LR receives and relays them to the nodes. 6LR and 6LBR communicate using ICMPv6 Duplicate Address Request (DAR) and Duplicate Address Confirmation (DAC) messages. The DAR and DAC use the same message format as NS and NA, but have different ICMPv6 type values. 
    	</t>
    	<t>
    		In ND-PAR we extend DAR/DAC messages to carry cryptographically generated OUID. In a multihop 6LoWPAN, the node exchanges the messages shown in <xref target="figReg"/>. The 6LBR must identify who owns an address (EUI-64) to defend it, if there is an attacker on another 6LR. Because of this the content that the source signs and the signature needs to be propagated to the 6LBR in the DAR message. For this purpose the DAR message sent by 6LR to 6LBR MUST contain the CIPO option. The DAR message also contains ARO.
    	</t>
    	<t>
    	   Occasionally, a 6LR might miss the node's OUID (that it received in ARO). 6LR should be able to ask for it again. This is done by restarting the exchanges shown in <xref target="Dynamic-fig"/>. The result enables 6LR to refresh the information that was lost. The 6LR MUST send DAR message with ARO to 6LBR.  The 6LBR replies with a DAC message with the information copied from the DAR, and the Status field is set to zero. With this exchange, the 6LBR can (re)validate and store the information to make sure that the 6LR is not a fake.
    	</t>
    	<t>
    		In some cases, the 6LBR may use a DAC message to solicit a Crypto-ID from a 6LR and also requests 6LR to verify the EUI-64 6LR received from 6LN. This may happen when a 6LN node is compromised and a fake node is sending the Crypto-ID as if it is the node's EUI-64. Note that the detection in this case can only be done by 6LBR not by 6LR.
    	</t>
    	</section>
    	
 	</section >
    
  <section title="Security Considerations">
   
    	<t>
    		The observations regarding the threats to the  local network in <xref target="RFC3971"/> also apply to this specification. 
    	</t>
    	<t>
    		The threats discussed in 6LoWPAN ND <xref target="RFC6775"/> and its update <xref target="I-D.ietf-6lo-rfc6775-update"/> also apply here. Compared with SeND, this specification saves  about 1Kbyte in every NS/NA message. Also, this specification separates the cryptographic identifier from the registered IPv6 address so that a node can have more than one IPv6 address protected by the same cryptographic identifier. SeND forces the IPv6 address to be cryptographic since it integrates the CGA as the IID in the IPv6 address. This specification frees the device to form its addresses in any fashion, so as to enable the classical 6LoWPAN compression which derives IPv6 addresses from Layer-2 addresses, as well as privacy addresses. The threats discussed in Section 9.2 of <xref target="RFC3971"/> are  countered by the protocol described in this document as well. 
        </t>
    	<!--<t>
    		As to the attacks to the protocol itself, denial of service attacks that involve producing a very high number of packets are deemed unlikely because of the assumptions on the node capabilities in low-power and lossy networks.
    	</t>-->
    	<t>
    		Collisions of Owner Unique Interface IDentifier (OUID) (which is the Crypto-ID in this specification) is a possibility that needs to be considered. The formula for calculating the probability of a collision is 1 - e^{-k^2/(2n)} where n is the maximum population size (2^64 here, 1.84E19) and K is the actual population (number of nodes). If the Crypto-ID is 64-bit long, then the chance of finding a collision is 0.01% when the network contains 66 million nodes. It is important to note that the collision is only relevant when this happens within one stub network (6LBR). A collision of Crypto-ID is a rare event. In the case of a collision, an attacker may be able to claim the registered address of an another legitimate node. However for this to happen, the attacker would also need to know the address which was registered by the legitimate node. This registered address is however never broadcasted on the network and therefore it provides an additional entropy of 64-bits that an attacker must correctly guess. To prevent such a scenario, it is RECOMMENDED that nodes derive the address being registered independently of the OUID. 
    	</t>
    
    </section>
   

  <?rfc compact="yes" ?>

  <section title="IANA considerations">
  		<t> 
  			IANA is requested to assign two new option type values for the CIPO under the subregistry "IPv6 Neighbor Discovery Option Formats".
     	</t>
     	
     <section title="Crypto Type Registry" anchor="cryptotypereg">
        <t>  
          The following Crypto Type values are defined in this document: 
        </t>

        <texttable title="Crypto Types" anchor="cryptotypetable">
          <ttcol>Crypto Type value</ttcol>
          <ttcol>Algorithms</ttcol>
          	<c>0</c><c>NIST P-256, SHA-256 <xref target="RFC6234"/></c>
            <c>1</c><c>Curve25519 <xref target="RFC7748"/>, SHA-256 <xref target="RFC6234"/></c>
        </texttable>

        <t>
          Assignment of new values for new Crypto Type MUST be done through IANA with "Specification Required" and "IESG Approval" as defined in <xref target="RFC8126"/>.
        </t>
      </section>

  </section>

  <?rfc compact="yes" ?>

  <section title="Acknowledgements">
  		<t>
  			Special thanks to Charlie Perkins for his in-depth review and constructive suggestions.
            We are also grateful to Rene Struik and Robert Moskowitz for their comments that lead to many improvements to this document. 
  		</t>
  </section>
			<section anchor="log" title="Change Log">
			<t>
			<list style="symbols">
			<t>
			submitted version -00 as a working group draft after adoption, and corrected the order of authors
			</t>
			<t>
			submitted version -01 with no changes
			</t>
			<t>
			submitted version -02 with these changes: Moved Requirements to Appendix A, Section 4.2 moved to Section 3, New section 4 on New Fields and Options, Section 4 changed to Protocol Overview as Section 5 with Protocol Scope and Flows subsections.
			</t>
			<t>
			submitted version -03 addressing Charlie Perkins' comments
			</t>
			</list>
			</t>
		
		</section>
 </middle>


 <back>
 

 <references title="Normative References"> 
        <?rfc include='reference.RFC.2119'?>
        <?rfc include='reference.RFC.4291'?>
	    <?rfc include='reference.RFC.4861'?>
	    <?rfc include='reference.RFC.4862'?>
	    <?rfc include='reference.RFC.6775'?>
	    <?rfc include='reference.I-D.ietf-6lo-rfc6775-update'?> 
		    
		<!--<reference anchor="Guide" target="http://standards.ieee.org/develop/regauth/tut/eui64.pdf" > 
		
        <front>
          <title abbrev="EUI-64TM">
          Guidelines for 64-bit global Identifier (EUI-64TM)
          </title>
          <author fullname="IEEE"><organization/> </author>
          <date month="November" year="2012" />
        </front>
        </reference> -->
 </references>


 <references title="Informative references">
  	 <!--<?rfc include='reference.I-D.rafiee-6man-ssas'?>-->
        <?rfc include='reference.RFC.3971'?>
        <?rfc include='reference.RFC.3972'?>
        <?rfc include='reference.RFC.4944'?>
        <?rfc include='reference.RFC.6282'?>
	    <?rfc include='reference.RFC.4919'?>
	    <?rfc include='reference.RFC.8126'?>
        <?rfc include='reference.RFC.5889'?>
        <?rfc include='reference.RFC.6234'?>
	    <?rfc include='reference.RFC.7102'?>
	    <?rfc include='reference.RFC.7039'?>
	    <?rfc include='reference.RFC.7217'?>
	    <?rfc include='reference.RFC.7696'?>
  	    <?rfc include='reference.RFC.7721'?>
		<?rfc include='reference.RFC.7748'?>
  	 <?rfc include='reference.I-D.ietf-6lo-backbone-router'?>
  </references>
  
  
<section anchor="ps" title="Requirements Addressed in this Document">
	<t>
		In this section we state requirements of a secure neighbor discovery protocol for low-power and lossy networks.
   <list style="symbols">
    <t>
      The protocol MUST be based on the Neighbor Discovery Optimization for Low-power and Lossy Networks protocol defined in <xref target="RFC6775"/>. RFC6775 utilizes optimizations such as host-initiated interactions for sleeping resource-constrained hosts and elimination of multicast address resolution.
    </t>
    <t>
      New options to be added to Neighbor Solicitation messages MUST lead to small packet sizes, especially compared with existing protocols such as SEcure Neighbor Discovery (SEND). Smaller packet sizes facilitate low-power transmission by resource-constrained nodes on lossy links. 
    </t>
    <t>
      The support for this registration mechanism SHOULD be extensible to more LLN links than IEEE 802.15.4 only. Support for at least the LLN links for which a 6lo "IPv6 over foo" specification exists, as well as Low-Power Wi-Fi SHOULD be possible.
    </t>
    <t>
      As part of this extension, a mechanism to compute a unique Identifier should be provided with the capability to form a Link Local Address that SHOULD be unique at least within the LLN connected to a 6LBR.
    </t>
    <t>
      The Address Registration Option used in the ND registration SHOULD be extended to carry the relevant forms of Unique Interface IDentifier. 
    </t>
    <t>
      The Neighbour Discovery should specify the formation of a site-local address that follows the security recommendations from <xref target="RFC7217"/>.
    </t>
  </list>
  </t>

      
	
	
	
				
</section>
  
 
 </back> 
 
 </rfc>