| rfc8928xml2.original.xml | rfc8928.xml | |||
|---|---|---|---|---|
| <?xml version='1.0' encoding='utf-8'?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" conse | |||
| nsus="true" docName="draft-ietf-6lo-ap-nd-23" indexInclude="true" ipr="trust2009 | ||||
| <?rfc toc="yes"?> | 02" number="8928" prepTime="2020-11-18T12:58:54" scripts="Common,Latin" sortRefs | |||
| <?rfc tocompact="yes"?> | ="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" upda | |||
| <?rfc tocdepth="3"?> | tes="8505" xml:lang="en"> | |||
| <?rfc tocindent="yes"?> | <link href="https://datatracker.ietf.org/doc/draft-ietf-6lo-ap-nd-23" rel="pre | |||
| <?rfc symrefs="yes"?> | v"/> | |||
| <?rfc sortrefs="yes"?> | <link href="https://dx.doi.org/10.17487/rfc8928" rel="alternate"/> | |||
| <?rfc comments="yes"?> | <link href="urn:issn:2070-1721" rel="alternate"/> | |||
| <?rfc inline="yes"?> | <front> | |||
| <?rfc compact="no"?> | <title abbrev="Address Protection ND for LLN">Address-Protected Neighbor Dis | |||
| <?rfc subcompact="no"?> | covery for Low-Power and Lossy Networks</title> | |||
| <?rfc authorship="yes"?> | <seriesInfo name="RFC" value="8928" stream="IETF"/> | |||
| <?rfc tocappendix="yes"?> | <author initials="P." surname="Thubert" fullname="Pascal Thubert" role="edit | |||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" ipr='trust200902 | or"> | |||
| ' tocInclude="true" obsoletes="" updates="8505" consensus="true" submissionType | <organization abbrev="Cisco" showOnFrontPage="true">Cisco Systems, Inc.</o | |||
| ="IETF" xml:lang="en" version="3" docName="draft-ietf-6lo-ap-nd-23" > | rganization> | |||
| <address> | ||||
| <front> | <postal> | |||
| <street>Building D</street> | ||||
| <title abbrev='Address Protection ND for LLN'> | <street>45 Allee des Ormes - BP1200</street> | |||
| Address Protected Neighbor Discovery for Low-power and Lossy Networks | <city>MOUGINS - Sophia Antipolis</city> | |||
| </title> | <code>06254</code> | |||
| <country>France</country> | ||||
| <author initials='P.' surname='Thubert' fullname='Pascal Thubert' role='edit | </postal> | |||
| or'> | <phone>+33 497 23 26 34</phone> | |||
| <organization abbrev='Cisco'>Cisco Systems, Inc</organization> | <email>pthubert@cisco.com</email> | |||
| <address> | </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> | |||
| <author initials='B.' surname='Sarikaya' fullname='Behcet Sarikaya'> | <author initials="B." surname="Sarikaya" fullname="Behcet Sarikaya"> | |||
| <organization/> | <organization showOnFrontPage="true"/> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street/> | <street/> | |||
| <street/> | <street/> | |||
| <city/> <region/> <code/> | <city/> | |||
| <country/> | <region/> | |||
| </postal> | <code/> | |||
| <email>sarikaya@ieee.org</email> | <country/> | |||
| </address> | </postal> | |||
| <email>sarikaya@ieee.org</email> | ||||
| </address> | ||||
| </author> | </author> | |||
| <author initials="M." surname="Sethi" fullname="Mohit Sethi"> | ||||
| <author initials='M.' surname='Sethi' fullname='Mohit Sethi'> | <organization showOnFrontPage="true">Ericsson</organization> | |||
| <organization>Ericsson</organization> | <address> | |||
| <address> | <postal> | |||
| <postal> | <street/> | |||
| <street/> | <city>Jorvas</city> | |||
| <city>Jorvas</city> <region/> <code>02420</code> | <region/> | |||
| <country>Finland</country> | <code>02420</code> | |||
| </postal> | <country>Finland</country> | |||
| <email>mohit@piuha.net</email> | </postal> | |||
| </address> | <email>mohit@piuha.net</email> | |||
| </address> | ||||
| </author> | </author> | |||
| <author initials="R." surname="Struik" fullname="Rene Struik"> | ||||
| <author initials='R.' surname='Struik' fullname='Rene Struik'> | <organization showOnFrontPage="true">Struik Security Consultancy</organiza | |||
| <organization>Struik Security Consultancy</organization> | tion> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street/> | <street/> | |||
| <city/> <region/> <code/> | <city/> | |||
| <country/> | <region/> | |||
| </postal> | <code/> | |||
| <email>rstruik.ext@gmail.com</email> | <country/> | |||
| </address> | </postal> | |||
| <email>rstruik.ext@gmail.com</email> | ||||
| </address> | ||||
| </author> | </author> | |||
| <date month="11" year="2020"/> | ||||
| <workgroup>6lo</workgroup> | ||||
| <abstract pn="section-abstract"> | ||||
| <t indent="0" pn="section-abstract-1"> | ||||
| This document updates the IPv6 over Low-Power Wireless | ||||
| Personal Area Network (6LoWPAN) Neighbor Discovery (ND) | ||||
| protocol defined in RFCs 6775 and 8505. The new extension | ||||
| is called Address-Protected Neighbor Discovery (AP-ND), and | ||||
| it protects the owner of an address against address theft | ||||
| and impersonation attacks in a Low-Power and Lossy Network | ||||
| (LLN). Nodes supporting this extension compute a | ||||
| cryptographic identifier (Crypto-ID), and use it with one | ||||
| or more of their Registered Addresses. The Crypto-ID | ||||
| identifies the owner of the Registered Address and can be | ||||
| used to provide proof of ownership of the Registered | ||||
| Addresses. Once an address is registered with the Crypto-ID | ||||
| and a proof of ownership is provided, only the owner of | ||||
| that address can modify the registration information, | ||||
| thereby enforcing Source Address Validation. | ||||
| </t> | ||||
| </abstract> | ||||
| <boilerplate> | ||||
| <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc= | ||||
| "exclude" pn="section-boilerplate.1"> | ||||
| <name slugifiedName="name-status-of-this-memo">Status of This Memo</name | ||||
| > | ||||
| <t indent="0" pn="section-boilerplate.1-1"> | ||||
| This is an Internet Standards Track document. | ||||
| </t> | ||||
| <t indent="0" pn="section-boilerplate.1-2"> | ||||
| This document is a product of the Internet Engineering Task Force | ||||
| (IETF). It represents the consensus of the IETF community. It has | ||||
| received public review and has been approved for publication by | ||||
| the Internet Engineering Steering Group (IESG). Further | ||||
| information on Internet Standards is available in Section 2 of | ||||
| RFC 7841. | ||||
| </t> | ||||
| <t indent="0" pn="section-boilerplate.1-3"> | ||||
| Information about the current status of this document, any | ||||
| errata, and how to provide feedback on it may be obtained at | ||||
| <eref target="https://www.rfc-editor.org/info/rfc8928" brackets="non | ||||
| e"/>. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="copyright" numbered="false" removeInRFC="false" toc="excl | ||||
| ude" pn="section-boilerplate.2"> | ||||
| <name slugifiedName="name-copyright-notice">Copyright Notice</name> | ||||
| <t indent="0" pn="section-boilerplate.2-1"> | ||||
| Copyright (c) 2020 IETF Trust and the persons identified as the | ||||
| document authors. All rights reserved. | ||||
| </t> | ||||
| <t indent="0" pn="section-boilerplate.2-2"> | ||||
| This document is subject to BCP 78 and the IETF Trust's Legal | ||||
| Provisions Relating to IETF Documents | ||||
| (<eref target="https://trustee.ietf.org/license-info" brackets="none | ||||
| "/>) 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. | ||||
| </t> | ||||
| </section> | ||||
| </boilerplate> | ||||
| <toc> | ||||
| <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" p | ||||
| n="section-toc.1"> | ||||
| <name slugifiedName="name-table-of-contents">Table of Contents</name> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to | ||||
| c.1-1"> | ||||
| <li pn="section-toc.1-1.1"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref der | ||||
| ivedContent="1" format="counter" sectionFormat="of" target="section-1"/>. <xref | ||||
| derivedContent="" format="title" sectionFormat="of" target="name-introduction"> | ||||
| Introduction</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.2"> | ||||
| <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" form | ||||
| at="counter" sectionFormat="of" target="section-2"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-terminology">Terminology</xref></t | ||||
| > | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.2.2"> | ||||
| <li pn="section-toc.1-1.2.2.1"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1">< | ||||
| xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2. | ||||
| 1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-re | ||||
| quirements-language">Requirements Language</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.2.2.2"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.2.1">< | ||||
| xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2. | ||||
| 2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-ba | ||||
| ckground">Background</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.2.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.2.2.3.1"><xref derivedContent= | ||||
| "2.3" format="counter" sectionFormat="of" target="section-2.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-abbreviations">Abbrevi | ||||
| ations</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.3"> | ||||
| <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" form | ||||
| at="counter" sectionFormat="of" target="section-3"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-updating-rfc-8505">Updating RFC 85 | ||||
| 05</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4"> | ||||
| <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" form | ||||
| at="counter" sectionFormat="of" target="section-4"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-new-fields-and-options">New Fields | ||||
| and Options</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.4.2"> | ||||
| <li pn="section-toc.1-1.4.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent= | ||||
| "4.1" format="counter" sectionFormat="of" target="section-4.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-new-crypto-id">New Cry | ||||
| pto-ID</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent= | ||||
| "4.2" format="counter" sectionFormat="of" target="section-4.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-updated-earo">Updated | ||||
| EARO</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent= | ||||
| "4.3" format="counter" sectionFormat="of" target="section-4.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-crypto-id-parameters-o | ||||
| ption">Crypto-ID Parameters Option</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.4.1"><xref derivedContent= | ||||
| "4.4" format="counter" sectionFormat="of" target="section-4.4"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-ndp-signature-option"> | ||||
| NDP Signature Option</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.5"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.5.1"><xref derivedContent= | ||||
| "4.5" format="counter" sectionFormat="of" target="section-4.5"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-extensions-to-the-capa | ||||
| bilit">Extensions to the Capability Indication Option</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5"> | ||||
| <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" form | ||||
| at="counter" sectionFormat="of" target="section-5"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-protocol-scope">Protocol Scope</xr | ||||
| ef></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6"> | ||||
| <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" form | ||||
| at="counter" sectionFormat="of" target="section-6"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-protocol-flows">Protocol Flows</xr | ||||
| ef></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.6.2"> | ||||
| <li pn="section-toc.1-1.6.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent= | ||||
| "6.1" format="counter" sectionFormat="of" target="section-6.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-first-exchange-with-a- | ||||
| 6lr">First Exchange with a 6LR</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent= | ||||
| "6.2" format="counter" sectionFormat="of" target="section-6.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-ndpso-generation-and-v | ||||
| erifi">NDPSO Generation and Verification</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent= | ||||
| "6.3" format="counter" sectionFormat="of" target="section-6.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-multi-hop-operation">M | ||||
| ulti-Hop Operation</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7"> | ||||
| <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" form | ||||
| at="counter" sectionFormat="of" target="section-7"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-security-considerations">Security | ||||
| Considerations</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.7.2"> | ||||
| <li pn="section-toc.1-1.7.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent= | ||||
| "7.1" format="counter" sectionFormat="of" target="section-7.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-brown-field">Brown Fie | ||||
| ld</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent= | ||||
| "7.2" format="counter" sectionFormat="of" target="section-7.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-threats-identified-in- | ||||
| rfc-3">Threats Identified in RFC 3971</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.3.1"><xref derivedContent= | ||||
| "7.3" format="counter" sectionFormat="of" target="section-7.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-related-to-6lowpan-nd" | ||||
| >Related to 6LoWPAN ND</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.4.1"><xref derivedContent= | ||||
| "7.4" format="counter" sectionFormat="of" target="section-7.4"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-compromised-6lr">Compr | ||||
| omised 6LR</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7.2.5"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.5.1"><xref derivedContent= | ||||
| "7.5" format="counter" sectionFormat="of" target="section-7.5"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-rovr-collisions">ROVR | ||||
| Collisions</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7.2.6"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.6.1"><xref derivedContent= | ||||
| "7.6" format="counter" sectionFormat="of" target="section-7.6"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-implementation-attacks | ||||
| ">Implementation Attacks</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7.2.7"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.7.1"><xref derivedContent= | ||||
| "7.7" format="counter" sectionFormat="of" target="section-7.7"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-cross-algorithm-and-cr | ||||
| oss-p">Cross-Algorithm and Cross-Protocol Attacks</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7.2.8"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.8.1"><xref derivedContent= | ||||
| "7.8" format="counter" sectionFormat="of" target="section-7.8"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-public-key-validation" | ||||
| >Public Key Validation</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7.2.9"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.9.1"><xref derivedContent= | ||||
| "7.9" format="counter" sectionFormat="of" target="section-7.9"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-correlating-registrati | ||||
| ons">Correlating Registrations</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8"> | ||||
| <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" form | ||||
| at="counter" sectionFormat="of" target="section-8"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-iana-considerations">IANA Consider | ||||
| ations</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.8.2"> | ||||
| <li pn="section-toc.1-1.8.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent= | ||||
| "8.1" format="counter" sectionFormat="of" target="section-8.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-cga-message-type">CGA | ||||
| Message Type</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent= | ||||
| "8.2" format="counter" sectionFormat="of" target="section-8.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-crypto-type-subregistr | ||||
| y">Crypto-Type Subregistry</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.3.1"><xref derivedContent= | ||||
| "8.3" format="counter" sectionFormat="of" target="section-8.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-ipv6-nd-option-types"> | ||||
| IPv6 ND Option Types</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.4.1"><xref derivedContent= | ||||
| "8.4" format="counter" sectionFormat="of" target="section-8.4"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-new-6lowpan-capability | ||||
| -bit">New 6LoWPAN Capability Bit</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9"> | ||||
| <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" form | ||||
| at="counter" sectionFormat="of" target="section-9"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-references">References</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.9.2"> | ||||
| <li pn="section-toc.1-1.9.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent= | ||||
| "9.1" format="counter" sectionFormat="of" target="section-9.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-normative-references"> | ||||
| Normative References</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent= | ||||
| "9.2" format="counter" sectionFormat="of" target="section-9.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-informative-references | ||||
| ">Informative References</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.10"> | ||||
| <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="Append | ||||
| ix A" format="default" sectionFormat="of" target="section-appendix.a"/>. <xref | ||||
| derivedContent="" format="title" sectionFormat="of" target="name-requirements-ad | ||||
| dressed-in-t">Requirements Addressed in This Document</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11"> | ||||
| <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="Append | ||||
| ix B" format="default" sectionFormat="of" target="section-appendix.b"/>. <xref | ||||
| derivedContent="" format="title" sectionFormat="of" target="name-representation- | ||||
| conventions">Representation Conventions</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.11.2"> | ||||
| <li pn="section-toc.1-1.11.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.11.2.1.1"><xref derivedContent | ||||
| ="B.1" format="counter" sectionFormat="of" target="section-b.1"/>. <xref derive | ||||
| dContent="" format="title" sectionFormat="of" target="name-signature-schemes">Si | ||||
| gnature Schemes</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.11.2.2.1"><xref derivedContent | ||||
| ="B.2" format="counter" sectionFormat="of" target="section-b.2"/>. <xref derive | ||||
| dContent="" format="title" sectionFormat="of" target="name-representation-of-ecd | ||||
| sa-sig">Representation of ECDSA Signatures</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.11.2.3.1"><xref derivedContent | ||||
| ="B.3" format="counter" sectionFormat="of" target="section-b.3"/>. <xref derive | ||||
| dContent="" format="title" sectionFormat="of" target="name-representation-of-pub | ||||
| lic-ke">Representation of Public Keys Used with ECDSA</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.11.2.4.1"><xref derivedContent | ||||
| ="B.4" format="counter" sectionFormat="of" target="section-b.4"/>. <xref derive | ||||
| dContent="" format="title" sectionFormat="of" target="name-alternative-represent | ||||
| ations">Alternative Representations of Curve25519</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11.2.5"> | ||||
| <t indent="0" pn="section-toc.1-1.11.2.5.1"><xref derivedContent | ||||
| ="" format="none" sectionFormat="of" target="section-b.5"/><xref derivedContent= | ||||
| "" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgmen | ||||
| ts</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.12"> | ||||
| <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-authors-addresses">Authors' Add | ||||
| resses</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| </toc> | ||||
| </front> | ||||
| <middle> | ||||
| <section numbered="true" removeInRFC="false" toc="include" pn="section-1"> | ||||
| <name slugifiedName="name-introduction">Introduction</name> | ||||
| <t indent="0" pn="section-1-1"> | ||||
| Neighbor Discovery optimizations for 6LoWPAN networks (aka 6LoWPAN ND) <x | ||||
| ref target="RFC6775" format="default" sectionFormat="of" derivedContent="RFC6775 | ||||
| "/> adapts the original IPv6 Neighbor Discovery protocols defined in <xref targe | ||||
| t="RFC4861" format="default" sectionFormat="of" derivedContent="RFC4861"/> and < | ||||
| xref target="RFC4862" format="default" sectionFormat="of" derivedContent="RFC486 | ||||
| 2"/> for constrained | ||||
| Low-Power and Lossy Networks (LLNs). In particular, 6LoWPAN ND introduces | ||||
| a unicast host Address Registration mechanism that reduces the use of multicast | ||||
| compared to the Duplicate Address Detection (DAD) mechanism defined in IPv6 ND. | ||||
| 6LoWPAN ND defines a new Address Registration Option (ARO) that is carried in t | ||||
| he unicast Neighbor Solicitation (NS) and Neighbor Advertisement (NA) messages e | ||||
| xchanged between a 6LoWPAN Node (6LN) and a 6LoWPAN Router (6LR). It also define | ||||
| s the Duplicate Address Request (DAR) and Duplicate Address Confirmation (DAC) | ||||
| messages between the 6LR and the 6LoWPAN Border Router (6LBR). In LLNs, t | ||||
| he 6LBR is the central repository of all the Registered Addresses in its domain. | ||||
| </t> | ||||
| <t indent="0" pn="section-1-2"> | ||||
| The registration mechanism in "Neighbor Discovery Optimization for IPv6 o | ||||
| ver Low-Power Wireless Personal Area Networks (6LoWPANs)" <xref target="RFC6775" | ||||
| format="default" sectionFormat="of" derivedContent="RFC6775"/> prevents the use | ||||
| of an address if that address | ||||
| is already registered in the subnet (first come, first served). In order | ||||
| to validate address ownership, "Registration Extensions for IPv6 over Low-Power | ||||
| Wireless Personal Area Network (6LoWPAN) Neighbor Discovery" <xref target="RFC85 | ||||
| 05" format="default" sectionFormat="of" derivedContent="RFC8505"/> defines a Reg | ||||
| istration Ownership Verifier (ROVR) field. <xref target="RFC8505" format="defaul | ||||
| t" sectionFormat="of" derivedContent="RFC8505"/> enables a 6LR and 6LBR to valid | ||||
| ate the association between the Registered Address of a node and its ROVR. The R | ||||
| OVR can be derived from the link-layer address of the device (using the 64-bit E | ||||
| xtended Unique Identifier (EUI-64) address format specified by IEEE). However, t | ||||
| he EUI-64 can be spoofed; therefore, any node connected to the subnet and aware | ||||
| of a registered-address-to-ROVR mapping could effectively fake the ROVR. This wo | ||||
| uld allow an attacker to steal the address and redirect traffic for that address | ||||
| . <xref target="RFC8505" format="default" sectionFormat="of" derivedContent="RFC | ||||
| 8505"/> defines an Extended Address Registration Option (EARO) that transports a | ||||
| lternate forms of ROVRs and is a prerequisite for this specification. | ||||
| </t> | ||||
| <t indent="0" pn="section-1-3"> | ||||
| In this specification, a 6LN generates a cryptographic identifi | ||||
| er (Crypto-ID) and places it in the ROVR field during the registration of one (o | ||||
| r more) of its addresses with the 6LR(s). Proof of ownership of the Crypto-ID is | ||||
| passed with the first registration exchange to a new 6LR and enforced at the 6L | ||||
| R. The 6LR validates ownership of the | ||||
| Crypto-ID before it creates any new registration state or chang | ||||
| es existing information. | ||||
| </t> | ||||
| <t indent="0" pn="section-1-4"> | ||||
| The protected address registration protocol proposed in this do | ||||
| cument provides the same conceptual benefit as Source Address Validation Improve | ||||
| ment (SAVI) <xref target="RFC7039" format="default" sectionFormat="of" derivedCo | ||||
| ntent="RFC7039"/> in that only the owner of an IPv6 address may source packets w | ||||
| ith that address. As opposed to <xref target="RFC7039" format="default" sectionF | ||||
| ormat="of" derivedContent="RFC7039"/>, which relies on snooping protocols, the p | ||||
| rotection provided by this document is based on a state that is installed and ma | ||||
| intained in the network by the owner of the address. With this specification, a | ||||
| 6LN may use a 6LR for forwarding an IPv6 packet if and only if it has registered | ||||
| the address used as the source of the packet with that 6LR. | ||||
| <date/> | </t> | |||
| <workgroup>6lo</workgroup> | <t indent="0" pn="section-1-5"> | |||
| <abstract> | ||||
| <t> | ||||
| This document updates the 6LoWPAN Neighbor Discovery (ND) protocol def | ||||
| ined in RFC 6775 and RFC 8505. | ||||
| The new extension is called Address Protected Neighbor Discovery (AP-N | ||||
| D) and it protects the owner of an address against | ||||
| address theft and impersonation attacks in a low-power and lossy netw | ||||
| ork (LLN). | ||||
| Nodes supporting this extension compute a cryptographic identifier (C | ||||
| rypto-ID) and use it with one or more of their | ||||
| Registered Addresses. The Crypto-ID identifies the owner of the Regis | ||||
| tered Address and can be used to provide proof of | ||||
| ownership of the Registered Addresses. Once an address is registered | ||||
| with the Crypto-ID and a proof-of-ownership is | ||||
| provided, only the owner of that address can modify the registration | ||||
| information, thereby enforcing Source Address | ||||
| Validation. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <middle> | ||||
| <section><name>Introduction</name> | ||||
| <t> | ||||
| Neighbor Discovery Optimizations for 6LoWPAN networks <xref target='RFC67 | ||||
| 75'/> (6LoWPAN ND) adapts the original IPv6 | ||||
| Neighbor Discovery (IPv6 ND) protocols defined in <xref target='RFC4861'/ | ||||
| > and <xref target='RFC4862'/> for constrained | ||||
| low-power and lossy network (LLN). In particular, 6LoWPAN ND introduces a | ||||
| unicast host Address Registration mechanism | ||||
| that reduces the use of multicast compared to the Duplicate Address Detec | ||||
| tion (DAD) mechanism defined in IPv6 ND. | ||||
| 6LoWPAN ND defines a new Address Registration Option (ARO) that is carri | ||||
| ed in the | ||||
| unicast Neighbor Solicitation (NS) and Neighbor Advertisement (NA) messag | ||||
| es exchanged between a 6LoWPAN Node (6LN) and | ||||
| a 6LoWPAN Router (6LR). | ||||
| It also defines the Duplicate Address Request (DAR) and Duplicate Addres | ||||
| s 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> | ||||
| <t> | ||||
| The registration mechanism in <xref target='RFC6775'>"Neighbor Discovery | ||||
| Optimization for Low-power and Lossy Networks"</xref> (aka 6LoWPAN ND) prevents | ||||
| the use of an address if that address | ||||
| is already registered in the subnet (first come first serve). In order to | ||||
| validate address ownership, the registration | ||||
| mechanism enables the 6LR and 6LBR to validate the association between th | ||||
| e registered address of a node, and its | ||||
| Registration Ownership Verifier (ROVR). The ROVR is defined in <xref targ | ||||
| et='RFC8505'>"Registration Extensions for 6LoWPAN Neighbor | ||||
| Discovery"</xref> and it can be derived from the | ||||
| MAC address of the device (using the 64-bit Extended Unique Identifier EU | ||||
| I-64 address format specified by IEEE). | ||||
| However, the EUI-64 can be spoofed, and therefore, any node connected to | ||||
| the subnet and aware of a | ||||
| registered-address-to-ROVR mapping could effectively fake the ROVR. This | ||||
| would allow an attacker to steal the | ||||
| address and redirect traffic for that address. <xref target='RFC8505'/> d | ||||
| efines an Extended Address Registration | ||||
| Option (EARO) option that transports alternate forms of ROVRs, and is a p | ||||
| re-requisite for this specification. | ||||
| </t> | ||||
| <t> | ||||
| In this specification, a 6LN generates a cryptographic ID (Cryp | ||||
| to-ID) and places it in the ROVR field during the | ||||
| registration of one (or more) of its addresses with the 6LR(s). | ||||
| Proof of ownership of the Crypto-ID is passed with | ||||
| the first registration exchange to a new 6LR, and enforced at t | ||||
| he 6LR. | ||||
| The 6LR validates ownership of the | ||||
| cryptographic ID before it creates any new registration state, | ||||
| or changes existing information. | ||||
| </t> | ||||
| <t> | ||||
| The protected address registration protocol proposed in this do | ||||
| cument provides the same conceptual benefit as Source Address Validation (SAVI) | ||||
| <xref target='RFC7039'/> that only the owner of an IPv6 address may source packe | ||||
| ts with that address. | ||||
| As opposed to <xref target='RFC7039'/>, which relies on snooping proto | ||||
| cols, the protection is based on a state that is installed and maintained in the | ||||
| network by the owner of the address. With this specification, a 6LN may use a 6 | ||||
| LR for forwarding an IPv6 packets if and only if it has registered the address u | ||||
| sed as source of the packet with that 6LR. | ||||
| <!--, and a first-hop 6LR that is configured to enforce this rule MUST | ||||
| discard a packet that is not originated from the 6LN that registered the IPv6 s | ||||
| ource address of the packet. | ||||
| --> | ||||
| </t> | ||||
| <t> | ||||
| With the 6lo adaptation layer in <xref target='RFC4944'/> and < | ||||
| xref target='RFC6282'/>, a 6LN can obtain a better compression for an IPv6 addre | ||||
| ss with an Interface ID (IID) that is derived from a Layer-2 address. As a side | ||||
| note, this is incompatible with Secure Neighbor Discovery (SeND) <xref target='R | ||||
| FC3971'/> and Cryptographically Generated Addresses (CGAs) | ||||
| <xref target='RFC3972'/>, since they derive the IID from crypto | ||||
| graphic keys, whereas this specification separates the IID and the key material. | ||||
| </t> | ||||
| </section> | ||||
| <section><name>Terminology</name> | ||||
| <section anchor='bcp'><name>BCP 14</name> | ||||
| <t> | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
| "OPTIONAL" in this document are to be interpreted as described in BCP 14 | ||||
| <xref target='RFC2119'/> <xref target='RFC8174'/> when, and only when, | ||||
| they appear in all capitals, as shown here. | ||||
| </t> | ||||
| </section> <!-- end section "BCP 14" --> | ||||
| <section anchor='lo' ><name>Additional References</name> | ||||
| <t> | With the 6LoWPAN adaptation layer in <xref target="RFC4944" for | |||
| mat="default" sectionFormat="of" derivedContent="RFC4944"/> and <xref target="RF | ||||
| C6282" format="default" sectionFormat="of" derivedContent="RFC6282"/>, a | ||||
| 6LN can obtain better compression for an IPv6 | ||||
| address with an Interface ID (IID) that is derived | ||||
| from a Layer 2 (L2) address. Such compression is incompatible w | ||||
| ith "SEcure Neighbor Discovery (SEND") <xref target="RFC3971" format="default" s | ||||
| ectionFormat="of" derivedContent="RFC3971"/> and "Cryptographically Generated Ad | ||||
| dresses (CGAs)" <xref target="RFC3972" format="default" sectionFormat="of" deriv | ||||
| edContent="RFC3972"/>, since they derive the IID from cryptographic keys. This s | ||||
| pecification, on the other hand, separates the IID generation from cryptographic | ||||
| computations and can enable better compression. | ||||
| </t> | ||||
| </section> | ||||
| <section numbered="true" removeInRFC="false" toc="include" pn="section-2"> | ||||
| <name slugifiedName="name-terminology">Terminology</name> | ||||
| <section anchor="bcp" numbered="true" removeInRFC="false" toc="include" pn | ||||
| ="section-2.1"> | ||||
| <name slugifiedName="name-requirements-language">Requirements Language</ | ||||
| name> | ||||
| <t indent="0" pn="section-2.1-1"> | ||||
| The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | ||||
| IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOUL | ||||
| D</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>N | ||||
| OT RECOMMENDED</bcp14>", | ||||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
| be interpreted as | ||||
| described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="o | ||||
| f" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFor | ||||
| mat="of" derivedContent="RFC8174"/> | ||||
| when, and only when, they appear in all capitals, as shown here. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="lo" numbered="true" removeInRFC="false" toc="include" pn= | ||||
| "section-2.2"> | ||||
| <name slugifiedName="name-background">Background</name> | ||||
| <t indent="0" pn="section-2.2-1"> | ||||
| The reader may get additional context for this specification from the fol lowing references: | The reader may get additional context for this specification from the fol lowing references: | |||
| </t><ul spacing='compact'> | </t> | |||
| <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2 | ||||
| <li> <xref target='RFC3971'>"SEcure Neighbor Discovery (SEND)"</xref>,</l | .2-2"> | |||
| i> | <li pn="section-2.2-2.1"> "SEcure Neighbor Discovery (SEND)" <xref tar | |||
| <li> <xref target='RFC3972'>"Cryptographically Generated Addresses (CGA)" | get="RFC3971" format="default" sectionFormat="of" derivedContent="RFC3971"/>,</l | |||
| </xref>,</li> | i> | |||
| <li><xref target='RFC4861'>"Neighbor Discovery for IP version 6"</xref> , | <li pn="section-2.2-2.2"> "Cryptographically Generated Addresses (CGA) | |||
| </li> | " <xref target="RFC3972" format="default" sectionFormat="of" derivedContent="RFC | |||
| <li><xref target='RFC4862'>"IPv6 Stateless Address Autoconfiguration"</xr | 3972"/>,</li> | |||
| ef>, and </li> | <li pn="section-2.2-2.3"> "Neighbor Discovery for IP version 6 (IPv6)" | |||
| <li><xref target='RFC4919'>"IPv6 over Low-Power Wireless Personal Area Ne | <xref target="RFC4861" format="default" sectionFormat="of" derivedContent="RFC4 | |||
| tworks (6LoWPANs): Overview, Assumptions, Problem Statement, and Goals "</xref>. | 861"/> ,</li> | |||
| </li> | <li pn="section-2.2-2.4"> "IPv6 Stateless Address Autoconfiguration" < | |||
| </ul> | xref target="RFC4862" format="default" sectionFormat="of" derivedContent="RFC486 | |||
| </section> <!-- Additional References --> | 2"/>, and </li> | |||
| <li pn="section-2.2-2.5"> "IPv6 over Low-Power Wireless Personal Area | ||||
| <section anchor='acronyms'><name>Abbreviations</name> | Networks (6LoWPANs): Overview, Assumptions, Problem Statement, and Goals" <xref | |||
| <t> This document uses the following abbreviations: | target="RFC4919" format="default" sectionFormat="of" derivedContent="RFC4919"/>. | |||
| </t><dl spacing='compact'> | </li> | |||
| <dt>6BBR:</dt><dd> 6LoWPAN Backbone Router </dd> | </ul> | |||
| <dt>6LBR:</dt><dd> 6LoWPAN Border Router </dd> | </section> | |||
| <dt>6LN:</dt><dd> 6LoWPAN Node </dd> | <section anchor="acronyms" numbered="true" removeInRFC="false" toc="includ | |||
| <dt>6LR:</dt><dd>6LoWPAN Router </dd> | e" pn="section-2.3"> | |||
| <dt>CGA:</dt><dd>Cryptographically Generated Address</dd> | <name slugifiedName="name-abbreviations">Abbreviations</name> | |||
| <dt>EARO:</dt><dd> Extended Address Registration Option</dd> | <t indent="0" pn="section-2.3-1"> This document uses the following abbre | |||
| <dt>ECDH:</dt><dd> Elliptic curve Diffie–Hellman</dd> | viations: | |||
| <dt>ECDSA:</dt><dd> Elliptic Curve Digital Signature Algorithm</dd> | ||||
| <dt>CIPO:</dt><dd>Crypto-ID Parameters Option</dd> | ||||
| <dt>LLN:</dt><dd> Low-Power and Lossy Network </dd> | ||||
| <dt>JSON:</dt><dd> JavaScript Object Notation</dd> | ||||
| <dt>JOSE:</dt><dd> JavaScript Object Signing and Encryption</dd> | ||||
| <dt>JWK:</dt><dd> JSON Web Key</dd> | ||||
| <dt>JWS:</dt><dd> JSON Web Signature</dd> | ||||
| <dt>NA:</dt><dd> Neighbor Advertisement </dd> | ||||
| <dt>ND:</dt><dd> Neighbor Discovery </dd> | ||||
| <dt>NDP:</dt><dd> Neighbor Discovery Protocol </dd> | ||||
| <dt>NDPSO:</dt><dd> Neighbor Discovery Protocol Signature Option</dd> | ||||
| <dt>NS:</dt><dd> Neighbor Solicitation </dd> | ||||
| <dt>ROVR:</dt><dd> Registration Ownership Verifier </dd> | ||||
| <dt>RA:</dt><dd> Router Advertisement </dd> | ||||
| <dt>RS:</dt><dd> Router Solicitation </dd> | ||||
| <dt>RSAO:</dt><dd> RSA Signature Option</dd> | ||||
| <dt>SHA:</dt><dd> Secure Hash Algorithm</dd> | ||||
| <dt>SLAAC:</dt><dd> Stateless Address Autoconfiguration</dd> | ||||
| <dt>TID:</dt><dd> Transaction ID </dd> | ||||
| </dl><t> | ||||
| </t> | ||||
| </section> <!-- end section "Acronym Definitions" --> | ||||
| </section> <!-- end section "Terminology" --> | ||||
| <section><name>Updating RFC 8505</name> | </t> | |||
| <t> | <dl spacing="compact" indent="10" newline="false" pn="section-2.3-2"> | |||
| Section 5.3 of <xref target='RFC8505'/> introduces the ROVR that is used | <dt pn="section-2.3-2.1">6BBR:</dt> | |||
| to detect and reject duplicate registrations in the DAD process. | <dd pn="section-2.3-2.2"> 6LoWPAN Backbone Router</dd> | |||
| The ROVR is a generic object that is designed for both backward compatib | <dt pn="section-2.3-2.3">6LBR:</dt> | |||
| ility and the capability to introduce new computation methods in the future. Usi | <dd pn="section-2.3-2.4"> 6LoWPAN Border Router</dd> | |||
| ng a Crypto-ID per this specification is the RECOMMENDED method. <xref target='s | <dt pn="section-2.3-2.5">6LN:</dt> | |||
| ec-col'/> discusses collisions when heterogeneous methods to compute the ROVR fi | <dd pn="section-2.3-2.6"> 6LoWPAN Node</dd> | |||
| eld coexist inside a same network. | <dt pn="section-2.3-2.7">6LR:</dt> | |||
| </t> | <dd pn="section-2.3-2.8"> 6LoWPAN Router</dd> | |||
| <t> | <dt pn="section-2.3-2.9">AP-ND:</dt> | |||
| This specification introduces a new token called a cryptographic iden | <dd pn="section-2.3-2.10"> Address-Protected Neighbor Discovery</dd> | |||
| tifier (Crypto-ID) that is transported in the ROVR field and used to prove indir | <dt pn="section-2.3-2.11">CGA:</dt> | |||
| ectly the ownership of an address that is being registered by means of <xref tar | <dd pn="section-2.3-2.12"> Cryptographically Generated Address</dd> | |||
| get='RFC8505'/>. The | <dt pn="section-2.3-2.13">DAD:</dt> | |||
| <dd pn="section-2.3-2.14"> Duplicate Address Detection</dd> | ||||
| <dt pn="section-2.3-2.15">EARO:</dt> | ||||
| <dd pn="section-2.3-2.16"> Extended Address Registration Option</dd> | ||||
| <dt pn="section-2.3-2.17">ECC:</dt> | ||||
| <dd pn="section-2.3-2.18"> Elliptic Curve Cryptography</dd> | ||||
| <dt pn="section-2.3-2.19">ECDH:</dt> | ||||
| <dd pn="section-2.3-2.20"> Elliptic Curve Diffie-Hellman</dd> | ||||
| <dt pn="section-2.3-2.21">ECDSA:</dt> | ||||
| <dd pn="section-2.3-2.22"> Elliptic Curve Digital Signature Algorithm< | ||||
| /dd> | ||||
| <dt pn="section-2.3-2.23">EDAC:</dt> | ||||
| <dd pn="section-2.3-2.24"> Extended Duplicate Address Confirmation</dd | ||||
| > | ||||
| <dt pn="section-2.3-2.25">EDAR:</dt> | ||||
| <dd pn="section-2.3-2.26"> Extended Duplicate Address Request </dd> | ||||
| <dt pn="section-2.3-2.27">CIPO:</dt> | ||||
| <dd pn="section-2.3-2.28">Crypto-ID Parameters Option</dd> | ||||
| <dt pn="section-2.3-2.29">LLN:</dt> | ||||
| <dd pn="section-2.3-2.30"> Low-Power and Lossy Network</dd> | ||||
| <dt pn="section-2.3-2.31">NA:</dt> | ||||
| <dd pn="section-2.3-2.32"> Neighbor Advertisement </dd> | ||||
| <dt pn="section-2.3-2.33">ND:</dt> | ||||
| <dd pn="section-2.3-2.34"> Neighbor Discovery </dd> | ||||
| <dt pn="section-2.3-2.35">NDP:</dt> | ||||
| <dd pn="section-2.3-2.36"> Neighbor Discovery Protocol </dd> | ||||
| <dt pn="section-2.3-2.37">NDPSO:</dt> | ||||
| <dd pn="section-2.3-2.38"> Neighbor Discovery Protocol Signature Optio | ||||
| n</dd> | ||||
| <dt pn="section-2.3-2.39">NS:</dt> | ||||
| <dd pn="section-2.3-2.40"> Neighbor Solicitation </dd> | ||||
| <dt pn="section-2.3-2.41">ROVR:</dt> | ||||
| <dd pn="section-2.3-2.42"> Registration Ownership Verifier </dd> | ||||
| <dt pn="section-2.3-2.43">RA:</dt> | ||||
| <dd pn="section-2.3-2.44"> Router Advertisement </dd> | ||||
| <dt pn="section-2.3-2.45">RS:</dt> | ||||
| <dd pn="section-2.3-2.46"> Router Solicitation </dd> | ||||
| <dt pn="section-2.3-2.47">RSAO:</dt> | ||||
| <dd pn="section-2.3-2.48"> RSA Signature Option</dd> | ||||
| <dt pn="section-2.3-2.49">SHA:</dt> | ||||
| <dd pn="section-2.3-2.50"> Secure Hash Algorithm</dd> | ||||
| <dt pn="section-2.3-2.51">SLAAC:</dt> | ||||
| <dd pn="section-2.3-2.52"> Stateless Address Autoconfiguration</dd> | ||||
| <dt pn="section-2.3-2.53">TID:</dt> | ||||
| <dd pn="section-2.3-2.54"> Transaction ID </dd> | ||||
| </dl> | ||||
| </section> | ||||
| </section> | ||||
| <section numbered="true" removeInRFC="false" toc="include" pn="section-3"> | ||||
| <name slugifiedName="name-updating-rfc-8505">Updating RFC 8505</name> | ||||
| <t indent="0" pn="section-3-1"> | ||||
| <xref target="RFC8505" sectionFormat="of" section="5.3" format="default" | ||||
| derivedLink="https://rfc-editor.org/rfc/rfc8505#section-5.3" derivedContent="RFC | ||||
| 8505"/> introduces the ROVR that is used to detect and reject duplicate registra | ||||
| tions in the DAD process. The ROVR is a generic object that is designed for both | ||||
| backward compatibility and the capability to introduce new computation methods | ||||
| in the future. Using a Crypto-ID per this specification is the <bcp14>RECOMMENDE | ||||
| D</bcp14> method. <xref target="sec-col" format="default" sectionFormat="of" der | ||||
| ivedContent="Section 7.5"/> discusses collisions when heterogeneous methods to c | ||||
| ompute the ROVR field coexist inside a network. | ||||
| </t> | ||||
| <t indent="0" pn="section-3-2"> | ||||
| This specification introduces a new identifier called a Crypto-ID that i | ||||
| s transported in the ROVR field and used to indirectly prove the ownership of an | ||||
| address that is being registered by means of <xref target="RFC8505" format="def | ||||
| ault" sectionFormat="of" derivedContent="RFC8505"/>. The | ||||
| Crypto-ID is derived from a cryptographic public key and additional para meters. | Crypto-ID is derived from a cryptographic public key and additional para meters. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-3-3"> | |||
| The overall mechanism requires the support of Elliptic Curve Cryptograph | The overall mechanism requires the support of Elliptic Curve Cryptograph | |||
| y (ECC) and of a hash function as detailed in <xref target='ndpso-generation'/>. | y (ECC) and a hash function as detailed in <xref target="ndpso-generation" forma | |||
| To enable the verification of the proof, the registering node needs to supply c | t="default" sectionFormat="of" derivedContent="Section 6.2"/>. To enable the ver | |||
| ertain parameters including a nonce and a signature that will demonstrate that t | ification of the proof, the Registering Node needs to supply certain parameters | |||
| he node possesses the private-key corresponding to the public-key used to build | including a nonce and a signature that will demonstrate that the node possesses | |||
| the Crypto-ID. | the private key corresponding to the public key used to build the Crypto-ID. | |||
| </t> | </t> | |||
| <t> The elliptic curves and the hash functions listed in <xref target='crypt | <t indent="0" pn="section-3-4"> The elliptic curves and the hash functions | |||
| otypetable'/> in <xref target='cryptotypereg'/> can be used with this specificat | listed in <xref target="cryptotypetable" format="default" sectionFormat="of" de | |||
| ion; more may be added in the future to the IANA registry. | rivedContent="Table 1"/> in <xref target="cryptotypereg" format="default" sectio | |||
| The signature scheme that specifies which combination is used (including | nFormat="of" derivedContent="Section 8.2"/> can | |||
| the curve and the representation conventions) is signaled by a Crypto-Type in a | be used with this specification; more may be added in the future | |||
| new IPv6 ND Crypto-ID Parameters Option (CIPO, see <xref target='cryptoidopt'/>) | to the corresponding IANA registry. The cryptographic algorithms used (inclu | |||
| that contains the parameters that are necessary for the proof, a Nonce o | ding the curve and the representation conventions) are signaled by the Crypto-Ty | |||
| ption (<xref target='RFC3971'/>) and a NDP Signature option (<xref target='ndpso | pe field in a new IPv6 ND Crypto-ID Parameters Option (CIPO) (see <xref target=" | |||
| '/>). The NA(EARO) is modified to enable a challenge and transport a Nonce opti | cryptoidopt" format="default" sectionFormat="of" derivedContent="Section 4.3"/>) | |||
| on. | that contains the parameters that are necessary for address validation. | |||
| </t> | A new NDP Signature Option (<xref target="ndpso" format="default" sectionFor | |||
| <!--t> | mat="of" derivedContent="Section 4.4"/>) is also specified in this document to c | |||
| In order to avoid the need for new ND option types, this specification reuse | arry the resulting signature. A Nonce Option <xref target="RFC3971" format="defa | |||
| s and extends options defined in SEND <xref target="RFC3971"/> and 6LoWPAN ND <x | ult" sectionFormat="of" derivedContent="RFC3971"/> is added in the NA(EARO) that | |||
| ref target="RFC6775"/> <xref target="RFC8505"/>. This applies to the CGA option | is used to request the validation, and all three options are needed in the NS(E | |||
| and the RSA Signature Option. This specification provides aliases for the specif | ARO) that provides the validation. | |||
| ic variations of those options as used in this document. The presence of the EAR | </t> | |||
| O option in the NS/NA messages indicates that the options are to be processed as | </section> | |||
| specified in this document, and not as defined in SEND <xref target="RFC3971"/> | <section anchor="cryptoifldg" numbered="true" removeInRFC="false" toc="inclu | |||
| . | de" pn="section-4"> | |||
| </t--> | <name slugifiedName="name-new-fields-and-options">New Fields and Options</ | |||
| </section> | name> | |||
| <section anchor="cryptoidalg" numbered="true" removeInRFC="false" toc="inc | ||||
| <section anchor='cryptoifldg'><name>New Fields and Options</name> | lude" pn="section-4.1"> | |||
| <name slugifiedName="name-new-crypto-id">New Crypto-ID</name> | ||||
| <section anchor='cryptoidalg'><name>New Crypto-ID</name> | <t indent="0" pn="section-4.1-1"> | |||
| <t> | The Crypto-ID is transported in the ROVR field of the EARO and the Extend | |||
| The Crypto-ID is transported in the ROVR field of the EARO option and the | ed Duplicate Address Request (EDAR) message and is associated with the Registere | |||
| EDAR message, and is associated with the Registered Address at the 6LR and the | d Address at the 6LR and the 6LBR. | |||
| 6LBR. | ||||
| The ownership of a Crypto-ID can be demonstrated by cryptographic mechani sms, and by association, the ownership of the Registered Address can be ascertai ned. | The ownership of a Crypto-ID can be demonstrated by cryptographic mechani sms, and by association, the ownership of the Registered Address can be ascertai ned. | |||
| </t><t> | </t> | |||
| A node in possession of the necessary cryptographic primitives SHOULD use | <t indent="0" pn="section-4.1-2"> | |||
| Crypto-ID by default as ROVR in its registrations. Whether a ROVR is a Crypto-I | A node in possession of the necessary cryptographic primitives <bcp14>SHO | |||
| D is indicated by a new "C" flag in the NS(EARO) message. | ULD</bcp14> use Crypto-ID by default as ROVR in its registrations. Whether a ROV | |||
| </t> | R is a Crypto-ID is indicated by a new "C" flag in the EARO of the NS(EARO) mess | |||
| <t> | age. | |||
| </t> | ||||
| <t indent="0" pn="section-4.1-3"> | ||||
| The Crypto-ID is derived from the public key and a modifier as follows: | The Crypto-ID is derived from the public key and a modifier as follows: | |||
| </t><ol spacing='compact'> | </t> | |||
| <li>The hash function used internally by the signature scheme indicated by th | <ol spacing="normal" indent="adaptive" start="1" type="1" pn="section-4. | |||
| e Crypto-Type (see also <xref target='cryptotypetable'/> in <xref target='crypto | 1-4"> | |||
| typereg'/>) | <li pn="section-4.1-4.1" derivedCounter="1.">The hash function used internall | |||
| is applied to the CIPO. Note that all the reserved and padding bits MUST be s | y by the signature scheme and indicated by the Crypto-Type (see <xref target="cr | |||
| et to zero. | yptotypetable" format="default" sectionFormat="of" derivedContent="Table 1"/> in | |||
| <xref target="cryptotypereg" format="default" sectionFormat="of" derivedContent | ||||
| ="Section 8.2"/>) | ||||
| is applied to the CIPO. Note that all the reserved and padding bits <bcp14>MU | ||||
| ST</bcp14> be set to zero. | ||||
| </li> | </li> | |||
| <li> The leftmost bits of the resulting hash, up to the desired size, are use d as the Crypto-ID. | <li pn="section-4.1-4.2" derivedCounter="2."> The leftmost bits of the resulting hash, up to the desired size, are used as the Crypto-ID. | |||
| </li> | </li> | |||
| </ol><t> | </ol> | |||
| At the time of this writing, a minimal size for the Crypto-ID of 128 bits is | <t indent="0" pn="section-4.1-5"> | |||
| RECOMMENDED unless backward compatibility is needed <xref target='RFC8505'/>. Th | At the time of this writing, a minimal size for the Crypto-ID of 128 bits is | |||
| is value is bound to augment in the future. | <bcp14>RECOMMENDED</bcp14> unless backward compatibility is needed <xref target= | |||
| </t> | "RFC8505" format="default" sectionFormat="of" derivedContent="RFC8505"/> (in whi | |||
| </section> | ch case it is at least 64 bits). The size of the Crypto-ID is likely to increase | |||
| in the future. | ||||
| <section anchor='cryptoEARO'><name>Updated EARO</name> | </t> | |||
| <t> | </section> | |||
| This specification updates the EARO option to enable the use of the RO | <section anchor="cryptoEARO" numbered="true" removeInRFC="false" toc="incl | |||
| VR field to transport the Crypto-ID. The resulting format is as follows: | ude" pn="section-4.2"> | |||
| </t> | <name slugifiedName="name-updated-earo">Updated EARO</name> | |||
| <figure anchor='crypto-fig'><name>Enhanced Address Registration Option</n | <t indent="0" pn="section-4.2-1"> | |||
| ame> | This specification updates the EARO to enable the use of the ROVR fiel | |||
| <artwork> | d to transport the Crypto-ID. The resulting format is as follows: | |||
| </t> | ||||
| <figure anchor="crypto-fig" align="left" suppress-title="false" pn="figu | ||||
| re-1"> | ||||
| <name slugifiedName="name-enhanced-address-registrati">Enhanced Addres | ||||
| s Registration Option</name> | ||||
| <artwork align="left" pn="section-4.2-2.1"> | ||||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Length | Status | Opaque | | | Type | Length | Status | Opaque | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |Rsvd |C| I |R|T| TID | Registration Lifetime | | |Rsvd |C| I |R|T| TID | Registration Lifetime | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| ... Registration Ownership Verifier (ROVR) ... | ... Registration Ownership Verifier (ROVR) ... | |||
| | | | | | | |||
| skipping to change at line 271 ¶ | skipping to change at line 452 ¶ | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Length | Status | Opaque | | | Type | Length | Status | Opaque | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |Rsvd |C| I |R|T| TID | Registration Lifetime | | |Rsvd |C| I |R|T| TID | Registration Lifetime | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| ... Registration Ownership Verifier (ROVR) ... | ... Registration Ownership Verifier (ROVR) ... | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| </artwork> | </artwork> | |||
| </figure> | </figure> | |||
| <dl spacing="normal" indent="3" newline="false" pn="section-4.2-3"> | ||||
| <t> | <dt pn="section-4.2-3.1">Type:</dt> | |||
| </t><dl spacing='normal'> | <dd pn="section-4.2-3.2"> | |||
| <dt>Type:</dt><dd> | ||||
| 33 | 33 | |||
| </dd> | </dd> | |||
| <dt pn="section-4.2-3.3">Length:</dt> | ||||
| <dt>Length:</dt><dd> | <dd pn="section-4.2-3.4"> | |||
| Defined in <xref target='RFC8505'/> and copied in associated CIPO. | Defined in <xref target="RFC8505" format="default" sectionFormat="of" der | |||
| ivedContent="RFC8505"/> and copied in the "EARO Length" | ||||
| field in the associated CIPO. | ||||
| </dd> | </dd> | |||
| <dt pn="section-4.2-3.5">Status:</dt> | ||||
| <dt>Status:</dt><dd> | <dd pn="section-4.2-3.6"> | |||
| Defined in <xref target='RFC8505'/>. | Defined in <xref target="RFC8505" format="default" sectionFormat="of" der | |||
| ivedContent="RFC8505"/>. | ||||
| </dd> | </dd> | |||
| <dt pn="section-4.2-3.7">Opaque:</dt> | ||||
| <dt>Opaque:</dt><dd> | <dd pn="section-4.2-3.8"> | |||
| Defined in <xref target='RFC8505'/>. | Defined in <xref target="RFC8505" format="default" sectionFormat="of" der | |||
| ivedContent="RFC8505"/>. | ||||
| </dd> | </dd> | |||
| <dt pn="section-4.2-3.9">Rsvd (Reserved):</dt> | ||||
| <dt>Rsvd (Reserved):</dt><dd>3-bit unsigned integer. | <dd pn="section-4.2-3.10">3-bit unsigned integer. | |||
| It MUST be set to zero by the sender and MUST be ignored by the receiver | It <bcp14>MUST</bcp14> be set to zero by the sender and <bcp14>MUST</bcp | |||
| . | 14> be ignored by the receiver. | |||
| </dd> | </dd> | |||
| <dt pn="section-4.2-3.11">C:</dt> | ||||
| <dt>C:</dt><dd> | <dd pn="section-4.2-3.12"> | |||
| This "C" flag is set to indicate that the ROVR field contains a Crypto-ID | This "C" flag is set to indicate that the ROVR field contains a Crypto-ID | |||
| and that the 6LN MAY be challenged for ownership as specified in this document. | and that the 6LN <bcp14>MAY</bcp14> be challenged for ownership as specified in | |||
| this document. | ||||
| </dd> | </dd> | |||
| <dt pn="section-4.2-3.13">I, R, T:</dt> | ||||
| <dt>I, R, T:</dt><dd> | <dd pn="section-4.2-3.14"> | |||
| Defined in <xref target='RFC8505'/>. | Defined in <xref target="RFC8505" format="default" sectionFormat="of" | |||
| derivedContent="RFC8505"/>. | ||||
| </dd> | </dd> | |||
| <dt>TID:</dt><dd> | <dt pn="section-4.2-3.15">TID and Registration Lifetime:</dt> | |||
| Defined in <xref target='RFC8505'/>. | <dd pn="section-4.2-3.16"> | |||
| Defined in <xref target="RFC8505" format="default" sectionFormat="of" | ||||
| derivedContent="RFC8505"/>. | ||||
| </dd> | </dd> | |||
| <dt pn="section-4.2-3.17">Registration Ownership Verifier (ROVR):</dt> | ||||
| <dt>Registration Ownership Verifier (ROVR):</dt><dd> | <dd pn="section-4.2-3.18"> | |||
| When the "C" flag is set, this field contains a Crypto-ID. | When the "C" flag is set, this field contains a Crypto-ID. | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| <t> | <t indent="0" pn="section-4.2-4"> | |||
| This specification uses Status values "Validation Requested" and | This specification uses the status codes "Validation Requested" and | |||
| "Validation Failed", which are defined in <xref target='RFC8505'/>. | "Validation Failed", which are defined in <xref target="RFC8505" format=" | |||
| </t><t> | default" sectionFormat="of" derivedContent="RFC8505"/>. | |||
| this specification does not define any new Status value. | </t> | |||
| </t> | <t indent="0" pn="section-4.2-5"> | |||
| </section> | This specification does not define any new status codes. | |||
| </t> | ||||
| <section anchor='cryptoidopt'><name>Crypto-ID Parameters Option</name> | </section> | |||
| <t> | <section anchor="cryptoidopt" numbered="true" removeInRFC="false" toc="inc | |||
| This specification defines the Crypto-ID Parameters Option (CIPO). | lude" pn="section-4.3"> | |||
| The CIPO carries the parameters used to form a Crypto-ID. </t> | <name slugifiedName="name-crypto-id-parameters-option">Crypto-ID Paramet | |||
| <t> | ers Option</name> | |||
| In order to provide cryptographic agility <xref target='RFC7696'/>, this spe | <t indent="0" pn="section-4.3-1"> | |||
| cification supports different elliptic-curve based signature schemes, | This specification defines the CIPO. | |||
| The CIPO carries the parameters used to form a Crypto-ID.</t> | ||||
| <t indent="0" pn="section-4.3-2"> | ||||
| In order to provide cryptographic agility <xref target="RFC7696" format="def | ||||
| ault" sectionFormat="of" derivedContent="BCP201"/>, this specification supports | ||||
| different elliptic-curve-based signature schemes, | ||||
| indicated by a Crypto-Type field: | indicated by a Crypto-Type field: | |||
| </t> | </t> | |||
| <ul> | <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-4 | |||
| <li> | .3-3"> | |||
| The ECDSA256 signature scheme, which uses ECDSA with the NIST P-256 curve <x | <li pn="section-4.3-3.1"> | |||
| ref target='FIPS186-4'/> and the hash function SHA-256 <xref target="RFC6234"></ | The ECDSA256 signature scheme, which uses ECDSA with the NIST P-256 curve <x | |||
| xref> internally, | ref target="FIPS186-4" format="default" sectionFormat="of" derivedContent="FIPS1 | |||
| MUST be supported by all implementations. | 86-4"/> and the hash function SHA-256 <xref target="RFC6234" format="default" se | |||
| ctionFormat="of" derivedContent="RFC6234"/> internally, | ||||
| <bcp14>MUST</bcp14> be supported by all implementations. | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.3-3.2"> | |||
| The Ed25519 signature scheme, which uses the Pure Edwards-Curve Digital Sign | The Ed25519 signature scheme, which uses the Pure Edwards-Curve Digital Sign | |||
| ature Algorithm (PureEdDSA) <xref target='RFC8032'/> with the twisted Edwards cu | ature Algorithm (PureEdDSA) <xref target="RFC8032" format="default" sectionForma | |||
| rve Edwards25519 | t="of" derivedContent="RFC8032"/> with the twisted Edwards curve Edwards25519 | |||
| <xref target="RFC7748"></xref> and the hash function SHA-512 <xref target | <xref target="RFC7748" format="default" sectionFormat="of" derivedContent | |||
| ="RFC6234"></xref> internally, MAY be supported as an alternative. | ="RFC7748"/> and the hash function SHA-512 <xref target="RFC6234" format="defaul | |||
| t" sectionFormat="of" derivedContent="RFC6234"/> internally, <bcp14>MAY</bcp14> | ||||
| be supported as an alternative. | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.3-3.3"> | |||
| The ECDSA25519 signature scheme, which uses ECDSA <xref target='FIPS186-4'/> | The ECDSA25519 signature scheme, which uses ECDSA <xref target="FIPS186-4" f | |||
| with the Weierstrass curve Wei25519 (see <xref target="curves"></xref>) and the | ormat="default" sectionFormat="of" derivedContent="FIPS186-4"/> with the Weierst | |||
| hash function | rass curve Wei25519 (see <xref target="curves" format="default" sectionFormat="o | |||
| SHA-256 <xref target="RFC6234"></xref> internally, MAY also be supported. | f" derivedContent="Appendix B.4"/>) and the hash function | |||
| SHA-256 <xref target="RFC6234" format="default" sectionFormat="of" derive | ||||
| dContent="RFC6234"/> internally, <bcp14>MAY</bcp14> also be supported. | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t> This specification uses signature schemes that target similar cryptog | <t indent="0" pn="section-4.3-4"> This specification uses signature sche | |||
| raphic strength but rely on different curves, hash functions, signature algorith | mes that target similar cryptographic strength but rely on different curves, has | |||
| ms, and/or | h functions, signature algorithms, and/or | |||
| representation conventions. Future specification may extend this to diffe rent cryptographic algorithms and key sizes, e.g., to provide better security pr operties or a | representation conventions. Future specification may extend this to diffe rent cryptographic algorithms and key sizes, e.g., to provide better security pr operties or a | |||
| simpler implementation. | simpler implementation. | |||
| </t> | </t> | |||
| <figure anchor="cgapar-fig" align="left" suppress-title="false" pn="figu | ||||
| <figure anchor='cgapar-fig'><name>Crypto-ID Parameters Option</name> <art | re-2"> | |||
| work> | <name slugifiedName="name-crypto-id-parameters-option-2">Crypto-ID Par | |||
| 0 1 2 3 | ameters Option</name> | |||
| 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 | <artwork align="left" pn="section-4.3-5.1"> | |||
| 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 |Reserved1| Public Key Length | | | Type | Length |Reserved1| Public Key Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Crypto-Type | Modifier | EARO Length | | | | Crypto-Type | Modifier | EARO Length | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | |||
| | | | | | | |||
| . . | . . | |||
| . Public Key (variable length) . | . Public Key (variable length) . | |||
| . . | . . | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| . Padding . | . Padding . | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| </artwork> | </artwork> | |||
| </figure> | </figure> | |||
| <t> | <dl spacing="normal" indent="3" newline="false" pn="section-4.3-6"> | |||
| </t><dl spacing='normal'> | <dt pn="section-4.3-6.1">Type:</dt> | |||
| <dt>Type:</dt><dd> 8-bit unsigned integer. | <dd pn="section-4.3-6.2"> 8-bit unsigned integer. | |||
| to be assigned by IANA, see <xref target='nexndopt'/>. | IANA has assigned value 39; see <xref target="nexndopt" format="defau | |||
| lt" sectionFormat="of" derivedContent="Table 2"/>. | ||||
| </dd> | </dd> | |||
| <dt pn="section-4.3-6.3">Length:</dt> | ||||
| <dt>Length:</dt><dd> | <dd pn="section-4.3-6.4"> | |||
| 8-bit unsigned integer. The length of the option in units of 8 octets . | 8-bit unsigned integer. The length of the option in units of 8 octets . | |||
| </dd> | </dd> | |||
| <dt pn="section-4.3-6.5">Reserved1:</dt> | ||||
| <dt>Reserved1:</dt><dd> 5-bit unsigned integer. | <dd pn="section-4.3-6.6"> 5-bit unsigned integer. | |||
| It MUST be set to zero by the sender and MUST be ignored by the receiver | It <bcp14>MUST</bcp14> be set to zero by the sender and <bcp14>MUST</bcp | |||
| . | 14> be ignored by the receiver. | |||
| </dd> | </dd> | |||
| <dt pn="section-4.3-6.7">Public Key Length:</dt> | ||||
| <dt>Public Key Length:</dt><dd> | <dd pn="section-4.3-6.8"> | |||
| 11-bit unsigned integer. The length of the Public Key field in bytes. | 11-bit unsigned integer. The length of the Public Key field in bytes. | |||
| The actual length depends on the Crypto-Type value and on how the public key is | The actual length depends on the Crypto-Type value and how the public key is re | |||
| represented. | presented. | |||
| The valid values with this document are provided in <xref target | The valid values with this document are provided in <xref target= | |||
| ="cryptotypetable"/>. | "cryptotypetable" format="default" sectionFormat="of" derivedContent="Table 1"/> | |||
| . | ||||
| </dd> | </dd> | |||
| <dt pn="section-4.3-6.9">Crypto-Type:</dt> | ||||
| <dt>Crypto-Type:</dt><dd>8-bit unsigned integer. | <dd pn="section-4.3-6.10">8-bit unsigned integer. | |||
| The type of cryptographic algorithm used in calculation Crypto-ID | The type of cryptographic algorithm used in calculation of the Crypto-ID | |||
| indexed by IANA in the "Crypto-Type Subregistry" in the "Internet Contro | indexed by IANA in the "Crypto-Types" subregistry in the "Internet Contr | |||
| l Message Protocol version 6 (ICMPv6) Parameters" | ol Message Protocol version 6 (ICMPv6) Parameters" registry | |||
| (see <xref target='cryptotypereg'/>). | (see <xref target="cryptotypereg" format="default" sectionFormat="of" de | |||
| rivedContent="Section 8.2"/>). | ||||
| </dd> | </dd> | |||
| <dt pn="section-4.3-6.11">Modifier:</dt> | ||||
| <dt>Modifier:</dt><dd> | <dd pn="section-4.3-6.12"> | |||
| 8-bit unsigned integer. Set to an arbitrary value by the creator of t | 8-bit unsigned integer. Set to an arbitrary value by the creator of t | |||
| he Crypto-ID. | he Crypto-ID. The role of the modifier is to enable the formation of multiple Cr | |||
| The role of the modifier is to enable the formation of multiple Crypto-IDs fr | ypto-IDs from the same key pair. This reduces the traceability and, thus, improv | |||
| om a same key pair, which reduces the traceability and thus improves the privacy | es the privacy of a constrained node without requiring many key pairs. | |||
| of a constrained node that could not maintain many key-pairs. | ||||
| </dd> | </dd> | |||
| <dt>EARO Length:</dt><dd> 8-bit unsigned integer. | <dt pn="section-4.3-6.13">EARO Length:</dt> | |||
| <dd pn="section-4.3-6.14"> 8-bit unsigned integer. | ||||
| The option length of the EARO that contains the Crypto-ID associated with the CIPO. | The option length of the EARO that contains the Crypto-ID associated with the CIPO. | |||
| </dd> | </dd> | |||
| <dt pn="section-4.3-6.15">Public Key:</dt> | ||||
| <dt>Public Key:</dt><dd> A variable-length field, size indicated in the P | <dd pn="section-4.3-6.16"> A variable-length field; the size is indica | |||
| ublic Key Length field. | ted in the Public Key Length field. | |||
| </dd> | </dd> | |||
| <dt pn="section-4.3-6.17">Padding:</dt> | ||||
| <dt>Padding:</dt><dd> | <dd pn="section-4.3-6.18"> | |||
| A variable-length field completing the Public Key field to align to the | A variable-length field that completes the Public Key field to align to | |||
| next 8-bytes boundary. It MUST be set to zero by the sender and MUST be ignored | the next 8-byte boundary. It <bcp14>MUST</bcp14> be set to zero by the sender an | |||
| by the receiver. | d <bcp14>MUST</bcp14> be ignored by the receiver. | |||
| </dd> | </dd> | |||
| </dl><t> | </dl> | |||
| </t> | <t indent="0" pn="section-4.3-7"> | |||
| <t> | ||||
| The implementation of multiple hash functions in a constrained device may | The implementation of multiple hash functions in a constrained device may | |||
| consume excessive amounts of program memory. This specification enables t he use of the same hash function SHA-256 <xref target='RFC6234'/> for two of the three supported ECC-based signature schemes. | consume excessive amounts of program memory. This specification enables t he use of the same hash function SHA-256 <xref target="RFC6234" format="default" sectionFormat="of" derivedContent="RFC6234"/> for two of the three supported EC C-based signature schemes. | |||
| Some code factorization is also possible for the ECC computation itself. | Some code factorization is also possible for the ECC computation itself. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-4.3-8"> | |||
| <xref target='I-D.ietf-lwig-curve-representations'/> provides information | <xref target="I-D.ietf-lwig-curve-representations" format="default" secti | |||
| on how to represent Montgomery curves and (twisted) Edwards curves as cur | onFormat="of" derivedContent="CURVE-REPR"/> provides information | |||
| ves in short-Weierstrass form and illustrates how this can be used to implement | on how to represent Montgomery curves and (twisted) Edwards curves as cur | |||
| elliptic curve computations using existing implementations that already provide, | ves in short-Weierstrass form, and it illustrates how this can be used to implem | |||
| e.g., ECDSA and ECDH using NIST <xref target='FIPS186-4'/> prime curves. For mo | ent elliptic curve computations using existing implementations that already prov | |||
| re details on representation conventions, we refer to | ide, e.g., ECDSA and ECDH using NIST <xref target="FIPS186-4" format="default" s | |||
| <xref target='reprconv'/>.</t> | ectionFormat="of" derivedContent="FIPS186-4"/> prime curves. For more details on | |||
| </section> | representation conventions, refer to | |||
| <xref target="reprconv" format="default" sectionFormat="of" derivedConten | ||||
| <section anchor='ndpso'><name>NDP Signature Option</name> | t="Appendix B"/>.</t> | |||
| </section> | ||||
| <t> | <section anchor="ndpso" numbered="true" removeInRFC="false" toc="include" | |||
| This specification defines the NDP Signature Option (NDPSO). | pn="section-4.4"> | |||
| The NDPSO carries the signature that proves the ownership of the Crypto-ID. | <name slugifiedName="name-ndp-signature-option">NDP Signature Option</na | |||
| The format of the NDPSO is illustrated in <xref target='ndpso-fig'/>. | me> | |||
| </t> | <t indent="0" pn="section-4.4-1"> | |||
| <t> | This specification defines the NDP Signature Option (NDPSO). The NDPSO ca | |||
| As opposed to the RSA Signature Option (RSAO) defined in section 5.2. of <xr | rries the signature that proves the ownership of the Crypto-ID and validates the | |||
| ef target='RFC3971'>SEND</xref>, the NDPSO does not have a key hash field. Inste | address being registered. The format of the NDPSO is illustrated in <xref targe | |||
| ad, the leftmost 128 bits of the ROVR field in the EARO are used as hash to retr | t="ndpso-fig" format="default" sectionFormat="of" derivedContent="Figure 3"/>. | |||
| ieve the CIPO that contains the key material used for signature verification, le | </t> | |||
| ft-padded if needed. | <t indent="0" pn="section-4.4-2"> | |||
| As opposed to the RSA Signature Option (RSAO) defined in <xref target="RFC39 | ||||
| </t> | 71" sectionFormat="of" section="5.2" format="default" derivedLink="https://rfc-e | |||
| <t> | ditor.org/rfc/rfc3971#section-5.2" derivedContent="RFC3971">SEND</xref>, the NDP | |||
| Another difference is that the NDPSO signs a fixed set of fields as opposed | SO does not have a key hash field. Instead, the leftmost 128 bits of the ROVR fi | |||
| to all options that appear prior to it in the ND message that bears the signatur | eld in the EARO are used as hash to retrieve the CIPO that contains the key mate | |||
| e. This allows to elide a CIPO that the 6LR already received, at the expense of | rial used for signature verification, left-padded if needed. | |||
| the capability to add arbitrary options that would signed with a RSAO. | </t> | |||
| </t> | <t indent="0" pn="section-4.4-3"> | |||
| <t> | Another difference is that the NDPSO signs a fixed set of fields as opposed | |||
| An ND message that carries an NDPSO MUST have one and only one EARO. The EAR | to all options that appear prior to it in the ND message that bears the signatur | |||
| O MUST contain a Crypto-ID in the ROVR field, and the Crypto-ID MUST be associat | e. This allows a CIPO that the 6LR already received to be omitted, at the expens | |||
| ed with the keypair used for the Digital Signature in the NDPSO. | e of the capability to add arbitrary options that would be signed with an RSAO. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-4.4-4"> | |||
| An ND message that carries an NDPSO <bcp14>MUST</bcp14> have one and only on | ||||
| e EARO. The EARO <bcp14>MUST</bcp14> contain a Crypto-ID in the ROVR field, and | ||||
| the Crypto-ID <bcp14>MUST</bcp14> be associated with the key pair used for the d | ||||
| igital signature in the NDPSO. | ||||
| </t> | ||||
| <t indent="0" pn="section-4.4-5"> | ||||
| The CIPO may be present in the same message as the NDPSO. If it is not prese nt, it can be found in an abstract table that was created by a previous message and indexed by the hash. | The CIPO may be present in the same message as the NDPSO. If it is not prese nt, it can be found in an abstract table that was created by a previous message and indexed by the hash. | |||
| </t> | </t> | |||
| <figure anchor='ndpso-fig'><name>NDP signature Option</name> | <figure anchor="ndpso-fig" align="left" suppress-title="false" pn="figur | |||
| <artwork> | e-3"> | |||
| 0 1 2 3 | <name slugifiedName="name-ndp-signature-option-2">NDP Signature Option | |||
| 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 | </name> | |||
| <artwork align="left" pn="section-4.4-6.1"> | ||||
| 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 |Reserved1| Signature Length | | | Type | Length |Reserved1| Signature Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Reserved2 | | | Reserved2 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| . . | . . | |||
| . Digital Signature (variable length) . | . Digital Signature (variable length) . | |||
| . . | . . | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| . Padding . | . Padding . | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| </artwork> | </artwork> | |||
| </figure> | </figure> | |||
| <t> | <dl spacing="normal" indent="3" newline="false" pn="section-4.4-7"> | |||
| </t><dl spacing='normal'> | <dt pn="section-4.4-7.1">Type:</dt> | |||
| <dt>Type:</dt><dd> | <dd pn="section-4.4-7.2"> | |||
| to be assigned by IANA, see <xref target='nexndopt'/>. | IANA has assigned value 40; see <xref target="nexndopt" format="defau | |||
| lt" sectionFormat="of" derivedContent="Table 2"/>. | ||||
| </dd> | </dd> | |||
| <dt pn="section-4.4-7.3">Length:</dt> | ||||
| <dt>Length:</dt><dd> | <dd pn="section-4.4-7.4"> | |||
| 8-bit unsigned integer. The length of the option in units of 8 octets . | 8-bit unsigned integer. The length of the option in units of 8 octets . | |||
| </dd> | </dd> | |||
| <dt pn="section-4.4-7.5">Reserved1:</dt> | ||||
| <dt>Reserved1:</dt><dd> 5-bit unsigned integer. | <dd pn="section-4.4-7.6"> 5-bit unsigned integer. | |||
| It MUST be set to zero by the sender and MUST be ignored by the receiver | It <bcp14>MUST</bcp14> be set to zero by the sender and <bcp14>MUST</bcp | |||
| . | 14> be ignored by the receiver. | |||
| </dd> | </dd> | |||
| <dt pn="section-4.4-7.7">Digital Signature Length:</dt> | ||||
| <dt>Digital Signature Length:</dt><dd> | <dd pn="section-4.4-7.8"> | |||
| 11-bit unsigned integer. The length of the Digital Signature field in bytes. | 11-bit unsigned integer. The length of the Digital Signature field in bytes. | |||
| </dd> | </dd> | |||
| <dt pn="section-4.4-7.9">Reserved2:</dt> | ||||
| <dt>Reserved2:</dt><dd> 32-bit unsigned integer. | <dd pn="section-4.4-7.10"> 32-bit unsigned integer. | |||
| It MUST be set to zero by the sender and MUST be ignored by the receiver | It <bcp14>MUST</bcp14> be set to zero by the sender and <bcp14>MUST</bcp | |||
| . | 14> be ignored by the receiver. | |||
| </dd> | </dd> | |||
| <dt>Digital Signature:</dt><dd> | <dt pn="section-4.4-7.11">Digital Signature:</dt> | |||
| A variable-length field containing the digital signature. The length and | <dd pn="section-4.4-7.12"> | |||
| computation of the digital signature both depend on the Crypto-Type which is fou | A variable-length field containing the digital signature. The length and | |||
| nd in the associated CIPO, see <xref target='reprconv'/>. | computation of the digital signature both depend on the Crypto-Type, which is fo | |||
| For the values of the Crypto-Type defined in this specification, and for | und in the associated CIPO; see <xref target="reprconv" format="default" section | |||
| future values of the Crypto-Type unless specified otherwise, the signature is c | Format="of" derivedContent="Appendix B"/>. | |||
| omputed as detailed in <xref target='ndpso-generation'/>. | For the values of the Crypto-Type defined in this specification, and for | |||
| future values of the Crypto-Type unless specified otherwise, the signature is c | ||||
| omputed as detailed in <xref target="ndpso-generation" format="default" sectionF | ||||
| ormat="of" derivedContent="Section 6.2"/>. | ||||
| </dd> | </dd> | |||
| <dt pn="section-4.4-7.13">Padding:</dt> | ||||
| <dt>Padding:</dt><dd> | <dd pn="section-4.4-7.14"> | |||
| A variable-length field completing the Digital Signature field to align | A variable-length field completing the Digital Signature field to align | |||
| to the next 8-bytes boundary. It MUST be set to zero by the sender and MUST be i | to the next 8-byte boundary. It <bcp14>MUST</bcp14> be set to zero by the sender | |||
| gnored by the receiver. | and <bcp14>MUST</bcp14> be ignored by the receiver. | |||
| </dd> | </dd> | |||
| </dl><t> | </dl> | |||
| </t> | </section> | |||
| </section> | <section anchor="CIO" numbered="true" removeInRFC="false" toc="include" pn | |||
| ="section-4.5"> | ||||
| <section anchor='CIO'> | <name slugifiedName="name-extensions-to-the-capabilit">Extensions to the | |||
| <name>Extensions to the Capability Indication Option</name> | Capability Indication Option</name> | |||
| <t> | <t indent="0" pn="section-4.5-1"> | |||
| This specification defines one new capability bits in the 6CIO, | This specification defines one new capability bit in the 6LoWPAN Capabili | |||
| defined by <xref target="RFC7400"/> for use by the 6LR and 6LBR in IPv6 N | ty Indication Option (6CIO), | |||
| D RA messages. | as defined by <xref target="RFC7400" format="default" sectionFormat="of" | |||
| derivedContent="RFC7400"/>, for use by the 6LR and 6LBR in IPv6 ND RA messages. | ||||
| </t> | </t> | |||
| <figure anchor='fig6CIO' title="New Capability Bit in the 6CIO"> | <figure anchor="fig6CIO" align="left" suppress-title="false" pn="figure- | |||
| <artwork> | 4"> | |||
| <![CDATA[ | <name slugifiedName="name-new-capability-bit-in-the-6">New Capability | |||
| Bit in the 6CIO</name> | ||||
| <artwork align="left" pn="section-4.5-2.1"> | ||||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Length = 1 | Reserved |A|D|L|B|P|E|G| | | Type | Length = 1 | Reserved |A|D|L|B|P|E|G| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Reserved | | | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | </artwork> | |||
| </figure> | </figure> | |||
| <t indent="0" pn="section-4.5-3"> New Option Field:</t> | ||||
| <t> New Option Field:</t> | <dl spacing="normal" indent="3" newline="false" pn="section-4.5-4"> | |||
| <dl spacing='normal'> | <dt pn="section-4.5-4.1">A:</dt> | |||
| <dt>A:</dt><dd> 1-bit flag. Set to indicate that AP-ND is globally activa | <dd pn="section-4.5-4.2"> 1-bit flag. Set to indicate that AP-ND is gl | |||
| ted in the network. | obally activated in the network. | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| <t> | <t indent="0" pn="section-4.5-5"> | |||
| The "A" flag is set by the 6LBR that serves the network and propagated by th | The "A" flag is set by the 6LBR that serves the network and is propagated by | |||
| e 6LRs. | the 6LRs. | |||
| It is typically turned on when all 6LRs are migrated to this specification. | It is typically turned on when all 6LRs are migrated to this specification. | |||
| </t> | </t> | |||
| </section> <!--New 6LoWPAN Capability Bits in the Capability Indication Opti | </section> | |||
| on --> | </section> | |||
| </section> | <section numbered="true" removeInRFC="false" toc="include" pn="section-5"> | |||
| <name slugifiedName="name-protocol-scope">Protocol Scope</name> | ||||
| <section><name>Protocol Scope</name> | <t indent="0" pn="section-5-1"> | |||
| <t> | The scope of the protocol specified here is a 6LoWPAN LLN, typically | |||
| The scope of the protocol specified here is a 6LoWPAN LLN, typically | a stub network connected to a larger IP network via a border router called a 6L | |||
| a stub network connected to a larger IP network via a Border Router called a 6L | BR per <xref target="RFC6775" format="default" sectionFormat="of" derivedContent | |||
| BR per <xref target='RFC6775'/>. A 6LBR has sufficient capability to satisfy the | ="RFC6775"/>. A 6LBR has sufficient capability to satisfy the needs of DAD. | |||
| needs of duplicate address detection. | </t> | |||
| </t> | <t indent="0" pn="section-5-2"> | |||
| <t> | The 6LBR maintains registration state for all devices in its attache | |||
| The 6LBR maintains registration state for all devices in its attache | d LLN. Together with the first-hop router (the 6LR), the 6LBR assures uniquenes | |||
| d LLN. Together with the first-hop router (the 6LR), the 6LBR assures uniquenes | s and grants ownership of an IPv6 address before it can be used in the LLN. This | |||
| s and grants ownership of an IPv6 address before it can be used in the LLN. This | is in contrast to a traditional network that relies on IPv6 address autoconfigu | |||
| is in contrast to a traditional network that relies on IPv6 address auto-config | ration <xref target="RFC4862" format="default" sectionFormat="of" derivedContent | |||
| uration <xref target='RFC4862'/>, where there is no guarantee of ownership from | ="RFC4862"/>, where there is no guarantee of ownership from the network, and eac | |||
| the network, and each IPv6 Neighbor Discovery packet must be individually secure | h IPv6 Neighbor Discovery packet must be individually secured <xref target="RFC3 | |||
| d <xref target='RFC3971'/>. | 971" format="default" sectionFormat="of" derivedContent="RFC3971"/>. | |||
| </t> | </t> | |||
| <figure anchor='figco'><name>Basic Configuration</name> | <figure anchor="figco" align="left" suppress-title="false" pn="figure-5"> | |||
| <artwork><![CDATA[ | <name slugifiedName="name-basic-configuration">Basic Configuration</name | |||
| > | ||||
| <artwork align="left" pn="section-5-3.1"> | ||||
| ---+-------- ............ | ---+-------- ............ | |||
| | External Network | | External Network | |||
| | | | | |||
| +-----+ | +-----+ | |||
| | | 6LBR | | | 6LBR | |||
| +-----+ | +-----+ | |||
| o o o | o o o | |||
| o o o o | o o o o | |||
| o o LLN o o o | o o LLN o o o | |||
| o o | o o | |||
| o o o(6LR) | o o o(6LR) | |||
| ^ | ^ | |||
| o o | LLN link | o o | LLN link | |||
| o o v | o o v | |||
| o(6LN) | o(6LN) | |||
| o | o | |||
| ]]></artwork> | </artwork> | |||
| </figure> | </figure> | |||
| <t> | <t indent="0" pn="section-5-4"> | |||
| In a mesh network, the 6LR is directly connected to the host device. | In a mesh network, the 6LR is directly connected to the host device. | |||
| This specification mandates that the peer-wise layer-2 security is deployed so | This specification mandates that the peer-wise L2 security is deployed so that | |||
| that all the packets from a particular host are securely identifiable by the 6LR | all the packets from a particular host are protected. The 6LR may be multiple ho | |||
| . The 6LR may be multiple hops away from the 6LBR. Packets are routed between th | ps away from the 6LBR. Packets are routed between the 6LR and the 6LBR via other | |||
| e 6LR and the 6LBR via other 6LRs. | 6LRs. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-5-5"> | |||
| This specification mandates that all the LLN links between the 6LR and th e 6LBR are protected so that a packet that was validated by the first 6LR can be safely routed by other on-path 6LRs to the 6LBR. | This specification mandates that all the LLN links between the 6LR and th e 6LBR are protected so that a packet that was validated by the first 6LR can be safely routed by other on-path 6LRs to the 6LBR. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section numbered="true" removeInRFC="false" toc="include" pn="section-6"> | ||||
| <section><name>Protocol Flows</name> | <name slugifiedName="name-protocol-flows">Protocol Flows</name> | |||
| <t> | <t indent="0" pn="section-6-1"> | |||
| The 6LR/6LBR ensures first-come/first-serve by storing the ROVR associat | The 6LR/6LBR ensures first come, first served by storing the ROVR associ | |||
| ed to the address being registered upon the first registration and rejecting a r | ated to the address being registered upon the first registration and rejecting a | |||
| egistration with a different ROVR value. A 6LN can claim any address as long as | registration with a different ROVR value. A 6LN can claim any address as long a | |||
| it is the first to make that claim. After a successful registration, the 6LN bec | s it is the first to make that claim. After a successful registration, the 6LN b | |||
| omes the owner of the registered address and the address is bound to the ROVR va | ecomes the owner of the Registered Address, and the address is bound to the ROVR | |||
| lue in the 6LR/6LBR registry. | value in the 6LR/6LBR registry. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-6-2"> | |||
| This specification protects the ownership of the address at the first hop (t | This specification protects the ownership of the address at the | |||
| he edge). Its use in a network is signaled by the "A" flag in the 6CIO. The flag | first hop (the edge). Its use in a network is signaled by the "A" | |||
| is set by the 6LBR and propagated unchanged by the 6LRs. | flag in the 6CIO. The flag is set by the 6LBR and propagated | |||
| The "A" flag enables to migrate a network with the protection off and then t | unchanged by the 6LRs. Once every node in the network is upgraded to support | |||
| urn it on globally. | this specification, the "A" flag can be set to turn the protection on globally. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-6-3"> | |||
| The 6LN places a cryptographic token, the Crypto-ID, in the ROVR that is | The 6LN places a cryptographic identifier, the Crypto-ID, in the ROVR th | |||
| associated with the address at the first registration, enabling the 6LR to late | at is associated with the address at the first registration, enabling the 6LR to | |||
| r challenge it to verify that it is the original Registering Node. The challenge | later challenge it to verify that it is the original Registering Node. The chal | |||
| may happen at any time at the discretion of the 6LR and the 6LBR. A valid regi | lenge may happen at any time at the discretion of the 6LR and the 6LBR. A valid | |||
| stration in the 6LR or the 6LBR MUST NOT be altered until the challenge is compl | registration in the 6LR or the 6LBR <bcp14>MUST NOT</bcp14> be altered until the | |||
| ete. | challenge is complete. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-6-4"> | |||
| When the "A" flag is on, the 6LR MUST challenge the 6LN when it creates a b | When the "A" flag in a subnet is set, the 6LR <bcp14>MUST</bcp14> challenge | |||
| inding with the "C" flag set in the ROVR and when a new registration attempts to | the 6LN before it creates a Binding with the "C" flag set in the EARO. The 6LR | |||
| change a parameter of that binding that identifies the 6LN, for instance its So | <bcp14>MUST</bcp14> also challenge the 6LN when a new registration attempts to c | |||
| urce Link-Layer Address. The verification protects against a rogue that would s | hange a parameter of an already validated Binding for that 6LN, for instance, it | |||
| teal an address and attract its traffic, or use it as source address. | s Source link-layer address. Such verification protects against an attacker that | |||
| </t> | attempts to steal the address of an honest node. | |||
| <t> | </t> | |||
| The 6LR MUST also challenge the 6LN if the 6LBR directly signals to do so, | <t indent="0" pn="section-6-5"> | |||
| using an EDAC Message with a "Validation Requested" status. The EDAR is | The 6LR <bcp14>MUST</bcp14> indicate to the 6LBR that it performed a succes | |||
| echoed by the 6LR in the NA (EARO) back to the registering node. The 6LR | sful validation by setting a status code of 5 ("Validation Requested") in the ED | |||
| SHOULD also challenge all its attached 6LNs at the time the 6LBR turns the | AR. Upon a subsequent EDAR from a new 6LR with a status code that is not 5 for a | |||
| "A" flag on in the 6CIO, to detect an issue immediately. | validated Binding, the 6LBR <bcp14>MUST</bcp14> indicate to the new 6LR that it | |||
| </t> | needs to challenge the 6LN using a status code of 5 in the Extended Duplicate A | |||
| <t>If the 6LR does not support the Crypto-Type, it MUST reply with an EARO | ddress Confirmation (EDAC). | |||
| Status 10 "Validation Failed" without a challenge. In that case, the 6LN | </t> | |||
| may try another Crypto-Type until it falls back to Crypto-Type 0 that MUST | <t indent="0" pn="section-6-6"> | |||
| be supported by all 6LRs. | ||||
| </t> | ||||
| <t> | ||||
| A node may use more than one IPv6 address at the same time. The separ | ||||
| ation of the address and the cryptographic material avoids the need for the cons | ||||
| trained device to compute multiple keys for multiple addresses. The 6LN MAY use | ||||
| the same Crypto-ID to prove the ownership of multiple IPv6 addresses. The 6LN MA | ||||
| Y also derive multiple Crypto-IDs from a same key. | ||||
| </t> | ||||
| <section anchor='first'><name>First Exchange with a 6LR</name> | ||||
| <t> | ||||
| A 6LN registers to a 6LR that is one hop away from it with the "C" fl | ||||
| ag set in the EARO, indicating that the ROVR field contains a Crypto-ID. The Tar | ||||
| get Address in the NS message indicates the IPv6 address that the 6LN is trying | ||||
| to register <xref target='RFC8505'/>. The on-link (local) protocol interactions | ||||
| are shown in <xref target='Dynamic-fig'/>. If the 6LR does not have a state with | ||||
| the 6LN that is consistent with the NS(EARO), then it replies with a challenge | ||||
| NA (EARO, status=Validation Requested) that contains a Nonce Option (shown as No | ||||
| nceLR in <xref target='Dynamic-fig'/>). | ||||
| </t> | ||||
| <figure anchor='Dynamic-fig' suppress-title='false'><name>On-link Protoco | The 6LR <bcp14>MUST</bcp14> challenge the 6LN when the 6LBR signals to do s | |||
| l Operation</name> | o, which is done with an EDAC message with a status code of 5. The EDAC is echoe | |||
| <artwork><![CDATA[ | d by the 6LR in the NA(EARO) back to the Registering Node. The 6LR <bcp14>SHOULD | |||
| </bcp14> also challenge all its attached 6LNs at the time the 6LBR turns the "A" | ||||
| flag on in the 6CIO in orders to detect an issue immediately. | ||||
| </t> | ||||
| <t indent="0" pn="section-6-7">If the 6LR does not support the Crypto-Type | ||||
| , it <bcp14>MUST</bcp14> reply with an EARO status code of 10 "Validation Failed | ||||
| " without a challenge. In that case, the 6LN may try another Crypto-Type until i | ||||
| t falls back to Crypto-Type 0, which <bcp14>MUST</bcp14> be supported by all 6LR | ||||
| s. | ||||
| </t> | ||||
| <t indent="0" pn="section-6-8"> | ||||
| A node may use more than one IPv6 address at the same time. The separ | ||||
| ation of the address and the cryptographic material avoids the need for the cons | ||||
| trained device to compute multiple keys for multiple addresses. The 6LN <bcp14>M | ||||
| AY</bcp14> use the same Crypto-ID to prove the ownership of multiple IPv6 addres | ||||
| ses. The 6LN <bcp14>MAY</bcp14> also derive multiple Crypto-IDs from the same ke | ||||
| y pair by changing the modifier. | ||||
| </t> | ||||
| <section anchor="first" numbered="true" removeInRFC="false" toc="include" | ||||
| pn="section-6.1"> | ||||
| <name slugifiedName="name-first-exchange-with-a-6lr">First Exchange with | ||||
| a 6LR</name> | ||||
| <t indent="0" pn="section-6.1-1"> | ||||
| A 6LN registers to a 6LR that is one hop away from it with the "C" fl | ||||
| ag set in the EARO, indicating that the ROVR field contains a Crypto-ID. The Tar | ||||
| get Address in the NS message indicates the IPv6 address that the 6LN is trying | ||||
| to register <xref target="RFC8505" format="default" sectionFormat="of" derivedCo | ||||
| ntent="RFC8505"/>. The on-link (local) protocol interactions are shown in <xref | ||||
| target="Dynamic-fig" format="default" sectionFormat="of" derivedContent="Figure | ||||
| 6"/>. If the 6LR does not have a state with the 6LN that is consistent with the | ||||
| NS(EARO), then it replies with a challenge NA(EARO, status=Validation Requested) | ||||
| that contains a Nonce Option (shown as NonceLR in <xref target="Dynamic-fig" fo | ||||
| rmat="default" sectionFormat="of" derivedContent="Figure 6"/>). | ||||
| </t> | ||||
| <figure anchor="Dynamic-fig" suppress-title="false" align="left" pn="fig | ||||
| ure-6"> | ||||
| <name slugifiedName="name-on-link-protocol-operation">On-Link Protocol | ||||
| Operation</name> | ||||
| <artwork align="left" pn="section-6.1-2.1"> | ||||
| 6LN 6LR | 6LN 6LR | |||
| | | | | | | |||
| |<------------------------- RA -------------------------| | |<------------------------- RA -------------------------| | |||
| | | ^ | | | ^ | |||
| |---------------- NS with EARO (Crypto-ID) ------------>| | | |---------------- NS with EARO (Crypto-ID) ------------>| | | |||
| | | option | | | option | |||
| |<- NA with EARO(status=Validation Requested), NonceLR | | | |<- NA with EARO(status=Validation Requested), NonceLR | | | |||
| | | v | | | v | |||
| |------- NS with EARO, CIPO, NonceLN and NDPSO -------->| | |------- NS with EARO, CIPO, NonceLN and NDPSO -------->| | |||
| | | | | | | |||
| |<------------------- NA with EARO ---------------------| | |<------------------- NA with EARO ---------------------| | |||
| | | | | | | |||
| ... | ... | |||
| | | | | | | |||
| |--------------- NS with EARO (Crypto-ID) ------------->| | |--------------- NS with EARO (Crypto-ID) ------------->| | |||
| | | | | | | |||
| |<------------------- NA with EARO ---------------------| | |<------------------- NA with EARO ---------------------| | |||
| | | | | | | |||
| ... | ... | |||
| | | | | | | |||
| |--------------- NS with EARO (Crypto-ID) ------------->| | |--------------- NS with EARO (Crypto-ID) ------------->| | |||
| | | | | | | |||
| |<------------------- NA with EARO ---------------------| | |<------------------- NA with EARO ---------------------| | |||
| | | | | | | |||
| ]]></artwork> | </artwork> | |||
| </figure> | </figure> | |||
| <t indent="0" pn="section-6.1-3"> | ||||
| <t> | The Nonce Option contains a nonce value that, to the extent possible | |||
| The Nonce option contains a nonce value that, to the extent possible for | for the implementation, was never used before. This specification inherits the i | |||
| the implementation, was never employed in association with the key pair used to | dea from <xref target="RFC3971" format="default" sectionFormat="of" derivedConte | |||
| generate the Crypto-ID. This specification inherits from <xref target='RFC3971' | nt="RFC3971"/> that the nonce is a random value. Ideally, an implementation uses | |||
| /> that simply indicates that the nonce is a random value. Ideally, an implement | an unpredictable cryptographically random value <xref target="RFC4086" format=" | |||
| ation uses an unpredictable cryptographically random value <xref target='RFC4086 | default" sectionFormat="of" derivedContent="BCP106"/>. But that may be impractic | |||
| '/>. But that may be impractical in some LLN scenarios where the devices do not | al in some LLN scenarios with resource-constrained devices. | |||
| have a guaranteed sense of time and for which computing complex hashes is detrim | </t> | |||
| ental to the battery lifetime. | <t indent="0" pn="section-6.1-4"> Alternatively, the device may use an a | |||
| </t> | lways-incrementing value saved in the same stable storage as the key, so they ar | |||
| <t> Alternatively, | e lost together, and start at a best-effort random value as either the nonce val | |||
| the device may use an always-incrementing value saved in the same stable | ue or a component to its computation. | |||
| storage as the key, so they are lost together, and starting at a best effort ra | </t> | |||
| ndom value, either as the nonce value or as a component to its computation. | <t indent="0" pn="section-6.1-5"> | |||
| </t> | The 6LN replies to the challenge with an NS(EARO) that includes the N | |||
| <t> | once Option (shown as NonceLN in <xref target="Dynamic-fig" format="default" sec | |||
| The 6LN replies to the challenge with an NS(EARO) that includes a new | tionFormat="of" derivedContent="Figure 6"/>), the CIPO (<xref target="cryptoidop | |||
| Nonce option (shown as NonceLN in <xref target='Dynamic-fig'/>), the CIPO (<xre | t" format="default" sectionFormat="of" derivedContent="Section 4.3"/>), and the | |||
| f target='cryptoidopt'/>), and the NDPSO containing the signature. Both Nonces a | NDPSO containing the signature. Both nonces are included in the signed material. | |||
| re included in the signed material. | This provides a "contributory behavior" that results in better security even wh | |||
| This provides a "contributory behavior", so that either party that knows | en the nonces of one party are not generated as specified. | |||
| it generates a good quality nonce knows that the protocol will be secure. | </t> | |||
| </t> | <t indent="0" pn="section-6.1-6"> | |||
| <t> | The 6LR <bcp14>MUST</bcp14> store the information associated with a Cryp | |||
| The 6LR MUST store the information associated to a Crypto-ID on the firs | to-ID on the first NS exchange where it appears in a fashion that the CIPO param | |||
| t NS exchange where it appears in a fashion that the CIPO parameters can be retr | eters can be retrieved from the Crypto-ID alone. | |||
| ieved from the Crypto-ID alone. | ||||
| </t> | ||||
| <t>The steps for the registration to the 6LR are as follows: | ||||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-6.1-7">The steps for the registration to the 6 | |||
| Upon the first exchange with a 6LR, a 6LN will be challenged to prov | LR are as follows: | |||
| e ownership of the Crypto-ID and the Target Address being registered in the Neig | ||||
| hbor Solicitation message. When a 6LR receives a NS(EARO) registration with a ne | ||||
| w Crypto-ID as a ROVR, and unless the registration is rejected for another reaso | ||||
| n, it MUST challenge by responding with a NA(EARO) with a status of "Validation | ||||
| Requested". | ||||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-6.1-8"> | |||
| Upon receiving a first NA(EARO) with a status of "Validation Request | Upon the first exchange with a 6LR, a 6LN will be challenged to prov | |||
| ed" from a 6LR, the registering node SHOULD retry its registration with a Crypto | e ownership of the Crypto-ID and the Target Address being registered in the Neig | |||
| -ID Parameters Option (CIPO) (<xref target='cryptoidopt'/>) that contains all th | hbor Solicitation message. When a 6LR receives an NS(EARO) registration with a n | |||
| e necessary material for building the Crypto-ID, the NonceLN that it generated, | ew Crypto-ID as a ROVR, and unless the registration is rejected for another reas | |||
| and the NDP signature (<xref target='ndpso'/>) option that proves its ownership | on, it <bcp14>MUST</bcp14> challenge by responding with an NA(EARO) with a statu | |||
| of the Crypto-ID and intent of registering the Target Address. In subsequent rev | s code of "Validation Requested". | |||
| alidation with the same 6LR, the 6LN MAY try to omit the CIPO to save bandwidth, | ||||
| with the expectation that the 6LR saved it. If the validation fails and it gets | ||||
| challenged again, then it SHOULD add the CIPO again. | ||||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-6.1-9"> | |||
| In order to validate the ownership, the 6LR performs the same steps | Upon receiving a first NA(EARO) with a status code of "Validation Re | |||
| as the 6LN and rebuilds the Crypto-ID based on the parameters in the CIPO. If th | quested" from a 6LR, the Registering Node <bcp14>SHOULD</bcp14> retry its regist | |||
| e rebuilt Crypto-ID matches the ROVR, the 6LN also verifies the signature contai | ration with a CIPO (<xref target="cryptoidopt" format="default" sectionFormat="o | |||
| ned in the NDPSO option. If at that point the signature in the NDPSO option can | f" derivedContent="Section 4.3"/>) that contains all the necessary material for | |||
| be verified, then the validation succeeds. Otherwise the validation fails. | building the Crypto-ID, the NonceLN that it generated, and the NDP Signature Opt | |||
| ion (<xref target="ndpso" format="default" sectionFormat="of" derivedContent="Se | ||||
| ction 4.4"/>) that proves its ownership of the Crypto-ID and intent of registeri | ||||
| ng the Target Address. In subsequent revalidation with the same 6LR, the 6LN <bc | ||||
| p14>MAY</bcp14> try to omit the CIPO to save bandwidth, with the expectation tha | ||||
| t the 6LR saved it. If the validation fails and it gets challenged again, then i | ||||
| t <bcp14>SHOULD</bcp14> add the CIPO again. | ||||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-6.1-10"> | |||
| If the 6LR fails to validate the signed NS(EARO), it responds with a | In order to validate the ownership, the 6LR performs the | |||
| status of "Validation Failed". After receiving a NA(EARO) with a status of "Val | same steps as the 6LN and rebuilds the Crypto-ID based on | |||
| idation Failed", | the parameters in the CIPO. If the rebuilt Crypto-ID | |||
| the registering node SHOULD try and alternate Crypto-Type and if eve | matches the ROVR, the 6LN also verifies the signature | |||
| n Crypto-Type 0 fails, it may try to register a different address in the NS mess | contained in the NDPSO. At that point, if the signature in the NDPSO | |||
| age. | can be verified, then the validation succeeds. Otherwise, the validation fails. | |||
| </t> | ||||
| </t> | <t indent="0" pn="section-6.1-11"> | |||
| </section> | If the 6LR fails to validate the signed NS(EARO), it responds with a | |||
| status code of "Validation Failed". After receiving an NA(EARO) with a status c | ||||
| <section anchor='ndpso-generation'><name>NDPSO generation and verification</ | ode of "Validation Failed", | |||
| name> | the Registering Node <bcp14>SHOULD</bcp14> try an alternate Crypto-T | |||
| ype; even if Crypto-Type 0 fails, it may try to register a different address in | ||||
| the NS message. | ||||
| <t> | </t> | |||
| The signature generated by the 6LN to provide proof-of-ownership of | </section> | |||
| the | <section anchor="ndpso-generation" numbered="true" removeInRFC="false" toc | |||
| private-key is carried in the NDP Signature Option (NDPSO). | ="include" pn="section-6.2"> | |||
| <name slugifiedName="name-ndpso-generation-and-verifi">NDPSO Generation | ||||
| and Verification</name> | ||||
| <t indent="0" pn="section-6.2-1"> | ||||
| The signature generated by the 6LN to provide proof of ownership of | ||||
| the | ||||
| private key is carried in the NDPSO. | ||||
| It is generated by the 6LN in a fashion that depends on the Cryp to-Type | It is generated by the 6LN in a fashion that depends on the Cryp to-Type | |||
| (see <xref target='cryptotypetable'/> in | (see <xref target="cryptotypetable" format="default" sectionForm | |||
| <xref target='cryptotypereg'/>) chosen by the 6LN as follows: | at="of" derivedContent="Table 1"/> in | |||
| </t> | <xref target="cryptotypereg" format="default" sectionFormat="of" | |||
| <ul> | derivedContent="Section 8.2"/>) chosen by the 6LN as follows: | |||
| <li><t> Form the message to be signed, by concatenating the following b | </t> | |||
| yte-strings in the order listed:</t> | <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-6 | |||
| .2-2"> | ||||
| <ol spacing='compact'> | <li pn="section-6.2-2.1"> | |||
| <li>The 128-bit Message Type tag <xref target='RFC3972'/> | <t indent="0" pn="section-6.2-2.1.1"> Form the message to be signed, | |||
| (in network byte order). | by concatenating the following byte-strings in the order listed:</t> | |||
| For this specification the tag is given in <xref target='cgam'/> | <ol spacing="normal" indent="adaptive" start="1" type="1" pn="sectio | |||
| . | n-6.2-2.1.2"> | |||
| (The tag value has been generated by the editor of this specifica | <li pn="section-6.2-2.1.2.1" derivedCounter="1.">The 128- | |||
| tion on random.org).</li> | bit Message Type tag <xref target="RFC3972" format="default" sectionFormat="of" | |||
| <li>the CIPO</li> | derivedContent="RFC3972"/> (in network byte order). | |||
| <li>the 16-byte Target Address (in network byte order) se | For this specification, the tag is given in <xref target="cgam" | |||
| nt in the Neighbor Solicitation (NS) message. It is the address which the 6LN is | format="default" sectionFormat="of" derivedContent="Section 8.1"/>. | |||
| registering with the 6LR and 6LBR.</li> | (The tag value has been generated by the editor of this specifica | |||
| <li>NonceLR received from the 6LR (in network byte order) | tion on <eref target="https://www.random.org" brackets="angle"/>.)</li> | |||
| in the Neighbor Advertisement (NA) message. The nonce is at least 6 bytes long | <li pn="section-6.2-2.1.2.2" derivedCounter="2.">The CIPO.</li> | |||
| as defined in <xref target='RFC3971'/>.</li> | <li pn="section-6.2-2.1.2.3" derivedCounter="3.">The 16-byte Targe | |||
| <li>NonceLN sent from the 6LN (in network byte order). Th | t Address (in network byte order) sent in the NS message. It is the address that | |||
| e nonce is at least 6 bytes long as defined in <xref target='RFC3971'/>.</li> | the 6LN is registering with the 6LR and 6LBR.</li> | |||
| <li>1-byte Option Length of the EARO containing the Crypto-ID.</ | <li pn="section-6.2-2.1.2.4" derivedCounter="4.">The NonceLR recei | |||
| li> | ved from the 6LR (in | |||
| </ol> | network byte order) in the NA message. The | |||
| nonce is at least 6 bytes long as defined in <xref target | ||||
| ="RFC3971" format="default" sectionFormat="of" derivedContent="RFC3971"/>.</li> | ||||
| <li pn="section-6.2-2.1.2.5" derivedCounter="5.">The NonceLN sent | ||||
| from the 6LN (in network | ||||
| byte order). The nonce is at least 6 bytes long as define | ||||
| d in <xref target="RFC3971" format="default" sectionFormat="of" derivedContent=" | ||||
| RFC3971"/>.</li> | ||||
| <li pn="section-6.2-2.1.2.6" derivedCounter="6.">The 1-byte option | ||||
| length of the EARO containing the Crypto-ID.</li> | ||||
| </ol> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-6.2-2.2"> | |||
| Apply the signature algorithm specified by the Crypto-Type using the p rivate key.</li> | Apply the signature algorithm specified by the Crypto-Type using the p rivate key.</li> | |||
| </ul> | </ul> | |||
| <t indent="0" pn="section-6.2-3"> | ||||
| <t> | Upon receiving the NDPSO and CIPO options, the 6LR first checks that | |||
| The 6LR on receiving the NDPSO and CIPO options first checks that th | the EARO Length in the CIPO matches the length of the EARO. If so, it regenerat | |||
| e EARO Length in the CIPO matches the length of the EARO. If so it regenerates t | es the Crypto-ID based on the CIPO to make sure that the leftmost bits up to the | |||
| he Crypto-ID based on the CIPO to make sure that the leftmost bits up to the siz | size of the ROVR match. | |||
| e of the ROVR match. | </t> | |||
| </t> | <t indent="0" pn="section-6.2-4"> | |||
| <t> | If, and only if, the check is successful, it tries to verify | |||
| If and only if the check is successful, it tries to verify the signatur | the signature in the NDPSO using the following steps: | |||
| e in the NDPSO option using the following: | </t> | |||
| </t> | <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-6 | |||
| <ul> | .2-5"> | |||
| <li><t>Form the message to be verified, by concatenating the following | <li pn="section-6.2-5.1"> | |||
| byte-strings in the order listed:</t> | <t indent="0" pn="section-6.2-5.1.1">Form the message to be verified | |||
| <ol spacing='compact'> | , by concatenating the following byte-strings in the order listed:</t> | |||
| <li>The 128-bit Message Type tag given in <xref target='cgam'/> | <ol spacing="normal" indent="adaptive" start="1" type="1" pn="sectio | |||
| (in network byte order)</li> | n-6.2-5.1.2"> | |||
| <li>the CIPO</li> | <li pn="section-6.2-5.1.2.1" derivedCounter="1.">The 128-bit Mes | |||
| <li>the 16-byte Target Address (in network byte order) received | sage Type tag given in <xref target="cgam" format="default" sectionFormat="of" d | |||
| in the Neighbor Solicitation (NS) message. It is the address which the 6LN is re | erivedContent="Section 8.1"/> (in network byte order).</li> | |||
| gistering with the 6LR and 6LBR.</li> | <li pn="section-6.2-5.1.2.2" derivedCounter="2.">The CIPO.</li> | |||
| <li>NonceLR sent in the Neighbor Advertisement (NA) message. The | <li pn="section-6.2-5.1.2.3" derivedCounter="3.">The 16-byte Targe | |||
| nonce is at least 6 bytes long as defined in <xref target='RFC3971'/>.</li> | t Address (in network byte order) received in the NS message. It is the address | |||
| <li>NonceLN received from the 6LN (in network byte order) in the | that the 6LN is registering with the 6LR and 6LBR.</li> | |||
| NS message. The nonce is at least 6 bytes long as defined in <xref target='RFC3 | <li pn="section-6.2-5.1.2.4" derivedCounter="4.">The NonceLR sent | |||
| 971'/>.</li> | in the NA message. The nonce is | |||
| <li>1-byte EARO Length received in the CIPO.</li> | at least 6 bytes long as defined in <xref target="RFC3971" format | |||
| </ol> | ="default" sectionFormat="of" derivedContent="RFC3971"/>.</li> | |||
| </li> | <li pn="section-6.2-5.1.2.5" derivedCounter="5.">The NonceLN recei | |||
| <li> | ved from the 6LN (in network byte | |||
| Verify the signature on this message with the public-key in the CIPO a | order) in the NS message. The nonce is at least 6 bytes long as d | |||
| nd the locally computed values using the signature algorithm specified by the Cr | efined in <xref target="RFC3971" format="default" sectionFormat="of" derivedCont | |||
| ypto-Type. If the verification succeeds, the 6LR propagates the information to t | ent="RFC3971"/>.</li> | |||
| he 6LBR using a EDAR/EDAC flow. | <li pn="section-6.2-5.1.2.6" derivedCounter="6.">The 1-byte EARO L | |||
| ength received in the CIPO.</li> | ||||
| </ol> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-6.2-5.2"> | |||
| Due to the first-come/first-serve nature of the registration, if the a | Verify the signature on this message with the public key in the CIPO a | |||
| ddress is not registered to the 6LBR, then flow succeeds and both the 6LR and 6L | nd the locally computed values using the signature algorithm specified by the Cr | |||
| BR add the state information about the Crypto-ID and Target Address being regist | ypto-Type. If the verification succeeds, the 6LR propagates the information to t | |||
| ered to their respective abstract database. | he 6LBR using an EDAR/EDAC flow. | |||
| </li> | ||||
| <li pn="section-6.2-5.3"> | ||||
| Due to the first-come, first-served nature of the registration, if the | ||||
| address is not registered to the 6LBR, then flow succeeds and both the 6LR and | ||||
| 6LBR add the state information about the Crypto-ID and Target Address being regi | ||||
| stered to their respective abstract databases. | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | ||||
| </section> | <section anchor="mhopo" numbered="true" removeInRFC="false" toc="include" | |||
| pn="section-6.3"> | ||||
| <section anchor='mhopo'><name>Multihop Operation</name> | <name slugifiedName="name-multi-hop-operation">Multi-Hop Operation</name | |||
| <t> | > | |||
| A new 6LN that joins the network auto-configures an address and performs an | <t indent="0" pn="section-6.3-1"> | |||
| initial registration to a neighboring 6LR with an NS message that carries an Ad | A new 6LN that joins the network autoconfigures an address and performs an | |||
| dress Registration Option (EARO) <xref target='RFC8505'/>. | initial registration to a neighboring 6LR with an NS message that carries an EAR | |||
| </t> | O <xref target="RFC8505" format="default" sectionFormat="of" derivedContent="RFC | |||
| <t> | 8505"/>. | |||
| In a multihop 6LoWPAN, the registration with Crypto-ID is propagated to 6LB | </t> | |||
| R as shown in <xref target='figReg'/>, which illustrates the | <t indent="0" pn="section-6.3-2"> | |||
| registration flow all the way to a 6LowPAN Backbone Router (6BBR) | In a multi-hop 6LoWPAN, the registration with Crypto-ID is propagated to 6L | |||
| <xref target='I-D.ietf-6lo-backbone-router'/>. | BR as shown in <xref target="figReg" format="default" sectionFormat="of" derived | |||
| </t> | Content="Figure 7"/>, which illustrates the | |||
| registration flow all the way to a 6LoWPAN Backbone Router (6BBR) | ||||
| <figure anchor='figReg' suppress-title='false'><name>(Re-)Registration Fl | <xref target="RFC8929" format="default" sectionFormat="of" derivedContent="R | |||
| ow</name> | FC8929"/>. | |||
| <artwork><![CDATA[ | </t> | |||
| <figure anchor="figReg" suppress-title="false" align="left" pn="figure-7 | ||||
| "> | ||||
| <name slugifiedName="name-re-registration-flow">(Re-)Registration Flow | ||||
| </name> | ||||
| <artwork align="left" pn="section-6.3-3.1"> | ||||
| 6LN 6LR 6LBR 6BBR | 6LN 6LR 6LBR 6BBR | |||
| | | | | | | | | | | |||
| | NS(EARO) | | | | | NS(EARO) | | | | |||
| |--------------->| | | | |--------------->| | | | |||
| | | Extended DAR | | | | | Extended DAR | | | |||
| | |-------------->| | | | |-------------->| | | |||
| | | | proxy NS(EARO) | | | | | proxy NS(EARO) | | |||
| | | |--------------->| | | | |--------------->| | |||
| | | | | NS(DAD) | | | | | NS(DAD) | |||
| | | | | ------> | | | | | ------> | |||
| | | | | | | | | | | |||
| | | | | <wait> | | | | | <wait> | |||
| | | | | | | | | | | |||
| | | | proxy NA(EARO) | | | | | proxy NA(EARO) | | |||
| | | |<---------------| | | | |<---------------| | |||
| | | Extended DAC | | | | | Extended DAC | | | |||
| | |<--------------| | | | |<--------------| | | |||
| | NA(EARO) | | | | | NA(EARO) | | | | |||
| |<---------------| | | | |<---------------| | | | |||
| | | | | | | | | | | |||
| ]]></artwork> | </artwork> | |||
| </figure> | </figure> | |||
| <t indent="0" pn="section-6.3-4"> | ||||
| <t> | The 6LR and the 6LBR communicate using ICMPv6 EDAR and EDAC messages <xref | |||
| The 6LR and the 6LBR communicate using ICMPv6 Extended Duplicate Address Re | target="RFC8505" format="default" sectionFormat="of" derivedContent="RFC8505"/> | |||
| quest (EDAR) and Extended Duplicate Address Confirmation (EDAC) messages <xref t | as shown in <xref target="figReg" format="default" sectionFormat="of" derivedCon | |||
| arget='RFC8505'/> as shown in <xref target='figReg'/>. | tent="Figure 7"/>. | |||
| This specification extends EDAR/EDAC messages to carry cryptographically ge nerated ROVR. | This specification extends EDAR/EDAC messages to carry cryptographically ge nerated ROVR. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-6.3-5"> | |||
| The assumption is that the 6LR and the 6LBR maintain a security association | The assumption is that the 6LR and the 6LBR maintain a security association | |||
| to authenticate and protect the integrity of the EDAR and EDAC messages, so the | to authenticate and protect the integrity of the EDAR and EDAC messages, so the | |||
| re is no need to propagate the proof of ownership to the 6LBR. The 6LBR implicit | re is no need to propagate the proof of ownership to the 6LBR. The 6LBR implicit | |||
| ly trusts that the 6LR performs the verification when the 6LBR requires it, and | ly trusts that the 6LR performs the verification when the 6LBR requires it, and | |||
| if there is no further exchange from the 6LR to remove the state, that the verif | if there is no further exchange from the 6LR to remove the state, the verificati | |||
| ication succeeded. | on succeeded. | |||
| </t> | </t> | |||
| </section> | ||||
| </section> | </section> | |||
| <section numbered="true" removeInRFC="false" toc="include" pn="section-7"> | ||||
| </section> | <name slugifiedName="name-security-considerations">Security Considerations | |||
| </name> | ||||
| <section><name>Security Considerations</name> | <section numbered="true" removeInRFC="false" toc="include" pn="section-7.1 | |||
| "> | ||||
| <section><name>Brown Field</name> | <name slugifiedName="name-brown-field">Brown Field</name> | |||
| <t> | <t indent="0" pn="section-7.1-1"> | |||
| Only 6LRs that are upgraded to this specification are capable to challenge a | Only 6LRs that are upgraded to this specification are capable of challenging | |||
| registration and repel an attack. | a registration and avoiding an attack. In a brown (mixed) network, an attacker | |||
| In a brown (mixed) network, an attacker may attach to a legacy | may attach to a legacy 6LR and fool the 6LBR. So even if the "A" flag could be s | |||
| 6LR and fool the 6LBR. | et at any time to | |||
| So even if the "A" flag could be set at any time to | ||||
| test the protocol operation, the security will only be effective when all th e 6LRs are upgraded. | test the protocol operation, the security will only be effective when all th e 6LRs are upgraded. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section numbered="true" removeInRFC="false" toc="include" pn="section-7.2 | ||||
| <section><name>Inheriting from RFC 3971</name> | "> | |||
| <t> | <name slugifiedName="name-threats-identified-in-rfc-3">Threats Identifie | |||
| Observations regarding the following threats to the local network in < | d in RFC 3971</name> | |||
| xref target='RFC3971'/> also apply to this specification. | <t indent="0" pn="section-7.2-1"> | |||
| </t> | Observations regarding the following threats to the local network in < | |||
| <dl spacing='normal'> | xref target="RFC3971" format="default" sectionFormat="of" derivedContent="RFC397 | |||
| <dt>Neighbor Solicitation/Advertisement Spoofing:</dt><dd> | 1"/> also apply to this specification. | |||
| Threats in section 9.2.1 of RFC3971 apply. AP-ND counter | </t> | |||
| s the threats on NS(EARO) messages by requiring that the NDP Signature and CIPO | <dl spacing="normal" indent="3" newline="false" pn="section-7.2-2"> | |||
| options be present in these solicitations.</dd> | <dt pn="section-7.2-2.1">Neighbor Solicitation/Advertisement Spoofing: | |||
| <!--<t hangText="Neighbor Unreachability Detection Failure"> | </dt> | |||
| <vspace blankLines="1"/> | <dd pn="section-7.2-2.2"> | |||
| With RFC6775, a Neighbor Unreadability Detection (NUD) ca | Threats in <xref target="RFC3971" sectionFormat="of" sect | |||
| n still be used by the endpoint to assess the liveness of a device. The NUD requ | ion="9.2.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc3971#sec | |||
| est may be protected by SEND in which case the provision in section 9.2 of RFC 3 | tion-9.2.1" derivedContent="RFC3971"/> apply. AP-ND counters the threats on NS(E | |||
| 972 applies. The response to the NUD may be proxied by a backbone router only if | ARO) messages by requiring that the NDPSO and CIPO be present in these solicitat | |||
| it has a fresh registration state for it. For a registration being protected by | ions.</dd> | |||
| this specification, the proxied NUD response provides truthful information on t | <dt pn="section-7.2-2.3">Duplicate Address Detection DoS Attack:</dt> | |||
| he original owner of the address but it cannot be proven using SEND. If the NUD | <dd pn="section-7.2-2.4"> | |||
| response is not proxied, the 6LR will pass the lookup to the end device which wi | Inside the LLN, duplicate addresses are sorted out using t | |||
| ll respond with a traditional NA. If the 6LR does not have a registration associ | he ROVR. A different ROVR for the same Registered Address entails a rejection of | |||
| ated for the device, it can issue a NA with EARO (status=Validation Requested) u | the second registration <xref target="RFC8505" format="default" sectionFormat=" | |||
| pon the NA from the device, which will trigger a NS that will recreate and reval | of" derivedContent="RFC8505"/>. DADs coming from the backbone network are not fo | |||
| idate the ND registration. | rwarded over the LLN to provide some protection against DoS attacks inside the r | |||
| </t>--> | esource-constrained part of the network. However, the EARO is present in the NS/ | |||
| <dt>Duplicate Address Detection DoS Attack:</dt><dd> | NA messages exchanged over the backbone network. This protects against misinterp | |||
| Inside the LLN, Duplicate Addresses are sorted out using t | reting node movement as a duplication and enables the Backbone Routers to determ | |||
| he ROVR, which differentiates it from a movement. A different ROVR for the same | ine which subnet has the most recent registration <xref target="RFC8505" format= | |||
| Registered address entails a rejection of the second registration <xref target=' | "default" sectionFormat="of" derivedContent="RFC8505"/> and is thus the best can | |||
| RFC8505'/>. | didate to validate the registration <xref target="RFC8929" format="default" sect | |||
| DAD coming from the backbone are not forwarded over the LL | ionFormat="of" derivedContent="RFC8929"/>. | |||
| N, which provides some protection against DoS attacks inside the resource-constr | ||||
| ained part of the network. Over the backbone, the EARO option is present in NS/N | ||||
| A messages. This protects against misinterpreting a movement for a duplication, | ||||
| and enables the backbone routers to determine which one has the freshest registr | ||||
| ation <xref target='RFC8505'/> and is thus the best candidate to validate the re | ||||
| gistration for the device attached to it <xref target='I-D.ietf-6lo-backbone-rou | ||||
| ter'/>. But this specification does not guarantee that the backbone router claim | ||||
| ing an address over the backbone is not an attacker. | ||||
| </dd> | </dd> | |||
| <dt>Router Solicitation and Advertisement Attacks:</dt><dd> | <dt pn="section-7.2-2.5">Router Solicitation and Advertisement Attacks | |||
| This specification does not change the protection of RS a | :</dt> | |||
| nd RA which can still be protected by SEND.</dd> | <dd pn="section-7.2-2.6"> | |||
| <dt>Replay Attacks</dt><dd> | This specification does not change the protection of RS a | |||
| A nonce should never repeat for a single key, but nonces | nd RA, which can still be protected by SEND.</dd> | |||
| do not need to be unpredictable for secure operation. Using nonces (NonceLR and | <dt pn="section-7.2-2.7">Replay Attacks:</dt> | |||
| NonceLN) generated by both the 6LR and 6LN ensure a contributory behavior that p | <dd pn="section-7.2-2.8"> | |||
| rovides an efficient protection against replay attacks of the challenge/response | Nonces should never repeat but they do not need to be unp | |||
| flow. The quality of the protection by a random nonce depends on the random num | redictable for secure operation. Using nonces (NonceLR and NonceLN) generated by | |||
| ber generator and its parameters (e.g., sense of time). | both the 6LR and 6LN ensures a contributory behavior that provides an efficient | |||
| protection against replay attacks of the challenge/response flow. The quality o | ||||
| f the protection by a random nonce depends on the random number generator. | ||||
| </dd> | </dd> | |||
| <dt>Neighbor Discovery DoS Attack:</dt><dd> | <dt pn="section-7.2-2.9">Neighbor Discovery DoS Attack:</dt> | |||
| A rogue node that managed to access the L2 network may fo | <dd pn="section-7.2-2.10"> | |||
| rm many addresses and register them using AP-ND. The perimeter of the attack is | A rogue node that can access the L2 network may form many | |||
| all the 6LRs in range of the attacker. The 6LR MUST protect itself against overf | addresses and register them using AP-ND. The perimeter of the attack is all the | |||
| lows and reject excessive registration with a status 2 "Neighbor Cache Full". Th | 6LRs in range of the attacker. The 6LR <bcp14>MUST</bcp14> protect itself again | |||
| is effectively blocks another (honest) 6LN from registering to the same 6LR, but | st overflows and reject excessive registration with a status code of 2 "Neighbor | |||
| the 6LN may register to other 6LRs that are in its range but not in that of the | Cache Full". This effectively blocks another (honest) 6LN from registering to t | |||
| rogue. | he same 6LR, but the 6LN may register to other 6LRs that are in its range but no | |||
| t in that of the attacker. | ||||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| </section> | </section> | |||
| <section numbered="true" removeInRFC="false" toc="include" pn="section-7.3 | ||||
| "> | ||||
| <name slugifiedName="name-related-to-6lowpan-nd">Related to 6LoWPAN ND</ | ||||
| name> | ||||
| <t indent="0" pn="section-7.3-1"> | ||||
| The threats and mitigations discussed in 6LoWPAN ND | ||||
| <xref target="RFC6775" format="default" sectionFormat="of" derive | ||||
| dContent="RFC6775"/> <xref target="RFC8505" format="default" sectionFormat="of" | ||||
| derivedContent="RFC8505"/> also | ||||
| apply here, in particular, denial-of-service (DoS) attacks agains | ||||
| t the registry at the 6LR or 6LBR. | ||||
| <section><name>Related to 6LoWPAN ND</name> | </t> | |||
| <t> | <t indent="0" pn="section-7.3-2"> | |||
| The threats and mediations discussed in 6LoWPAN ND <xref target=' | Secure ND <xref target="RFC3971" format="default" sectionFormat="of" | |||
| RFC6775'/><xref target='RFC8505'/> also apply here, in particular denial-of-serv | derivedContent="RFC3971"/> forces the IPv6 address to be cryptographic since it | |||
| ice attacks against the registry at the 6LR or 6LBR. | integrates the CGA as the IID in the IPv6 address. In contrast, this specificat | |||
| ion saves about 1 KB 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. | ||||
| </t> | ||||
| <t indent="0" pn="section-7.3-3"> | ||||
| With this specification, the 6LN can freely form its IPv6 address(es | ||||
| ) in any fashion, thereby enabling either 6LoWPAN compression for IPv6 addresses | ||||
| that are derived from L2 addresses or temporary addresses that cannot be compre | ||||
| ssed, e.g., formed pseudorandomly and released in relatively short cycles for pr | ||||
| ivacy reasons <xref target="RFC8064" format="default" sectionFormat="of" derived | ||||
| Content="RFC8064"/><xref target="RFC8065" format="default" sectionFormat="of" de | ||||
| rivedContent="RFC8065"/>. | ||||
| </t> | ||||
| <t indent="0" pn="section-7.3-4"> | ||||
| This specification provides added protection for addresses that are | ||||
| obtained following due procedure <xref target="RFC8505" format="default" section | ||||
| Format="of" derivedContent="RFC8505"/> but does not constrain the way the addres | ||||
| ses are formed or the number of addresses that are used in parallel by a same en | ||||
| tity. An attacker may still perform a DoS attack against the registry at the 6LR | ||||
| or 6LBR or attempt to deplete the pool of available addresses at L2 or L3. | ||||
| </t><t> | </t> | |||
| Secure ND <xref target='RFC3971'/> forces the IPv6 address to be cry | </section> | |||
| ptographic since it integrates the CGA as the IID in the IPv6 address. In contra | <section numbered="true" removeInRFC="false" toc="include" pn="section-7.4 | |||
| st, this specification saves about 1Kbyte in every NS/NA message. Also, this spe | "> | |||
| cification separates the cryptographic identifier from the registered IPv6 addre | <name slugifiedName="name-compromised-6lr">Compromised 6LR</name> | |||
| ss so that a node can have more than one IPv6 address protected by the same cryp | <t indent="0" pn="section-7.4-1"> | |||
| tographic identifier. | This specification distributes the challenge and its validation at the e | |||
| </t><t> | dge of the network, between the 6LN and its 6LR. This protects against DoS attac | |||
| With this specification the 6LN can freely form its IPv6 address(es) | ks targeted at that central 6LBR. This also saves back-and-forth exchanges acros | |||
| in any fashion, thereby enabling either 6LoWPAN compression for IPv6 addresses | s a potentially large and constrained network. | |||
| that are derived from Layer-2 addresses, or temporary addresses, e.g., formed ps | </t> | |||
| eudo-randomly and released in relatively short cycles for privacy reasons <xref | <t indent="0" pn="section-7.4-2"> | |||
| target='RFC8064'/><xref target='RFC8065'/>, that cannot be compressed. | The downside is that the 6LBR needs to trust the 6LR to perform the chec | |||
| </t><t> | king adequately, and the communication between the 6LR and the 6LBR must be prot | |||
| This specification provides added protection for addresses that are | ected to avoid tampering with the result of the validation. | |||
| obtained following due procedure <xref target='RFC8505'/> but does not constrai | ||||
| n the way the addresses are formed or the number of addresses that are used in p | ||||
| arallel by a same entity. A rogue may still perform denial-of-service attack aga | ||||
| inst the registry at the 6LR or 6LBR, or attempt to deplete the pool of availabl | ||||
| e addresses at Layer-2 or Layer-3. | ||||
| </t> | </t> | |||
| </section> | <t indent="0" pn="section-7.4-3"> | |||
| <section><name>Compromised 6LR</name> | If a 6LR is compromised, and provided that it knows the ROVR field used b | |||
| <t> | y the real owner of the address, the 6LR may pretend that the owner has moved, i | |||
| This specification distributes the challenge and its validation at the e | s now attached to it, and has successfully passed the Crypto-ID validation. The | |||
| dge of the network, between the 6LN and its 6LR. This protects against DOS attac | 6LR may then attract and inject traffic at will on behalf of that address, or le | |||
| ks targeted at that central 6LBR. This also saves back and forth exchanges acros | t an attacker take ownership of the address. | |||
| s a potentially large and constrained network. | </t> | |||
| </t><t> | </section> | |||
| The downside is that the 6LBR needs to trust the 6LR for performing the | <section anchor="sec-col" numbered="true" removeInRFC="false" toc="include | |||
| checking adequately, and the communication between the 6LR and the 6LBR must be | " pn="section-7.5"> | |||
| protected to avoid tampering with the result of the test. | <name slugifiedName="name-rovr-collisions">ROVR Collisions</name> | |||
| <t indent="0" pn="section-7.5-1"> | ||||
| </t><t> | A collision of ROVRs (i.e., the Crypto-ID in this specification) is possi | |||
| If a 6LR is compromised, and provided that it knows the ROVR field used b | ble, but it is a rare event. Assuming that the hash used for calculating the Cry | |||
| y the real owner of the address, the 6LR may pretend that the owner has moved, i | pto-ID is a well-behaved cryptographic hash, and, thus, random collisions are th | |||
| s now attached to it and has successfully passed the Crpto-ID validation. The 6L | e only ones possible, if n = 2<sup>k</sup> is the maximum number of hash values | |||
| R may then attract and inject traffic at will on behalf of that address or let a | (i.e., a k-bit hash) and p is the number of nodes, then (assuming one Crypto-ID | |||
| rogue take ownership of the address. | per node) the formula 1 - e<sup>-p<sup>2</sup>/(2n)</sup> provides an approximat | |||
| </t> | ion of the probability that there is at least one collision (birthday paradox). | |||
| </section> | </t> | |||
| <section anchor='sec-col'><name>ROVR Collisions</name> | <t indent="0" pn="section-7.5-2"> | |||
| <t> | If the Crypto-ID is 64 bits (the least possible size allowed), the chanc | |||
| A collision of Registration Ownership Verifiers (ROVR) (i.e., the Crypto- | e of a collision is 0.01% for a network of 66 million nodes. Moreover, the colli | |||
| ID in this specification) is possible, but it is a rare event. | sion is only relevant when this happens within one stub network (6LBR). In the c | |||
| Assuming in the calculations/discussion below that the hash used for cal | ase of such a collision, an honest node might accidentally claim the Registered | |||
| culating the Crypto-ID is a well-behaved cryptographic hash and thus | Address of another legitimate node (with the same Crypto-ID). To prevent such ra | |||
| that random collisions are the only ones possible, the formula (birthday | re events, it is <bcp14>RECOMMENDED</bcp14> that nodes do not derive the address | |||
| paradox) for calculating the probability of a collision is 1 - e^{-p^2/(2n)} wh | being registered from the ROVR. | |||
| ere n is the maximum population size (2^64 here, 1.84E19) and p is the actual po | </t> | |||
| pulation (number of nodes, assuming one Crypto-ID per node). | </section> | |||
| </t><t> | <section numbered="true" removeInRFC="false" toc="include" pn="section-7.6 | |||
| If the Crypto-ID is 64-bits (the least possible size allowed), the chanc | "> | |||
| e of a collision is 0.01% for network of 66 million nodes. Moreover, the collisi | <name slugifiedName="name-implementation-attacks">Implementation Attacks | |||
| on is only relevant when this happens within one stub network (6LBR). In the cas | </name> | |||
| e of such a collision, a third party node would be able to claim the registered | <t indent="0" pn="section-7.6-1"> The signature schemes referenced in th | |||
| address of an another legitimate node, provided that it wishes to use the same a | is specification comply with NIST <xref target="FIPS186-4" format="default" sect | |||
| ddress. | ionFormat="of" derivedContent="FIPS186-4"/> or Crypto Forum Research Group (CFRG | |||
| To prevent address disclosure and avoid the chances of collision on both | ) standards <xref target="RFC8032" format="default" sectionFormat="of" derivedCo | |||
| the ROVR and the address, it is RECOMMENDED that nodes do not derive the addres | ntent="RFC8032"/> and offer strong algorithmic security at roughly a 128-bit sec | |||
| s being registered from the ROVR. | urity level. These signature schemes use elliptic curves that either were specif | |||
| </t> | ically designed with exception-free and constant-time arithmetic in mind <xref t | |||
| </section> | arget="RFC7748" format="default" sectionFormat="of" derivedContent="RFC7748"/> o | |||
| <section><name>Implementation Attacks</name> | r have extensive implementation experience of resistance | |||
| <t> The signature schemes referenced in this specification comply with NI | to timing attacks <xref target="FIPS186-4" format="default" secti | |||
| ST <xref target='FIPS186-4'/> or Crypto Forum Research Group (CFRG) standards | onFormat="of" derivedContent="FIPS186-4"/>. | |||
| <xref target='RFC8032'/> and offer strong algorithmic security at | ||||
| roughly 128-bit security level. These signature schemes use elliptic curves tha | ||||
| t were either | ||||
| specifically designed with exception-free and constant-time arith | ||||
| metic in mind <xref target='RFC7748'/> or where one has extensive implementation | ||||
| experience of resistance | ||||
| to timing attacks <xref target='FIPS186-4'/>. | ||||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-7.6-2"> | |||
| However, careless implementations of the signing operations could nevert heless leak information on private keys. For example, | However, careless implementations of the signing operations could nevert heless leak information on private keys. For example, | |||
| there are micro-architectural side channel attacks that implement ors should be aware of <xref target='breaking-ed25519'/>. | there are micro-architectural side channel attacks that implement ors should be aware of <xref target="breaking-ed25519" format="default" sectionF ormat="of" derivedContent="breaking-ed25519"/>. | |||
| Implementors should be particularly aware that | Implementors should be particularly aware that | |||
| a secure implementation of Ed25519 requires a protected implement ation of the hash function SHA-512, whereas this is not required with implementa tions of the hash function | a secure implementation of Ed25519 requires a protected implement ation of the hash function SHA-512, whereas this is not required with implementa tions of the hash function | |||
| SHA-256 used with ECDSA256 and ECDSA25519. | SHA-256 used with ECDSA256 and ECDSA25519. | |||
| </t> | ||||
| </section> | ||||
| <section><name>Cross-Algorithm and Cross-Protocol Attacks</name> | ||||
| <t> | ||||
| The keypair used in this specification can be self-generated and the pub | ||||
| lic key does not need to be exchanged, e.g., through certificates, with a third | ||||
| party before it is used. | ||||
| </t> | </t> | |||
| <t> | </section> | |||
| New keypairs can be formed for new registration as the node desires. | <section numbered="true" removeInRFC="false" toc="include" pn="section-7.7 | |||
| On the other hand, it is safer to allocate a keypair that is used only f | "> | |||
| or the address protection and only for one instantiation of the signature scheme | <name slugifiedName="name-cross-algorithm-and-cross-p">Cross-Algorithm a | |||
| (which includes | nd Cross-Protocol Attacks</name> | |||
| choice of elliptic curve domain parameters, used hash function, a | <t indent="0" pn="section-7.7-1"> | |||
| nd applicable representation conventions). | The key pair used in this specification can be self-generated, and the p | |||
| ublic key does not need to be exchanged, e.g., through certificates, with a thir | ||||
| d party before it is used. | ||||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-7.7-2"> | |||
| The same private key MUST NOT be reused with more than one instantiation | New key pairs can be formed for new registrations if the node desires. H | |||
| of the signature scheme in this specification. The same private key MUST NOT be | owever, the same private key <bcp14>MUST NOT</bcp14> be reused with more than on | |||
| used for anything other than computing NDPSO signatures per this specification. | e instantiation of the signature scheme in this specification. Also, the same pr | |||
| </t> | ivate key <bcp14>MUST NOT</bcp14> be used for anything other than computing NDPS | |||
| O signatures per this specification. | ||||
| <t> ECDSA shall be used strictly as specified in <xref target="FI | </t> | |||
| PS186-4"></xref>. In particular, each signing operation of ECDSA MUST use random | <t indent="0" pn="section-7.7-3"> ECDSA shall be used strictly as specif | |||
| ly generated | ied in <xref target="FIPS186-4" format="default" sectionFormat="of" derivedConte | |||
| ephemeral private keys and MUST NOT reuse these ephemeral private | nt="FIPS186-4"/>. In particular, each signing operation of ECDSA <bcp14>MUST</bc | |||
| keys k accross signing operations. This precludes the use of deterministic ECDS | p14> use randomly generated ephemeral private keys and <bcp14>MUST NOT</bcp14> r | |||
| A without a random input | euse the ephemeral private key k across signing operations. This precludes the u | |||
| for determination of k, which is deemed dangerous for the intende | se of deterministic ECDSA without a random input for the determination of k, whi | |||
| d applications this document aims to serve.</t> | ch is deemed dangerous for the intended applications this document aims to serve | |||
| </section> | .</t> | |||
| </section> | ||||
| <section><name>Public Key Validation</name> | <section numbered="true" removeInRFC="false" toc="include" pn="section-7.8 | |||
| <t>Public keys contained in the CIPO field (which are used for signature | "> | |||
| verification) shall be verified to be correctly formed, by checking that this pu | <name slugifiedName="name-public-key-validation">Public Key Validation</ | |||
| blic key is indeed a | name> | |||
| <t indent="0" pn="section-7.8-1">Public keys contained in the CIPO field | ||||
| (which are used for signature verification) shall be verified to be correctly f | ||||
| ormed, by checking that this public key is indeed a | ||||
| point of the elliptic curve indicated by the Crypto-Type and that this po int does have the proper order. | point of the elliptic curve indicated by the Crypto-Type and that this po int does have the proper order. | |||
| </t> | ||||
| <t> | ||||
| For points used with the signature scheme Ed25519, one MUST check | ||||
| that this point is not a point in the small subgroup (see Appendix B.1 of | ||||
| <xref target='I-D.ietf-lwig-curve-representations'/>); for points used with the | ||||
| signature scheme | ||||
| ECDSA (i.e., both ECDSA256 and ECDSA25519), one MUST check that the point | ||||
| has the same order as the base point of the curve in question. This is commonly | ||||
| called | ||||
| full public key validation (again, see Appendix B.1 of <xref target='I-D. | ||||
| ietf-lwig-curve-representations'/>). </t> | ||||
| </section> | ||||
| <section><name>Correlating Registrations</name> | ||||
| <t> | ||||
| The ROVR field in the EARO introduced in <xref target='RFC8505'/> exte | ||||
| nds the EUI-64 field of the ARO defined in <xref target='RFC6775'/>. One of the | ||||
| drawbacks of using an EUI-64 as ROVR is that an attacker that is aware of the re | ||||
| gistrations can correlate traffic for a same 6LN across multiple addresses. Sect | ||||
| ion 3 of <xref target='RFC8505'/> indicates that the ROVR and the address being | ||||
| registered are decoupled. A 6LN may use a same ROVR for multiple registrations o | ||||
| r a different ROVR per registration, and the IID must not derive from the ROVR. | ||||
| In theory different 6LNs could use a same ROVR as long as they do not attempt to | ||||
| register the same address. | ||||
| </t> | ||||
| <t> | ||||
| The Modifier used in the computation of the Crypto-ID enables a 6LN to | ||||
| build different Crypto-IDs for different addresses with a same keypair. Using t | ||||
| hat facility improves the privacy of the 6LN as the expense of storage in the 6L | ||||
| R, which will need to store multiple CIPOs that contain the same public key. Not | ||||
| e that if the attacker is the 6LR, then the Modifier alone does not provide a pr | ||||
| otection, and the 6LN would need to use different keys and MAC addresses in an a | ||||
| ttempt to obfuscate its multiple ownership. | ||||
| </t> | </t> | |||
| <t indent="0" pn="section-7.8-2"> | ||||
| For points used with the signature scheme Ed25519, one <bcp14>MUST</bcp1 | ||||
| 4> check | ||||
| that this point is not in the small subgroup (see <xref target="I-D.ietf- | ||||
| lwig-curve-representations" sectionFormat="of" section="B.1" format="default" de | ||||
| rivedLink="https://tools.ietf.org/html/draft-ietf-lwig-curve-representations-14# | ||||
| appendix-B.1" derivedContent="CURVE-REPR"/>); for points used with the signature | ||||
| scheme | ||||
| ECDSA (i.e., both ECDSA256 and ECDSA25519), one <bcp14>MUST</bcp14> check | ||||
| that the point has the same order as the base point of the curve in question. T | ||||
| his is commonly called | ||||
| "full public key validation" (again, see <xref target="I-D.ietf-lwig-curv | ||||
| e-representations" sectionFormat="of" section="B.1" format="default" derivedLink | ||||
| ="https://tools.ietf.org/html/draft-ietf-lwig-curve-representations-14#appendix- | ||||
| B.1" derivedContent="CURVE-REPR"/>). </t> | ||||
| </section> | ||||
| <section numbered="true" removeInRFC="false" toc="include" pn="section-7.9 | ||||
| "> | ||||
| <name slugifiedName="name-correlating-registrations">Correlating Registr | ||||
| ations</name> | ||||
| <t indent="0" pn="section-7.9-1"> | ||||
| The ROVR field in the EARO introduced in <xref target="RFC8505" format | ||||
| ="default" sectionFormat="of" derivedContent="RFC8505"/> extends the EUI-64 fiel | ||||
| d of the ARO defined in <xref target="RFC6775" format="default" sectionFormat="o | ||||
| f" derivedContent="RFC6775"/>. One of the drawbacks of using an EUI-64 as ROVR i | ||||
| s that an attacker that is aware of the registrations can correlate traffic for | ||||
| the same 6LN across multiple addresses. <xref target="RFC8505" sectionFormat="of | ||||
| " section="3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8505#s | ||||
| ection-3" derivedContent="RFC8505"/> indicates that the ROVR and the address bei | ||||
| ng registered are decoupled. A 6LN may use the same ROVR for multiple registrati | ||||
| ons or a different ROVR per registration, and the IID must not be derived from t | ||||
| he ROVR. In theory, different 6LNs could use the same ROVR as long as they do no | ||||
| t attempt to register the same address. | ||||
| </t> | ||||
| <t indent="0" pn="section-7.9-2"> | ||||
| The modifier used in the computation of the Crypto-ID enables a 6LN to | ||||
| build different Crypto-IDs for different addresses with the same key pair. Usin | ||||
| g that facility improves the privacy of the 6LN at the expense of storage in the | ||||
| 6LR, which will need to store multiple CIPOs that contain the same public key. | ||||
| Note that if an attacker gains access to the 6LR, then the modifier alone does n | ||||
| ot provide protection, and the 6LN would need to generate different key pairs an | ||||
| d link-layer addresses in an attempt to obfuscate its multiple ownership. | ||||
| </t> | ||||
| </section> | ||||
| </section> | </section> | |||
| </section> | <section numbered="true" removeInRFC="false" toc="include" pn="section-8"> | |||
| <name slugifiedName="name-iana-considerations">IANA Considerations</name> | ||||
| <section><name>IANA considerations</name> | <section anchor="cgam" numbered="true" removeInRFC="false" toc="include" p | |||
| n="section-8.1"> | ||||
| <section anchor='cgam'><name>CGA Message Type</name> | <name slugifiedName="name-cga-message-type">CGA Message Type</name> | |||
| <t> | <t indent="0" pn="section-8.1-1"> | |||
| This document defines a new 128-bit value of a Message Type tag under th | ||||
| e CGA Message Type <xref target='RFC3972'/> name space: 0x8701 55c8 0cca dd32 6a | ||||
| b7 e415 f148 84d0. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor='cryptotypereg'><name>Crypto-Type Subregistry</name> | ||||
| <t> | ||||
| IANA is requested to create a new subregistry "Crypto-Type Subreg | ||||
| istry" in the "Internet Control Message Protocol version 6 (ICMPv6) Parameters". | ||||
| The registry is indexed by | ||||
| an integer in the interval 0..255 and contains an Elliptic Curve, | ||||
| a Hash Function, a Signature Algorithm, Representation Conventions, | ||||
| Public key size, and Signature size, as shown in | ||||
| <xref target='cryptotypetable'/>, which together specify a signat | ||||
| ure scheme (and which are fully specified in <xref target="reprconv"></xref>). | ||||
| </t> | ||||
| <t>The following Crypto-Type values are defined in this document: | ||||
| </t> | ||||
| <table anchor="cryptotypetable"><name>Crypto-Types</name> | ||||
| <thead> | ||||
| <tr> | ||||
| <th>Crypto-Type value</th> | ||||
| <th align='center'> 0 (ECDSA256) </th> | ||||
| <th align='center'> 1 (Ed25519) </th> | ||||
| <th align='center'> 2 (ECDSA25519) </th> | ||||
| </tr> | ||||
| </thead><tbody> | ||||
| <tr><td>Elliptic curve</td> | This document defines a new 128-bit CGA Extension Type Tag under the "CG | |||
| <td align='center'> NIST P-256 <xref target='FIPS186-4'/> | A Extension Type Tags" subregistry of the | |||
| </td> | Cryptographically Generated Addresses (CGA) Message Type Name Space created by < | |||
| <td align='center'> Curve25519 <xref target='RFC7748'/></ | xref target="RFC3972" format="default" sectionFormat="of" derivedContent="RFC397 | |||
| td> | 2"/>. </t> | |||
| <td align='center'> Curve25519 <xref target='RFC7748'/></ | <t indent="0" pn="section-8.1-2"> | |||
| td> | Tag: 0x8701 55c8 0cca dd32 6ab7 e415 f148 84d0. | |||
| </t> | ||||
| </section> | ||||
| <section anchor="cryptotypereg" numbered="true" removeInRFC="false" toc="i | ||||
| nclude" pn="section-8.2"> | ||||
| <name slugifiedName="name-crypto-type-subregistry">Crypto-Type Subregist | ||||
| ry</name> | ||||
| <t indent="0" pn="section-8.2-1"> | ||||
| IANA has created the "Crypto-Types" subregistry in the "Internet | ||||
| Control Message Protocol version 6 (ICMPv6) Parameters" registry. The registry | ||||
| is indexed by | ||||
| an integer in the interval 0..255 and contains an elliptic curve, | ||||
| a hash function, a signature algorithm, representation conventions, | ||||
| public key size, and signature size, as shown in | ||||
| <xref target="cryptotypetable" format="default" sectionFormat="of | ||||
| " derivedContent="Table 1"/>, which together specify a signature scheme. Detaile | ||||
| d explanations are provided in <xref target="reprconv" format="default" sectionF | ||||
| ormat="of" derivedContent="Appendix B"/>. | ||||
| </t> | ||||
| <t indent="0" pn="section-8.2-2">The following Crypto-Type values are de | ||||
| fined in this document: | ||||
| </t> | ||||
| <table anchor="cryptotypetable" align="center" pn="table-1"> | ||||
| <name slugifiedName="name-crypto-types">Crypto-Types</name> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left" colspan="1" rowspan="1">Crypto-Type Value</th> | ||||
| <th align="center" colspan="1" rowspan="1"> 0 (ECDSA256) </th> | ||||
| <th align="center" colspan="1" rowspan="1"> 1 (Ed25519) </th> | ||||
| <th align="center" colspan="1" rowspan="1"> 2 (ECDSA25519) </th> | ||||
| </tr> | </tr> | |||
| <tr><td>Hash function</td> | </thead> | |||
| <td align='center'> SHA-256 <xref target='RFC6234'/></td> | <tbody> | |||
| <td align='center'> SHA-512 <xref target='RFC6234 | <tr> | |||
| '/></td> | <td align="left" colspan="1" rowspan="1">Elliptic Curve</td> | |||
| <td align='center'> SHA-256 <xref target='RFC6234'/>< | <td align="center" colspan="1" rowspan="1"> NIST P-256 <xref targe | |||
| /td> | t="FIPS186-4" format="default" sectionFormat="of" derivedContent="FIPS186-4"/></ | |||
| td> | ||||
| <td align="center" colspan="1" rowspan="1"> Curve25519 <xref targe | ||||
| t="RFC7748" format="default" sectionFormat="of" derivedContent="RFC7748"/></td> | ||||
| <td align="center" colspan="1" rowspan="1"> Curve25519 <xref targe | ||||
| t="RFC7748" format="default" sectionFormat="of" derivedContent="RFC7748"/></td> | ||||
| </tr> | </tr> | |||
| <tr><td>Signature algorithm</td> | <tr> | |||
| <td align='center'> ECDSA <xref target='FIPS186-4 | <td align="left" colspan="1" rowspan="1">Hash Function</td> | |||
| '/></td> | <td align="center" colspan="1" rowspan="1"> SHA-256 <xref target=" | |||
| <td align='center'> Ed25519 <xref target='RFC8032'/>< | RFC6234" format="default" sectionFormat="of" derivedContent="RFC6234"/></td> | |||
| /td> | <td align="center" colspan="1" rowspan="1"> SHA-512 <xref target=" | |||
| <td align='center'> ECDSA <xref target='FIPS186-4 | RFC6234" format="default" sectionFormat="of" derivedContent="RFC6234"/></td> | |||
| '/></td> | <td align="center" colspan="1" rowspan="1"> SHA-256 <xref target=" | |||
| RFC6234" format="default" sectionFormat="of" derivedContent="RFC6234"/></td> | ||||
| </tr> | </tr> | |||
| <tr><td>Representation conventions</td> | <tr> | |||
| <td align='center'> Weierstrass, (un)compressed, | <td align="left" colspan="1" rowspan="1">Signature Algorithm</td> | |||
| MSB/msb first, <xref target='RFC7518'/> </td> | <td align="center" colspan="1" rowspan="1"> ECDSA <xref target="FI | |||
| <td align='center'> Edwards, compressed, LSB/lsb firs | PS186-4" format="default" sectionFormat="of" derivedContent="FIPS186-4"/></td> | |||
| t, <xref target='RFC8037'/></td> | <td align="center" colspan="1" rowspan="1"> Ed25519 <xref target=" | |||
| <td align='center'> Weierstrass, (un)compressed, MSB/ | RFC8032" format="default" sectionFormat="of" derivedContent="RFC8032"/></td> | |||
| msb first, <xref target='I-D.ietf-lwig-curve-representations'/></td></tr> | <td align="center" colspan="1" rowspan="1"> ECDSA <xref target="FI | |||
| <tr><td>Public key size</td> | PS186-4" format="default" sectionFormat="of" derivedContent="FIPS186-4"/></td> | |||
| <td align='center'> 33/65 bytes (compressed/uncom | </tr> | |||
| pressed)</td> | <tr> | |||
| <td align='center'> 32 bytes (compressed)</td> | <td align="left" colspan="1" rowspan="1">Representation Convention | |||
| <td align='center'> 33/65 bytes (compressed/uncompres | s</td> | |||
| sed) </td></tr> | <td align="center" colspan="1" rowspan="1"> Weierstrass, (un)compr | |||
| <tr><td>Signature size</td> | essed, MSB/msb-order, <xref target="SEC1" format="default" sectionFormat="of" de | |||
| <td align='center'> 64 bytes </td> | rivedContent="SEC1"/> </td> | |||
| <td align='center'> 64 bytes </td> | <td align="center" colspan="1" rowspan="1"> Edwards, compressed, L | |||
| <td align='center'> 64 bytes </td></tr> | SB/lsb-order, <xref target="RFC8032" format="default" sectionFormat="of" derived | |||
| <tr><td>Defining specification</td> | Content="RFC8032"/></td> | |||
| <td align='center'>This_RFC</td> | <td align="center" colspan="1" rowspan="1"> Weierstrass, (un)compr | |||
| <td align='center'>This_RFC</td> | essed, MSB/msb-order, <xref target="I-D.ietf-lwig-curve-representations" format= | |||
| <td align='center'>This_RFC</td> | "default" sectionFormat="of" derivedContent="CURVE-REPR"/></td> | |||
| </tr> | </tr> | |||
| </tbody> | <tr> | |||
| </table> | <td align="left" colspan="1" rowspan="1">Public Key Size</td> | |||
| <t> | <td align="center" colspan="1" rowspan="1"> 33/65 bytes (compresse | |||
| New Crypto-Type values providing similar or better security may be de | d/uncompressed)</td> | |||
| fined in the future. | <td align="center" colspan="1" rowspan="1"> 32 bytes (compressed)< | |||
| </t> | /td> | |||
| <t> | <td align="center" colspan="1" rowspan="1"> 33/65 bytes (compresse | |||
| Assignment of new values for new Crypto-Type MUST be done through IANA with | d/uncompressed) </td> | |||
| either "Specification Required" or "IESG Approval" as defined in BCP 26 | </tr> | |||
| <xref target='RFC8126'/>. | <tr> | |||
| </t> | <td align="left" colspan="1" rowspan="1">Signature Size</td> | |||
| <td align="center" colspan="1" rowspan="1"> 64 bytes </td> | ||||
| </section> | <td align="center" colspan="1" rowspan="1"> 64 bytes </td> | |||
| <td align="center" colspan="1" rowspan="1"> 64 bytes </td> | ||||
| <section anchor='ndopt'><name>IPv6 ND option types </name> | </tr> | |||
| <t> | <tr> | |||
| <td align="left" colspan="1" rowspan="1">Reference</td> | ||||
| <td align="center" colspan="1" rowspan="1">RFC 8928</td> | ||||
| <td align="center" colspan="1" rowspan="1">RFC 8928</td> | ||||
| <td align="center" colspan="1" rowspan="1">RFC 8928</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t indent="0" pn="section-8.2-4"> | ||||
| New Crypto-Type values providing similar or better security may be define | ||||
| d in the future. | ||||
| </t> | ||||
| <t indent="0" pn="section-8.2-5"> | ||||
| Assignment of values for new Crypto-Type <bcp14>MUST</bcp14> be done through | ||||
| IANA with either "Specification Required" or "IESG Approval" as defined in <xre | ||||
| f target="RFC8126" format="default" sectionFormat="of" derivedContent="RFC8126"> | ||||
| BCP 26</xref>. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="ndopt" numbered="true" removeInRFC="false" toc="include" | ||||
| pn="section-8.3"> | ||||
| <name slugifiedName="name-ipv6-nd-option-types">IPv6 ND Option Types</na | ||||
| me> | ||||
| <t indent="0" pn="section-8.3-1"> | ||||
| This document registers two new ND option types under the subregistry "I Pv6 Neighbor Discovery Option Formats": | This document registers two new ND option types under the subregistry "I Pv6 Neighbor Discovery Option Formats": | |||
| </t> | </t> | |||
| <table anchor="nexndopt" align="center" pn="table-2"> | ||||
| <table anchor="nexndopt"><name>New ND options</name> | <name slugifiedName="name-new-nd-options">New ND Options</name> | |||
| <thead> | <thead> | |||
| <tr> | ||||
| <tr> | <th align="left" colspan="1" rowspan="1">Description</th> | |||
| <th align='center'>Option Name</th> | <th align="center" colspan="1" rowspan="1">Type</th> | |||
| <th align='center'>Suggested Value</th> | <th align="left" colspan="1" rowspan="1">Reference</th> | |||
| <th align='left'>Reference</th> | </tr> | |||
| </tr> | </thead> | |||
| <tbody> | ||||
| </thead><tbody> | <tr> | |||
| <td align="left" colspan="1" rowspan="1">Crypto-ID Parameters Opti | ||||
| <tr> | on (CIPO)</td> | |||
| <td align='center'>NDP Signature Option (NDPSO)</td> | <td align="center" colspan="1" rowspan="1">39</td> | |||
| <td align='center'>38</td> | <td align="left" colspan="1" rowspan="1">RFC 8928</td> | |||
| <td align='left'>This document</td> | </tr> | |||
| </tr> | <tr> | |||
| <td align="left" colspan="1" rowspan="1">NDP Signature Option (NDP | ||||
| <tr> | SO)</td> | |||
| <td align='center'>Crypto-ID Parameters Option (CIPO)</td> | <td align="center" colspan="1" rowspan="1">40</td> | |||
| <td align='center'>39</td> | <td align="left" colspan="1" rowspan="1">RFC 8928</td> | |||
| <td align='left'>This document</td> | </tr> | |||
| </tr> | </tbody> | |||
| </tbody> | ||||
| </table> | </table> | |||
| </section> | ||||
| </section> | <section numbered="true" removeInRFC="false" toc="include" pn="section-8.4 | |||
| "> | ||||
| <section title="New 6LoWPAN Capability Bit"> | <name slugifiedName="name-new-6lowpan-capability-bit">New 6LoWPAN Capabi | |||
| <t> | lity Bit</name> | |||
| IANA is requested to make additions to the Subregistry for | <t indent="0" pn="section-8.4-1"> | |||
| "6LoWPAN Capability Bits" created for <xref target='RFC7400'/> | IANA has made an addition to the subregistry for | |||
| "6LoWPAN Capability Bits" created for <xref target="RFC7400" format=" | ||||
| default" sectionFormat="of" derivedContent="RFC7400"/> | ||||
| as follows: | as follows: | |||
| </t> | </t> | |||
| <table anchor="CIOdat" align="center" pn="table-3"> | ||||
| <table anchor="CIOdat"><name>New 6LoWPAN Capability Bit</name> | <name slugifiedName="name-new-6lowpan-capability-bit-2">New 6LoWPAN Ca | |||
| <thead> | pability Bit</name> | |||
| <tr> | <thead> | |||
| <th align='center'>Capability Bit</th> | <tr> | |||
| <th align='left'>Description </th> | <th align="center" colspan="1" rowspan="1">Bit</th> | |||
| <th align='left'>Document</th> | <th align="left" colspan="1" rowspan="1">Description </th> | |||
| </tr> | <th align="left" colspan="1" rowspan="1">Reference</th> | |||
| </thead><tbody> | ||||
| <tr> | ||||
| <td align='center'>09</td> | ||||
| <td align='left'>AP-ND Enabled (1 bit)</td> | ||||
| <td align='left'>This_RFC</td> | ||||
| </tr> | </tr> | |||
| </thead> | ||||
| </tbody> | <tbody> | |||
| </table> | <tr> | |||
| <td align="center" colspan="1" rowspan="1">9</td> | ||||
| </section> <!-- end section "New 6LoWPAN Capability Bits" --> | <td align="left" colspan="1" rowspan="1">AP-ND Enabled (1 bit)</td | |||
| > | ||||
| </section> | <td align="left" colspan="1" rowspan="1">RFC 8928</td> | |||
| </tr> | ||||
| <section><name>Acknowledgments</name> | </tbody> | |||
| <t> | </table> | |||
| Many thanks to Charlie Perkins for his in-depth review and constructive | </section> | |||
| suggestions. The authors are also especially grateful to Robert Moskowitz | </section> | |||
| and Benjamin Kaduk for their comments and discussions that led to many impr | </middle> | |||
| ovements. | <back> | |||
| The authors wish to also thank Shwetha Bhandari for actively shepherding th | <displayreference target="I-D.ietf-lwig-curve-representations" to="CURVE-REP | |||
| is document and Roman Danyliw, Alissa Cooper, Mirja Kuhlewind, Eric Vyncke, Vija | R"/> | |||
| y Gurbani, Al Morton, and Adam Montville for their constructive reviews during t | <displayreference target="RFC7696" to="BCP201"/> | |||
| he IESG process. | <displayreference target="RFC4086" to="BCP106"/> | |||
| Finally Many thanks to our INT area ADs, Suresh Krishnan and then Erik Klin | <references pn="section-9"> | |||
| e, who | <name slugifiedName="name-references">References</name> | |||
| supported us along the whole process. | <references pn="section-9.1"> | |||
| </t> | <name slugifiedName="name-normative-references">Normative References</na | |||
| </section> | me> | |||
| <reference anchor="FIPS186-4" target="https://nvlpubs.nist.gov/nistpubs/ | ||||
| </middle> | fips/nist.fips.186-4.pdf" quoteTitle="true" derivedAnchor="FIPS186-4"> | |||
| <front> | ||||
| <back> | <title>Digital Signature Standard (DSS)</title> | |||
| <author> | ||||
| <displayreference target="I-D.ietf-6lo-backbone-router" to="BACK | <organization showOnFrontPage="true">National Institute of Standar | |||
| BONE-ROUTER"/> | ds and Technology</organization> | |||
| <displayreference target="I-D.ietf-lwig-curve-representations" to="CURV | </author> | |||
| E-REPR"/> | <date month="July" year="2013"/> | |||
| <displayreference target="RFC7696" to="BCP 201"/> | </front> | |||
| <displayreference target="RFC4086" to="BCP 106"/> | <seriesInfo name="FIPS" value="186-4"/> | |||
| <seriesInfo name="DOI" value="10.6028/NIST.FIPS.186-4"/> | ||||
| <references><name>Normative References</name> | </reference> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | |||
| nce.RFC.2119.xml'/> | 119" quoteTitle="true" derivedAnchor="RFC2119"> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | <front> | |||
| nce.RFC.3971.xml'/> | <title>Key words for use in RFCs to Indicate Requirement Levels</tit | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | le> | |||
| nce.RFC.6234.xml'/> | <author initials="S." surname="Bradner" fullname="S. Bradner"> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | <organization showOnFrontPage="true"/> | |||
| nce.RFC.6775.xml'/> | </author> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | <date year="1997" month="March"/> | |||
| nce.RFC.7400.xml'/> | <abstract> | |||
| <!--xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/ref | <t indent="0">In many standards track documents several words are | |||
| erence.RFC.7515.xml'/> | used to signify the requirements in the specification. These words are often ca | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | pitalized. This document defines these words as they should be interpreted in IE | |||
| nce.RFC.7517.xml'/--> | TF documents. This document specifies an Internet Best Current Practices for th | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | e Internet Community, and requests discussion and suggestions for improvements.< | |||
| nce.RFC.7748.xml'/> | /t> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | </abstract> | |||
| nce.RFC.8032.xml'/> | </front> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | <seriesInfo name="BCP" value="14"/> | |||
| nce.RFC.8174.xml'/> | <seriesInfo name="RFC" value="2119"/> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | <seriesInfo name="DOI" value="10.17487/RFC2119"/> | |||
| nce.RFC.8505.xml'/> | </reference> | |||
| <reference anchor="RFC3971" target="https://www.rfc-editor.org/info/rfc3 | ||||
| <reference anchor='FIPS186-4'> | 971" quoteTitle="true" derivedAnchor="RFC3971"> | |||
| <front> | <front> | |||
| <title> Digital Signature Standard (DSS), Federal Information | <title>SEcure Neighbor Discovery (SEND)</title> | |||
| Processing Standards Publication 186-4 </title> | <author initials="J." surname="Arkko" fullname="J. Arkko" role="edit | |||
| <author> | or"> | |||
| <organization> | <organization showOnFrontPage="true"/> | |||
| FIPS 186-4 | </author> | |||
| </organization> | <author initials="J." surname="Kempf" fullname="J. Kempf"> | |||
| </author> | <organization showOnFrontPage="true"/> | |||
| <date month='July' year='2013'/> | </author> | |||
| </front> | <author initials="B." surname="Zill" fullname="B. Zill"> | |||
| <seriesInfo name='US Department of Commerce/National Institute of Standa | <organization showOnFrontPage="true"/> | |||
| rds and Technology' value=''/> | </author> | |||
| </reference> | <author initials="P." surname="Nikander" fullname="P. Nikander"> | |||
| <organization showOnFrontPage="true"/> | ||||
| <reference anchor='SEC1'> | </author> | |||
| <front> | <date year="2005" month="March"/> | |||
| <title>SEC 1: Elliptic Curve Cryptography, Version 2.0 </title> | <abstract> | |||
| <author> | <t indent="0">IPv6 nodes use the Neighbor Discovery Protocol (NDP) | |||
| <organization> | to discover other nodes on the link, to determine their link-layer addresses to | |||
| SEC1 | find routers, and to maintain reachability information about the paths to activ | |||
| </organization> | e neighbors. If not secured, NDP is vulnerable to various attacks. This docume | |||
| </author> | nt specifies security mechanisms for NDP. Unlike those in the original NDP spec | |||
| <date month='June' year='2009'/> | ifications, these mechanisms do not use IPsec. [STANDARDS-TRACK]</t> | |||
| </front> | </abstract> | |||
| <seriesInfo name='Standards for Efficient Cryptography' value=''/> | </front> | |||
| </reference> | <seriesInfo name="RFC" value="3971"/> | |||
| <seriesInfo name="DOI" value="10.17487/RFC3971"/> | ||||
| </references> | </reference> | |||
| <reference anchor="RFC6234" target="https://www.rfc-editor.org/info/rfc6 | ||||
| <references><name>Informative references</name> | 234" quoteTitle="true" derivedAnchor="RFC6234"> | |||
| <front> | ||||
| <!--reference anchor="IANA.JOSE.Algorithms"> | <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</ | |||
| <front> | title> | |||
| <title> JSON Web Signature and Encryption Algorithms </ti | <author initials="D." surname="Eastlake 3rd" fullname="D. Eastlake 3 | |||
| tle> | rd"> | |||
| <author> | <organization showOnFrontPage="true"/> | |||
| <organization> | </author> | |||
| IANA | <author initials="T." surname="Hansen" fullname="T. Hansen"> | |||
| </organization> | <organization showOnFrontPage="true"/> | |||
| </author> | </author> | |||
| <date year=""></date> | <date year="2011" month="May"/> | |||
| </front> | <abstract> | |||
| <seriesInfo name="IANA," value="https://www.iana.org/assignments/ | <t indent="0">Federal Information Processing Standard, FIPS</t> | |||
| jose/jose.xhtml#web-signature-encryption-algorithms"></seriesInfo> | </abstract> | |||
| </reference> | </front> | |||
| <reference anchor="IANA.JOSE.Curves"> | <seriesInfo name="RFC" value="6234"/> | |||
| <front> | <seriesInfo name="DOI" value="10.17487/RFC6234"/> | |||
| <title> JSON Web Key Elliptic Curve </title> | </reference> | |||
| <author> | <reference anchor="RFC6775" target="https://www.rfc-editor.org/info/rfc6 | |||
| <organization> | 775" quoteTitle="true" derivedAnchor="RFC6775"> | |||
| IANA | <front> | |||
| </organization> | <title>Neighbor Discovery Optimization for IPv6 over Low-Power Wirel | |||
| </author> | ess Personal Area Networks (6LoWPANs)</title> | |||
| <date year=""></date> | <author initials="Z." surname="Shelby" fullname="Z. Shelby" role="ed | |||
| </front> | itor"> | |||
| <seriesInfo name="IANA," value="https://www.iana.org/assignments/ | <organization showOnFrontPage="true"/> | |||
| jose/jose.xhtml#web-key-elliptic-curve"></seriesInfo> | </author> | |||
| </reference--> | <author initials="S." surname="Chakrabarti" fullname="S. Chakrabarti | |||
| "> | ||||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | <organization showOnFrontPage="true"/> | |||
| nce.RFC.3972.xml'/> | </author> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | <author initials="E." surname="Nordmark" fullname="E. Nordmark"> | |||
| nce.RFC.4086.xml'/> | <organization showOnFrontPage="true"/> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | </author> | |||
| nce.RFC.4861.xml'/> | <author initials="C." surname="Bormann" fullname="C. Bormann"> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | <organization showOnFrontPage="true"/> | |||
| nce.RFC.4862.xml'/> | </author> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | <date year="2012" month="November"/> | |||
| nce.RFC.4919.xml'/> | <abstract> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | <t indent="0">The IETF work in IPv6 over Low-power Wireless Person | |||
| nce.RFC.4944.xml'/> | al Area Network (6LoWPAN) defines 6LoWPANs such as IEEE 802.15.4. This and othe | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | r similar link technologies have limited or no usage of multicast signaling due | |||
| nce.RFC.6282.xml'/> | to energy conservation. In addition, the wireless network may not strictly foll | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ow the traditional concept of IP subnets and IP links. IPv6 Neighbor Discovery | |||
| nce.RFC.7039.xml'/> | was not designed for non- transitive wireless links, as its reliance on the trad | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | itional IPv6 link concept and its heavy use of multicast make it inefficient and | |||
| nce.RFC.7217.xml'/> | sometimes impractical in a low-power and lossy network. This document describe | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | s simple optimizations to IPv6 Neighbor Discovery, its addressing mechanisms, an | |||
| nce.RFC.7518.xml'/> | d duplicate address detection for Low- power Wireless Personal Area Networks and | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | similar networks. The document thus updates RFC 4944 to specify the use of the | |||
| nce.RFC.7696.xml'/> | optimizations defined here. [STANDARDS-TRACK]</t> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | </abstract> | |||
| nce.RFC.8037.xml'/> | </front> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | <seriesInfo name="RFC" value="6775"/> | |||
| nce.RFC.8064.xml'/> | <seriesInfo name="DOI" value="10.17487/RFC6775"/> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | </reference> | |||
| nce.RFC.8065.xml'/> | <reference anchor="RFC7400" target="https://www.rfc-editor.org/info/rfc7 | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | 400" quoteTitle="true" derivedAnchor="RFC7400"> | |||
| nce.RFC.8126.xml'/> | <front> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/refer | <title>6LoWPAN-GHC: Generic Header Compression for IPv6 over Low-Pow | |||
| ence.I-D.ietf-6lo-backbone-router.xml'/> | er Wireless Personal Area Networks (6LoWPANs)</title> | |||
| <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/refer | <author initials="C." surname="Bormann" fullname="C. Bormann"> | |||
| ence.I-D.ietf-lwig-curve-representations.xml'/> | <organization showOnFrontPage="true"/> | |||
| </author> | ||||
| <reference anchor='breaking-ed25519' target='https://link.springer.com/ch | <date year="2014" month="November"/> | |||
| apter/10.1007/978-3-319-76953-0_1'> | <abstract> | |||
| <front> | <t indent="0">RFC 6282 defines header compression in 6LoWPAN packe | |||
| ts (where "6LoWPAN" refers to "IPv6 over Low-Power Wireless Personal Area Networ | ||||
| k"). The present document specifies a simple addition that enables the compress | ||||
| ion of generic headers and header-like payloads, without a need to define a new | ||||
| header compression scheme for each such new header or header-like payload.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7400"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7400"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7748" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 748" quoteTitle="true" derivedAnchor="RFC7748"> | ||||
| <front> | ||||
| <title>Elliptic Curves for Security</title> | ||||
| <author initials="A." surname="Langley" fullname="A. Langley"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Hamburg" fullname="M. Hamburg"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S." surname="Turner" fullname="S. Turner"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2016" month="January"/> | ||||
| <abstract> | ||||
| <t indent="0">This memo specifies two elliptic curves over prime f | ||||
| ields that offer a high level of practical security in cryptographic application | ||||
| s, including Transport Layer Security (TLS). These curves are intended to opera | ||||
| te at the ~128-bit and ~224-bit security level, respectively, and are generated | ||||
| deterministically based on a list of required properties.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7748"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7748"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8032" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 032" quoteTitle="true" derivedAnchor="RFC8032"> | ||||
| <front> | ||||
| <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title> | ||||
| <author initials="S." surname="Josefsson" fullname="S. Josefsson"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="I." surname="Liusvaara" fullname="I. Liusvaara"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2017" month="January"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes elliptic curve signature sch | ||||
| eme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instant | ||||
| iated with recommended parameters for the edwards25519 and edwards448 curves. A | ||||
| n example implementation and test vectors are provided.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8032"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8032"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 174" quoteTitle="true" derivedAnchor="RFC8174"> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
| tle> | ||||
| <author initials="B." surname="Leiba" fullname="B. Leiba"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2017" month="May"/> | ||||
| <abstract> | ||||
| <t indent="0">RFC 2119 specifies common key words that may be used | ||||
| in protocol specifications. This document aims to reduce the ambiguity by cla | ||||
| rifying that only UPPERCASE usage of the key words have the defined special mea | ||||
| nings.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="8174"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8505" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 505" quoteTitle="true" derivedAnchor="RFC8505"> | ||||
| <front> | ||||
| <title>Registration Extensions for IPv6 over Low-Power Wireless Pers | ||||
| onal Area Network (6LoWPAN) Neighbor Discovery</title> | ||||
| <author initials="P." surname="Thubert" fullname="P. Thubert" role=" | ||||
| editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="E." surname="Nordmark" fullname="E. Nordmark"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S." surname="Chakrabarti" fullname="S. Chakrabarti | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="C." surname="Perkins" fullname="C. Perkins"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2018" month="November"/> | ||||
| <abstract> | ||||
| <t indent="0">This specification updates RFC 6775 -- the Low-Power | ||||
| Wireless Personal Area Network (6LoWPAN) Neighbor Discovery specification -- to | ||||
| clarify the role of the protocol as a registration technique and simplify the r | ||||
| egistration operation in 6LoWPAN routers, as well as to provide enhancements to | ||||
| the registration capabilities and mobility detection for different network topol | ||||
| ogies, including the Routing Registrars performing routing for host routes and/o | ||||
| r proxy Neighbor Discovery in a low-power network.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8505"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8505"/> | ||||
| </reference> | ||||
| <reference anchor="SEC1" target="https://www.secg.org/sec1-v2.pdf" quote | ||||
| Title="true" derivedAnchor="SEC1"> | ||||
| <front> | ||||
| <title>SEC 1: Elliptic Curve Cryptography</title> | ||||
| <author> | ||||
| <organization showOnFrontPage="true">Standards for Efficient Crypt | ||||
| ography</organization> | ||||
| </author> | ||||
| <date month="May" year="2009"/> | ||||
| </front> | ||||
| <refcontent>Version 2</refcontent> | ||||
| </reference> | ||||
| </references> | ||||
| <references pn="section-9.2"> | ||||
| <name slugifiedName="name-informative-references">Informative References | ||||
| </name> | ||||
| <reference anchor="RFC4086" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 086" quoteTitle="true" derivedAnchor="BCP106"> | ||||
| <front> | ||||
| <title>Randomness Requirements for Security</title> | ||||
| <author initials="D." surname="Eastlake 3rd" fullname="D. Eastlake 3 | ||||
| rd"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Schiller" fullname="J. Schiller"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S." surname="Crocker" fullname="S. Crocker"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2005" month="June"/> | ||||
| <abstract> | ||||
| <t indent="0">Security systems are built on strong cryptographic a | ||||
| lgorithms that foil pattern analysis attempts. However, the security of these s | ||||
| ystems is dependent on generating secret quantities for passwords, cryptographic | ||||
| keys, and similar quantities. The use of pseudo-random processes to generate s | ||||
| ecret quantities can result in pseudo-security. A sophisticated attacker may fin | ||||
| d it easier to reproduce the environment that produced the secret quantities and | ||||
| to search the resulting small set of possibilities than to locate the quantitie | ||||
| s in the whole of the potential number space.</t> | ||||
| <t indent="0">Choosing random quantities to foil a resourceful and | ||||
| motivated adversary is surprisingly difficult. This document points out many p | ||||
| itfalls in using poor entropy sources or traditional pseudo-random number genera | ||||
| tion techniques for generating such quantities. It recommends the use of truly | ||||
| random hardware techniques and shows that the existing hardware on many systems | ||||
| can be used for this purpose. It provides suggestions to ameliorate the problem | ||||
| when a hardware solution is not available, and it gives examples of how large su | ||||
| ch quantities need to be for some applications. This document specifies an Inte | ||||
| rnet Best Current Practices for the Internet Community, and requests discussion | ||||
| and suggestions for improvements.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="106"/> | ||||
| <seriesInfo name="RFC" value="4086"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4086"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7696" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 696" quoteTitle="true" derivedAnchor="BCP201"> | ||||
| <front> | ||||
| <title>Guidelines for Cryptographic Algorithm Agility and Selecting | ||||
| Mandatory-to-Implement Algorithms</title> | ||||
| <author initials="R." surname="Housley" fullname="R. Housley"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2015" month="November"/> | ||||
| <abstract> | ||||
| <t indent="0">Many IETF protocols use cryptographic algorithms to | ||||
| provide confidentiality, integrity, authentication, or digital signature. Commu | ||||
| nicating peers must support a common set of cryptographic algorithms for these m | ||||
| echanisms to work properly. This memo provides guidelines to ensure that protoc | ||||
| ols have the ability to migrate from one mandatory-to-implement algorithm suite | ||||
| to another over time.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="201"/> | ||||
| <seriesInfo name="RFC" value="7696"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7696"/> | ||||
| </reference> | ||||
| <reference anchor="breaking-ed25519" target="https://link.springer.com/c | ||||
| hapter/10.1007/978-3-319-76953-0_1" quoteTitle="true" derivedAnchor="breaking-ed | ||||
| 25519"> | ||||
| <front> | ||||
| <title>Breaking Ed25519 in WolfSSL</title> | <title>Breaking Ed25519 in WolfSSL</title> | |||
| <author initials='N.' surname='Samwel' fullname='Niels Samwel'> | <author initials="N." surname="Samwel" fullname="Niels Samwel"> | |||
| </author> | </author> | |||
| <author initials='L.' surname='Batina' fullname='Leija Batina'> | <author initials="L." surname="Batina" fullname="Leija Batina"> | |||
| </author> | </author> | |||
| <author initials='G.' surname='Bertoni' fullname='Guido Bertoni'> | <author initials="G." surname="Bertoni" fullname="Guido Bertoni"> | |||
| </author> | </author> | |||
| <author initials='J.' surname='Daemen' fullname='Joan Daemen'> | <author initials="J." surname="Daemen" fullname="Joan Daemen"> | |||
| </author> | </author> | |||
| <author initials='R.' surname='Susella' fullname='Ruggero Susella'> | <author initials="R." surname="Susella" fullname="Ruggero Susella"> | |||
| </author> | </author> | |||
| <date year='2018'/> | <date month="March" year="2018"/> | |||
| </front> | </front> | |||
| <seriesInfo name='Cryptographers’ Track at the RSA Conference' value=''/ | <refcontent>Topics in Cryptology - CT-RSA, pp. 1-20</refcontent> | |||
| > | </reference> | |||
| </reference> | <reference anchor="I-D.ietf-lwig-curve-representations" quoteTitle="true | |||
| </references> | " target="https://tools.ietf.org/html/draft-ietf-lwig-curve-representations-14" | |||
| derivedAnchor="CURVE-REPR"> | ||||
| <front> | ||||
| <title>Alternative Elliptic Curve Representations</title> | ||||
| <author fullname="Rene Struik"> | ||||
| <organization showOnFrontPage="true">Struik Security Consultancy</ | ||||
| organization> | ||||
| </author> | ||||
| <date month="November" day="15" year="2020"/> | ||||
| <abstract> | ||||
| <t indent="0"> This document specifies how to represent Montgome | ||||
| ry curves and | ||||
| (twisted) Edwards curves as curves in short-Weierstrass form and | ||||
| illustrates how this can be used to carry out elliptic curve | ||||
| computations using existing implementations of, e.g., ECDSA and ECDH | ||||
| using NIST prime curves. We also provide extensive background | ||||
| material that may be useful for implementers of elliptic curve | ||||
| cryptography. | ||||
| <section anchor='ps'><name>Requirements Addressed in this Document</name> | </t> | |||
| <t> | </abstract> | |||
| In this section we state requirements of a secure neighbor discovery | </front> | |||
| protocol for low-power and lossy networks. | <seriesInfo name="Internet-Draft" value="draft-ietf-lwig-curve-represe | |||
| </t><ul spacing='compact'> | ntations-14"/> | |||
| <li> | <format type="TXT" target="https://www.ietf.org/internet-drafts/draft- | |||
| The protocol MUST be based on the Neighbor Discovery Optimization f | ietf-lwig-curve-representations-14.txt"/> | |||
| or Low-power and Lossy Networks protocol defined in <xref target='RFC6775'/>. RF | <refcontent>Work in Progress</refcontent> | |||
| C6775 utilizes optimizations such as host-initiated interactions for sleeping re | </reference> | |||
| source-constrained hosts and elimination of multicast address resolution. | <reference anchor="RFC3972" target="https://www.rfc-editor.org/info/rfc3 | |||
| 972" quoteTitle="true" derivedAnchor="RFC3972"> | ||||
| <front> | ||||
| <title>Cryptographically Generated Addresses (CGA)</title> | ||||
| <author initials="T." surname="Aura" fullname="T. Aura"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2005" month="March"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes a method for binding a publi | ||||
| c signature key to an IPv6 address in the Secure Neighbor Discovery (SEND) proto | ||||
| col. Cryptographically Generated Addresses (CGA) are IPv6 addresses for which t | ||||
| he interface identifier is generated by computing a cryptographic one-way hash f | ||||
| unction from a public key and auxiliary parameters. The binding between the pub | ||||
| lic key and the address can be verified by re-computing the hash value and by co | ||||
| mparing the hash with the interface identifier. Messages sent from an IPv6 addr | ||||
| ess can be protected by attaching the public key and auxiliary parameters and by | ||||
| signing the message with the corresponding private key. The protection works w | ||||
| ithout a certification authority or any security infrastructure. [STANDARDS-TRA | ||||
| CK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="3972"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3972"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4861" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 861" quoteTitle="true" derivedAnchor="RFC4861"> | ||||
| <front> | ||||
| <title>Neighbor Discovery for IP version 6 (IPv6)</title> | ||||
| <author initials="T." surname="Narten" fullname="T. Narten"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="E." surname="Nordmark" fullname="E. Nordmark"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="W." surname="Simpson" fullname="W. Simpson"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="H." surname="Soliman" fullname="H. Soliman"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2007" month="September"/> | ||||
| <abstract> | ||||
| <t indent="0">This document specifies the Neighbor Discovery proto | ||||
| col for IP Version 6. IPv6 nodes on the same link use Neighbor Discovery to dis | ||||
| cover 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"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4861"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4862" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 862" quoteTitle="true" derivedAnchor="RFC4862"> | ||||
| <front> | ||||
| <title>IPv6 Stateless Address Autoconfiguration</title> | ||||
| <author initials="S." surname="Thomson" fullname="S. Thomson"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="T." surname="Narten" fullname="T. Narten"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="T." surname="Jinmei" fullname="T. Jinmei"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2007" month="September"/> | ||||
| <abstract> | ||||
| <t indent="0">This document specifies the steps a host takes in de | ||||
| ciding how to autoconfigure its interfaces in IP version 6. The autoconfigurati | ||||
| on process includes generating a link-local address, generating global addresses | ||||
| via stateless address autoconfiguration, and the Duplicate Address Detection pr | ||||
| ocedure to verify the uniqueness of the addresses on a link. [STANDARDS-TRACK]< | ||||
| /t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4862"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4862"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4919" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 919" quoteTitle="true" derivedAnchor="RFC4919"> | ||||
| <front> | ||||
| <title>IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs | ||||
| ): Overview, Assumptions, Problem Statement, and Goals</title> | ||||
| <author initials="N." surname="Kushalnagar" fullname="N. Kushalnagar | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="G." surname="Montenegro" fullname="G. Montenegro"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="C." surname="Schumacher" fullname="C. Schumacher"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2007" month="August"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes the assumptions, problem sta | ||||
| tement, and goals for transmitting IP over IEEE 802.15.4 networks. The set of g | ||||
| oals enumerated in this document form an initial set only. This memo provides i | ||||
| nformation for the Internet community.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4919"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4919"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4944" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 944" quoteTitle="true" derivedAnchor="RFC4944"> | ||||
| <front> | ||||
| <title>Transmission of IPv6 Packets over IEEE 802.15.4 Networks</tit | ||||
| le> | ||||
| <author initials="G." surname="Montenegro" fullname="G. Montenegro"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="N." surname="Kushalnagar" fullname="N. Kushalnagar | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Hui" fullname="J. Hui"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="D." surname="Culler" fullname="D. Culler"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2007" month="September"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes the frame format for transmi | ||||
| ssion of IPv6 packets and the method of forming IPv6 link-local addresses and st | ||||
| atelessly autoconfigured addresses on IEEE 802.15.4 networks. Additional specifi | ||||
| cations include a simple header compression scheme using shared context and prov | ||||
| isions for packet delivery in IEEE 802.15.4 meshes. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4944"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4944"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6282" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 282" quoteTitle="true" derivedAnchor="RFC6282"> | ||||
| <front> | ||||
| <title>Compression Format for IPv6 Datagrams over IEEE 802.15.4-Base | ||||
| d Networks</title> | ||||
| <author initials="J." surname="Hui" fullname="J. Hui" role="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="P." surname="Thubert" fullname="P. Thubert"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2011" month="September"/> | ||||
| <abstract> | ||||
| <t indent="0">This document updates RFC 4944, "Transmission of IPv | ||||
| 6 Packets over IEEE 802.15.4 Networks". This document specifies an IPv6 header | ||||
| compression format for IPv6 packet delivery in Low Power Wireless Personal Area | ||||
| Networks (6LoWPANs). The compression format relies on shared context to allow c | ||||
| ompression of arbitrary prefixes. How the information is maintained in that sha | ||||
| red context is out of scope. This document specifies compression of multicast ad | ||||
| dresses and a framework for compressing next headers. UDP header compression is | ||||
| specified within this framework. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6282"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6282"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7039" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 039" quoteTitle="true" derivedAnchor="RFC7039"> | ||||
| <front> | ||||
| <title>Source Address Validation Improvement (SAVI) Framework</title | ||||
| > | ||||
| <author initials="J." surname="Wu" fullname="J. Wu"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Bi" fullname="J. Bi"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Bagnulo" fullname="M. Bagnulo"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="F." surname="Baker" fullname="F. Baker"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="C." surname="Vogt" fullname="C. Vogt" role="editor | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2013" month="October"/> | ||||
| <abstract> | ||||
| <t indent="0">Source Address Validation Improvement (SAVI) methods | ||||
| were developed to prevent nodes attached to the same IP link from spoofing each | ||||
| other's IP addresses, so as to complement ingress filtering with finer-grained, | ||||
| standardized IP source address validation. This document is a framework docume | ||||
| nt that describes and motivates the design of the SAVI methods. Particular SAVI | ||||
| methods are described in other documents.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7039"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7039"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7217" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 217" quoteTitle="true" derivedAnchor="RFC7217"> | ||||
| <front> | ||||
| <title>A Method for Generating Semantically Opaque Interface Identif | ||||
| iers with IPv6 Stateless Address Autoconfiguration (SLAAC)</title> | ||||
| <author initials="F." surname="Gont" fullname="F. Gont"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2014" month="April"/> | ||||
| <abstract> | ||||
| <t indent="0">This document specifies a method for generating IPv6 | ||||
| Interface Identifiers to be used with IPv6 Stateless Address Autoconfiguration | ||||
| (SLAAC), such that an IPv6 address configured using this method is stable within | ||||
| each subnet, but the corresponding Interface Identifier changes when the host m | ||||
| oves from one network to another. This method is meant to be an alternative to | ||||
| generating Interface Identifiers based on hardware addresses (e.g., IEEE LAN Med | ||||
| ia Access Control (MAC) addresses), such that the benefits of stable addresses c | ||||
| an be achieved without sacrificing the security and privacy of users. The metho | ||||
| d specified in this document applies to all prefixes a host may be employing, in | ||||
| cluding link-local, global, and unique-local prefixes (and their corresponding a | ||||
| ddresses).</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7217"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7217"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8064" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 064" quoteTitle="true" derivedAnchor="RFC8064"> | ||||
| <front> | ||||
| <title>Recommendation on Stable IPv6 Interface Identifiers</title> | ||||
| <author initials="F." surname="Gont" fullname="F. Gont"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="A." surname="Cooper" fullname="A. Cooper"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="D." surname="Thaler" fullname="D. Thaler"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="W." surname="Liu" fullname="W. Liu"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2017" month="February"/> | ||||
| <abstract> | ||||
| <t indent="0">This document changes the recommended default Interf | ||||
| ace Identifier (IID) generation scheme for cases where Stateless Address Autocon | ||||
| figuration (SLAAC) is used to generate a stable IPv6 address. It recommends usin | ||||
| g the mechanism specified in RFC 7217 in such cases, and recommends against embe | ||||
| dding stable link-layer addresses in IPv6 IIDs. It formally updates RFC 2464, R | ||||
| FC 2467, RFC 2470, RFC 2491, RFC 2492, RFC 2497, RFC 2590, RFC 3146, RFC 3572, R | ||||
| FC 4291, RFC 4338, RFC 4391, RFC 5072, and RFC 5121. This document does not cha | ||||
| nge any existing recommendations concerning the use of temporary addresses as sp | ||||
| ecified in RFC 4941.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8064"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8064"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8065" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 065" quoteTitle="true" derivedAnchor="RFC8065"> | ||||
| <front> | ||||
| <title>Privacy Considerations for IPv6 Adaptation-Layer Mechanisms</ | ||||
| title> | ||||
| <author initials="D." surname="Thaler" fullname="D. Thaler"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2017" month="February"/> | ||||
| <abstract> | ||||
| <t indent="0">This document discusses how a number of privacy thre | ||||
| ats apply to technologies designed for IPv6 over various link-layer protocols, a | ||||
| nd it provides advice to protocol designers on how to address such threats in ad | ||||
| aptation-layer specifications for IPv6 over such links.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8065"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8065"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 126" quoteTitle="true" derivedAnchor="RFC8126"> | ||||
| <front> | ||||
| <title>Guidelines for Writing an IANA Considerations Section in RFCs | ||||
| </title> | ||||
| <author initials="M." surname="Cotton" fullname="M. Cotton"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="B." surname="Leiba" fullname="B. Leiba"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="T." surname="Narten" fullname="T. Narten"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2017" month="June"/> | ||||
| <abstract> | ||||
| <t indent="0">Many protocols make use of points of extensibility t | ||||
| hat use constants to identify various protocol parameters. To ensure that the v | ||||
| alues in these fields do not have conflicting uses and to promote interoperabili | ||||
| ty, their allocations are often coordinated by a central record keeper. For IET | ||||
| F protocols, that role is filled by the Internet Assigned Numbers Authority (IAN | ||||
| A).</t> | ||||
| <t indent="0">To make assignments in a given registry prudently, g | ||||
| uidance describing the conditions under which new values should be assigned, as | ||||
| well as when and how modifications to existing values can be made, is needed. T | ||||
| his document defines a framework for the documentation of these guidelines by sp | ||||
| ecification authors, in order to assure that the provided guidance for the IANA | ||||
| Considerations is clear and addresses the various issues that are likely in the | ||||
| operation of a registry.</t> | ||||
| <t indent="0">This is the third edition of this document; it obsol | ||||
| etes RFC 5226.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="26"/> | ||||
| <seriesInfo name="RFC" value="8126"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8126"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8929" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 929" quoteTitle="true" derivedAnchor="RFC8929"> | ||||
| <front> | ||||
| <title>IPv6 Backbone Router</title> | ||||
| <author initials="P" surname="Thubert" fullname="Pascal Thubert" rol | ||||
| e="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="C.E." surname="Perkins" fullname="Charles Perkins" | ||||
| > | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="E" surname="Levy-Abegnoli" fullname="Eric Levy-Abe | ||||
| gnoli"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="November" year="2020"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8929"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8929"/> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | ||||
| <section anchor="ps" numbered="true" removeInRFC="false" toc="include" pn="s | ||||
| ection-appendix.a"> | ||||
| <name slugifiedName="name-requirements-addressed-in-t">Requirements Addres | ||||
| sed in This Document</name> | ||||
| <t indent="0" pn="section-appendix.a-1"> | ||||
| In this section, the requirements of a secure Neighbor Discovery pro | ||||
| tocol for LLNs are stated. | ||||
| </t> | ||||
| <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-app | ||||
| endix.a-2"> | ||||
| <li pn="section-appendix.a-2.1"> | ||||
| The protocol <bcp14>MUST</bcp14> be based on the Neighbor Discovery | ||||
| Optimization for the LLN protocol defined in <xref target="RFC6775" format="def | ||||
| ault" sectionFormat="of" derivedContent="RFC6775"/>. RFC 6775 utilizes optimizat | ||||
| ions such as host-initiated interactions for sleeping resource-constrained hosts | ||||
| and the elimination of multicast address resolution. | ||||
| </li> | </li> | |||
| <li> | <li pn="section-appendix.a-2.2"> | |||
| New options to be added to Neighbor Solicitation messages MUST lea | New options to be added to Neighbor Solicitation messages <bcp14>M | |||
| d to small packet sizes, especially compared with existing protocols such as SEc | UST</bcp14> lead to small packet sizes, especially compared with existing protoc | |||
| ure Neighbor Discovery (SEND). Smaller packet sizes facilitate low-power transmi | ols such as SEND. Smaller packet sizes facilitate low-power transmission by reso | |||
| ssion by resource-constrained nodes on lossy links. | urce-constrained nodes on lossy links. | |||
| </li> | </li> | |||
| <li> | <li pn="section-appendix.a-2.3"> | |||
| The support for this registration mechanism SHOULD be extensible t | The registration mechanism <bcp14>SHOULD</bcp14> be extensible to | |||
| o more LLN links than IEEE 802.15.4 only. Support for at least the LLN links for | other LLN links and not be limited to IEEE 802.15.4 only. LLN links for which a | |||
| which a 6lo "IPv6 over foo" specification exists, as well as Low-Power Wi-Fi SH | 6lo "IPv6 over foo" specification exist, as well as low-power Wi-Fi, <bcp14>SHOU | |||
| OULD be possible. | LD</bcp14> be supported. | |||
| </li> | </li> | |||
| <li> | <li pn="section-appendix.a-2.4"> | |||
| As part of this extension, a mechanism to compute a unique Identif | As part of this protocol, a mechanism to compute a unique identifi | |||
| ier should be provided with the capability to form a Link Local Address that SHO | er should be provided with the capability to form a Link Local Address that <bcp | |||
| ULD be unique at least within the LLN connected to a 6LBR. | 14>SHOULD</bcp14> be unique at least within the LLN connected to a 6LBR. | |||
| </li> | </li> | |||
| <li> | <li pn="section-appendix.a-2.5"> | |||
| The Address Registration Option used in the ND registration SHOULD | The Address Registration Option used in the ND registration <bcp14 | |||
| be extended to carry the relevant forms of | >SHOULD</bcp14> be extended to carry the relevant forms of the | |||
| Unique Interface Identifier. | unique identifier. | |||
| </li> | </li> | |||
| <li> | <li pn="section-appendix.a-2.6"> | |||
| The Neighbor Discovery should specify the formation of a site-loca | The Neighbor Discovery should specify the formation of a site-loca | |||
| l address that follows the security recommendations from <xref target='RFC7217'/ | l address that follows the security recommendations from <xref target="RFC7217" | |||
| >. | format="default" sectionFormat="of" derivedContent="RFC7217"/>. | |||
| </li> | </li> | |||
| </ul><t> | </ul> | |||
| </t> | </section> | |||
| </section> | <section anchor="reprconv" numbered="true" removeInRFC="false" toc="include" | |||
| pn="section-appendix.b"> | ||||
| <section anchor='reprconv'><name>Representation Conventions</name> | <name slugifiedName="name-representation-conventions">Representation Conve | |||
| ntions</name> | ||||
| <section><name>Signature Schemes</name> | <section numbered="true" removeInRFC="false" toc="include" pn="section-b.1 | |||
| <t> The signature scheme ECDSA256 corresponding to Crypto-Type 0 is ECDSA | "> | |||
| , as specified in <xref target='FIPS186-4'/>, instantiated with the NIST prime c | <name slugifiedName="name-signature-schemes">Signature Schemes</name> | |||
| urve P-256, | <t indent="0" pn="section-b.1-1"> The signature scheme ECDSA256 correspo | |||
| as specified in Appendix B of <xref target='FIPS186-4'/>, and the hash fu | nding to Crypto-Type 0 is ECDSA, as specified in <xref target="FIPS186-4" format | |||
| nction SHA-256, as specified in <xref target='RFC6234'/>, where points of this N | ="default" sectionFormat="of" derivedContent="FIPS186-4"/>, instantiated with th | |||
| IST curve are | e NIST prime curve P-256, | |||
| represented as points of a short-Weierstrass curve (see <xref target='FIP | as specified in Appendix D.1.2 of <xref target="FIPS186-4" format="defaul | |||
| S186-4'/>) and are encoded as octet strings in most-significant-bit first (msb) | t" sectionFormat="of" derivedContent="FIPS186-4"/>, and the hash function SHA-25 | |||
| and | 6, as specified in <xref target="RFC6234" format="default" sectionFormat="of" de | |||
| most-significant-byte first (MSB) order. The signature itself consists of | rivedContent="RFC6234"/>, where points of this NIST curve are | |||
| two integers (r and s), which are each encoded as fixed-size octet strings in m | represented as points of a short-Weierstrass curve (see <xref target="FIP | |||
| ost-significant-bit | S186-4" format="default" sectionFormat="of" derivedContent="FIPS186-4"/>) and ar | |||
| first and most-significant-byte first order. For details on ECDSA, see <x | e encoded as octet strings in most-significant-bit first (msb) and | |||
| ref target='FIPS186-4'/>; for details on the encoding of public keys, see <xref | most-significant-byte first (MSB) order. The signature itself consists of | |||
| target="weirepr"></xref>; | two integers (r and s), which are each encoded as fixed-size octet strings in M | |||
| for details on the signature encoding, see <xref target='bitrepr'/>.</t> | SB and msb order. For further details, see <xref target="FIPS186-4" format="defa | |||
| ult" sectionFormat="of" derivedContent="FIPS186-4"/> for ECDSA, see <xref target | ||||
| <t> The signature scheme Ed25519 corresponding to Crypto-Type 1 is EdDSA, | ="weirepr" format="default" sectionFormat="of" derivedContent="Appendix B.3"/> f | |||
| as specified in <xref target='RFC8032'/>, instantiated with the Montgomery curv | or the encoding of public keys, and see | |||
| e Curve25519, as | <xref target="bitrepr" format="default" sectionFormat="of" derivedConten | |||
| specified in <xref target='RFC7748'/>, and the hash function SHA-512, as | t="Appendix B.2"/> for signature encoding.</t> | |||
| specified in <xref target='RFC6234'/>, where points of this Montgomery curve are | <t indent="0" pn="section-b.1-2"> The signature scheme Ed25519 correspon | |||
| represented as points of the corresponding twisted Edwards curve Edwards2 | ding to Crypto-Type 1 is EdDSA, as specified in <xref target="RFC8032" format="d | |||
| 5519 (see <xref target='curves'/>) and are encoded as octet strings in least-sig | efault" sectionFormat="of" derivedContent="RFC8032"/>, instantiated with the Mon | |||
| nificant-bit first (lsb) | tgomery curve Curve25519, as | |||
| specified in <xref target="RFC7748" format="default" sectionFormat="of" d | ||||
| erivedContent="RFC7748"/>, and the hash function SHA-512, as specified in <xref | ||||
| target="RFC6234" format="default" sectionFormat="of" derivedContent="RFC6234"/>, | ||||
| where points of this Montgomery curve are | ||||
| represented as points of the corresponding twisted Edwards | ||||
| curve Edwards25519 (see <xref target="curves" format="default" sectionFor | ||||
| mat="of" derivedContent="Appendix B.4"/>) and are | ||||
| encoded as octet strings in least-significant-bit first (lsb) | ||||
| and least-significant-byte first (LSB) order. The signature itself consis ts of a bit string that encodes a point of this twisted Edwards curve, in compre ssed format, and an | and least-significant-byte first (LSB) order. The signature itself consis ts of a bit string that encodes a point of this twisted Edwards curve, in compre ssed format, and an | |||
| integer encoded in least-significant-bit first and least-significant-byte | integer encoded in LSB and lsb order. For details on EdDSA and the encodi | |||
| first order. For details on EdDSA, the encoding of public keys and that of sign | ng of public keys and signatures, see the | |||
| atures, see the | specification of pure Ed25519 in <xref target="RFC8032" format="default" | |||
| specification of pure Ed25519 in <xref target='RFC8032'></xref>.</t> | sectionFormat="of" derivedContent="RFC8032"/>.</t> | |||
| <t indent="0" pn="section-b.1-3"> The signature scheme ECDSA25519 corres | ||||
| <t> The signature scheme ECDSA25519 corresponding to Crypto-Type 2 is ECD | ponding to Crypto-Type 2 is ECDSA, as specified in <xref target="FIPS186-4" form | |||
| SA, as specified in <xref target='FIPS186-4'/>, instantiated with the Montgomery | at="default" sectionFormat="of" derivedContent="FIPS186-4"/>, instantiated with | |||
| curve | the Montgomery curve | |||
| Curve25519, as specified in <xref target='RFC7748'/>, and the hash functi | Curve25519, as specified in <xref target="RFC7748" format="default" secti | |||
| on SHA-256, as specified in <xref target='RFC6234'/>, where points of this Montg | onFormat="of" derivedContent="RFC7748"/>, and the hash function SHA-256, as spec | |||
| omery | ified in <xref target="RFC6234" format="default" sectionFormat="of" derivedConte | |||
| curve are represented as points of the corresponding short-Weierstrass cu | nt="RFC6234"/>, where points of this Montgomery | |||
| rve Wei25519 (see <xref target='curves'/>) and are encoded as octet strings in | curve are represented as points of the corresponding short-Weierstrass cu | |||
| most-significant-bit first and most-significant-byte first order. The sig | rve Wei25519 (see <xref target="curves" format="default" sectionFormat="of" deri | |||
| nature itself consists of a bit string that encodes two integers, each encoded a | vedContent="Appendix B.4"/>) and are encoded as octet strings in | |||
| s fixed-size | MSB and msb order. The signature itself consists of a bit string that enc | |||
| octet strings in most-significant-bit first and most-significant-byte fir | odes two integers (r and s), which are each encoded as fixed-size | |||
| st order. For details on ECDSA, see <xref target='FIPS186-4'/>; for details on t | octet strings in MSB and msb order. For further details, see <xref target | |||
| he encoding of | ="FIPS186-4" format="default" sectionFormat="of" derivedContent="FIPS186-4"/> fo | |||
| public keys, see <xref target="weirepr"></xref>; for details on the signa | r ECDSA, see <xref target="weirepr" format="default" sectionFormat="of" derivedC | |||
| ture encoding, see <xref target='bitrepr'/></t> | ontent="Appendix B.3"/> for the encoding of | |||
| </section> | public keys, and see <xref target="bitrepr" format="default" sectionForma | |||
| t="of" derivedContent="Appendix B.2"/> for signature encoding.</t> | ||||
| <section anchor='bitrepr'><name>Representation of ECDSA Signatures</name> | </section> | |||
| <t> With ECDSA, each signature is an ordered pair (r, s) of integers <xre | <section anchor="bitrepr" numbered="true" removeInRFC="false" toc="include | |||
| f target='FIPS186-4'/>, where each integer is represented as a 32-octet string a | " pn="section-b.2"> | |||
| ccording to the | <name slugifiedName="name-representation-of-ecdsa-sig">Representation of | |||
| Field Element to Octet String conversion rules in <xref target='SEC1'/> a | ECDSA Signatures</name> | |||
| nd where the ordered pair of integers is represented as the rightconcatenation o | <t indent="0" pn="section-b.2-1"> With ECDSA, each signature is an order | |||
| f these representation | ed pair (r, s) of integers <xref target="FIPS186-4" format="default" sectionForm | |||
| at="of" derivedContent="FIPS186-4"/>, where each integer is represented as a 32- | ||||
| octet string according to the | ||||
| FieldElement-to-OctetString conversion rules in <xref target="SEC1" forma | ||||
| t="default" sectionFormat="of" derivedContent="SEC1"/> and where the ordered pai | ||||
| r of integers is represented as the right concatenation of these representation | ||||
| values (thereby resulting in a 64-octet string). The inverse operation ch ecks that the signature is a 64-octet string and represents the left-side and ri ght-side halves of this | values (thereby resulting in a 64-octet string). The inverse operation ch ecks that the signature is a 64-octet string and represents the left-side and ri ght-side halves of this | |||
| string (each a 32-octet string) as the integers r and s, respectively, us | string (each a 32-octet string) as the integers r and s, respectively, us | |||
| ing the Octet String to Field Element conversion rules in <xref target='SEC1'/>. | ing the OctetString-to-FieldElement conversion rules in <xref target="SEC1" form | |||
| </t></section> | at="default" sectionFormat="of" derivedContent="SEC1"/>. In both cases, the | |||
| field with these conversion rules is the set of integers modulo n, where | ||||
| <section anchor='weirepr'><name>Representation of Public Keys Used with E | n is the (prime) order of the base point of the curve in question. (For elliptic | |||
| CDSA</name> | curve nomenclature, see | |||
| <t> ECDSA is specified to be used with elliptic curves in short-Weierstra | <xref target="I-D.ietf-lwig-curve-representations" sectionFormat="of" sectio | |||
| ss form. Each point of such a curve is represented as an octet string using the | n="B.1" format="default" derivedLink="https://tools.ietf.org/html/draft-ietf-lwi | |||
| Elliptic Curve Point to | g-curve-representations-14#appendix-B.1" derivedContent="CURVE-REPR"/>.) | |||
| Octet String conversion rules in <xref target='SEC1'/>, where point compr | </t> | |||
| ession may be enabled (which is indicated by the leftmost octet of this represen | </section> | |||
| tation). The inverse | <section anchor="weirepr" numbered="true" removeInRFC="false" toc="include | |||
| operation converts an octet string to a point of this curve using the Oct | " pn="section-b.3"> | |||
| et String to Elliptic Curve Point conversion rules in <xref target='SEC1'/>, whe | <name slugifiedName="name-representation-of-public-ke">Representation of | |||
| reby the point is rejected | Public Keys Used with ECDSA</name> | |||
| <t indent="0" pn="section-b.3-1"> ECDSA is specified to be used with ell | ||||
| iptic curves in short-Weierstrass form. Each point of such a curve is represente | ||||
| d as an octet string using the Elliptic-Curve-Point-to-Octet-String | ||||
| conversion rules in <xref target="SEC1" format="default" sectionFormat=" | ||||
| of" derivedContent="SEC1"/>, where point compression may be enabled (which is in | ||||
| dicated by the leftmost octet of this representation). The inverse | ||||
| operation converts an octet string to a point of this curve using the Oct | ||||
| et-String-to-Elliptic-Curve-Point conversion rules in <xref target="SEC1" format | ||||
| ="default" sectionFormat="of" derivedContent="SEC1"/>, whereby the point is reje | ||||
| cted | ||||
| if this is the so-called point at infinity. (This is the case if the inpu t to this inverse operation is an octet string of length 1.) </t> | if this is the so-called point at infinity. (This is the case if the inpu t to this inverse operation is an octet string of length 1.) </t> | |||
| </section> | </section> | |||
| <section anchor="curves" numbered="true" removeInRFC="false" toc="include" | ||||
| <section anchor='curves'><name>Alternative Representations of Curve25519< | pn="section-b.4"> | |||
| /name> | <name slugifiedName="name-alternative-representations">Alternative Repre | |||
| <t> The elliptic curve Curve25519, as specified in <xref target='RFC7748' | sentations of Curve25519</name> | |||
| />, is a so-called Montgomery curve. Each point of this curve can also be repres | <t indent="0" pn="section-b.4-1"> The elliptic curve Curve25519, as spec | |||
| ented as a point | ified in <xref target="RFC7748" format="default" sectionFormat="of" derivedConte | |||
| nt="RFC7748"/>, is a so-called Montgomery curve. Each point of this curve can al | ||||
| so be represented as a point | ||||
| of a twisted Edwards curve or as a point of an elliptic curve in short-We ierstrass form, via a coordinate transformation (a so-called isomorphic mapping) . The parameters of the | of a twisted Edwards curve or as a point of an elliptic curve in short-We ierstrass form, via a coordinate transformation (a so-called isomorphic mapping) . The parameters of the | |||
| Montgomery curve and the corresponding isomorphic curves in twisted Edwar ds curve and short-Weierstrass form are as indicated below. Here, the domain par ameters of the Montgomery | Montgomery curve and the corresponding isomorphic curves in twisted Edwar ds curve and short-Weierstrass form are as indicated below. Here, the domain par ameters of the Montgomery | |||
| curve Curve25519 and of the twisted Edwards curve Edwards25519 are as spe | curve Curve25519 and of the twisted Edwards curve Edwards25519 are as spe | |||
| cified in <xref target='RFC7748'/>; the domain parameters of the elliptic curve | cified in <xref target="RFC7748" format="default" sectionFormat="of" derivedCont | |||
| Wei25519 in | ent="RFC7748"/>; the domain parameters of the elliptic curve Wei25519 in | |||
| short-Weierstrass curve comply with Section 6.1.1 of <xref target='FIPS18 | short-Weierstrass form comply with Section 6.1.1 of <xref target="FIPS186 | |||
| 6-4'/>. For further details on these curves and on the coordinate transformation | -4" format="default" sectionFormat="of" derivedContent="FIPS186-4"/>. For furthe | |||
| s referenced above, see | r details on these curves and on the coordinate transformations referenced above | |||
| <xref target='I-D.ietf-lwig-curve-representations'/>. </t> | , see | |||
| <xref target="I-D.ietf-lwig-curve-representations" format="default" secti | ||||
| <t> General parameters (for all curve models): | onFormat="of" derivedContent="CURVE-REPR"/>. </t> | |||
| </t><dl spacing='compact'> | <t indent="0" pn="section-b.4-2"> General parameters (for all curve mode | |||
| <dt>p</dt><dd> 2^{255}-19 </dd> | ls):</t> | |||
| <dt></dt><dd> (=0x7fffffff ffffffff ffffffff ffffffff fff | <sourcecode markers="false" pn="section-b.4-3"> | |||
| fffff ffffffff ffffffff ffffffed) </dd> | p 2^{255}-19 | |||
| <dt>h</dt><dd> 8 </dd> | (=0x7fffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff | |||
| <dt>n</dt><dd> 723700557733226221397318656304299424085711 | ffffffed) | |||
| 6359379907606001950938285454250989 </dd> | h 8 | |||
| <dt></dt><dd> (=2^{252} + 0x14def9de a2f79cd6 5812631a 5 | n | |||
| cf5d3ed) </dd> | 723700557733226221397318656304299424085711635937990760600195093828 | |||
| </dl><t> </t> | 5454250989 | |||
| <t> Montgomery curve-specific parameters (for Curve25519): | (=2^{252} + 0x14def9de a2f79cd6 5812631a 5cf5d3ed) | |||
| </t><dl spacing='compact'> | </sourcecode> | |||
| <dt>A</dt><dd> 486662 </dd> | <t indent="0" pn="section-b.4-4"> Montgomery curve-specific parameters ( | |||
| <dt>B</dt><dd> 1 </dd> | for Curve25519):</t> | |||
| <dt>Gu</dt><dd> 9 (=0x9) </dd> | <sourcecode markers="false" pn="section-b.4-5"> | |||
| <dt>Gv</dt><dd> 14781619447589544791020593568409986887264 | A 486662 | |||
| 606134616475288964881837755586237401 </dd> | B 1 | |||
| <dt></dt><dd> (=0x20ae19a1 b8a086b4 e01edd2c 7748d14c 923 | Gu 9 (=0x9) | |||
| d4d7e 6d7c61b2 29e9c5a2 7eced3d9) </dd> | Gv | |||
| </dl><t> </t> | 147816194475895447910205935684099868872646061346164752889648818377 | |||
| <t> Twisted Edwards curve-specific parameters (for Edwards25519): | 55586237401 | |||
| </t><dl spacing='compact'> | (=0x20ae19a1 b8a086b4 e01edd2c 7748d14c 923d4d7e 6d7c61b2 29e9c5a2 | |||
| <dt>a</dt><dd> -1 (-0x01) </dd> | 7eced3d9) | |||
| <dt>d</dt><dd> -121665/121666 </dd> | </sourcecode> | |||
| <dt></dt><dd> (=37095705934669439343138083508754565189542 | <t indent="0" pn="section-b.4-6"> Twisted Edwards curve-specific paramet | |||
| 113879843219016388785533085940283555) </dd> | ers (for Edwards25519):</t> | |||
| <dt></dt><dd> (=0x52036cee 2b6ffe73 8cc74079 7779e898 007 | <sourcecode markers="false" pn="section-b.4-7"> | |||
| 00a4d 4141d8ab 75eb4dca 135978a3) </dd> | a -1 (-0x01) | |||
| <dt>Gx</dt><dd> 15112221349535400772501151409588531511454 | d -121665/121666 | |||
| 012693041857206046113283949847762202 </dd> | (=3709570593466943934313808350875456518954211387984321901638878553 | |||
| <dt></dt><dd> (=0x216936d3 cd6e53fe c0a4e231 fdd6dc5c 692 | 3085940283555) | |||
| cc760 9525a7b2 c9562d60 8f25d51a) </dd> | (=0x52036cee 2b6ffe73 8cc74079 7779e898 00700a4d 4141d8ab 75eb4dca | |||
| <dt>Gy</dt><dd> 4/5 </dd> | 135978a3) | |||
| <dt></dt><dd> (=46316835694926478169428394003475163141307 | Gx | |||
| 993866256225615783033603165251855960) </dd> | 151122213495354007725011514095885315114540126930418572060461132839 | |||
| <dt></dt><dd>(=0x66666666 66666666 66666666 66666666 6666 | 49847762202 | |||
| 6666 66666666 66666666 66666658) </dd> | (=0x216936d3 cd6e53fe c0a4e231 fdd6dc5c 692cc760 9525a7b2 c9562d60 | |||
| </dl><t> </t> | 8f25d51a) | |||
| <t> Weierstrass curve-specific parameters (for Wei25519): | Gy 4/5 | |||
| </t><dl spacing='compact'> | (=4631683569492647816942839400347516314130799386625622561578303360 | |||
| <dt>a</dt><dd> 192986815395526992372618308347813179755449 | 3165251855960) | |||
| 97444273427339909597334573241639236 </dd> | (=0x66666666 66666666 66666666 66666666 66666666 66666666 66666666 | |||
| <dt></dt><dd> (=0x2aaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaa | 66666658) | |||
| aaaaa aaaaaaaa aaaaaa98 4914a144) </dd> | </sourcecode> | |||
| <dt>b</dt><dd> 557517466698189089076452890782571408182411 | <t indent="0" pn="section-b.4-8"> Weierstrass curve-specific parameters | |||
| 03727901012315294400837956729358436 </dd> | (for Wei25519):</t> | |||
| <dt></dt><dd> (=0x7b425ed0 97b425ed 097b425e d097b425 ed0 | <sourcecode markers="false" pn="section-b.4-9"> | |||
| 97b42 5ed097b4 260b5e9c 7710c864) </dd> | a | |||
| <dt>GX</dt><dd> 19298681539552699237261830834781317975544 | 192986815395526992372618308347813179755449974442734273399095973345 | |||
| 997444273427339909597334652188435546 </dd> | 73241639236 | |||
| <dt></dt><dd> (=0x2aaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaa | (=0x2aaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaa98 | |||
| aaaaa aaaaaaaa aaaaaaaa aaad245a) </dd> | 4914a144) | |||
| <dt>GY</dt><dd> 14781619447589544791020593568409986887264 | b | |||
| 606134616475288964881837755586237401 </dd> | 557517466698189089076452890782571408182411037279010123152944008379 | |||
| <dt></dt><dd> (=0x20ae19a1 b8a086b4 e01edd2c 7748d14c 923 | 56729358436 | |||
| d4d7e 6d7c61b2 29e9c5a2 7eced3d9) </dd> | (=0x7b425ed0 97b425ed 097b425e d097b425 ed097b42 5ed097b4 260b5e9c | |||
| </dl><t> </t> | 7710c864) | |||
| </section> | GX | |||
| 192986815395526992372618308347813179755449974442734273399095973346 | ||||
| </section> | 52188435546 | |||
| (=0x2aaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa | ||||
| </back> | aaad245a) | |||
| GY | ||||
| 147816194475895447910205935684099868872646061346164752889648818377 | ||||
| 55586237401 | ||||
| (=0x20ae19a1 b8a086b4 e01edd2c 7748d14c 923d4d7e 6d7c61b2 29e9c5a2 | ||||
| 7eced3d9) | ||||
| </sourcecode> | ||||
| </section> | ||||
| <section numbered="false" removeInRFC="false" toc="include" pn="section-b. | ||||
| 5"> | ||||
| <name slugifiedName="name-acknowledgments">Acknowledgments</name> | ||||
| <t indent="0" pn="section-b.5-1"> | ||||
| Many thanks to <contact fullname="Charlie Perkins"/> for his in-depth revie | ||||
| w and constructive | ||||
| suggestions. The authors are also especially grateful to <contact fullname= | ||||
| "Robert Moskowitz"/> | ||||
| and <contact fullname="Benjamin Kaduk"/> for their comments and discussions | ||||
| that led to many improvements. | ||||
| The authors wish to also thank <contact fullname="Shwetha Bhandari"/> for a | ||||
| ctively shepherding this document and <contact fullname="Roman Danyliw"/>, <cont | ||||
| act fullname="Alissa Cooper"/>, <contact fullname="Mirja Kühlewind"/>, <contact | ||||
| fullname="Éric Vyncke"/>, <contact fullname="Vijay Gurbani"/>, <contact fullname | ||||
| ="Al Morton"/>, and <contact fullname="Adam Montville"/> for their constructive | ||||
| reviews during the IESG process. | ||||
| Finally, many thanks to our INT area ADs, <contact fullname="Suresh Krishna | ||||
| n"/> and <contact fullname="Erik Kline"/>, who | ||||
| supported us along the whole process. | ||||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | ||||
| ="include" pn="section-appendix.c"> | ||||
| <name slugifiedName="name-authors-addresses">Authors' Addresses</name> | ||||
| <author initials="P." surname="Thubert" fullname="Pascal Thubert" role="ed | ||||
| itor"> | ||||
| <organization abbrev="Cisco" showOnFrontPage="true">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="B." surname="Sarikaya" fullname="Behcet Sarikaya"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| <address> | ||||
| <postal> | ||||
| <street/> | ||||
| <street/> | ||||
| <city/> | ||||
| <region/> | ||||
| <code/> | ||||
| <country/> | ||||
| </postal> | ||||
| <email>sarikaya@ieee.org</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="M." surname="Sethi" fullname="Mohit Sethi"> | ||||
| <organization showOnFrontPage="true">Ericsson</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street/> | ||||
| <city>Jorvas</city> | ||||
| <region/> | ||||
| <code>02420</code> | ||||
| <country>Finland</country> | ||||
| </postal> | ||||
| <email>mohit@piuha.net</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="R." surname="Struik" fullname="Rene Struik"> | ||||
| <organization showOnFrontPage="true">Struik Security Consultancy</organi | ||||
| zation> | ||||
| <address> | ||||
| <postal> | ||||
| <street/> | ||||
| <city/> | ||||
| <region/> | ||||
| <code/> | ||||
| <country/> | ||||
| </postal> | ||||
| <email>rstruik.ext@gmail.com</email> | ||||
| </address> | ||||
| </author> | ||||
| </section> | ||||
| </back> | ||||
| </rfc> | </rfc> | |||
| <!-- CONVERT WARNING: wide character found at character 52617 of the output --> | ||||
| End of changes. 133 change blocks. | ||||
| 1562 lines changed or deleted | 2722 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||