<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes"?>
<rfc ipr="trust200902" docName="draft-cheneau-csi-ecc-sig-agility-01" updates="RFC3971,RFC3972">
  <front>
    <title abbrev="ECC PK and sig. support in CGA and SEND">
			ECC public key and signature support in Cryptographically Generated Addresses (CGA) and in the Secure Neighbor Discovery (SEND)
		</title>
    <author initials="T.C" surname="Cheneau" fullname="Tony Cheneau">
      <organization abbrev="TMSP">
				Institut TELECOM, TELECOM SudParis, CNRS SAMOVAR UMR 5157 
			</organization>
      <address>
        <postal>
          <street>9 rue Charles Fourier </street>
          <city>Evry</city>
          <code>91011</code>
          <country>France</country>
        </postal>
        <email>tony.cheneau@it-sudparis.eu</email>
      </address>
    </author>
    <author initials="M.L" surname="Laurent" fullname="Maryline Laurent">
      <organization abbrev="TMSP">
				Institut TELECOM, TELECOM SudParis, CNRS SAMOVAR UMR 5157 
			</organization>
      <address>
        <postal>
          <street>9 rue Charles Fourier </street>
          <city>Evry</city>
          <code>91011</code>
          <country>France</country>
        </postal>
        <email>maryline.laurent@it-sudparis.eu</email>
      </address>
    </author>
    <author initials="S.S" surname="Shen" fullname="Sean Shen">
      <organization abbrev="Huawei">Huawei</organization>
      <address>
        <postal>
          <street>4, South 4th Street, Zhongguancun</street>
          <city>Beijing</city>
          <code>100190</code>
          <country>P.R. China</country>
        </postal>
        <email>sean.s.shen@gmail.com</email>
      </address>
    </author>
    <author initials="M.C.V" surname="Vanderveen" fullname="Michaela Vanderveen">
      <organization abbrev="Qualcomm">
				Qualcomm
			</organization>
      <address>
        <email>mvandervn@gmail.com</email>
      </address>
    </author>
    <date month="November" year="2009"/>
    <area>Internet</area>
    <workgroup>CGA &amp; SEND maintenance</workgroup>
    <keyword>CGA</keyword>
    <keyword>SEND</keyword>
    <keyword>ECDSA</keyword>
    <abstract>
      <t>This draft describes a mechanism to deploy Elliptic Curve Cryptography (ECC) alongside with 
        Cryptographically Generated Addresses (CGA) and the Secure Neighbor Discovery (SEND).
		    This document provides basic skeleton to integrate new signature algorithms in CGA and SEND.
		</t>
    </abstract>
  </front>
  <middle>
    <section anchor="sec-intro" title="Introduction">
      <t> The usage scenarios associated with neighbor discovery have recently been
		    extended to include environments with mobile or nomadic nodes. 
		    Many of these nodes have limited battery power and computing resources. Therefore, heavy public key signing
		    algorithms like RSA are not feasible to support on such constrained nodes.  Fortunately, more lightweight
		    yet secure signing algorithms do exist and have been standardized, e.g. Elliptic Curve based algorithms.</t>
      <t>It is then a worthwhile goal to extend secure neighbor discovery to support this signing algorithm. 	    </t>
      <t>The aim of this memo is to outline options for allowing Elliptic Curve Digital Signature Algorithm for nodes 
        configured to perform secure neighbor discovery operations. The present document exposes how to use and 
        deploy Elliptic Curve Cryptography in <xref target="RFC3972"/>
                 and <xref target="cheneau-csi-send-sig-agility"/>.
		    It should be noted that the latter document  has impacts on existing specification 
        <xref target="RFC3971"/>.</t>
    </section>
    <section anchor="sec-choice" title="Choice of Elliptic Curve">
        
        <t>
            <!-- TC 09/22/09: is there really no other reasons ? -->
            This document follows NIST's recommendation on the usage of various Elliptic Curves as per <xref target="FIPS-186-3"/>.
          For the sake of simplicity, this document only describes the use of three proposed curves, namely curve P-256 
          (aka secp256r1), curve P-384 (aka secp384r1) and curve P-521 (aka secp521r1).
        </t>
        
    </section>
    <section anchor="sec-cga" title="Using ECC in CGA">
        <t>The CGA generation and verification processes remain unmodified from the processes described in <xref target="RFC3972"/>. 
          However, we extend  section 3 of <xref target="RFC3972"/>, as it contains RSA specific text. We add that, when ECDSA 
	  is used, the AlgorithmIdentifier, contained in ASN.1 structure of 
	  type SubjectPublicKeyInfo, must be the (unrestricted) id-ecPublicKey
	  algorithm identifier, which is OID 1.2.840.10045.2.1, 
          and the subjectPublicKey MUST be formatted as an ECC Public Key, specified in Section 2.2 of  <xref target="RFC5480"/>.
        </t>
	<t>
		<!-- TC 09/29/09: I reformulated a bit, please tell me if you like it 
		
			When ECC is used, the algorithm identifier MUST be of type id-ecPublicKey (OID 1.2.840.10045.2.1), as defined in  
			<xref target="RFC5480"/>.  currently in the RFC Ed queue  ECC public key encoding is specified in this reference. -->
			<!-- MM:  id-ecPublicKey OBJECT IDENTIFIER ::= {
			       iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 }", so OID is 1.2.840.10045.2.1
		       	      You need to describe more precisely the Public Key content for ECC. -->
			      Note that the ECC key lengths are determined by the namedCurves parameter stored in ECParameters field of the AlgorithmIdentifier.
			      <!-- MCV 10/06/09: You should probably say where this field name, "ECParameters", is coming from. It's not clear just from this one sentence.-->
			      <!-- TC 10/07/09: should be clearer now -->
			      <!-- M.M: I'd suppress the (curves implying key length) | TC: I think it's useful to keep it for now, maybe in later versions-->
			      <!--			      [MCV: There has to be a way to signal what curve
			      the key is taken from. We know how to do that for
			      certificates. But this is not our case. 
			      TC: it is defined in the draft-ietf-pkix-ecc-subpubkeyinfo-11 (and most probably in other standards, this is the field namedCurves. 
						Since curves are of fixed length: one name = one length.] -->
					<!--	<t>Draft XXX specify ASN.1 rules for ECC keys encoding. For example, 
						namedCurve secp256r1 of OID 1.2.840.10045.3.1.7 refers to 
						P-256 ECC curve as defined in [FIPS186-3].</t> -->
	</t> 
    </section>

    <section anchor="sec-sti" title="Signature Type Identifier for ECC">
	    <t>
		    In the document <xref target="cheneau-csi-send-sig-agility"/>, a field named Signature Type Identifier is used by the Supported Signature Algorithm 
	      Option and the Universal Signature Option (that replaces the RSA Signature Option). This field indicates the Signature Algorithm available 
	      on the node to generate or verify the Digital Signature field of the Universal Signature Option.
	    </t>
	    <t>
		    This document describes new values for three different signature algorithms. These values are extracted from the IANA-defined numbers for the IKEv2 protocol,
	      i.e. IANA registry named "IKEv2 Authentication Method" and are the following:
		    <list style="symbols">
			    <t>Value 9 is ECDSA with SHA-256 on the P-256 curve</t>

			    <t>Value 10 is ECDSA with SHA-384 on the P-384 curve</t>
			    <t>Value 11 is ECDSA with SHA-512 on the P-521 curve</t>
		    </list>
	    </t>
        
    </section>
    <section anchor="sec-send" title="Using ECDSA with Universal Signature Option">
	    <t>
		    The document <xref target="cheneau-csi-send-sig-agility"/> proposes the Universal Signature Option (extended from the RSA Signature Option of 
	       <xref target="RFC3971"/>). This option adds a new Signature Type Identifier field that identifies the signature algorithm used during the generation of the digital signature field.
	    </t>
        
							<t>
							When the value of the Signature Type Identifier field is 9, 10 or 11, this Digital Signature field is computed and verified using the 
							ECDSA signature algorithm (as defined on <xref target="SEC1"/>) and hash function corresponding to the Signature Type Identifier field.
							The data on which the signature is performed are described in <xref target="cheneau-csi-send-sig-agility"/>.
							<!--  TC 10/06/09: Maryline thinks we don't need to detail what has already been stated in the sig agilty document 
							<list style="numbers"><t>The 128-bit CGA Message Type tag <xref target="RFC3972"/> value for SEND, 0x086F
									CA5E 10B2 00C9 9C8C E001 6427 7C08.  (The tag value has been
									generated randomly by the editor of the <xref target="RFC3971"/> specification.)</t><t>The 128-bit Source Address field from the IP header.</t>
							  <t>The 128-bit Destination Address field from the IP header.</t><t>The 8-bit Type, 8-bit Code, and 16-bit Checksum fields from the
									ICMP header.</t><t>The NDP message header, starting from the octet after the ICMP
									Checksum field and continuing up to but not including NDP
									options.</t><t>All NDP options preceding, but not including, any of the Universal Signature options.</t></list> -->
                                                            </t>
    </section>
    <section anchor="sec-sec" title="Security Considerations">
   
      <t>
	      This memo defines the usage of the ECC Public Key and Signature Algorithm in CGA and SEND. <xref target="tab_sec_equiv"/> (from <xref target="SP800-57"/>), presents a comparison between the length of the RSA keys and their equivalent (security-wise) ECC keys.
      </t>
      <!-- MCV 10/06/09: corrected entries in table to match that of NIST-SP800-57] -->
      <texttable anchor="tab_sec_equiv" title="Strength equivalence between Elliptic Curve and RSA Public Keys">
        <ttcol align="center">RSA key length (bits)</ttcol>
        <ttcol align="center">ECC key length (bits)</ttcol>
        <c>3072 </c>
        <c>256</c>
        <c>7680</c>
        <c>384</c>
        <c>15360</c>
        <c>512</c>
      </texttable>
    </section>
    <section anchor="sec-iana" title="IANA Considerations">
      <t>
            This document does not request any new IANA allocations.
        </t>
    </section>
  </middle>
  <back>
    <references title="Normative References">
      <reference anchor="RFC3972">
        <front>
          <title>Cryptographically Generated Addresses (CGA)</title>
          <author initials="T." surname="Aura" fullname="T. Aura">
            <organization/>
          </author>
          <date year="2005" month="March"/>
          <abstract>
            <t>This document describes a method for binding a public signature key to an IPv6 address in the
              Secure Neighbor Discovery (SEND) protocol.  Cryptographically Generated Addresses (CGA) are IPv6 
              addresses for which the interface identifier is generated by computing a cryptographic one-way hash function 
              from a public key and auxiliary parameters.  The binding between the public key and the address can be verified 
              by re-computing the hash value and by comparing the hash with the interface identifier.  Messages sent from an 
              IPv6 address can be protected by attaching the public key and auxiliary parameters and by signing the message 
              with the corresponding private key.  The protection works without a certification authority or any security infrastructure. 
              [STANDARDS TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="3972"/>
        <format type="TXT" octets="51473" target="ftp://ftp.isi.edu/in-notes/rfc3972.txt"/>
      </reference>
      <reference anchor="RFC3971">
        <front>
          <title>SEcure Neighbor Discovery (SEND)</title>
          <author initials="J." surname="Arkko" fullname="J. Arkko">
            <organization/>
          </author>
          <author initials="J." surname="Kempf" fullname="J. Kempf">
            <organization/>
          </author>
          <author initials="B." surname="Zill" fullname="B. Zill">
            <organization/>
          </author>
          <author initials="P." surname="Nikander" fullname="P. Nikander">
            <organization/>
          </author>
          <date year="2005" month="March"/>
          <abstract>
            <t>IPv6 nodes use the Neighbor Discovery Protocol (NDP) to discover other nodes on the link, 
              to determine their link-layer addresses to find routers, and to maintain reachability information about the 
              paths to active neighbors.  If not secured, NDP is vulnerable to various attacks.  This document specifies 
              security mechanisms for NDP.  Unlike those in the original NDP specifications, these mechanisms do not use 
              IPsec. [STANDARDS TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="3971"/>
        <format type="TXT" octets="123372" target="ftp://ftp.isi.edu/in-notes/rfc3971.txt"/>
      </reference>
	    <reference anchor='RFC5480'>

		    <front>
			    <title>Elliptic Curve Cryptography Subject Public Key Information</title>
			    <author initials='S.' surname='Turner' fullname='S. Turner'>
				    <organization /></author>
			    <author initials='D.' surname='Brown' fullname='D. Brown'>
				    <organization /></author>
			    <author initials='K.' surname='Yiu' fullname='K. Yiu'>
				    <organization /></author>
			    <author initials='R.' surname='Housley' fullname='R. Housley'>
				    <organization /></author>
			    <author initials='T.' surname='Polk' fullname='T. Polk'>
				    <organization /></author>
			    <date year='2009' month='March' />
			    <abstract>
				    <t>This document specifies the syntax and semantics for the Subject Public Key Information 
				      field in certificates that support Elliptic Curve Cryptography.  This document updates Sections 2.3.5 
				      and 5, and the ASN.1 module of "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure 
				      Certificate and Certificate Revocation List (CRL) Profile", RFC 3279. [STANDARDS TRACK]</t></abstract></front>

		    <seriesInfo name='RFC' value='5480' />
		    <format type='TXT' octets='36209' target='ftp://ftp.isi.edu/in-notes/rfc5480.txt' />
	    </reference>
      <reference anchor="cheneau-csi-send-sig-agility">
        <front>
          <title>
						Signature Algorithm Agility in the Secure Neighbor Discovery (SEND) Protocol
					</title>
          <author initials="T" surname="Cheneau" fullname="Tony Cheneau">
            <organization/>
          </author>
          <author initials="M.L" surname="Laurent" fullname="Maryline Laurent">
            <organization/>
          </author>
          <author initials="S" surname="Shen" fullname="Sean Shen">
            <organization/>
          </author>
          <author initials="M" surname="Vanderveen" fullname="Michaela Vanderveen">
            <organization/>
          </author>
          <date month="November" year="2009"/>
          <abstract>
            <t>This draft describes a mechanism to enable the Secure Neighbor Discovery (SEND) protocol to select
				between different signature algorithms to use with Cryptographically Generated Addresses (CGA).  </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-cheneau-csi-send-sig-agility-01"/>
        <format type="TXT" target="http://www.ietf.org/internet-drafts/draft-csi-cheneau-send-sig-agility-01.txt"/>
      </reference>
    </references>
    <references title="Informative References">



	    <reference anchor="RFC2460">
        <front>
          <title abbrev="IPv6 Specification">Internet Protocol, Version 6 (IPv6) Specification</title>
          <author initials="S.E." surname="Deering" fullname="Stephen E. Deering">
            <organization>Cisco Systems, Inc.</organization>
            <address>
              <postal>
                <street>170 West Tasman Drive</street>
                <street>San Jose</street>
                <region>CA</region>
                <code>95134-1706</code>
                <country>USA</country>
              </postal>
              <phone>+1 408 527 8213</phone>
              <facsimile>+1 408 527 8254</facsimile>
              <email>deering@cisco.com</email>
            </address>
          </author>
          <author initials="R.M." surname="Hinden" fullname="Robert M. Hinden">
            <organization>Nokia</organization>
            <address>
              <postal>
                <street>232 Java Drive</street>
                <street>Sunnyvale</street>
                <region>CA</region>
                <code>94089</code>
                <country>USA</country>
              </postal>
              <phone>+1 408 990 2004</phone>
              <facsimile>+1 408 743 5677</facsimile>
              <email>hinden@iprg.nokia.com</email>
            </address>
          </author>
          <date year="1998" month="December"/>
          <area>Internet</area>
          <keyword>internet protocol version 6</keyword>

          <keyword>IPv6</keyword>
          <abstract>
            <t>
							This document specifies version 6 of the Internet Protocol (IPv6),
							also sometimes referred to as IP Next Generation or IPng.
				</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="2460"/>
        <format type="TXT" octets="85490" target="ftp://ftp.isi.edu/in-notes/rfc2460.txt"/>
        <format type="HTML" octets="99496" target="http://xml.resource.org/public/rfc/html/rfc2460.html"/>
        <format type="XML" octets="93343" target="http://xml.resource.org/public/rfc/xml/rfc2460.xml"/>
      </reference>
      <reference anchor="RFC3756">
        <front>
          <title>IPv6 Neighbor Discovery (ND) Trust Models and Threats</title>
          <author initials="P." surname="Nikander" fullname="P. Nikander">
            <organization/>
          </author>
          <author initials="J." surname="Kempf" fullname="J. Kempf">
            <organization/>
          </author>
          <author initials="E." surname="Nordmark" fullname="E. Nordmark">
            <organization/>
          </author>
          <date year="2004" month="May"/>
          <abstract>
            <t>The existing IETF standards specify that IPv6 Neighbor Discovery (ND) and 
              Address Autoconfiguration mechanisms may be protected with IPsec Authentication Header (AH).  
              However, the current specifications limit the security solutions to manual keying due to practical problems 
              faced with automatic key management.  This document specifies three different trust models and discusses 
              the threats pertinent to IPv6 Neighbor Discovery.  The purpose of this discussion is to define the requirements
              for Securing IPv6 Neighbor Discovery.  This memo provides information for the Internet community.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="3756"/>
        <format type="TXT" octets="56674" target="ftp://ftp.isi.edu/in-notes/rfc3756.txt"/>
      </reference>
      <!-- TC 22/11/09
      <reference anchor="RFC4581">
        <front>
          <title>Cryptographically Generated Addresses (CGA) Extension Field Format</title>
          <author initials="M." surname="Bagnulo" fullname="M. Bagnulo">
            <organization/>
          </author>
          <author initials="J." surname="Arkko" fullname="J. Arkko">
            <organization/>
          </author>
          <date year="2006" month="October"/>
          <abstract>
            <t>This document defines a Type-Length-Value format for Cryptographically Generated Address (CGA) Extensions.  
              This document updates RFC 3972. [STANDARDS TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4581"/>
        <format type="TXT" octets="7636" target="ftp://ftp.isi.edu/in-notes/rfc4581.txt"/>
</reference> -->
      <reference anchor="RFC4861">
        <front>
          <title>Neighbor Discovery for IP version 6 (IPv6)</title>
          <author initials="T." surname="Narten" fullname="T. Narten">
            <organization/>
          </author>
          <author initials="E." surname="Nordmark" fullname="E. Nordmark">
            <organization/>
          </author>
          <author initials="W." surname="Simpson" fullname="W. Simpson">
            <organization/>
          </author>
          <author initials="H." surname="Soliman" fullname="H. Soliman">
            <organization/>
          </author>
          <date year="2007" month="September"/>
          <abstract>
            <t>This document specifies the Neighbor Discovery protocol for IP Version 6.  IPv6 nodes on the same link use 
              Neighbor Discovery to discover each other's presence, to determine each other's link-layer addresses, to find routers,
              and to maintain reachability information about the paths to active neighbors. [STANDARDS TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4861"/>
        <format type="TXT" octets="235106" target="ftp://ftp.isi.edu/in-notes/rfc4861.txt"/>
      </reference>
      <reference anchor="FIPS.180-2" target="http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf">
        <front>
          <title>Secure Hash Standard</title>
          <author>
            <organization>National Institute of Standards and Technology</organization>
          </author>
          <date month="August" year="2002"/>
        </front>
        <seriesInfo name="FIPS" value="PUB 180-2"/>
      </reference>
      <reference anchor="FIPS-186-3">
        <front>
          <title>Digital Signature Standard</title>
          <author>
            <organization>National Institute of Standards and Technology</organization>
          </author>
          <date month="June" year="2009"/>
        </front>
        <seriesInfo name="FIPS" value="PUB 186-3"/>
      </reference>
      <reference anchor="SP800-57">
	      <front>
		      <title>
			      Special Publication 800-57: Recommendation for Key Management - Part 1 (Revised)
		      </title>
		      <author>
			      <organization>National Institute of Standards and Technology (NIST)</organization>
		      </author>
		      <date month="March" year="2007"/>
	      </front>
	      <seriesInfo name="SP" value="SP 800-57"/>
      </reference>
      <reference anchor="SEC1" target="http://secg.org">
        <front>
          <title>
						SEC 1: Elliptic Curve Cryptography
					</title>
          <author>
            <organization>
							Standards for Efficient Cryptography Group
						</organization>
          </author>
          <date month="September" year="2000"/>
        </front>
      </reference>
    </references>
    <section anchor="key_sizes" title="On the number of Universal Signature Options supported per CGA">
      <texttable anchor="table_ECC_PK" title="Common sizes for DER-encoded ECC Public Key">
        <ttcol align="center">Name of the elliptic curve</ttcol>
        <ttcol align="center">Size of the DER-encoded Public Key (bytes)</ttcol>
        <c>P-256</c>
        <c>88</c>
        <c>P-384</c>
        <c>120</c>
        <c>P-521</c>
        <c>158</c>
        <!-- <postamble>Common sizes for DER-encoded ECC Public Keys</postamble>-->
      </texttable>
      
      <texttable anchor="table_ECDSA_sig" title="Common sizes of the Digital Signature field when using ECDSA (+ DER encoding)">
        <ttcol align="center">Name of the elliptic curve</ttcol>
        <ttcol align="center">Size of the Digital Signature field (without padding)</ttcol>
        <c>P-256</c>
        <c>71</c>
        <c>P-384</c>
        <c>104</c>
        <c>P-521</c>
        <c>139</c>
        <!-- <postamble>Common sizes of Digital Signature field when using ECDSA (+ DER encoding)</postamble>-->
      </texttable>
      <t>
	      Appendix A of document <xref target="cheneau-csi-send-sig-agility"/> emphasises the impact of the Public Key size and the number of Universal Signature Options 
        on size of the final message. This Appendix proposes to extend previous document and to add values for ECC.
	      <xref target="table_ECC_PK"/> provides size for the commonly used DER-encoded ECC Public Keys.
	      <xref target="table_ECDSA_sig"/> presents common sizes for Digital Signature field when using ECDSA.
      </t>
      <t>
	      <!-- TC 09/28/09: the value must be double checked -->
	      Reusing the value computed in <xref target="cheneau-csi-send-sig-agility"/>, we deduce that a Router Advertisement carrying a Prefix Information 
        Option and a Source Link-Layer Option sent from a CGA formed with a P-256 EC Public and protected by a corresponding 
        ECDSA signature is 328 bytes long. This can be compared with the same message using a CGA carrying a 1024 bits RSA 
        whose length is 456 bytes.  
      </t>
        
    </section>
    <section anchor="app_note" title="Note for future work">
	    <t>
		    When specifying a new type of Signature Algorithm, a new draft may reuse the skeleton of this document by replacing ECC/ECDSA by
	      the appropriate terminology. In this case, the new draft should include an appendix similar to <xref target="key_sizes"/> for a comparison 
	      with already specified signature algorithms.  
	    </t>  
    </section>
  </back>
</rfc>
