summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8928.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc8928.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc8928.txt')
-rw-r--r--doc/rfc/rfc8928.txt1517
1 files changed, 1517 insertions, 0 deletions
diff --git a/doc/rfc/rfc8928.txt b/doc/rfc/rfc8928.txt
new file mode 100644
index 0000000..fc8150b
--- /dev/null
+++ b/doc/rfc/rfc8928.txt
@@ -0,0 +1,1517 @@
+
+
+
+
+Internet Engineering Task Force (IETF) P. Thubert, Ed.
+Request for Comments: 8928 Cisco
+Updates: 8505 B. Sarikaya
+Category: Standards Track
+ISSN: 2070-1721 M. Sethi
+ Ericsson
+ R. Struik
+ Struik Security Consultancy
+ November 2020
+
+
+ Address-Protected Neighbor Discovery for Low-Power and Lossy Networks
+
+Abstract
+
+ 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.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ 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.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc8928.
+
+Copyright Notice
+
+ Copyright (c) 2020 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Terminology
+ 2.1. Requirements Language
+ 2.2. Background
+ 2.3. Abbreviations
+ 3. Updating RFC 8505
+ 4. New Fields and Options
+ 4.1. New Crypto-ID
+ 4.2. Updated EARO
+ 4.3. Crypto-ID Parameters Option
+ 4.4. NDP Signature Option
+ 4.5. Extensions to the Capability Indication Option
+ 5. Protocol Scope
+ 6. Protocol Flows
+ 6.1. First Exchange with a 6LR
+ 6.2. NDPSO Generation and Verification
+ 6.3. Multi-Hop Operation
+ 7. Security Considerations
+ 7.1. Brown Field
+ 7.2. Threats Identified in RFC 3971
+ 7.3. Related to 6LoWPAN ND
+ 7.4. Compromised 6LR
+ 7.5. ROVR Collisions
+ 7.6. Implementation Attacks
+ 7.7. Cross-Algorithm and Cross-Protocol Attacks
+ 7.8. Public Key Validation
+ 7.9. Correlating Registrations
+ 8. IANA Considerations
+ 8.1. CGA Message Type
+ 8.2. Crypto-Type Subregistry
+ 8.3. IPv6 ND Option Types
+ 8.4. New 6LoWPAN Capability Bit
+ 9. References
+ 9.1. Normative References
+ 9.2. Informative References
+ Appendix A. Requirements Addressed in This Document
+ Appendix B. Representation Conventions
+ B.1. Signature Schemes
+ B.2. Representation of ECDSA Signatures
+ B.3. Representation of Public Keys Used with ECDSA
+ B.4. Alternative Representations of Curve25519
+ Acknowledgments
+ Authors' Addresses
+
+1. Introduction
+
+ Neighbor Discovery optimizations for 6LoWPAN networks (aka 6LoWPAN
+ ND) [RFC6775] adapts the original IPv6 Neighbor Discovery protocols
+ defined in [RFC4861] and [RFC4862] 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 the unicast Neighbor Solicitation
+ (NS) and Neighbor Advertisement (NA) messages exchanged between a
+ 6LoWPAN Node (6LN) and a 6LoWPAN Router (6LR). It also defines the
+ Duplicate Address Request (DAR) and Duplicate Address Confirmation
+ (DAC) messages between the 6LR and the 6LoWPAN Border Router (6LBR).
+ In LLNs, the 6LBR is the central repository of all the Registered
+ Addresses in its domain.
+
+ The registration mechanism in "Neighbor Discovery Optimization for
+ IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs)"
+ [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" [RFC8505] defines a Registration Ownership Verifier (ROVR)
+ field. [RFC8505] enables a 6LR and 6LBR to validate the association
+ between the Registered Address of a node and its ROVR. The ROVR can
+ be derived from the link-layer address of the device (using the
+ 64-bit Extended Unique Identifier (EUI-64) address format specified
+ by IEEE). However, the 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 would allow an
+ attacker to steal the address and redirect traffic for that address.
+ [RFC8505] defines an Extended Address Registration Option (EARO) that
+ transports alternate forms of ROVRs and is a prerequisite for this
+ specification.
+
+ In this specification, a 6LN generates a cryptographic identifier
+ (Crypto-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 the 6LR. The 6LR validates
+ ownership of the Crypto-ID before it creates any new registration
+ state or changes existing information.
+
+ The protected address registration protocol proposed in this document
+ provides the same conceptual benefit as Source Address Validation
+ Improvement (SAVI) [RFC7039] in that only the owner of an IPv6
+ address may source packets with that address. As opposed to
+ [RFC7039], which relies on snooping protocols, the protection
+ provided by this document 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 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.
+
+ With the 6LoWPAN adaptation layer in [RFC4944] and [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 with "SEcure Neighbor Discovery (SEND")
+ [RFC3971] and "Cryptographically Generated Addresses (CGAs)"
+ [RFC3972], since they derive the IID from cryptographic keys. This
+ specification, on the other hand, separates the IID generation from
+ cryptographic computations and can enable better compression.
+
+2. Terminology
+
+2.1. Requirements Language
+
+ 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 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+2.2. Background
+
+ The reader may get additional context for this specification from the
+ following references:
+
+ * "SEcure Neighbor Discovery (SEND)" [RFC3971],
+
+ * "Cryptographically Generated Addresses (CGA)" [RFC3972],
+
+ * "Neighbor Discovery for IP version 6 (IPv6)" [RFC4861] ,
+
+ * "IPv6 Stateless Address Autoconfiguration" [RFC4862], and
+
+ * "IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs):
+ Overview, Assumptions, Problem Statement, and Goals" [RFC4919].
+
+2.3. Abbreviations
+
+ This document uses the following abbreviations:
+
+ 6BBR: 6LoWPAN Backbone Router
+ 6LBR: 6LoWPAN Border Router
+ 6LN: 6LoWPAN Node
+ 6LR: 6LoWPAN Router
+ AP-ND: Address-Protected Neighbor Discovery
+ CGA: Cryptographically Generated Address
+ DAD: Duplicate Address Detection
+ EARO: Extended Address Registration Option
+ ECC: Elliptic Curve Cryptography
+ ECDH: Elliptic Curve Diffie-Hellman
+ ECDSA: Elliptic Curve Digital Signature Algorithm
+ EDAC: Extended Duplicate Address Confirmation
+ EDAR: Extended Duplicate Address Request
+ CIPO: Crypto-ID Parameters Option
+ LLN: Low-Power and Lossy Network
+ NA: Neighbor Advertisement
+ ND: Neighbor Discovery
+ NDP: Neighbor Discovery Protocol
+ NDPSO: Neighbor Discovery Protocol Signature Option
+ NS: Neighbor Solicitation
+ ROVR: Registration Ownership Verifier
+ RA: Router Advertisement
+ RS: Router Solicitation
+ RSAO: RSA Signature Option
+ SHA: Secure Hash Algorithm
+ SLAAC: Stateless Address Autoconfiguration
+ TID: Transaction ID
+
+3. Updating RFC 8505
+
+ Section 5.3 of [RFC8505] introduces the ROVR that is used to detect
+ and reject duplicate registrations 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 RECOMMENDED method.
+ Section 7.5 discusses collisions when heterogeneous methods to
+ compute the ROVR field coexist inside a network.
+
+ This specification introduces a new identifier called a Crypto-ID
+ that is transported in the ROVR field and used to indirectly prove
+ the ownership of an address that is being registered by means of
+ [RFC8505]. The Crypto-ID is derived from a cryptographic public key
+ and additional parameters.
+
+ The overall mechanism requires the support of Elliptic Curve
+ Cryptography (ECC) and a hash function as detailed in Section 6.2.
+ To enable the verification of the proof, the Registering Node needs
+ to supply certain parameters including a nonce and a signature that
+ will demonstrate that the node possesses the private key
+ corresponding to the public key used to build the Crypto-ID.
+
+ The elliptic curves and the hash functions listed in Table 1 in
+ Section 8.2 can be used with this specification; more may be added in
+ the future to the corresponding IANA registry. The cryptographic
+ algorithms used (including the curve and the representation
+ conventions) are signaled by the Crypto-Type field in a new IPv6 ND
+ Crypto-ID Parameters Option (CIPO) (see Section 4.3) that contains
+ the parameters that are necessary for address validation. A new NDP
+ Signature Option (Section 4.4) is also specified in this document to
+ carry the resulting signature. A Nonce Option [RFC3971] is added in
+ the NA(EARO) that is used to request the validation, and all three
+ options are needed in the NS(EARO) that provides the validation.
+
+4. New Fields and Options
+
+4.1. New Crypto-ID
+
+ The Crypto-ID is transported in the ROVR field of the EARO and the
+ Extended Duplicate Address Request (EDAR) message and is associated
+ with the Registered Address at the 6LR and the 6LBR. The ownership
+ of a Crypto-ID can be demonstrated by cryptographic mechanisms, and
+ by association, the ownership of the Registered Address can be
+ ascertained.
+
+ A node in possession of the necessary cryptographic primitives SHOULD
+ use Crypto-ID by default as ROVR in its registrations. Whether a
+ ROVR is a Crypto-ID is indicated by a new "C" flag in the EARO of the
+ NS(EARO) message.
+
+ The Crypto-ID is derived from the public key and a modifier as
+ follows:
+
+ 1. The hash function used internally by the signature scheme and
+ indicated by the Crypto-Type (see Table 1 in Section 8.2) is
+ applied to the CIPO. Note that all the reserved and padding bits
+ MUST be set to zero.
+
+ 2. The leftmost bits of the resulting hash, up to the desired size,
+ are used as the Crypto-ID.
+
+ At the time of this writing, a minimal size for the Crypto-ID of 128
+ bits is RECOMMENDED unless backward compatibility is needed [RFC8505]
+ (in which case it is at least 64 bits). The size of the Crypto-ID is
+ likely to increase in the future.
+
+4.2. Updated EARO
+
+ This specification updates the EARO to enable the use of the ROVR
+ field to transport the Crypto-ID. The resulting format is as
+ follows:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type | Length | Status | Opaque |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |Rsvd |C| I |R|T| TID | Registration Lifetime |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ ... Registration Ownership Verifier (ROVR) ...
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 1: Enhanced Address Registration Option
+
+ Type: 33
+
+ Length: Defined in [RFC8505] and copied in the "EARO Length" field
+ in the associated CIPO.
+
+ Status: Defined in [RFC8505].
+
+ Opaque: Defined in [RFC8505].
+
+ Rsvd (Reserved): 3-bit unsigned integer. It MUST be set to zero by
+ the sender and MUST be ignored by the receiver.
+
+ C: 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.
+
+ I, R, T: Defined in [RFC8505].
+
+ TID and Registration Lifetime: Defined in [RFC8505].
+
+ Registration Ownership Verifier (ROVR): When the "C" flag is set,
+ this field contains a Crypto-ID.
+
+ This specification uses the status codes "Validation Requested" and
+ "Validation Failed", which are defined in [RFC8505].
+
+ This specification does not define any new status codes.
+
+4.3. Crypto-ID Parameters Option
+
+ This specification defines the CIPO. The CIPO carries the parameters
+ used to form a Crypto-ID.
+
+ In order to provide cryptographic agility [BCP201], this
+ specification supports different elliptic-curve-based signature
+ schemes, indicated by a Crypto-Type field:
+
+ * The ECDSA256 signature scheme, which uses ECDSA with the NIST
+ P-256 curve [FIPS186-4] and the hash function SHA-256 [RFC6234]
+ internally, MUST be supported by all implementations.
+
+ * The Ed25519 signature scheme, which uses the Pure Edwards-Curve
+ Digital Signature Algorithm (PureEdDSA) [RFC8032] with the twisted
+ Edwards curve Edwards25519 [RFC7748] and the hash function SHA-512
+ [RFC6234] internally, MAY be supported as an alternative.
+
+ * The ECDSA25519 signature scheme, which uses ECDSA [FIPS186-4] with
+ the Weierstrass curve Wei25519 (see Appendix B.4) and the hash
+ function SHA-256 [RFC6234] internally, MAY also be supported.
+
+ This specification uses signature schemes that target similar
+ cryptographic strength but rely on different curves, hash functions,
+ signature algorithms, and/or representation conventions. Future
+ specification may extend this to different cryptographic algorithms
+ and key sizes, e.g., to provide better security properties or a
+ simpler implementation.
+
+ 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 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Crypto-Type | Modifier | EARO Length | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
+ | |
+ . .
+ . Public Key (variable length) .
+ . .
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ . Padding .
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 2: Crypto-ID Parameters Option
+
+ Type: 8-bit unsigned integer. IANA has assigned value 39; see
+ Table 2.
+
+ Length: 8-bit unsigned integer. The length of the option in units
+ of 8 octets.
+
+ Reserved1: 5-bit unsigned integer. It MUST be set to zero by the
+ sender and MUST be ignored by the receiver.
+
+ Public Key Length: 11-bit unsigned integer. The length of the
+ Public Key field in bytes. The actual length depends on the
+ Crypto-Type value and how the public key is represented. The
+ valid values with this document are provided in Table 1.
+
+ Crypto-Type: 8-bit unsigned integer. The type of cryptographic
+ algorithm used in calculation of the Crypto-ID indexed by IANA in
+ the "Crypto-Types" subregistry in the "Internet Control Message
+ Protocol version 6 (ICMPv6) Parameters" registry (see
+ Section 8.2).
+
+ Modifier: 8-bit unsigned integer. Set to an arbitrary value by the
+ creator of the Crypto-ID. The role of the modifier is to enable
+ the formation of multiple Crypto-IDs from the same key pair. This
+ reduces the traceability and, thus, improves the privacy of a
+ constrained node without requiring many key pairs.
+
+ EARO Length: 8-bit unsigned integer. The option length of the EARO
+ that contains the Crypto-ID associated with the CIPO.
+
+ Public Key: A variable-length field; the size is indicated in the
+ Public Key Length field.
+
+ Padding: A variable-length field that completes the Public Key field
+ to align to the next 8-byte boundary. It MUST be set to zero by
+ the sender and MUST be ignored by the receiver.
+
+ The implementation of multiple hash functions in a constrained device
+ may consume excessive amounts of program memory. This specification
+ enables the use of the same hash function SHA-256 [RFC6234] for two
+ of the three supported ECC-based signature schemes. Some code
+ factorization is also possible for the ECC computation itself.
+
+ [CURVE-REPR] provides information on how to represent Montgomery
+ curves and (twisted) Edwards curves as curves in short-Weierstrass
+ form, and it illustrates how this can be used to implement elliptic
+ curve computations using existing implementations that already
+ provide, e.g., ECDSA and ECDH using NIST [FIPS186-4] prime curves.
+ For more details on representation conventions, refer to Appendix B.
+
+4.4. NDP Signature Option
+
+ This specification defines the NDP Signature Option (NDPSO). The
+ NDPSO carries the signature that proves the ownership of the Crypto-
+ ID and validates the address being registered. The format of the
+ NDPSO is illustrated in Figure 3.
+
+ As opposed to the RSA Signature Option (RSAO) defined in Section 5.2
+ of SEND [RFC3971], the NDPSO does not have a key hash field.
+ Instead, the leftmost 128 bits of the ROVR field in the EARO are used
+ as hash to retrieve the CIPO that contains the key material used for
+ signature verification, left-padded if needed.
+
+ Another difference is that the NDPSO signs a fixed set of fields as
+ opposed to all options that appear prior to it in the ND message that
+ bears the signature. This allows a CIPO that the 6LR already
+ received to be omitted, at the expense of the capability to add
+ arbitrary options that would be signed with an RSAO.
+
+ An ND message that carries an NDPSO MUST have one and only one EARO.
+ The EARO MUST contain a Crypto-ID in the ROVR field, and the Crypto-
+ ID MUST be associated with the key pair used for the digital
+ signature in the NDPSO.
+
+ The CIPO may be present in the same message as the NDPSO. If it is
+ not present, it can be found in an abstract table that was created by
+ a previous message and indexed by the hash.
+
+ 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 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Reserved2 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ . .
+ . Digital Signature (variable length) .
+ . .
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ . Padding .
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 3: NDP Signature Option
+
+ Type: IANA has assigned value 40; see Table 2.
+
+ Length: 8-bit unsigned integer. The length of the option in units
+ of 8 octets.
+
+ Reserved1: 5-bit unsigned integer. It MUST be set to zero by the
+ sender and MUST be ignored by the receiver.
+
+ Digital Signature Length: 11-bit unsigned integer. The length of
+ the Digital Signature field in bytes.
+
+ Reserved2: 32-bit unsigned integer. It MUST be set to zero by the
+ sender and MUST be ignored by the receiver.
+
+ Digital Signature: A variable-length field containing the digital
+ signature. The length and computation of the digital signature
+ both depend on the Crypto-Type, which is found in the associated
+ CIPO; see Appendix B. 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 computed as detailed
+ in Section 6.2.
+
+ Padding: A variable-length field completing the Digital Signature
+ field to align to the next 8-byte boundary. It MUST be set to
+ zero by the sender and MUST be ignored by the receiver.
+
+4.5. Extensions to the Capability Indication Option
+
+ This specification defines one new capability bit in the 6LoWPAN
+ Capability Indication Option (6CIO), as defined by [RFC7400], for use
+ by the 6LR and 6LBR in IPv6 ND RA messages.
+
+ 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 = 1 | Reserved |A|D|L|B|P|E|G|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 4: New Capability Bit in the 6CIO
+
+ New Option Field:
+
+ A: 1-bit flag. Set to indicate that AP-ND is globally activated in
+ the network.
+
+ The "A" flag is set by the 6LBR that serves the network and is
+ propagated by the 6LRs. It is typically turned on when all 6LRs are
+ migrated to this specification.
+
+5. Protocol Scope
+
+ 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 6LBR per [RFC6775]. A 6LBR has sufficient capability to
+ satisfy the needs of DAD.
+
+ The 6LBR maintains registration state for all devices in its attached
+ LLN. Together with the first-hop router (the 6LR), the 6LBR assures
+ uniqueness 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 autoconfiguration [RFC4862], where there is no
+ guarantee of ownership from the network, and each IPv6 Neighbor
+ Discovery packet must be individually secured [RFC3971].
+
+ ---+-------- ............
+ | External Network
+ |
+ +-----+
+ | | 6LBR
+ +-----+
+ o o o
+ o o o o
+ o o LLN o o o
+ o o
+ o o o(6LR)
+ ^
+ o o | LLN link
+ o o v
+ o(6LN)
+ o
+
+ Figure 5: Basic Configuration
+
+ In a mesh network, the 6LR is directly connected to the host device.
+ This specification mandates that the peer-wise L2 security is
+ deployed so that all the packets from a particular host are
+ protected. The 6LR may be multiple hops away from the 6LBR. Packets
+ are routed between the 6LR and the 6LBR via other 6LRs.
+
+ This specification mandates that all the LLN links between the 6LR
+ and the 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.
+
+6. Protocol Flows
+
+ The 6LR/6LBR ensures first come, first served by storing the ROVR
+ associated to the address being registered upon the first
+ registration and rejecting a registration with a different ROVR
+ value. A 6LN can claim any address as long as it is the first to
+ make that claim. After a successful registration, the 6LN becomes
+ the owner of the Registered Address, and the address is bound to the
+ ROVR value in the 6LR/6LBR registry.
+
+ This specification protects the ownership of the address at the first
+ hop (the edge). Its use in a network is signaled by the "A" flag in
+ the 6CIO. The flag is set by the 6LBR and propagated unchanged by
+ the 6LRs. Once every node in the network is upgraded to support this
+ specification, the "A" flag can be set to turn the protection on
+ globally.
+
+ The 6LN places a cryptographic identifier, the Crypto-ID, in the ROVR
+ that is associated with the address at the first registration,
+ enabling the 6LR to later challenge it to verify that it is the
+ original Registering Node. The challenge may happen at any time at
+ the discretion of the 6LR and the 6LBR. A valid registration in the
+ 6LR or the 6LBR MUST NOT be altered until the challenge is complete.
+
+ When the "A" flag in a subnet is set, the 6LR MUST challenge the 6LN
+ before it creates a Binding with the "C" flag set in the EARO. The
+ 6LR MUST also challenge the 6LN when a new registration attempts to
+ change a parameter of an already validated Binding for that 6LN, for
+ instance, its Source link-layer address. Such verification protects
+ against an attacker that attempts to steal the address of an honest
+ node.
+
+ The 6LR MUST indicate to the 6LBR that it performed a successful
+ validation by setting a status code of 5 ("Validation Requested") in
+ the EDAR. Upon a subsequent EDAR from a new 6LR with a status code
+ that is not 5 for a validated Binding, the 6LBR MUST indicate to the
+ new 6LR that it needs to challenge the 6LN using a status code of 5
+ in the Extended Duplicate Address Confirmation (EDAC).
+
+ The 6LR MUST challenge the 6LN when the 6LBR signals to do so, which
+ is done with an EDAC message with a status code of 5. The EDAC is
+ echoed by the 6LR in the NA(EARO) back to the Registering Node. The
+ 6LR SHOULD 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.
+
+ If the 6LR does not support the Crypto-Type, it MUST reply with an
+ EARO status code of 10 "Validation Failed" without a challenge. In
+ that case, the 6LN may try another Crypto-Type until it falls back to
+ Crypto-Type 0, which MUST be supported by all 6LRs.
+
+ A node may use more than one IPv6 address at the same time. The
+ separation of the address and the cryptographic material avoids the
+ need for the constrained 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 MAY also derive multiple Crypto-
+ IDs from the same key pair by changing the modifier.
+
+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 ROVR field contains a
+ Crypto-ID. The Target Address in the NS message indicates the IPv6
+ address that the 6LN is trying to register [RFC8505]. The on-link
+ (local) protocol interactions are shown in 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
+ Figure 6).
+
+ 6LN 6LR
+ | |
+ |<------------------------- RA -------------------------|
+ | | ^
+ |---------------- NS with EARO (Crypto-ID) ------------>| |
+ | | option
+ |<- NA with EARO(status=Validation Requested), NonceLR | |
+ | | v
+ |------- NS with EARO, CIPO, NonceLN and NDPSO -------->|
+ | |
+ |<------------------- NA with EARO ---------------------|
+ | |
+ ...
+ | |
+ |--------------- NS with EARO (Crypto-ID) ------------->|
+ | |
+ |<------------------- NA with EARO ---------------------|
+ | |
+ ...
+ | |
+ |--------------- NS with EARO (Crypto-ID) ------------->|
+ | |
+ |<------------------- NA with EARO ---------------------|
+ | |
+
+ Figure 6: On-Link Protocol Operation
+
+ The Nonce Option contains a nonce value that, to the extent possible
+ for the implementation, was never used before. This specification
+ inherits the idea from [RFC3971] that the nonce is a random value.
+ Ideally, an implementation uses an unpredictable cryptographically
+ random value [BCP106]. But that may be impractical in some LLN
+ scenarios with resource-constrained devices.
+
+ Alternatively, the device may use an always-incrementing value saved
+ in the same stable storage as the key, so they are lost together, and
+ start at a best-effort random value as either the nonce value or a
+ component to its computation.
+
+ The 6LN replies to the challenge with an NS(EARO) that includes the
+ Nonce Option (shown as NonceLN in Figure 6), the CIPO (Section 4.3),
+ and the NDPSO containing the signature. Both nonces are included in
+ the signed material. This provides a "contributory behavior" that
+ results in better security even when the nonces of one party are not
+ generated as specified.
+
+ The 6LR MUST store the information associated with a Crypto-ID on the
+ first NS exchange where it appears in a fashion that the CIPO
+ parameters can be retrieved from the Crypto-ID alone.
+
+ The steps for the registration to the 6LR are as follows:
+
+ Upon the first exchange with a 6LR, a 6LN will be challenged to prove
+ ownership of the Crypto-ID and the Target Address being registered in
+ the Neighbor Solicitation message. When a 6LR receives an NS(EARO)
+ registration with a new Crypto-ID as a ROVR, and unless the
+ registration is rejected for another reason, it MUST challenge by
+ responding with an NA(EARO) with a status code of "Validation
+ Requested".
+
+ Upon receiving a first NA(EARO) with a status code of "Validation
+ Requested" from a 6LR, the Registering Node SHOULD retry its
+ registration with a CIPO (Section 4.3) that contains all the
+ necessary material for building the Crypto-ID, the NonceLN that it
+ generated, and the NDP Signature Option (Section 4.4) that proves its
+ ownership of the Crypto-ID and intent of registering the Target
+ Address. In subsequent revalidation 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.
+
+ 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 rebuilt Crypto-ID matches the ROVR, the 6LN also
+ verifies the signature contained in the NDPSO. At that point, if the
+ signature in the NDPSO can be verified, then the validation succeeds.
+ Otherwise, the validation fails.
+
+ 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 code of "Validation Failed", the Registering Node SHOULD try
+ an alternate Crypto-Type; even if Crypto-Type 0 fails, it may try to
+ register a different address in the NS message.
+
+6.2. NDPSO Generation and Verification
+
+ 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 Crypto-Type (see Table 1 in
+ Section 8.2) chosen by the 6LN as follows:
+
+ * Form the message to be signed, by concatenating the following
+ byte-strings in the order listed:
+
+ 1. The 128-bit Message Type tag [RFC3972] (in network byte
+ order). For this specification, the tag is given in
+ Section 8.1. (The tag value has been generated by the editor
+ of this specification on <https://www.random.org>.)
+
+ 2. The CIPO.
+
+ 3. The 16-byte Target Address (in network byte order) sent in the
+ NS message. It is the address that the 6LN is registering
+ with the 6LR and 6LBR.
+
+ 4. The NonceLR received from the 6LR (in network byte order) in
+ the NA message. The nonce is at least 6 bytes long as defined
+ in [RFC3971].
+
+ 5. The NonceLN sent from the 6LN (in network byte order). The
+ nonce is at least 6 bytes long as defined in [RFC3971].
+
+ 6. The 1-byte option length of the EARO containing the Crypto-ID.
+
+ * Apply the signature algorithm specified by the Crypto-Type using
+ the private key.
+
+ Upon receiving the NDPSO and CIPO options, the 6LR first checks that
+ the EARO Length in the CIPO matches the length of the EARO. If so,
+ it regenerates the Crypto-ID based on the CIPO to make sure that the
+ leftmost bits up to the size of the ROVR match.
+
+ If, and only if, the check is successful, it tries to verify the
+ signature in the NDPSO using the following steps:
+
+ * Form the message to be verified, by concatenating the following
+ byte-strings in the order listed:
+
+ 1. The 128-bit Message Type tag given in Section 8.1 (in network
+ byte order).
+
+ 2. The CIPO.
+
+ 3. The 16-byte Target Address (in network byte order) received in
+ the NS message. It is the address that the 6LN is registering
+ with the 6LR and 6LBR.
+
+ 4. The NonceLR sent in the NA message. The nonce is at least 6
+ bytes long as defined in [RFC3971].
+
+ 5. The NonceLN received from the 6LN (in network byte order) in
+ the NS message. The nonce is at least 6 bytes long as defined
+ in [RFC3971].
+
+ 6. The 1-byte EARO Length received in the CIPO.
+
+ * Verify the signature on this message with the public key in the
+ CIPO and the locally computed values using the signature algorithm
+ specified by the Crypto-Type. If the verification succeeds, the
+ 6LR propagates the information to the 6LBR using an EDAR/EDAC
+ flow.
+
+ * 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 registered to their respective
+ abstract databases.
+
+6.3. Multi-Hop Operation
+
+ A new 6LN that joins the network autoconfigures an address and
+ performs an initial registration to a neighboring 6LR with an NS
+ message that carries an EARO [RFC8505].
+
+ In a multi-hop 6LoWPAN, the registration with Crypto-ID is propagated
+ to 6LBR as shown in Figure 7, which illustrates the registration flow
+ all the way to a 6LoWPAN Backbone Router (6BBR) [RFC8929].
+
+ 6LN 6LR 6LBR 6BBR
+ | | | |
+ | NS(EARO) | | |
+ |--------------->| | |
+ | | Extended DAR | |
+ | |-------------->| |
+ | | | proxy NS(EARO) |
+ | | |--------------->|
+ | | | | NS(DAD)
+ | | | | ------>
+ | | | |
+ | | | | <wait>
+ | | | |
+ | | | proxy NA(EARO) |
+ | | |<---------------|
+ | | Extended DAC | |
+ | |<--------------| |
+ | NA(EARO) | | |
+ |<---------------| | |
+ | | | |
+
+ Figure 7: (Re-)Registration Flow
+
+ The 6LR and the 6LBR communicate using ICMPv6 EDAR and EDAC messages
+ [RFC8505] as shown in Figure 7. This specification extends EDAR/EDAC
+ messages to carry cryptographically generated ROVR.
+
+ 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 there is no need to propagate the proof of
+ ownership to the 6LBR. The 6LBR implicitly 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, the
+ verification succeeded.
+
+7. Security Considerations
+
+7.1. Brown Field
+
+ Only 6LRs that are upgraded to this specification are capable of
+ challenging a registration and avoiding an attack. In a brown
+ (mixed) network, an attacker may attach to a legacy 6LR and fool the
+ 6LBR. 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 the
+ 6LRs are upgraded.
+
+7.2. Threats Identified in RFC 3971
+
+ Observations regarding the following threats to the local network in
+ [RFC3971] also apply to this specification.
+
+ 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 NDPSO and CIPO be present
+ in these solicitations.
+
+ Duplicate Address Detection DoS Attack: Inside the LLN, duplicate
+ addresses are sorted out using the ROVR. A different ROVR for the
+ same Registered Address entails a rejection of the second
+ registration [RFC8505]. DADs coming from the backbone network are
+ not forwarded over the LLN to provide some protection against DoS
+ attacks inside the resource-constrained part of the network.
+ However, the EARO is present in the NS/NA messages exchanged over
+ the backbone network. This protects against misinterpreting node
+ movement as a duplication and enables the Backbone Routers to
+ determine which subnet has the most recent registration [RFC8505]
+ and is thus the best candidate to validate the registration
+ [RFC8929].
+
+ 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: Nonces should never repeat but they do not need to
+ be unpredictable for secure operation. Using nonces (NonceLR and
+ NonceLN) generated by both the 6LR and 6LN ensures a contributory
+ behavior that provides an efficient protection against replay
+ attacks of the challenge/response flow. The quality of the
+ protection by a random nonce depends on the random number
+ generator.
+
+ Neighbor Discovery DoS Attack: A rogue node that can access the L2
+ network may form many addresses and register them using AP-ND.
+ The perimeter of the attack is all the 6LRs in range of the
+ attacker. The 6LR MUST protect itself against overflows and
+ reject excessive registration with a status code of 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 attacker.
+
+7.3. Related to 6LoWPAN ND
+
+ The threats and mitigations discussed in 6LoWPAN ND [RFC6775]
+ [RFC8505] also apply here, in particular, denial-of-service (DoS)
+ attacks against the registry at the 6LR or 6LBR.
+
+ Secure ND [RFC3971] forces the IPv6 address to be cryptographic since
+ it integrates the CGA as the IID in the IPv6 address. In contrast,
+ this specification 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.
+
+ 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 compressed, e.g., formed pseudorandomly and released
+ in relatively short cycles for privacy reasons [RFC8064][RFC8065].
+
+ This specification provides added protection for addresses that are
+ obtained following due procedure [RFC8505] but does not constrain the
+ way the addresses are formed or the number of addresses that are used
+ in parallel by a same entity. 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.
+
+7.4. Compromised 6LR
+
+ This specification distributes the challenge and its validation at
+ the edge of the network, between the 6LN and its 6LR. This protects
+ against DoS attacks targeted at that central 6LBR. This also saves
+ back-and-forth exchanges across a potentially large and constrained
+ network.
+
+ The downside is that the 6LBR needs to trust the 6LR to perform the
+ checking adequately, and the communication between the 6LR and the
+ 6LBR must be protected to avoid tampering with the result of the
+ validation.
+
+ If a 6LR is compromised, and provided that it knows the ROVR field
+ used by the real owner of the address, the 6LR may pretend that the
+ owner has moved, is now attached to it, and has successfully passed
+ the Crypto-ID validation. The 6LR may then attract and inject
+ traffic at will on behalf of that address, or let an attacker take
+ ownership of the address.
+
+7.5. ROVR Collisions
+
+ A collision of ROVRs (i.e., the Crypto-ID in this specification) is
+ possible, but it is a rare event. Assuming that the hash used for
+ calculating the Crypto-ID is a well-behaved cryptographic hash, and,
+ thus, random collisions are the only ones possible, if n = 2^(k) is
+ the maximum number of hash values (i.e., a k-bit hash) and p is the
+ number of nodes, then (assuming one Crypto-ID per node) the formula 1
+ - e^(-p^(2)/(2n)) provides an approximation of the probability that
+ there is at least one collision (birthday paradox).
+
+ If the Crypto-ID is 64 bits (the least possible size allowed), the
+ chance of a collision is 0.01% for a network of 66 million nodes.
+ Moreover, the collision is only relevant when this happens within one
+ stub network (6LBR). In the case of such a collision, an honest node
+ might accidentally claim the Registered Address of another legitimate
+ node (with the same Crypto-ID). To prevent such rare events, it is
+ RECOMMENDED that nodes do not derive the address being registered
+ from the ROVR.
+
+7.6. Implementation Attacks
+
+ The signature schemes referenced in this specification comply with
+ NIST [FIPS186-4] or Crypto Forum Research Group (CFRG) standards
+ [RFC8032] and offer strong algorithmic security at roughly a 128-bit
+ security level. These signature schemes use elliptic curves that
+ either were specifically designed with exception-free and constant-
+ time arithmetic in mind [RFC7748] or have extensive implementation
+ experience of resistance to timing attacks [FIPS186-4].
+
+ However, careless implementations of the signing operations could
+ nevertheless leak information on private keys. For example, there
+ are micro-architectural side channel attacks that implementors should
+ be aware of [breaking-ed25519]. Implementors should be particularly
+ aware that a secure implementation of Ed25519 requires a protected
+ implementation of the hash function SHA-512, whereas this is not
+ required with implementations of the hash function SHA-256 used with
+ ECDSA256 and ECDSA25519.
+
+7.7. Cross-Algorithm and Cross-Protocol Attacks
+
+ The key pair used in this specification can be self-generated, and
+ the public key does not need to be exchanged, e.g., through
+ certificates, with a third party before it is used.
+
+ New key pairs can be formed for new registrations if the node
+ desires. However, the same private key MUST NOT be reused with more
+ than one instantiation of the signature scheme in this specification.
+ Also, the same private key MUST NOT be used for anything other than
+ computing NDPSO signatures per this specification.
+
+ ECDSA shall be used strictly as specified in [FIPS186-4]. In
+ particular, each signing operation of ECDSA MUST use randomly
+ generated ephemeral private keys and MUST NOT reuse the ephemeral
+ private key k across signing operations. This precludes the use of
+ deterministic ECDSA without a random input for the determination of
+ k, which is deemed dangerous for the intended applications this
+ document aims to serve.
+
+7.8. Public Key Validation
+
+ Public keys contained in the CIPO field (which are used for signature
+ verification) shall be verified to be correctly formed, by checking
+ that this public key is indeed a point of the elliptic curve
+ indicated by the Crypto-Type and that this point does have the proper
+ order.
+
+ For points used with the signature scheme Ed25519, one MUST check
+ that this point is not in the small subgroup (see Appendix B.1 of
+ [CURVE-REPR]); 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 [CURVE-REPR]).
+
+7.9. Correlating Registrations
+
+ The ROVR field in the EARO introduced in [RFC8505] extends the EUI-64
+ field of the ARO defined in [RFC6775]. One of the drawbacks of using
+ an EUI-64 as ROVR is that an attacker that is aware of the
+ registrations can correlate traffic for the same 6LN across multiple
+ addresses. Section 3 of [RFC8505] indicates that the ROVR and the
+ address being registered are decoupled. A 6LN may use the same ROVR
+ for multiple registrations or a different ROVR per registration, and
+ the IID must not be derived from the ROVR. In theory, different 6LNs
+ could use the same ROVR as long as they do not attempt to register
+ the same address.
+
+ 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. Using 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 not provide
+ protection, and the 6LN would need to generate different key pairs
+ and link-layer addresses in an attempt to obfuscate its multiple
+ ownership.
+
+8. IANA Considerations
+
+8.1. CGA Message Type
+
+ This document defines a new 128-bit CGA Extension Type Tag under the
+ "CGA Extension Type Tags" subregistry of the Cryptographically
+ Generated Addresses (CGA) Message Type Name Space created by
+ [RFC3972].
+
+ Tag: 0x8701 55c8 0cca dd32 6ab7 e415 f148 84d0.
+
+8.2. Crypto-Type Subregistry
+
+ 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 Table 1, which together specify a signature scheme.
+ Detailed explanations are provided in Appendix B.
+
+ The following Crypto-Type values are defined in this document:
+
+ +================+=================+==============+=================+
+ |Crypto-Type | 0 (ECDSA256) | 1 (Ed25519) | 2 (ECDSA25519) |
+ |Value | | | |
+ +================+=================+==============+=================+
+ |Elliptic Curve | NIST P-256 | Curve25519 | Curve25519 |
+ | | [FIPS186-4] | [RFC7748] | [RFC7748] |
+ +----------------+-----------------+--------------+-----------------+
+ |Hash Function |SHA-256 [RFC6234]| SHA-512 |SHA-256 [RFC6234]|
+ | | | [RFC6234] | |
+ +----------------+-----------------+--------------+-----------------+
+ |Signature |ECDSA [FIPS186-4]| Ed25519 |ECDSA [FIPS186-4]|
+ |Algorithm | | [RFC8032] | |
+ +----------------+-----------------+--------------+-----------------+
+ |Representation | Weierstrass, | Edwards, | Weierstrass, |
+ |Conventions | (un)compressed, | compressed, | (un)compressed, |
+ | | MSB/msb-order, |LSB/lsb-order,| MSB/msb-order, |
+ | | [SEC1] | [RFC8032] | [CURVE-REPR] |
+ +----------------+-----------------+--------------+-----------------+
+ |Public Key Size | 33/65 bytes | 32 bytes | 33/65 bytes |
+ | | (compressed/ | (compressed) | (compressed/ |
+ | | uncompressed) | | uncompressed) |
+ +----------------+-----------------+--------------+-----------------+
+ |Signature Size | 64 bytes | 64 bytes | 64 bytes |
+ +----------------+-----------------+--------------+-----------------+
+ |Reference | RFC 8928 | RFC 8928 | RFC 8928 |
+ +----------------+-----------------+--------------+-----------------+
+
+ Table 1: Crypto-Types
+
+ New Crypto-Type values providing similar or better security may be
+ defined in the future.
+
+ Assignment of values for new Crypto-Type MUST be done through IANA
+ with either "Specification Required" or "IESG Approval" as defined in
+ BCP 26 [RFC8126].
+
+8.3. IPv6 ND Option Types
+
+ This document registers two new ND option types under the subregistry
+ "IPv6 Neighbor Discovery Option Formats":
+
+ +====================================+======+===========+
+ | Description | Type | Reference |
+ +====================================+======+===========+
+ | Crypto-ID Parameters Option (CIPO) | 39 | RFC 8928 |
+ +------------------------------------+------+-----------+
+ | NDP Signature Option (NDPSO) | 40 | RFC 8928 |
+ +------------------------------------+------+-----------+
+
+ Table 2: New ND Options
+
+8.4. New 6LoWPAN Capability Bit
+
+ IANA has made an addition to the subregistry for "6LoWPAN Capability
+ Bits" created for [RFC7400] as follows:
+
+ +=====+=======================+===========+
+ | Bit | Description | Reference |
+ +=====+=======================+===========+
+ | 9 | AP-ND Enabled (1 bit) | RFC 8928 |
+ +-----+-----------------------+-----------+
+
+ Table 3: New 6LoWPAN Capability Bit
+
+9. References
+
+9.1. Normative References
+
+ [FIPS186-4]
+ National Institute of Standards and Technology, "Digital
+ Signature Standard (DSS)", FIPS 186-4,
+ DOI 10.6028/NIST.FIPS.186-4, July 2013,
+ <https://nvlpubs.nist.gov/nistpubs/fips/
+ nist.fips.186-4.pdf>.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [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>.
+
+ [RFC6234] Eastlake 3rd, D. and T. Hansen, "US Secure Hash Algorithms
+ (SHA and SHA-based HMAC and HKDF)", RFC 6234,
+ DOI 10.17487/RFC6234, May 2011,
+ <https://www.rfc-editor.org/info/rfc6234>.
+
+ [RFC6775] Shelby, Z., Ed., Chakrabarti, S., Nordmark, E., and C.
+ Bormann, "Neighbor Discovery Optimization for IPv6 over
+ Low-Power Wireless Personal Area Networks (6LoWPANs)",
+ RFC 6775, DOI 10.17487/RFC6775, November 2012,
+ <https://www.rfc-editor.org/info/rfc6775>.
+
+ [RFC7400] Bormann, C., "6LoWPAN-GHC: Generic Header Compression for
+ IPv6 over Low-Power Wireless Personal Area Networks
+ (6LoWPANs)", RFC 7400, DOI 10.17487/RFC7400, November
+ 2014, <https://www.rfc-editor.org/info/rfc7400>.
+
+ [RFC7748] Langley, A., Hamburg, M., and S. Turner, "Elliptic Curves
+ for Security", RFC 7748, DOI 10.17487/RFC7748, January
+ 2016, <https://www.rfc-editor.org/info/rfc7748>.
+
+ [RFC8032] Josefsson, S. and I. Liusvaara, "Edwards-Curve Digital
+ Signature Algorithm (EdDSA)", RFC 8032,
+ DOI 10.17487/RFC8032, January 2017,
+ <https://www.rfc-editor.org/info/rfc8032>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+ [RFC8505] Thubert, P., Ed., Nordmark, E., Chakrabarti, S., and C.
+ Perkins, "Registration Extensions for IPv6 over Low-Power
+ Wireless Personal Area Network (6LoWPAN) Neighbor
+ Discovery", RFC 8505, DOI 10.17487/RFC8505, November 2018,
+ <https://www.rfc-editor.org/info/rfc8505>.
+
+ [SEC1] Standards for Efficient Cryptography, "SEC 1: Elliptic
+ Curve Cryptography", Version 2, May 2009,
+ <https://www.secg.org/sec1-v2.pdf>.
+
+9.2. Informative References
+
+ [BCP106] Eastlake 3rd, D., Schiller, J., and S. Crocker,
+ "Randomness Requirements for Security", BCP 106, RFC 4086,
+ DOI 10.17487/RFC4086, June 2005,
+ <https://www.rfc-editor.org/info/rfc4086>.
+
+ [BCP201] Housley, R., "Guidelines for Cryptographic Algorithm
+ Agility and Selecting Mandatory-to-Implement Algorithms",
+ BCP 201, RFC 7696, DOI 10.17487/RFC7696, November 2015,
+ <https://www.rfc-editor.org/info/rfc7696>.
+
+ [breaking-ed25519]
+ Samwel, N., Batina, L., Bertoni, G., Daemen, J., and R.
+ Susella, "Breaking Ed25519 in WolfSSL", Topics in
+ Cryptology - CT-RSA, pp. 1-20, March 2018,
+ <https://link.springer.com/
+ chapter/10.1007/978-3-319-76953-0_1>.
+
+ [CURVE-REPR]
+ Struik, R., "Alternative Elliptic Curve Representations",
+ Work in Progress, Internet-Draft, draft-ietf-lwig-curve-
+ representations-14, 15 November 2020,
+ <https://tools.ietf.org/html/draft-ietf-lwig-curve-
+ representations-14>.
+
+ [RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)",
+ RFC 3972, DOI 10.17487/RFC3972, March 2005,
+ <https://www.rfc-editor.org/info/rfc3972>.
+
+ [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman,
+ "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861,
+ DOI 10.17487/RFC4861, September 2007,
+ <https://www.rfc-editor.org/info/rfc4861>.
+
+ [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless
+ Address Autoconfiguration", RFC 4862,
+ DOI 10.17487/RFC4862, September 2007,
+ <https://www.rfc-editor.org/info/rfc4862>.
+
+ [RFC4919] Kushalnagar, N., Montenegro, G., and C. Schumacher, "IPv6
+ over Low-Power Wireless Personal Area Networks (6LoWPANs):
+ Overview, Assumptions, Problem Statement, and Goals",
+ RFC 4919, DOI 10.17487/RFC4919, August 2007,
+ <https://www.rfc-editor.org/info/rfc4919>.
+
+ [RFC4944] Montenegro, G., Kushalnagar, N., Hui, J., and D. Culler,
+ "Transmission of IPv6 Packets over IEEE 802.15.4
+ Networks", RFC 4944, DOI 10.17487/RFC4944, September 2007,
+ <https://www.rfc-editor.org/info/rfc4944>.
+
+ [RFC6282] Hui, J., Ed. and P. Thubert, "Compression Format for IPv6
+ Datagrams over IEEE 802.15.4-Based Networks", RFC 6282,
+ DOI 10.17487/RFC6282, September 2011,
+ <https://www.rfc-editor.org/info/rfc6282>.
+
+ [RFC7039] Wu, J., Bi, J., Bagnulo, M., Baker, F., and C. Vogt, Ed.,
+ "Source Address Validation Improvement (SAVI) Framework",
+ RFC 7039, DOI 10.17487/RFC7039, October 2013,
+ <https://www.rfc-editor.org/info/rfc7039>.
+
+ [RFC7217] Gont, F., "A Method for Generating Semantically Opaque
+ Interface Identifiers with IPv6 Stateless Address
+ Autoconfiguration (SLAAC)", RFC 7217,
+ DOI 10.17487/RFC7217, April 2014,
+ <https://www.rfc-editor.org/info/rfc7217>.
+
+ [RFC8064] Gont, F., Cooper, A., Thaler, D., and W. Liu,
+ "Recommendation on Stable IPv6 Interface Identifiers",
+ RFC 8064, DOI 10.17487/RFC8064, February 2017,
+ <https://www.rfc-editor.org/info/rfc8064>.
+
+ [RFC8065] Thaler, D., "Privacy Considerations for IPv6 Adaptation-
+ Layer Mechanisms", RFC 8065, DOI 10.17487/RFC8065,
+ February 2017, <https://www.rfc-editor.org/info/rfc8065>.
+
+ [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
+ Writing an IANA Considerations Section in RFCs", BCP 26,
+ RFC 8126, DOI 10.17487/RFC8126, June 2017,
+ <https://www.rfc-editor.org/info/rfc8126>.
+
+ [RFC8929] Thubert, P., Ed., Perkins, C.E., and E. Levy-Abegnoli,
+ "IPv6 Backbone Router", RFC 8929, DOI 10.17487/RFC8929,
+ November 2020, <https://www.rfc-editor.org/info/rfc8929>.
+
+Appendix A. Requirements Addressed in This Document
+
+ In this section, the requirements of a secure Neighbor Discovery
+ protocol for LLNs are stated.
+
+ * The protocol MUST be based on the Neighbor Discovery Optimization
+ for the LLN protocol defined in [RFC6775]. RFC 6775 utilizes
+ optimizations such as host-initiated interactions for sleeping
+ resource-constrained hosts and the elimination of multicast
+ address resolution.
+
+ * New options to be added to Neighbor Solicitation messages MUST
+ lead to small packet sizes, especially compared with existing
+ protocols such as SEND. Smaller packet sizes facilitate low-power
+ transmission by resource-constrained nodes on lossy links.
+
+ * The registration mechanism SHOULD be extensible to other LLN links
+ and not be limited to IEEE 802.15.4 only. LLN links for which a
+ 6lo "IPv6 over foo" specification exist, as well as low-power Wi-
+ Fi, SHOULD be supported.
+
+ * As part of this protocol, a mechanism to compute a unique
+ identifier should be provided with the capability to form a Link
+ Local Address that SHOULD be unique at least within the LLN
+ connected to a 6LBR.
+
+ * The Address Registration Option used in the ND registration SHOULD
+ be extended to carry the relevant forms of the unique identifier.
+
+ * The Neighbor Discovery should specify the formation of a site-
+ local address that follows the security recommendations from
+ [RFC7217].
+
+Appendix B. Representation Conventions
+
+B.1. Signature Schemes
+
+ The signature scheme ECDSA256 corresponding to Crypto-Type 0 is
+ ECDSA, as specified in [FIPS186-4], instantiated with the NIST prime
+ curve P-256, as specified in Appendix D.1.2 of [FIPS186-4], and the
+ hash function SHA-256, as specified in [RFC6234], where points of
+ this NIST curve are represented as points of a short-Weierstrass
+ curve (see [FIPS186-4]) and are encoded as octet strings in most-
+ significant-bit first (msb) and most-significant-byte first (MSB)
+ order. The signature itself consists of two integers (r and s),
+ which are each encoded as fixed-size octet strings in MSB and msb
+ order. For further details, see [FIPS186-4] for ECDSA, see
+ Appendix B.3 for the encoding of public keys, and see Appendix B.2
+ for signature encoding.
+
+ The signature scheme Ed25519 corresponding to Crypto-Type 1 is EdDSA,
+ as specified in [RFC8032], instantiated with the Montgomery curve
+ Curve25519, as specified in [RFC7748], and the hash function SHA-512,
+ as specified in [RFC6234], where points of this Montgomery curve are
+ represented as points of the corresponding twisted Edwards curve
+ Edwards25519 (see 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 consists of a bit string that
+ encodes a point of this twisted Edwards curve, in compressed format,
+ and an integer encoded in LSB and lsb order. For details on EdDSA
+ and the encoding of public keys and signatures, see the specification
+ of pure Ed25519 in [RFC8032].
+
+ The signature scheme ECDSA25519 corresponding to Crypto-Type 2 is
+ ECDSA, as specified in [FIPS186-4], instantiated with the Montgomery
+ curve Curve25519, as specified in [RFC7748], and the hash function
+ SHA-256, as specified in [RFC6234], where points of this Montgomery
+ curve are represented as points of the corresponding short-
+ Weierstrass curve Wei25519 (see Appendix B.4) and are encoded as
+ octet strings in MSB and msb order. The signature itself consists of
+ a bit string that encodes two integers (r and s), which are each
+ encoded as fixed-size octet strings in MSB and msb order. For
+ further details, see [FIPS186-4] for ECDSA, see Appendix B.3 for the
+ encoding of public keys, and see Appendix B.2 for signature encoding.
+
+B.2. Representation of ECDSA Signatures
+
+ With ECDSA, each signature is an ordered pair (r, s) of integers
+ [FIPS186-4], where each integer is represented as a 32-octet string
+ according to the FieldElement-to-OctetString conversion rules in
+ [SEC1] and where the ordered pair of integers is represented as the
+ right concatenation of these representation values (thereby resulting
+ in a 64-octet string). The inverse operation checks that the
+ signature is a 64-octet string and represents the left-side and
+ right-side halves of this string (each a 32-octet string) as the
+ integers r and s, respectively, using the OctetString-to-FieldElement
+ conversion rules in [SEC1]. In both cases, the field with these
+ conversion rules is the set of integers modulo n, where n is the
+ (prime) order of the base point of the curve in question. (For
+ elliptic curve nomenclature, see Appendix B.1 of [CURVE-REPR].)
+
+B.3. Representation of Public Keys Used with ECDSA
+
+ ECDSA is specified to be used with elliptic curves in short-
+ Weierstrass form. Each point of such a curve is represented as an
+ octet string using the Elliptic-Curve-Point-to-Octet-String
+ conversion rules in [SEC1], where point compression may be enabled
+ (which is indicated by the leftmost octet of this representation).
+ The inverse operation converts an octet string to a point of this
+ curve using the Octet-String-to-Elliptic-Curve-Point conversion rules
+ in [SEC1], whereby the point is rejected if this is the so-called
+ point at infinity. (This is the case if the input to this inverse
+ operation is an octet string of length 1.)
+
+B.4. Alternative Representations of Curve25519
+
+ The elliptic curve Curve25519, as specified in [RFC7748], is a so-
+ called Montgomery curve. Each point of this curve can also be
+ represented as a point of a twisted Edwards curve or as a point of an
+ elliptic curve in short-Weierstrass form, via a coordinate
+ transformation (a so-called isomorphic mapping). The parameters of
+ the Montgomery curve and the corresponding isomorphic curves in
+ twisted Edwards curve and short-Weierstrass form are as indicated
+ below. Here, the domain parameters of the Montgomery curve
+ Curve25519 and of the twisted Edwards curve Edwards25519 are as
+ specified in [RFC7748]; the domain parameters of the elliptic curve
+ Wei25519 in short-Weierstrass form comply with Section 6.1.1 of
+ [FIPS186-4]. For further details on these curves and on the
+ coordinate transformations referenced above, see [CURVE-REPR].
+
+ General parameters (for all curve models):
+
+ p 2^{255}-19
+ (=0x7fffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
+ ffffffed)
+ h 8
+ n
+ 723700557733226221397318656304299424085711635937990760600195093828
+ 5454250989
+ (=2^{252} + 0x14def9de a2f79cd6 5812631a 5cf5d3ed)
+
+ Montgomery curve-specific parameters (for Curve25519):
+
+ A 486662
+ B 1
+ Gu 9 (=0x9)
+ Gv
+ 147816194475895447910205935684099868872646061346164752889648818377
+ 55586237401
+ (=0x20ae19a1 b8a086b4 e01edd2c 7748d14c 923d4d7e 6d7c61b2 29e9c5a2
+ 7eced3d9)
+
+ Twisted Edwards curve-specific parameters (for Edwards25519):
+
+ a -1 (-0x01)
+ d -121665/121666
+ (=3709570593466943934313808350875456518954211387984321901638878553
+ 3085940283555)
+ (=0x52036cee 2b6ffe73 8cc74079 7779e898 00700a4d 4141d8ab 75eb4dca
+ 135978a3)
+ Gx
+ 151122213495354007725011514095885315114540126930418572060461132839
+ 49847762202
+ (=0x216936d3 cd6e53fe c0a4e231 fdd6dc5c 692cc760 9525a7b2 c9562d60
+ 8f25d51a)
+ Gy 4/5
+ (=4631683569492647816942839400347516314130799386625622561578303360
+ 3165251855960)
+ (=0x66666666 66666666 66666666 66666666 66666666 66666666 66666666
+ 66666658)
+
+ Weierstrass curve-specific parameters (for Wei25519):
+
+ a
+ 192986815395526992372618308347813179755449974442734273399095973345
+ 73241639236
+ (=0x2aaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaa98
+ 4914a144)
+ b
+ 557517466698189089076452890782571408182411037279010123152944008379
+ 56729358436
+ (=0x7b425ed0 97b425ed 097b425e d097b425 ed097b42 5ed097b4 260b5e9c
+ 7710c864)
+ GX
+ 192986815395526992372618308347813179755449974442734273399095973346
+ 52188435546
+ (=0x2aaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa
+ aaad245a)
+ GY
+ 147816194475895447910205935684099868872646061346164752889648818377
+ 55586237401
+ (=0x20ae19a1 b8a086b4 e01edd2c 7748d14c 923d4d7e 6d7c61b2 29e9c5a2
+ 7eced3d9)
+
+Acknowledgments
+
+ Many thanks to Charlie Perkins for his in-depth review and
+ constructive suggestions. The authors are also especially grateful
+ to Robert Moskowitz and Benjamin Kaduk for their comments and
+ discussions that led to many improvements. The authors wish to also
+ thank Shwetha Bhandari for actively shepherding this document and
+ Roman Danyliw, Alissa Cooper, Mirja Kühlewind, Éric Vyncke, Vijay
+ Gurbani, Al Morton, and Adam Montville for their constructive reviews
+ during the IESG process. Finally, many thanks to our INT area ADs,
+ Suresh Krishnan and Erik Kline, who supported us along the whole
+ process.
+
+Authors' Addresses
+
+ Pascal Thubert (editor)
+ Cisco Systems, Inc.
+ Building D
+ 45 Allee des Ormes - BP1200
+ 06254 MOUGINS - Sophia Antipolis
+ France
+
+ Phone: +33 497 23 26 34
+ Email: pthubert@cisco.com
+
+
+ Behcet Sarikaya
+
+ Email: sarikaya@ieee.org
+
+
+ Mohit Sethi
+ Ericsson
+ FI-02420 Jorvas
+ Finland
+
+ Email: mohit@piuha.net
+
+
+ Rene Struik
+ Struik Security Consultancy
+
+ Email: rstruik.ext@gmail.com