rfc-8928

Address-Protected Neighbor Discovery for Low-Power and Lossy Networks

P. Thubert (Editor), B. Sarikaya, M. Sethi, R. Struik
date2020-11 streamIETF areaint wg6lo statusPROPOSED STANDARD pages29 canonicalhttps://www.rfc-editor.org/rfc/rfc8928 doi10.17487/RFC8928 errataview
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.

updated by

updates

Extracted elements (31)

design-rationale §1

AP-ND separates the IID from cryptographic material, unlike SEND/CGA which derive the IID from the public key. This allows 6LoWPAN address compression (which requires L2-derived IIDs) to remain functional while still providing cryptographic proof of ownership via the ROVR/Crypto-ID.

ip, security, crypto

design-rationale §6.1

Both the 6LR and 6LN contribute nonces (NonceLR and NonceLN), both included in the signed material. This 'contributory nonce' design provides protection against replay attacks even when one party's nonces are not generated with strong randomness.

security, crypto

design-rationale §4.3

The CIPO Modifier field (8-bit) allows a 6LN to derive multiple distinct Crypto-IDs from the same key pair for different addresses, reducing traceability without requiring multiple key pairs — a privacy enhancement specifically for constrained nodes.

privacy, ip, security

design-rationale §7.4

The proof of ownership is validated at the edge (6LR), not the center (6LBR), to reduce DoS risk to the central registry and avoid back-and-forth exchanges across a large constrained network. The downside is that the 6LBR must trust the 6LR to perform the check, requiring protected communication between them.

ip, security

interoperability-note §7.1

This specification is only compatible with 6LRs upgraded to support it; in mixed deployments the 'A' flag must remain unset until all 6LRs are upgraded. An attacker can defeat protection by attaching to any legacy 6LR in the subnet.

ip, security

normative-requirement §4.1 RECOMMENDED

A node in possession of the necessary cryptographic primitives SHOULD use Crypto-ID by default as ROVR in its registrations. A minimal size of 128 bits for the Crypto-ID is RECOMMENDED unless backward compatibility with RFC 8505 is needed (in which case at least 64 bits).

ip, security, crypto

normative-requirement §4.4 MUST

An ND message that carries an NDPSO MUST have one and only one EARO, and the EARO MUST contain a Crypto-ID in the ROVR field associated with the key pair used for the digital signature.

ip, security

normative-requirement §6 MUST

If the 6LR does not support the Crypto-Type presented by a 6LN, it MUST reply with EARO status code 10 'Validation Failed' without a challenge; Crypto-Type 0 (ECDSA256) MUST be supported by all 6LRs.

ip, security, crypto

normative-requirement §7.8 MUST

Public keys in the CIPO MUST be validated: for Ed25519, verify the point is not in the small subgroup; for ECDSA (ECDSA256 and ECDSA25519), verify the point has the same order as the base point (full public key validation).

security, crypto

normative-requirement §6 MUST

The 6LR MUST indicate to the 6LBR that it performed a successful validation by setting status code 5 ('Validation Requested') in the EDAR. Upon a subsequent EDAR from a new 6LR without status 5 for a validated Binding, the 6LBR MUST return status 5 in the EDAC to require re-challenge.

ip, security

normative-requirement §7.2 MUST

The 6LR MUST protect itself against registration overflows and reject excessive registrations with status code 2 'Neighbor Cache Full' to prevent a DoS attack via mass address registration.

security, ip

normative-requirement §6.1 MUST

The 6LR MUST store the information associated with a Crypto-ID on the first NS exchange in a fashion that the CIPO parameters can be retrieved from the Crypto-ID alone. A valid registration MUST NOT be altered until a challenge is complete.

ip, security

normative-requirement §4.3 MUST

The ECDSA256 signature scheme (ECDSA with NIST P-256 and SHA-256) MUST be supported by all implementations. The Ed25519 and ECDSA25519 schemes MAY be supported as alternatives.

ip, security, crypto

normative-requirement §7.7 MUST

The same private key MUST NOT be reused with more than one instantiation of the signature scheme, and MUST NOT be used for anything other than computing NDPSO signatures. Each ECDSA signing operation MUST use a freshly randomly generated ephemeral private key k.

security, crypto

normative-requirement §6 MUST

When the 'A' flag in a subnet is set, the 6LR MUST challenge the 6LN before creating a Binding with the 'C' flag set in the EARO, and MUST also challenge when a new registration attempts to change a parameter of an already-validated Binding.

ip, security

privacy-consideration §7.9

Using the same Crypto-ID across multiple address registrations enables an attacker observing registrations to correlate traffic to the same 6LN. The Modifier field enables multiple Crypto-IDs per key pair, improving privacy; however, if 6LR state is compromised, the shared public key still links the registrations.

