| < draft-ietf-6lo-ap-nd-04.txt | draft-ietf-6lo-ap-nd-05.txt > | |||
|---|---|---|---|---|
| 6lo B. Sarikaya | 6lo P. Thubert, Ed. | |||
| Internet-Draft | Internet-Draft Cisco | |||
| Updates: 6775 (if approved) P. Thubert | Updates: 6775 (if approved) B. Sarikaya | |||
| Intended status: Standards Track Cisco | Intended status: Standards Track | |||
| Expires: May 18, 2018 M. Sethi | Expires: August 3, 2018 M. Sethi | |||
| Ericsson | Ericsson | |||
| November 14, 2017 | January 30, 2018 | |||
| Address Protected Neighbor Discovery for Low-power and Lossy Networks | Address Protected Neighbor Discovery for Low-power and Lossy Networks | |||
| draft-ietf-6lo-ap-nd-04 | draft-ietf-6lo-ap-nd-05 | |||
| Abstract | Abstract | |||
| This document defines an extension to 6LoWPAN Neighbor Discovery RFC | This document defines an extension to 6LoWPAN Neighbor Discovery (ND) | |||
| 6775. Nodes supporting this extension compute a cryptographic Owner | [RFC6775][I-D.ietf-6lo-rfc6775-update] called Address Protected ND | |||
| Unique Interface ID and associate it with one or more of their | (AP-ND); AP-ND protects the owner of an address against address theft | |||
| Registered Addresses. Once an address is registered with a | and impersonation inside a low-power and lossy network (LLN). Nodes | |||
| Cryptographic ID, only the owner of that ID can modify the anchor | supporting this extension compute a cryptographic Owner Unique | |||
| Interface ID and associate it with one or more of their Registered | ||||
| Addresses. The Cryptographic ID uniquely identifies the owner of the | ||||
| Registered Address and can be used for proof-of-ownership. It is | ||||
| used in 6LoWPAN ND in place of the EUI-64-based unique ID that is | ||||
| associated with the registration. Once an address is registered with | ||||
| a Cryptographic ID, only the owner of that ID can modify the anchor | ||||
| state information of the Registered Address, and Source Address | state information of the Registered Address, and Source Address | |||
| Validation can be enforced. | Validation can be enforced. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on May 18, 2018. | This Internet-Draft will expire on August 3, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2018 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Updating RFC 6775 . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Updating RFC 6775 . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4. New Fields and Options . . . . . . . . . . . . . . . . . . . 5 | 4. New Fields and Options . . . . . . . . . . . . . . . . . . . 5 | |||
| 4.1. New Crypto-ID . . . . . . . . . . . . . . . . . . . . . . 5 | 4.1. Encoding the Public Key . . . . . . . . . . . . . . . . . 5 | |||
| 4.2. Updated EARO . . . . . . . . . . . . . . . . . . . . . . 6 | 4.2. New Crypto-ID . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.3. New Crypto-ID Parameters Option . . . . . . . . . . . . . 7 | 4.3. Updated EARO . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 9 | 4.4. Crypto-ID Parameters Option . . . . . . . . . . . . . . . 7 | |||
| 5.1. Protocol Scope . . . . . . . . . . . . . . . . . . . . . 9 | 4.5. Nonce Option . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 5.2. Protocol Flows . . . . . . . . . . . . . . . . . . . . . 10 | 4.6. NDP Signature Option . . . . . . . . . . . . . . . . . . 9 | |||
| 5.3. Multihop Operation . . . . . . . . . . . . . . . . . . . 12 | 5. Protocol Scope . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 6. Protocol Flows . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 7. IANA considerations . . . . . . . . . . . . . . . . . . . . . 13 | 6.1. First Exchange with a 6LR . . . . . . . . . . . . . . . . 11 | |||
| 7.1. Crypto Type Registry . . . . . . . . . . . . . . . . . . 13 | 6.2. Multihop Operation . . . . . . . . . . . . . . . . . . . 12 | |||
| 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 7.1. Inheriting from RTC 3971 . . . . . . . . . . . . . . . . 14 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 14 | 7.2. Related to 6LoWPAN ND . . . . . . . . . . . . . . . . . . 15 | |||
| 9.2. Informative references . . . . . . . . . . . . . . . . . 14 | 7.3. OUID Collisions . . . . . . . . . . . . . . . . . . . . . 16 | |||
| Appendix A. Requirements Addressed in this Document . . . . . . 16 | 8. IANA considerations . . . . . . . . . . . . . . . . . . . . . 16 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 | 8.1. CGA Message Type . . . . . . . . . . . . . . . . . . . . 16 | |||
| 8.2. Crypto-Type Subregistry . . . . . . . . . . . . . . . . . 16 | ||||
| 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17 | ||||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 | ||||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . 17 | ||||
| 10.2. Informative references . . . . . . . . . . . . . . . . . 18 | ||||
| Appendix A. Requirements Addressed in this Document . . . . . . 20 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
| 1. Introduction | 1. Introduction | |||
| "Neighbor Discovery Optimizations for 6LoWPAN networks" [RFC6775] | "Neighbor Discovery Optimizations for 6LoWPAN networks" [RFC6775] | |||
| (6LoWPAN ND) adapts the classical IPv6 ND protocol [RFC4861][RFC4862] | (6LoWPAN ND) adapts the classical IPv6 ND protocol [RFC4861][RFC4862] | |||
| (IPv6 ND) for operations over a constrained low-power and lossy | (IPv6 ND) for operations over a constrained low-power and lossy | |||
| network (LLN). In particular, 6LoWPAN ND introduces a unicast host | network (LLN). In particular, 6LoWPAN ND introduces a unicast host | |||
| address registration mechanism that contributes to reduce the use of | address registration mechanism that contributes to reduce the use of | |||
| multicast messages that are present in the classical IPv6 ND | multicast messages that are present in the classical IPv6 ND | |||
| protocol. 6LoWPAN ND defines a new Address Registration Option (ARO) | protocol. 6LoWPAN ND defines a new Address Registration Option (ARO) | |||
| skipping to change at page 3, line 8 ¶ | skipping to change at page 3, line 28 ¶ | |||
| (DAC) messages between the 6LR and the 6LoWPAN Border Router (6LBR). | (DAC) messages between the 6LR and the 6LoWPAN Border Router (6LBR). | |||
| In LLN networks, the 6LBR is the central repository of all the | In LLN networks, the 6LBR is the central repository of all the | |||
| registered addresses in its domain. | registered addresses in its domain. | |||
| The registration mechanism in 6LoWPAN ND [RFC6775] prevents the use | The registration mechanism in 6LoWPAN ND [RFC6775] prevents the use | |||
| of an address if that address is already present in the subnet (first | of an address if that address is already present in the subnet (first | |||
| come first serve). In order to validate address ownership, the | come first serve). In order to validate address ownership, the | |||
| registration mechanism enables the 6LR and 6LBR to validate claims | registration mechanism enables the 6LR and 6LBR to validate claims | |||
| for a registered address with an associated Owner Unique Interface | for a registered address with an associated Owner Unique Interface | |||
| IDentifier (OUID). 6LoWPAN ND specifies that the OUID is derived from | IDentifier (OUID). 6LoWPAN ND specifies that the OUID is derived from | |||
| the MAC address of the device (EUI-64), which can be spoofed. | the MAC address of the device (using the 64-bit Extended Unique | |||
| Therefore, any node connected to the subnet and aware of a | Identifier EUI-64 address format specified by IEEE), which can be | |||
| spoofed. Therefore, any node connected to the subnet and aware of a | ||||
| registered-address-to-OUID mapping could effectively fake the OUID, | registered-address-to-OUID mapping could effectively fake the OUID, | |||
| steal the address and redirect traffic for that address towards a | steal the address and redirect traffic for that address towards a | |||
| different 6LN. The "Update to 6LoWPAN ND" | different 6LN. The "Update to 6LoWPAN ND" | |||
| [I-D.ietf-6lo-rfc6775-update] defines an Extended ARO (EARO) option | [I-D.ietf-6lo-rfc6775-update] defines an Extended ARO (EARO) option | |||
| that allows to transport alternate forms of OUIDs, and is a | that allows to transport alternate forms of OUIDs, and is a | |||
| prerequisite for this specification. | prerequisite for this specification. | |||
| According to this specification, a 6LN generates a cryptographic ID | According to this specification, a 6LN generates a cryptographic ID | |||
| (Crypto-ID) and places it in the OUID field in the registration of | (Crypto-ID) and places it in the OUID field in the registration of | |||
| one (or more) of its addresses with the 6LR(s) that the 6LN uses as | one (or more) of its addresses with the 6LR(s) that the 6LN uses as | |||
| default router(s). Proof of ownership of the cryptographic ID | default router(s). Proof of ownership of the cryptographic ID | |||
| (Crypto-ID) is passed with the first registration to a given 6LR, and | (Crypto-ID) is passed with the first registration exchange to a new | |||
| enforced at the 6LR, in a new Crypto-ID Parameters Option (CIPO). | 6LR, and enforced at the 6LR. The 6LR validates ownership of the | |||
| The 6LR validates ownership of the cryptographic ID upon the creation | cryptographic ID before it can create a registration state, or a | |||
| of a registration state, or a change in the anchor information, such | change the anchor information, that is the Link-Layer Address and | |||
| as Link-Layer Address and associated Layer-2 cryptographic material. | associated parameters, in an existing registration state. | |||
| The protected address registration protocol proposed in this document | The protected address registration protocol proposed in this document | |||
| enables the enforcement of Source Address Validation (SAVI) | enables the enforcement of Source Address Validation (SAVI) | |||
| [RFC7039], which ensures that only the correct owner uses a | [RFC7039], which ensures that only the correct owner uses a | |||
| registered address in the source address field in IPv6 packets. | registered address in the source address field in IPv6 packets. | |||
| Consequently, a 6LN that sources a packet has to use a 6LR to which | Consequently, a 6LN that sources a packet has to use a 6LR to which | |||
| the source address of the packet is registered to forward the packet. | the source address of the packet is registered to forward the packet. | |||
| The 6LR maintains state information for the registered addressed, | The 6LR maintains state information for the registered addressed, | |||
| including the MAC address, and a link-layer cryptographic key | including the MAC address, and a link-layer cryptographic key | |||
| associated with the 6LN. In SAVI-enforcement mode, the 6LR allows | associated with the 6LN. In SAVI-enforcement mode, the 6LR allows | |||
| only packets from a connected Host if the connected Host owns the | only packets from a connected Host if the connected Host owns the | |||
| registration of the source address of the packet. | registration of the source address of the packet. | |||
| The 6lo adaptation layer framework ([RFC4944], [RFC6282]) expects | The 6lo adaptation layer framework ([RFC4944], [RFC6282]) expects | |||
| that a device forms its IPv6 addresses based on Layer-2 address, so | that a device forms its IPv6 addresses based on Layer-2 address, so | |||
| as to enable a better compression. This is incompatible with "Secure | as to enable a better compression. This is incompatible with "Secure | |||
| Neighbor Discovery (SEND)" [RFC3971] and "Cryptographically Generated | Neighbor Discovery (SeND)" [RFC3971] and "Cryptographically Generated | |||
| Addresses (CGAs)" [RFC3972], which derive the Interface ID (IID) in | Addresses (CGAs)" [RFC3972], which derive the Interface ID (IID) in | |||
| the IPv6 addresses from cryptographic material. "Privacy | the IPv6 addresses from cryptographic material. "Privacy | |||
| Considerations for IPv6 Address Generation Mechanisms" [RFC7721] | Considerations for IPv6 Address Generation Mechanisms" [RFC7721] | |||
| places additional recommendations on the way addresses should be | places additional recommendations on the way addresses should be | |||
| formed and renewed. | formed and renewed. | |||
| This document specifies that a device may form and register addresses | This document specifies that a device may form and register addresses | |||
| at will, without a constraint on the way the address is formed or the | at will, without a constraint on the way the address is formed or the | |||
| number of addresses that are registered in parallel. It enables to | number of addresses that are registered in parallel. It enables to | |||
| protect multiple addresses with a single cryptographic material and | protect multiple addresses with a single cryptographic material and | |||
| skipping to change at page 4, line 21 ¶ | skipping to change at page 4, line 41 ¶ | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| Readers are expected to be familiar with all the terms and concepts | Readers are expected to be familiar with all the terms and concepts | |||
| that are discussed in [RFC3971], [RFC3972], [RFC4861], [RFC4919], | that are discussed in [RFC3971], [RFC3972], [RFC4861], [RFC4919], | |||
| [RFC6775], and [I-D.ietf-6lo-backbone-router] which proposes an | [RFC6775], and [I-D.ietf-6lo-backbone-router] which proposes an | |||
| evolution of [RFC6775] for wider applicability. | evolution of [RFC6775] for wider applicability. | |||
| This document defines Crypto-ID as an identifier of variable size | This document defines Crypto-ID as an identifier of variable size | |||
| which in most cases is 64 bits long. It is generated using | which in most cases is 64 bits long. It is generated using | |||
| cryptographic means explained later in this document Section 4.1. | cryptographic means explained later in this document Section 4.2. | |||
| "Elliptic Curves for Security" [RFC7748] and "Edwards-Curve Digital | "Elliptic Curves for Security" [RFC7748] and "Edwards-Curve Digital | |||
| Signature Algorithm (EdDSA)" [RFC8032] provides information on | Signature Algorithm (EdDSA)" [RFC8032] provides information on | |||
| Elliptic Curve Cryptography (ECC) and a (twisted) Edwards curve, | Elliptic Curve Cryptography (ECC) and a (twisted) Edwards curve, | |||
| Ed25519, which can be used with this specification. "Alternative | Ed25519, which can be used with this specification. "Alternative | |||
| Elliptic Curve Representations" | Elliptic Curve Representations" | |||
| [I-D.struik-lwip-curve-representations] provides additional | [I-D.struik-lwig-curve-representations] provides additional | |||
| information on how to represent Montgomery curves and (twisted) | information on how to represent Montgomery curves and (twisted) | |||
| Edwards curves as curves in short-Weierstrass form and illustrates | Edwards curves as curves in short-Weierstrass form and illustrates | |||
| how this can be used to implement elliptic curve computations using | how this can be used to implement elliptic curve computations using | |||
| existing implementations that already implement, e.g., ECDSA and ECDH | existing implementations that already implement, e.g., ECDSA and ECDH | |||
| using NIST [FIPS186-4] prime curves. | using NIST [FIPS-186-4] prime curves. | |||
| The document also conforms to the terms and models described in | The document also conforms to the terms and models described in | |||
| [RFC5889] and uses the vocabulary and the concepts defined in | [RFC5889] and uses the vocabulary and the concepts defined in | |||
| [RFC4291] for the IPv6 Architecture. Finally, common terminology | [RFC4291] for the IPv6 Architecture. Finally, common terminology | |||
| related to Low power And Lossy Networks (LLN) defined in [RFC7102] is | related to Low power And Lossy Networks (LLN) defined in [RFC7102] is | |||
| also used. | also used. | |||
| 3. Updating RFC 6775 | 3. Updating RFC 6775 | |||
| This specification defines a cryptographic identifier (Crypto-ID) | This specification defines a cryptographic identifier (Crypto-ID) | |||
| that can be used as a replacement to the MAC address in the OUID | that can be used as a replacement to the MAC address in the OUID | |||
| field of the EARO option; the computation of the Crypto-ID is | field of the EARO option; the computation of the Crypto-ID is | |||
| detailed in Section 4.1. A node in possession of the necessary | detailed in Section 4.2. A node in possession of the necessary | |||
| cryptographic material SHOULD use Crypto-ID by default as OUID in its | cryptographic material SHOULD use Crypto-ID by default as OUID in its | |||
| registration. Whether a OUID is a Crypto-ID is indicated by a new | registration. Whether a OUID is a Crypto-ID is indicated by a new | |||
| "C" flag in the NS(EARO) message. | "C" flag in the NS(EARO) message. | |||
| This specification introduces a new option, the CIPO, that is used to | In order to prove its ownership of a Crypto-ID, the registering node | |||
| prove ownership of the Crypto-ID. A node that registers for the | needs to produce the parameters that where used to build it, as well | |||
| first time to a 6LR SHOULD place a CIPO option in its registration. | as a nonce and a signature that will prove that it has the private | |||
| However, it is not expected to place the option in the periodic | key that corresponds to the public key that was used to build the | |||
| refresher registrations for that address, or to register other | Crypto-ID. This specification adds the capability to carry new | |||
| addresses with the same OUID. When a 6LR receives a NS(EARO) | options in the NS(EARO) and the NBA(EARO). These options are a | |||
| registration with a new Crypto-ID as a OUID, it SHOULD challenge by | variation of the CGA Option Section 4.4, a Nonce option and a | |||
| responding with a NA(EARO) with a status of "Validation Requested". | variation of the RSA Signature option Section 4.6 in the NS(EARO) and | |||
| This process of validation MAY be skipped in networks where there is | a Nonce option in the NA(EARO). | |||
| no mobility. | ||||
| The challenge MUST also be triggered in the case of a registration | 4. New Fields and Options | |||
| for which the Source Link-Layer Address is not consistent with a | ||||
| state that already exists either at the 6LR or the 6LBR. In the | ||||
| latter case, the 6LBR returns a status of "Validation Requested" in | ||||
| the DAR/DAC exchange, which is echoed by the 6LR in the NA (EARO) | ||||
| back to the registering node. This flow should not alter a | ||||
| preexisting state in the 6LR or the 6LBR. | ||||
| Upon receiving a NA(EARO) with a status of "Validation Requested", | In order to avoid an inflation of ND option types, this specification | |||
| the registering node SHOULD retry its registration with a CIPO option | reuses / extends options defined in SEND [RFC3971] and 6LoWPAN ND | |||
| that proves its ownership of the Crypto-ID. | [RFC6775][I-D.ietf-6lo-rfc6775-update]. This applies in particular | |||
| to the CGA option and the RSA Signature Option. This specification | ||||
| provides aliases for the specific variations of those options as used | ||||
| in AP-ND. The presence of the EARO option in the NS/NA messages | ||||
| indicates that the options are to be understood as specified in this | ||||
| document. A router that would receive a NS(EARO) and try to process | ||||
| it as a SEND message will find that the signature does not match and | ||||
| drop the packet. | ||||
| If the 6LR cannot validate the CIPO, it responds with a status of | 4.1. Encoding the Public Key | |||
| "Validation Failed". After receiving a NA(EARO) with a status of | ||||
| "Validation Failed", the registering node MUST NOT use this Crypto-ID | ||||
| for registering with that 6LR. | ||||
| 4. New Fields and Options | Public Key is the most important parameter in CGA Parameters (sent by | |||
| 6LN in an NS message). ECC Public Key could be in uncompressed form | ||||
| or in compressed form where the first octet of the OCTET STRING is | ||||
| 0x04 and 0x02 or 0x03, respectively. Point compression can further | ||||
| reduce the key size by about 32 octets. | ||||
| 4.1. New Crypto-ID | 4.2. New Crypto-ID | |||
| Elliptic Curve Cryptography (ECC) is used to calculate the Crypto-ID. | Elliptic Curve Cryptography (ECC) is used to calculate the Crypto-ID. | |||
| Each 6LN using a Crypto-ID for registration MUST have a public/ | Each 6LN using a Crypto-ID for registration MUST have a public/ | |||
| private key pair. The digital signature is constructed by using the | private key pair. The digital signature is constructed by using the | |||
| 6LN's private key over its EUI-64 (MAC) address. The signature value | 6LN's private key over its EUI-64 (MAC) address. The signature value | |||
| is computed using the ECDSA signature algorithm and the hash function | is computed using the ECDSA signature algorithm and the hash function | |||
| used is SHA-256 [RFC6234]. Public Key is the most important | used is SHA-256 [RFC6234]. | |||
| parameter in CGA Parameters (sent by 6LN in an NS message). ECC | ||||
| Public Key could be in uncompressed form or in compressed form where | ||||
| the first octet of the OCTET STRING is 0x04 and 0x02 or 0x03, | ||||
| respectively. Point compression can further reduce the key size by | ||||
| about 32 octets. | ||||
| NIST P-256 [FIPS186-4] that MUST be supported by all implementations. | ||||
| To support cryptographic algorithm agility [RFC7696], Edwards-Curve | To support cryptographic algorithm agility [RFC7696], Edwards-Curve | |||
| Digital Signature Algorithm (EdDSA) curve Ed25519ph (pre-hashing) | Digital Signature Algorithm (EdDSA) curve Ed25519ph (pre-hashing) | |||
| [RFC8032] can also be used as an alternate to the default NIST P-256 | [RFC8032] MAY be supported as an alternate. | |||
| [FIPS186-4]. This is indicated by 6LN using the Crypto Type field in | ||||
| the CIPO option. The document currently only defines two possible | ||||
| values for the Crypto Type field. A value of 0 indicates that NIST | ||||
| P-256 is used for the signature operation and SHA-256 as the hash | ||||
| algorithm. A value of 1 indicates that Ed25519ph is used for the | ||||
| signature operation and SHA-256 as the hash algorithm. New values | ||||
| for the Crypto Type maybe defined in the future for new curves. | ||||
| The Crypto-ID is computed as follows: | The Crypto-ID is computed as follows: | |||
| 1. the modifier is set to a random or pseudo-random 128-bit value | 1. An 8-bits modifier is selected, for instance, but not | |||
| necessarily, randomly; the modifier enables a device to form | ||||
| 2. the modifier, 9 zero octets and the ECC public key are | multiple Crypto-IDs with a single key pair. This may be useful | |||
| concatenated from left to right. | for privacy reasons in order to avoid the correlation of | |||
| addresses based on their Crypto-ID; | ||||
| 3. the SHA-256 algorithm is applied on the concatenation | ||||
| 4. the 112 leftmost bits of the hash value are retained | ||||
| 5. the modifier value, the EUI-64 transformation of the device Link | 2. the modifier value and the DER-encoded public key (Section 4.1) | |||
| Layer Address and the encoded public key are concatenated from | are concatenated from left to right; | |||
| left to right | ||||
| 6. Digital signature (NIST P-256 or EdDSA) is executed on the | 3. Digital signature (SHA-256 then either NIST P-256 or EdDSA) is | |||
| concatenation | executed on the concatenation | |||
| 7. the leftmost bits of the resulting signature are used as the | 4. the leftmost bits of the resulting signature are used as the | |||
| Crypto-ID. | Crypto-ID; | |||
| With this specification, only 64 bits are retained, but it could be | With this specification, only 64 bits are retained, but it could be | |||
| expanded to more bits in the future by increasing the size of the | expanded to more bits in the future by increasing the size of the | |||
| OUID field. | OUID field. | |||
| 4.2. Updated EARO | 4.3. Updated EARO | |||
| This specification updates the EARO option as follows: | This specification updates the EARO option as follows: | |||
| 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 | Reserved | | | Type | Length | Status | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Reserved |C|T| TID | Registration Lifetime | | | Reserved |C|T| TID | Registration Lifetime | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| + Owner Unique ID (EUI-64 or equivalent) + | + Owner Unique ID (EUI-64 or Crypto-ID) + | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 1: Enhanced Address Registration Option | Figure 1: Enhanced Address Registration Option | |||
| Type: 33 | Type: 33 | |||
| Length: 8-bit unsigned integer. The length of the option | Length: 8-bit unsigned integer. The length of the option | |||
| (including the type and length fields) in units of 8 | (including the type and length fields) in units of 8 | |||
| bytes. | bytes. | |||
| skipping to change at page 7, line 23 ¶ | skipping to change at page 7, line 37 ¶ | |||
| NS messages. This specification uses values | NS messages. This specification uses values | |||
| introduced in the update to 6LoWPAN ND | introduced in the update to 6LoWPAN ND | |||
| [I-D.ietf-6lo-rfc6775-update], such as "Validation | [I-D.ietf-6lo-rfc6775-update], such as "Validation | |||
| Requested" and "Validation Failed". No additional | Requested" and "Validation Failed". No additional | |||
| value is defined. | value is defined. | |||
| Reserved: This field is unused. It MUST be initialized to zero | Reserved: This field is unused. It MUST be initialized to zero | |||
| by the sender and MUST be ignored by the receiver. | by the sender and MUST be ignored by the receiver. | |||
| C: This "C" flag is set to indicate that the Owner | C: This "C" flag is set to indicate that the Owner | |||
| Unique ID field contains a Crypto-ID. | Unique ID field contains a Crypto-ID and that the 6LN | |||
| MAY be challenged for ownership as specified in this | ||||
| document. | ||||
| T and TID: Defined in [I-D.ietf-6lo-rfc6775-update]. | T and TID: Defined in [I-D.ietf-6lo-rfc6775-update]. | |||
| Owner Unique ID: When the "C" flag is set, this field contains a | Owner Unique ID: When the "C" flag is set, this field contains a | |||
| Crypto-ID. | Crypto-ID. | |||
| 4.3. New Crypto-ID Parameters Option | 4.4. Crypto-ID Parameters Option | |||
| This specification introduces a new option, the Crypto-ID Parameters | This specification defines the Crypto-ID Parameters Option (CIPO), as | |||
| Option (CIPO), that carries the proof of ownership of a crypto-ID. | a variation of the CGA Option that carries the parameters used to | |||
| form a Crypto-ID. In order to provide cryptographic agility, AP-ND | ||||
| supports two possible signature algorithms, indicated by a Crypto- | ||||
| Type field. A value of 0 indicates that NIST P-256 is used for the | ||||
| signature operation and SHA-256 as the hash algorithm. NIST P-256 | ||||
| MUST be supported by all implement A value of 1 indicates that | ||||
| Ed25519ph is used for the signature operation and SHA-256 as the hash | ||||
| algorithm. | ||||
| 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 | Pad Length | Crypto Type | | | Type | Length | Pad Length | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| + + | ||||
| | | | ||||
| + Modifier (16 octets) + | ||||
| | | | ||||
| + + | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | Crypto-Type | Modifier | Reserved | | |||
| + Subnet Prefix (8 octets) + | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| | | | | | | |||
| + Public Key (variable length) + | . . | |||
| . Public Key (variable length) . | ||||
| . . | ||||
| | | | | | | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| . . | . . | |||
| . Padding . | . Padding . | |||
| . . | . . | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 2: Crypto-ID Parameters Option | Figure 2: Crypto-ID Parameters Option | |||
| Type: CIPO, to be assigned by IANA. | Type: 11. This is the same value as the CGA Option, CIPO | |||
| is a particular case of the CGA option | ||||
| Length: The length of the option in units of 8 octets. | Length: 8-bit unsigned integer. The length of the option in | |||
| units of 8 octets. | ||||
| Pad Length: The length of the Padding field. | Modifier: 8-bit unsigned integer. | |||
| Crypto Type: The type of cryptographic algorithm used in | Pad Length: 8-bit unsigned integer. The length of the Padding | |||
| field. | ||||
| Crypto-Type: The type of cryptographic algorithm used in | ||||
| calculation Crypto-ID. Default value of all zeros | calculation Crypto-ID. Default value of all zeros | |||
| indicate NIST P-256. A value of 1 is assigned for | indicate NIST P-256. A value of 1 is assigned for | |||
| Ed25519ph. New values may be defined later. | Ed25519ph. New values may be defined later. | |||
| Modifier: 128 bit random value. | Public Key: Public Key of 6LN. | |||
| Subnet Prefix: 64 bit subnet prefix. | ||||
| Public Key: ECC public key of 6LN. | ||||
| Padding: A variable-length field making the option length a | Padding: A variable-length field making the option length a | |||
| multiple of 8, containing as many octets as specified | multiple of 8, containing as many octets as specified | |||
| in the Pad Length field. | in the Pad Length field. | |||
| 5. Protocol Overview | 4.5. Nonce Option | |||
| 5.1. Protocol Scope | This document reuses the Nonce Option defined in section 5.3.2. of | |||
| SEND [RFC3971] without a change. | ||||
| 4.6. NDP Signature Option | ||||
| This document reuses the RSA Signature Option (RSAO) defined in | ||||
| section 5.2. of SEND [RFC3971]. Admittedly, the name is ill-chosen | ||||
| since the option is extended for non-RSA Signatures and this | ||||
| specification defines an alias to avoid the confusion. | ||||
| The description of the operation on the option detailed in section | ||||
| 5.2. of SEND [RFC3971] apply, but for the following changes: | ||||
| o The 128-bit CGA Message Type tag [RFC3972] for AP-ND is 0x8701 | ||||
| 55c8 0cca dd32 6ab7 e415 f148 84d0. (The tag value has been | ||||
| generated by the editor of this specification on random.org). | ||||
| o The signature is computed using the hash algorithm and the digital | ||||
| signature indicated in the Crypto-Type field of the CIPO option | ||||
| using the private key associated with the public key in the CIPO. | ||||
| o The alias NDP Signature Option (NDPSO) can be used to refer to the | ||||
| RSAO when used as described in this specification. | ||||
| 5. Protocol Scope | ||||
| The scope of the present work is a 6LoWPAN Low Power Lossy Network | The scope of the present work is a 6LoWPAN Low Power Lossy Network | |||
| (LLN), typically a stub network connected to a larger IP network via | (LLN), typically a stub network connected to a larger IP network via | |||
| a Border Router called a 6LBR per [RFC6775]. | a Border Router called a 6LBR per [RFC6775]. | |||
| The 6LBR maintains a registration state for all devices in the | The 6LBR maintains a registration state for all devices in the | |||
| attached LLN, and, in conjunction with the first-hop router (the | attached LLN, and, in conjunction with the first-hop router (the | |||
| 6LR), is in a position to validate uniqueness and grant ownership of | 6LR), is in a position to validate uniqueness and grant ownership of | |||
| an IPv6 address before it can be used in the LLN. This is a | an IPv6 address before it can be used in the LLN. This is a | |||
| fundamental difference with a classical network that relies on IPv6 | fundamental difference with a classical network that relies on IPv6 | |||
| skipping to change at page 10, line 5 ¶ | skipping to change at page 10, line 28 ¶ | |||
| 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 expects that the peer-wise layer-2 security is | This specification expects that the peer-wise layer-2 security is | |||
| deployed so that all the packets from a particular host are securely | deployed so that all the packets from a particular host are securely | |||
| identifiable by the 6LR. The 6LR may be multiple hops away from the | identifiable by the 6LR. The 6LR may be multiple hops away from the | |||
| 6LBR. Packets are routed between the 6LR and the 6LBR via other | 6LBR. Packets are routed between the 6LR and the 6LBR via other | |||
| 6LRs. This specification expects that a chain of trust is | 6LRs. This specification expects that a chain of trust is | |||
| established so that a packet that was validated by the first 6LR can | established so that a packet that was validated by the first 6LR can | |||
| be safely routed by the next 6LRs to the 6LBR. | be safely routed by the next 6LRs to the 6LBR. | |||
| 5.2. Protocol Flows | 6. Protocol Flows | |||
| Figure 4 illustrates a registration flow all the way to a 6LowPAN | The 6LR/6LBR ensures first-come/first-serve by storing the EARO | |||
| Backbone Router (6BBR). | information including the Crypto-ID correlated to the node being | |||
| registered. The node is free to claim any address it likes as long | ||||
| as it is the first to make such a claim. After a successful | ||||
| registration, the node becomes the owner of the registered address | ||||
| and the address is bound to the Crypto-ID in the 6LR/6LBR registry. | ||||
| This specification enables to verify the ownership of the binding at | ||||
| any time assuming that the "C" flag is set. If it is not set, then | ||||
| the verification methods presented in this specification cannot be | ||||
| applied. The verification prevents other nodes from stealing the | ||||
| address and trying to attract traffic for that address or use it as | ||||
| their source address. | ||||
| A node may use multiple IPv6 addresses at the same time. The node | ||||
| may use a same Crypto-ID, or multiple crypto-IDs derived from a same | ||||
| key pair, to protect multiple IPv6 addresses. The separation of the | ||||
| address and the cryptographic material avoids the constrained device | ||||
| to compute multiple keys for multiple addresses. The registration | ||||
| process allows the node to bind all of its addresses to the same | ||||
| Crypto-ID. | ||||
| 6.1. First Exchange with a 6LR | ||||
| A 6LN registers to a 6LR that is one hop away from it with the "C" | ||||
| flag set in the EARO, indicating that the Owner Unique ID field | ||||
| contains a Crypto-ID. The on-link (local) protocol interactions are | ||||
| shown in Figure 4 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. | ||||
| The Nonce option MUST contain a Nonce value that was never used with | ||||
| this device. | ||||
| The 6LN replies to the challenge with a proof-of-ownership NS(EARO) | ||||
| that includes the echoed Nonce option, the CIPO with all the | ||||
| parameters that where used to build EARO with a Crypto-ID, and as the | ||||
| last option the NDPSO with the signature. The information associated | ||||
| to a crypto-ID is passed to and stored by the 6LR on the first NS | ||||
| exchange where it appears. The 6LR SHOULD store the CIPO information | ||||
| associated with the crypto-ID so it can be used for more than one | ||||
| address. | ||||
| 6LN 6LR | ||||
| | | | ||||
| |<------------------------- RA -------------------------| | ||||
| | | ^ | ||||
| |---------------- NS with EARO (Crypto-ID) ------------>| | | ||||
| | | option | ||||
| |<- NA with EARO (status=Validation Requested), Nonce --| | | ||||
| | | v | ||||
| |-------- NS with EARO, CIPO, Nonce and NDPSO --------->| | ||||
| | | | ||||
| |<------------------- NA with EARO ---------------------| | ||||
| | | | ||||
| ... | ||||
| | | | ||||
| |--------------- NS with EARO (Crypto-ID) ------------->| | ||||
| | | | ||||
| |<------------------- NA with EARO ---------------------| | ||||
| | | | ||||
| ... | ||||
| | | | ||||
| |--------------- NS with EARO (Crypto-ID) ------------->| | ||||
| | | | ||||
| |<------------------- NA with EARO ---------------------| | ||||
| | | | ||||
| Figure 4: On-link Protocol Operation | ||||
| The steps for the registration to the 6LR are as follows: | ||||
| o Upon the first exchange with a 6LR, a 6LN may be challenged and | ||||
| have to produce the proof of ownership of the Crypto-ID. However, | ||||
| it is not expected that the proof is needed again in the periodic | ||||
| refresher registrations for that address, or when registering | ||||
| other addresses with the same OUID. When a 6LR receives a | ||||
| NS(EARO) registration with a new Crypto-ID as a OUID, it SHOULD | ||||
| challenge by responding with a NA(EARO) with a status of | ||||
| "Validation Requested". This process of validation MAY be skipped | ||||
| in networks where there is no mobility. | ||||
| o The challenge MUST also be triggered in the case of a registration | ||||
| for which the Source Link-Layer Address is not consistent with a | ||||
| state that already exists either at the 6LR or the 6LBR. In the | ||||
| latter case, the 6LBR returns a status of "Validation Requested" | ||||
| in the DAR/DAC exchange, which is echoed by the 6LR in the NA | ||||
| (EARO) back to the registering node. This flow should not alter a | ||||
| preexisting state in the 6LR or the 6LBR. | ||||
| o Upon receiving a NA(EARO) with a status of "Validation Requested", | ||||
| the registering node SHOULD retry its registration with a Crypto- | ||||
| ID Parameters Option (CIPO) Section 4.4 that contains all the | ||||
| necessary material for building the Crypto-ID, the Nonce and the | ||||
| NDP signature Section 4.6 options that prove its ownership of the | ||||
| Crypto-ID. | ||||
| o In order to validate the ownership, the 6LR performs the same | ||||
| steps as the 6LN and rebuilds the Crypto-ID based on the | ||||
| parameters in the CIPO. If the result is different then the | ||||
| validation fails. Else, the 6LR checks the signature in the NDPSO | ||||
| using the public key in the CIPO. If it is correct then the | ||||
| validation passes, else it fails. | ||||
| o If the 6LR fails to validate the signed NS(EARO), it responds with | ||||
| a status of "Validation Failed". After receiving a NA(EARO) with | ||||
| a status of "Validation Failed", the registering node SHOULD try | ||||
| an alternate Signature Algorithm and Crypto-ID. In any case, it | ||||
| MUST NOT use this Crypto-ID for registering with that 6LR again. | ||||
| 6.2. Multihop Operation | ||||
| In a multihop 6LoWPAN, the registration with Crypto-ID is propagated | ||||
| to 6LBR as described in Section 6.2. If a chain of trust is present | ||||
| between the 6LR and the 6LBR, then there is no need to propagate the | ||||
| proof of ownership to the 6LBR. All the 6LBR needs to know is that | ||||
| this particular OUID is randomly generated, so as to enforce that any | ||||
| update via a different 6LR is also random. | ||||
| A new device that joins the network auto-configures an address and | A new device that joins the network auto-configures an address and | |||
| performs an initial registration to an on-link 6LR with an NS message | performs an initial registration to an on-link 6LR with an NS message | |||
| that carries an Address Registration Option (EARO) [RFC6775]. The | that carries an Address Registration Option (EARO) [RFC6775]. The | |||
| 6LR validates the address with the central 6LBR using a DAR/DAC | 6LR validates the address with the central 6LBR using a DAR/DAC | |||
| exchange, and the 6LR confirms (or denies) the address ownership with | exchange, and the 6LR confirms (or denies) the address ownership with | |||
| an NA message that also carries an Address Registration Option. | an NA message that also carries an Address Registration Option. | |||
| In a multihop 6LoWPAN, the registration with Crypto-ID is propagated | Figure 5 illustrates a registration flow all the way to a 6LowPAN | |||
| to 6LBR as described in Section 5.3. If a chain of trust is present | Backbone Router (6BBR). | |||
| between the 6LR and the 6LBR, then there is no need to propagate the | ||||
| proof of ownership to the 6LBR. All the 6LBR needs to know is that | ||||
| this particular OUID is randomly generated, so as to enforce that any | ||||
| update via a different 6LR is also random. | ||||
| 6LN 6LR 6LBR 6BBR | 6LN 6LR 6LBR 6BBR | |||
| | | | | | | | | | | |||
| | NS(EARO) | | | | | NS(EARO) | | | | |||
| |--------------->| | | | |--------------->| | | | |||
| | | Extended DAR | | | | | Extended DAR | | | |||
| | |-------------->| | | | |-------------->| | | |||
| | | | | | | | | | | |||
| | | | proxy NS(EARO) | | | | | proxy NS(EARO) | | |||
| | | |--------------->| | | | |--------------->| | |||
| skipping to change at page 10, line 46 ¶ | skipping to change at page 13, line 37 ¶ | |||
| | | | | <wait> | | | | | <wait> | |||
| | | | | | | | | | | |||
| | | | proxy NA(EARO) | | | | | proxy NA(EARO) | | |||
| | | |<---------------| | | | |<---------------| | |||
| | | Extended DAC | | | | | Extended DAC | | | |||
| | |<--------------| | | | |<--------------| | | |||
| | NA(EARO) | | | | | NA(EARO) | | | | |||
| |<---------------| | | | |<---------------| | | | |||
| | | | | | | | | | | |||
| Figure 4: (Re-)Registration Flow | Figure 5: (Re-)Registration Flow | |||
| On-link (local) protocol interactions are shown in Figure 5. Crypto- | ||||
| ID and ARO are passed to and stored by the 6LR on the first NS and | ||||
| not sent again in the next NS. The operation starts with 6LR sending | ||||
| a Router Advertisement (RA) message to 6LN. | ||||
| The 6LR/6LBR ensures first-come/first-serve by storing the ARO and | ||||
| the Crypto-ID correlated to the node being registered. The node is | ||||
| free to claim any address it likes as long as it is the first to make | ||||
| such a claim. After a successful registration, the node becomes the | ||||
| owner of the registered address and the address is bound to the | ||||
| Crypto-ID in the 6LR/6LBR registry. This binding can be verified | ||||
| later, which prevents other nodes from stealing the address and | ||||
| trying to attract traffic for that address or use it as their source | ||||
| address. | ||||
| A node may use multiple IPv6 addresses at the same time. The node | ||||
| may use the same Crypto-ID to protect multiple IPv6 addresses. The | ||||
| separation of the address and the Crypto-ID avoids the constrained | ||||
| device to compute multiple keys for multiple addresses. The | ||||
| registration process allows the node to bind all of its addresses to | ||||
| the same Crypto-ID. | ||||
| 6LN 6LR | ||||
| | | | ||||
| |<------------------- RA --------------------------| | ||||
| | | | ||||
| |----------- NS with ARO and Crypto-ID ----------->| | ||||
| | | | ||||
| |<---------- NA with ARO (status=proof requested) -| | ||||
| | | | ||||
| |----------- NS with ARO and Crypto-ID ----------->| | ||||
| | | | ||||
| |<---------------- NA with ARO --------------------| | ||||
| | | | ||||
| ... ... | ||||
| | | | ||||
| |------------ NS with ARO and Crypto-ID ---------->| | ||||
| | | | ||||
| | | | ||||
| |<---------------- NA with ARO --------------------| | ||||
| ... ... | ||||
| | | | ||||
| |----------- NS with ARO and Crypto-ID ----------->| | ||||
| | | | ||||
| | | | ||||
| |<---------------- NA with ARO --------------------| | ||||
| Figure 5: On-link Protocol Operation | ||||
| 5.3. Multihop Operation | ||||
| In a multihop 6LoWPAN, a 6LBR sends RAs with prefixes downstream and | In a multihop 6LoWPAN, a 6LBR sends RAs with prefixes downstream and | |||
| the 6LR receives and relays them to the nodes. 6LR and 6LBR | the 6LR receives and relays them to the nodes. 6LR and 6LBR | |||
| communicate using ICMPv6 Duplicate Address Request (DAR) and | communicate using ICMPv6 Duplicate Address Request (DAR) and | |||
| Duplicate Address Confirmation (DAC) messages. The DAR and DAC use | Duplicate Address Confirmation (DAC) messages. The DAR and DAC use | |||
| the same message format as NS and NA, but have different ICMPv6 type | the same message format as NS and NA, but have different ICMPv6 type | |||
| values. | values. | |||
| In ND-PAR we extend DAR/DAC messages to carry cryptographically | In AP-ND we extend DAR/DAC messages to carry cryptographically | |||
| generated OUID. In a multihop 6LoWPAN, the node exchanges the | generated OUID. In a multihop 6LoWPAN, the node exchanges the | |||
| messages shown in Figure 4. The 6LBR must identify who owns an | messages shown in Figure 5. The 6LBR must identify who owns an | |||
| address (EUI-64) to defend it, if there is an attacker on another | address (EUI-64) to defend it, if there is an attacker on another | |||
| 6LR. Because of this the content that the source signs and the | 6LR. | |||
| signature needs to be propagated to the 6LBR in the DAR message. For | ||||
| this purpose the DAR message sent by 6LR to 6LBR MUST contain the | ||||
| CIPO option. The DAR message also contains ARO. | ||||
| Occasionally, a 6LR might miss the node's OUID (that it received in | Occasionally, a 6LR might miss the node's OUID (that it received in | |||
| ARO). 6LR should be able to ask for it again. This is done by | ARO). 6LR should be able to ask for it again. This is done by | |||
| restarting the exchanges shown in Figure 5. The result enables 6LR | restarting the exchanges shown in Figure 4. The result enables 6LR | |||
| to refresh the information that was lost. The 6LR MUST send DAR | to refresh the information that was lost. The 6LR MUST send DAR | |||
| message with ARO to 6LBR. The 6LBR replies with a DAC message with | message with ARO to 6LBR. The 6LBR replies with a DAC message with | |||
| the information copied from the DAR, and the Status field is set to | the information copied from the DAR, and the Status field is set to | |||
| zero. With this exchange, the 6LBR can (re)validate and store the | zero. With this exchange, the 6LBR can (re)validate and store the | |||
| information to make sure that the 6LR is not a fake. | information to make sure that the 6LR is not a fake. | |||
| In some cases, the 6LBR may use a DAC message to solicit a Crypto-ID | In some cases, the 6LBR may use a DAC message to solicit a Crypto-ID | |||
| from a 6LR and also requests 6LR to verify the EUI-64 6LR received | from a 6LR and also requests 6LR to verify the EUI-64 6LR received | |||
| from 6LN. This may happen when a 6LN node is compromised and a fake | from 6LN. This may happen when a 6LN node is compromised and a fake | |||
| node is sending the Crypto-ID as if it is the node's EUI-64. Note | node is sending the Crypto-ID as if it is the node's EUI-64. Note | |||
| that the detection in this case can only be done by 6LBR not by 6LR. | that the detection in this case can only be done by 6LBR not by 6LR. | |||
| 6. Security Considerations | 7. Security Considerations | |||
| 7.1. Inheriting from RTC 3971 | ||||
| The observations regarding the threats to the local network in | The observations regarding the threats to the local network in | |||
| [RFC3971] also apply to this specification. | [RFC3971] also apply to this specification. Considering RFC3971 | |||
| security section subsection by subsection: | ||||
| Neighbor Solicitation/Advertisement Spoofing Threats in section | ||||
| 9.2.1 of RFC3971 apply. AP-ND counters the threats on NS(EARO) | ||||
| messages by requiring that the NDP Signature and CIPO options be | ||||
| present in these solicitations. | ||||
| Neighbor Unreachability Detection Failure With RFC6775, a NUD can | ||||
| still be used by the endpoint to assess the liveliness of a | ||||
| device. The NUD request may be protected by SEND in which case | ||||
| the provision in section 92.2. of RFC 3972 applies. The response | ||||
| to the NUD may be proxied by a backbone router only if it has a | ||||
| fresh registration state for it. The registration being protected | ||||
| by this specification, the proxied NUD response provides a | ||||
| truthful information on the original owner of the address but it | ||||
| cannot be proven using SEND. If the NUD response is not proxied, | ||||
| the 6LR will pass the lookup to the end device which will respond | ||||
| with a traditional NA. If the 6LR does not have a cache entry | ||||
| associated for the device, it can issue a NA with EARO | ||||
| (status=Validation Requested) upon the NA from the device, which | ||||
| will trigger a NS that will recreate and revalidate the ND cache | ||||
| entry. | ||||
| Duplicate Address Detection DoS Attack Inside the LLN, Duplicate | ||||
| Addresses are sorted out using the OUID, which differentiates it | ||||
| from a movement. DAD coming from the backbone are not forwarded | ||||
| over the LLN so the LLN is protected by the backbone routers. | ||||
| Over the backbone, the EARO option is present in NS/NA messages. | ||||
| This protects against misinterpreting a movement for a | ||||
| duplication, and enables to decide which backbone router has the | ||||
| freshest registration and thus most possibly the device attached | ||||
| to it. But this specification does not guarantee that the | ||||
| backbone router claiming an address over the backbone is not an | ||||
| attacker. | ||||
| Router Solicitation and Advertisement Attacks This specification | ||||
| does not change the protection of RS and RA which can still be | ||||
| protected by SEND. | ||||
| Replay Attacks A Nonce given by the 6LR in the NA with EARO | ||||
| (status=Validation Requested) and echoed in the signed NS | ||||
| guarantees against replay attacks of the NS(EARO). The NA(EARO) | ||||
| is not protected and can be forged by a rogue node that is not the | ||||
| 6LR in order to force the 6LN to rebuild a NS(EARO) with the proof | ||||
| of ownership, but that rogue node must have access to the L2 radio | ||||
| network next to the 6LN to perform the attack. | ||||
| Neighbor Discovery DoS Attack A rogue node that managed to access | ||||
| the L2 network may form many addresses and register them using AP- | ||||
| ND. The perimeter of the attack os all the 6LRs in range of the | ||||
| attacker. The 6LR must protect itself against overflows and | ||||
| reject excessive registration with a status 2 "Neighbor Cache | ||||
| Full". This effectively blocks another (honest) 6LN from | ||||
| registering to the same 6LR, but the 6LN may register to other | ||||
| 6LRs that are in its range but not in that of the rogue. | ||||
| 7.2. Related to 6LoWPAN ND | ||||
| The threats discussed in 6LoWPAN ND [RFC6775] and its update | The threats discussed in 6LoWPAN ND [RFC6775] and its update | |||
| [I-D.ietf-6lo-rfc6775-update] also apply here. Compared with SeND, | [I-D.ietf-6lo-rfc6775-update] also apply here. Compared with SeND, | |||
| this specification saves about 1Kbyte in every NS/NA message. Also, | this specification saves about 1Kbyte in every NS/NA message. Also, | |||
| this specification separates the cryptographic identifier from the | this specification separates the cryptographic identifier from the | |||
| registered IPv6 address so that a node can have more than one IPv6 | registered IPv6 address so that a node can have more than one IPv6 | |||
| address protected by the same cryptographic identifier. SeND forces | address protected by the same cryptographic identifier. SeND forces | |||
| the IPv6 address to be cryptographic since it integrates the CGA as | the IPv6 address to be cryptographic since it integrates the CGA as | |||
| the IID in the IPv6 address. This specification frees the device to | the IID in the IPv6 address. This specification frees the device to | |||
| form its addresses in any fashion, so as to enable the classical | form its addresses in any fashion, so as to enable the classical | |||
| 6LoWPAN compression which derives IPv6 addresses from Layer-2 | 6LoWPAN compression which derives IPv6 addresses from Layer-2 | |||
| addresses, as well as privacy addresses. The threats discussed in | addresses, as well as privacy addresses. The threats discussed in | |||
| Section 9.2 of [RFC3971] are countered by the protocol described in | Section 9.2 of [RFC3971] are countered by the protocol described in | |||
| this document as well. | this document as well. | |||
| 7.3. OUID Collisions | ||||
| Collisions of Owner Unique Interface IDentifier (OUID) (which is the | Collisions of Owner Unique Interface IDentifier (OUID) (which is the | |||
| Crypto-ID in this specification) is a possibility that needs to be | Crypto-ID in this specification) is a possibility that needs to be | |||
| considered. The formula for calculating the probability of a | considered. The formula for calculating the probability of a | |||
| collision is 1 - e^{-k^2/(2n)} where n is the maximum population size | collision is 1 - e^{-k^2/(2n)} where n is the maximum population size | |||
| (2^64 here, 1.84E19) and K is the actual population (number of | (2^64 here, 1.84E19) and K is the actual population (number of | |||
| nodes). If the Crypto-ID is 64-bit long, then the chance of finding | nodes). If the Crypto-ID is 64-bit long, then the chance of finding | |||
| a collision is 0.01% when the network contains 66 million nodes. It | a collision is 0.01% when the network contains 66 million nodes. It | |||
| is important to note that the collision is only relevant when this | is important to note that the collision is only relevant when this | |||
| happens within one stub network (6LBR). A collision of Crypto-ID is | happens within one stub network (6LBR). A collision of Crypto-ID is | |||
| a rare event. In the case of a collision, an attacker may be able to | a rare event. In the case of a collision, an attacker may be able to | |||
| claim the registered address of an another legitimate node. However | claim the registered address of an another legitimate node. However | |||
| for this to happen, the attacker would also need to know the address | for this to happen, the attacker would also need to know the address | |||
| which was registered by the legitimate node. This registered address | which was registered by the legitimate node. This registered address | |||
| is however never broadcasted on the network and therefore it provides | is however never broadcasted on the network and therefore it provides | |||
| an additional entropy of 64-bits that an attacker must correctly | an additional entropy of 64-bits that an attacker must correctly | |||
| guess. To prevent such a scenario, it is RECOMMENDED that nodes | guess. To prevent such a scenario, it is RECOMMENDED that nodes | |||
| derive the address being registered independently of the OUID. | derive the address being registered independently of the OUID. | |||
| 7. IANA considerations | 8. IANA considerations | |||
| IANA is requested to assign two new option type values for the CIPO | 8.1. CGA Message Type | |||
| under the subregistry "IPv6 Neighbor Discovery Option Formats". | ||||
| 7.1. Crypto Type Registry | This document defines a new 128-bit value under the CGA Message Type | |||
| [RFC3972] namespace, 0x8701 55c8 0cca dd32 6ab7 e415 f148 84d0. | ||||
| The following Crypto Type values are defined in this document: | 8.2. Crypto-Type Subregistry | |||
| +-------------------+--------------------------------------------+ | IANA is requested to create a new subregistry "Crypto-Type | |||
| | Crypto Type value | Algorithms | | Subregistry" in the "Internet Control Message Protocol version 6 | |||
| +-------------------+--------------------------------------------+ | (ICMPv6) Parameters". The registry is indexed by an integer 0..255 | |||
| | 0 | NIST P-256 [FIPS186-4] , SHA-256 [RFC6234] | | and contains a Signature Algorithm and a Hash Function as shown in | |||
| | 1 | Ed25519ph [RFC8032], SHA-256 [RFC6234] | | Table 1. The following Crypto-Type values are defined in this | |||
| +-------------------+--------------------------------------------+ | document: | |||
| Table 1: Crypto Types | +--------------+-----------------+---------------+------------------+ | |||
| | Crypto-Type | Signature | Hash Function | Defining | | ||||
| | value | Algorithm | | Specification | | ||||
| +--------------+-----------------+---------------+------------------+ | ||||
| | 0 | NIST P-256 | SHA-256 | RFC THIS | | ||||
| | | [FIPS186-4] | [RFC6234] | | | ||||
| | 1 | Ed25519ph | SHA-256 | RFC THIS | | ||||
| | | [RFC8032] | [RFC6234] | | | ||||
| +--------------+-----------------+---------------+------------------+ | ||||
| Assignment of new values for new Crypto Type MUST be done through | Table 1: Crypto-Types | |||
| Assignment of new values for new Crypto-Type MUST be done through | ||||
| IANA with "Specification Required" and "IESG Approval" as defined in | IANA with "Specification Required" and "IESG Approval" as defined in | |||
| [RFC8126]. | [RFC8126]. | |||
| 8. Acknowledgements | 9. Acknowledgments | |||
| Many thanks to Charlie Perkins for his in-depth review and | Many thanks to Charlie Perkins for his in-depth review and | |||
| constructive suggestions. We are also especially grateful to Rene | constructive suggestions. We are also especially grateful to Rene | |||
| Struik and Robert Moskowitz for their comments that lead to many | Struik and Robert Moskowitz for their comments that lead to many | |||
| improvements to this document, in particular WRT ECC computation and | improvements to this document, in particular WRT ECC computation and | |||
| references. | references. | |||
| 9. References | 10. References | |||
| 9.1. Normative References | 10.1. Normative References | |||
| [FIPS-186-4] | ||||
| FIPS 186-4, "Digital Signature Standard (DSS), Federal | ||||
| Information Processing Standards Publication 186-4", US | ||||
| Department of Commerce/National Institute of Standards and | ||||
| Technology Gaithersburg, MD, July 2013. | ||||
| [I-D.ietf-6lo-rfc6775-update] | [I-D.ietf-6lo-rfc6775-update] | |||
| Thubert, P., Nordmark, E., Chakrabarti, S., and C. | Thubert, P., Nordmark, E., Chakrabarti, S., and C. | |||
| Perkins, "An Update to 6LoWPAN ND", draft-ietf-6lo- | Perkins, "An Update to 6LoWPAN ND", draft-ietf-6lo- | |||
| rfc6775-update-10 (work in progress), October 2017. | rfc6775-update-11 (work in progress), December 2017. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3279] Bassham, L., Polk, W., and R. Housley, "Algorithms and | ||||
| Identifiers for the Internet X.509 Public Key | ||||
| Infrastructure Certificate and Certificate Revocation List | ||||
| (CRL) Profile", RFC 3279, DOI 10.17487/RFC3279, April | ||||
| 2002, <https://www.rfc-editor.org/info/rfc3279>. | ||||
| [RFC3971] Arkko, J., Ed., Kempf, J., Zill, B., and P. Nikander, | ||||
| "SEcure Neighbor Discovery (SEND)", RFC 3971, | ||||
| DOI 10.17487/RFC3971, March 2005, | ||||
| <https://www.rfc-editor.org/info/rfc3971>. | ||||
| [RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)", | ||||
| RFC 3972, DOI 10.17487/RFC3972, March 2005, | ||||
| <https://www.rfc-editor.org/info/rfc3972>. | ||||
| [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing | [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing | |||
| Architecture", RFC 4291, DOI 10.17487/RFC4291, February | Architecture", RFC 4291, DOI 10.17487/RFC4291, February | |||
| 2006, <https://www.rfc-editor.org/info/rfc4291>. | 2006, <https://www.rfc-editor.org/info/rfc4291>. | |||
| [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, | [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, | |||
| "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, | "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, | |||
| DOI 10.17487/RFC4861, September 2007, | DOI 10.17487/RFC4861, September 2007, | |||
| <https://www.rfc-editor.org/info/rfc4861>. | <https://www.rfc-editor.org/info/rfc4861>. | |||
| [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless | [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless | |||
| Address Autoconfiguration", RFC 4862, | Address Autoconfiguration", RFC 4862, | |||
| DOI 10.17487/RFC4862, September 2007, | DOI 10.17487/RFC4862, September 2007, | |||
| <https://www.rfc-editor.org/info/rfc4862>. | <https://www.rfc-editor.org/info/rfc4862>. | |||
| [RFC5758] Dang, Q., Santesson, S., Moriarty, K., Brown, D., and T. | ||||
| Polk, "Internet X.509 Public Key Infrastructure: | ||||
| Additional Algorithms and Identifiers for DSA and ECDSA", | ||||
| RFC 5758, DOI 10.17487/RFC5758, January 2010, | ||||
| <https://www.rfc-editor.org/info/rfc5758>. | ||||
| [RFC6775] Shelby, Z., Ed., Chakrabarti, S., Nordmark, E., and C. | [RFC6775] Shelby, Z., Ed., Chakrabarti, S., Nordmark, E., and C. | |||
| Bormann, "Neighbor Discovery Optimization for IPv6 over | Bormann, "Neighbor Discovery Optimization for IPv6 over | |||
| Low-Power Wireless Personal Area Networks (6LoWPANs)", | Low-Power Wireless Personal Area Networks (6LoWPANs)", | |||
| RFC 6775, DOI 10.17487/RFC6775, November 2012, | RFC 6775, DOI 10.17487/RFC6775, November 2012, | |||
| <https://www.rfc-editor.org/info/rfc6775>. | <https://www.rfc-editor.org/info/rfc6775>. | |||
| 9.2. Informative references | 10.2. Informative references | |||
| [FIPS186-4] | [FIPS186-4] | |||
| "FIPS Publication 186-4: Digital Signature Standard", July | "FIPS Publication 186-4: Digital Signature Standard", July | |||
| 2013, <http://nvlpubs.nist.gov/nistpubs/FIPS/ | 2013, <http://nvlpubs.nist.gov/nistpubs/FIPS/ | |||
| NIST.FIPS.186-4.pdf>. | NIST.FIPS.186-4.pdf>. | |||
| [I-D.ietf-6lo-backbone-router] | [I-D.ietf-6lo-backbone-router] | |||
| Thubert, P., "IPv6 Backbone Router", draft-ietf-6lo- | Thubert, P., "IPv6 Backbone Router", draft-ietf-6lo- | |||
| backbone-router-04 (work in progress), July 2017. | backbone-router-05 (work in progress), January 2018. | |||
| [I-D.struik-lwip-curve-representations] | [I-D.struik-lwig-curve-representations] | |||
| Struik, R., "Alternative Elliptic Curve Representations", | Struik, R., "Alternative Elliptic Curve Representations", | |||
| draft-struik-lwip-curve-representations-00 (work in | draft-struik-lwig-curve-representations-00 (work in | |||
| progress), October 2017. | progress), November 2017. | |||
| [RFC3971] Arkko, J., Ed., Kempf, J., Zill, B., and P. Nikander, | ||||
| "SEcure Neighbor Discovery (SEND)", RFC 3971, | ||||
| DOI 10.17487/RFC3971, March 2005, | ||||
| <https://www.rfc-editor.org/info/rfc3971>. | ||||
| [RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)", | ||||
| RFC 3972, DOI 10.17487/RFC3972, March 2005, | ||||
| <https://www.rfc-editor.org/info/rfc3972>. | ||||
| [RFC4919] Kushalnagar, N., Montenegro, G., and C. Schumacher, "IPv6 | [RFC4919] Kushalnagar, N., Montenegro, G., and C. Schumacher, "IPv6 | |||
| over Low-Power Wireless Personal Area Networks (6LoWPANs): | over Low-Power Wireless Personal Area Networks (6LoWPANs): | |||
| Overview, Assumptions, Problem Statement, and Goals", | Overview, Assumptions, Problem Statement, and Goals", | |||
| RFC 4919, DOI 10.17487/RFC4919, August 2007, | RFC 4919, DOI 10.17487/RFC4919, August 2007, | |||
| <https://www.rfc-editor.org/info/rfc4919>. | <https://www.rfc-editor.org/info/rfc4919>. | |||
| [RFC4944] Montenegro, G., Kushalnagar, N., Hui, J., and D. Culler, | [RFC4944] Montenegro, G., Kushalnagar, N., Hui, J., and D. Culler, | |||
| "Transmission of IPv6 Packets over IEEE 802.15.4 | "Transmission of IPv6 Packets over IEEE 802.15.4 | |||
| Networks", RFC 4944, DOI 10.17487/RFC4944, September 2007, | Networks", RFC 4944, DOI 10.17487/RFC4944, September 2007, | |||
| skipping to change at page 17, line 27 ¶ | skipping to change at page 21, line 7 ¶ | |||
| o The Address Registration Option used in the ND registration SHOULD | o The Address Registration Option used in the ND registration SHOULD | |||
| be extended to carry the relevant forms of Unique Interface | be extended to carry the relevant forms of Unique Interface | |||
| IDentifier. | IDentifier. | |||
| o The Neighbour Discovery should specify the formation of a site- | o The Neighbour Discovery should specify the formation of a site- | |||
| local address that follows the security recommendations from | local address that follows the security recommendations from | |||
| [RFC7217]. | [RFC7217]. | |||
| Authors' Addresses | Authors' Addresses | |||
| Behcet Sarikaya | Pascal Thubert (editor) | |||
| Plano, TX | ||||
| USA | ||||
| Email: sarikaya@ieee.org | ||||
| Pascal Thubert | ||||
| Cisco Systems, Inc | Cisco Systems, Inc | |||
| Building D | Building D | |||
| 45 Allee des Ormes - BP1200 | 45 Allee des Ormes - BP1200 | |||
| MOUGINS - Sophia Antipolis 06254 | MOUGINS - Sophia Antipolis 06254 | |||
| FRANCE | FRANCE | |||
| Phone: +33 497 23 26 34 | Phone: +33 497 23 26 34 | |||
| Email: pthubert@cisco.com | Email: pthubert@cisco.com | |||
| Behcet Sarikaya | ||||
| Plano, TX | ||||
| USA | ||||
| Email: sarikaya@ieee.org | ||||
| Mohit Sethi | Mohit Sethi | |||
| Ericsson | Ericsson | |||
| Hirsalantie | Hirsalantie | |||
| Jorvas 02420 | Jorvas 02420 | |||
| Email: mohit@piuha.net | Email: mohit@piuha.net | |||
| End of changes. 74 change blocks. | ||||
| 237 lines changed or deleted | 410 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/ | ||||