privacy, ip, security

protocol-element §4.5

The 6LoWPAN Capability Indication Option (6CIO) gains a new 1-bit 'A' flag (bit 9) to indicate AP-ND is globally activated in the network. It is set by the 6LBR and propagated unchanged by 6LRs, and SHOULD be turned on only after all 6LRs are upgraded.

ip, security

protocol-element §4.1

The Crypto-ID is derived by applying the hash function indicated by the Crypto-Type to the CIPO (with all reserved and padding bits set to zero), then taking the leftmost bits of the resulting hash up to the desired size. It is transported in the ROVR field of the EARO and associated with the Registered Address at the 6LR and 6LBR.

ip, security, crypto

protocol-element §6.2

The NDPSO signature is computed over: the 128-bit CGA Message Type tag, the CIPO, the 16-byte Target Address, the NonceLR, the NonceLN, and the 1-byte EARO option length — concatenated in that order and signed with the private key using the algorithm indicated by Crypto-Type.

ip, security, crypto

registry §8.1

IANA assigned a new 128-bit CGA Extension Type Tag under the 'CGA Extension Type Tags' subregistry: 0x870155c80ccadd326ab7e415f14884d0, for use as the message type tag in NDPSO signature computation.

registry, security, crypto

registry §8.2

IANA created the 'Crypto-Types' subregistry in the ICMPv6 Parameters registry, indexed 0–255. Each entry specifies elliptic curve, hash function, signature algorithm, representation conventions, public key size, and signature size. Values 0 (ECDSA256), 1 (Ed25519), and 2 (ECDSA25519) are defined. New values require 'Specification Required' or 'IESG Approval'.

registry, security, crypto

registry §8.4

IANA registered a new 6LoWPAN Capability Bit (bit 9) for 'AP-ND Enabled' in the '6LoWPAN Capability Bits' subregistry created for RFC 7400.

registry, ip

registry §8.3

IANA registered two new IPv6 Neighbor Discovery Option types: Type 39 for the Crypto-ID Parameters Option (CIPO) and Type 40 for the NDP Signature Option (NDPSO), both under the 'IPv6 Neighbor Discovery Option Formats' subregistry.

registry, ip, security

security-consideration §7.6

Careless implementations of Ed25519 signing may leak private key material via micro-architectural side channels; a secure Ed25519 implementation requires a protected SHA-512 implementation, which is not necessary for ECDSA256/ECDSA25519 using SHA-256.

security, crypto

security-consideration §7.4

If a 6LR is compromised and knows the real owner's ROVR, it can falsely claim the owner moved and passed validation, then attract/inject traffic or allow an attacker to steal address ownership. The 6LBR–6LR link MUST be integrity-protected to limit this threat.

security, ip

security-consideration §7.1

In a brown (mixed) network, an attacker may attach to a legacy 6LR that cannot perform the Crypto-ID challenge. Security is only fully effective after all 6LRs in the network are upgraded; the 'A' flag should be set only at that point.

security, ip

security-consideration §7.5

ROVR (Crypto-ID) collisions are possible but rare; a 64-bit Crypto-ID yields a 0.01% collision probability for 66 million nodes. To avoid an honest node accidentally claiming another's address, nodes SHOULD NOT derive their registered address from the ROVR.

security, ip

state-machine §6.1

First exchange with a 6LR: 6LN sends NS(EARO, C-flag) → 6LR challenges with NA(EARO, status=Validation Requested, NonceLR) → 6LN responds with NS(EARO, CIPO, NonceLN, NDPSO) → 6LR verifies and replies with NA(EARO). Subsequent renewals skip the challenge if state is consistent.

ip, security

wire-format §4.3

The Crypto-ID Parameters Option (CIPO) carries the public key and algorithm parameters: Type=39, 8-bit Length, 5-bit Reserved1, 11-bit Public Key Length, 8-bit Crypto-Type, 8-bit Modifier, 8-bit EARO Length, variable-length Public Key, and zero-padded to the next 8-byte boundary.

ip, security, crypto

wire-format §4.4

The NDP Signature Option (NDPSO) carries the digital signature: Type=40, 8-bit Length, 5-bit Reserved1, 11-bit Digital Signature Length, 32-bit Reserved2, variable-length Digital Signature, and zero-padded to the next 8-byte boundary.

ip, security, crypto

wire-format §4.2

The updated Extended Address Registration Option (EARO) adds a 1-bit 'C' flag (bit 4 of the second word) to indicate the ROVR field contains a Crypto-ID. Type is 33; reserved bits MUST be zero on send and ignored on receive.

ip, security