rfc-4941

Privacy Extensions for Stateless Address Autoconfiguration in IPv6

T. Narten, R. Draves, S. Krishnan
date2007-09 streamIETF areaint wgipv6 statusDRAFT STANDARD pages23 canonicalhttps://www.rfc-editor.org/rfc/rfc4941 doi10.17487/RFC4941 errataview
Nodes use IPv6 stateless address autoconfiguration to generate addresses using a combination of locally available information and information advertised by routers. Addresses are formed by combining network prefixes with an interface identifier. On an interface that contains an embedded IEEE Identifier, the interface identifier is typically derived from it. On other interface types, the interface identifier is generated through other means, for example, via random number generation. This document describes an extension to IPv6 stateless address autoconfiguration for interfaces whose interface identifier is derived from an IEEE identifier. Use of the extension causes nodes to generate global scope addresses from interface identifiers that change over time, even in cases where the interface contains an embedded IEEE identifier. Changing the interface identifier (and the global scope addresses generated from it) over time makes it more difficult for eavesdroppers and other information collectors to identify when different addresses used in different transactions actually correspond to the same node. [STANDARDS-TRACK]

obsoleted by

obsoletes

Extracted elements (28)

design-rationale §3

By default, the same randomized interface identifier is used across all prefixes on an interface to minimize the number of solicited-node multicast groups a node must join, avoiding potential promiscuous-mode requirements. Nodes highly concerned about privacy MAY use different identifiers per prefix.

privacy, ip, multicast

design-rationale §3.2.1

MD5 was chosen as the hash algorithm for generating randomized interface identifiers purely for convenience, as its properties were adequate to produce the desired level of randomization. The node MAY use another algorithm instead of MD5.

privacy, ip, crypto

design-rationale §2.4

The extension generates temporary addresses from randomized interface identifiers that change over time, rather than modifying the stable public address, so that nodes can maintain a stable public address for server use while using temporary addresses for outgoing client connections — analogous to having a listed phone number but suppressing caller ID.

privacy, ip, v6ops

design-rationale §3.2.1

Using a history value (the rightmost 64 bits of a previous MD5 computation) rather than purely random generation avoids the scenario where two nodes with a flawed RNG generate the same randomized identifier repeatedly; the globally unique IEEE identifier in the input ensures divergent sequences after a collision.

privacy, ip

interoperability-note §3.6

Applications that open multiple sessions expecting them all to use the same source address, or that do not tolerate address changes mid-connection, may break when temporary addresses expire. This is one reason temporary addresses are disabled by default.

ip, privacy, v6ops

interoperability-note §3.2.3

CGA (Cryptographically Generated Addresses) is not suitable as an alternative for privacy addresses because CGA binds the interface identifier to a public key (enabling node identification via the key) and is computationally intensive, discouraging frequent regeneration.

ip, crypto, privacy

interoperability-note §4

Some servers perform reverse DNS (PTR) lookups and may refuse connections from clients whose temporary addresses are not registered in DNS. Nodes may register temporary addresses in DNS under random names as a workaround, though inverse-DNS-based authentication has little validity.

ip, dns, privacy, v6ops

normative-requirement §4 MUST

Implementations MUST provide a method for the end user or trusted administrator to override the use of temporary addresses (repeated from Section 4, emphasizing operational control).

ip, privacy

normative-requirement §3.6 MUST

Implementations MUST provide a way for the end user to explicitly enable or disable the use of temporary addresses. Implementations SHOULD also provide a way for trusted administrators to enable or disable temporary addresses, as well as per-prefix granularity control.

ip, privacy, v6ops

normative-requirement §3.5 SHOULD

Implementations SHOULD provide users with the ability to override TEMP_PREFERRED_LIFETIME and TEMP_VALID_LIFETIME default values, since appropriate address lifetimes vary by environment and application usage patterns.

ip, privacy

normative-requirement §3.3 MUST

New temporary addresses MUST be created by appending the interface's current randomized interface identifier to the received prefix.

ip, privacy

normative-requirement §3.4 SHOULD

Nodes SHOULD start the address regeneration process REGEN_ADVANCE time units before a temporary address would actually be deprecated, to avoid race conditions during DAD. A new randomized interface identifier SHOULD be generated at least once every (TEMP_PREFERRED_LIFETIME - REGEN_ADVANCE - DESYNC_FACTOR) time units.

ip, privacy

normative-requirement §3.3 MUST

Temporary address lifetime values MUST be derived from the corresponding prefix: Valid Lifetime is the lower of the prefix's Valid Lifetime or TEMP_VALID_LIFETIME; Preferred Lifetime is the lower of the prefix's Preferred Lifetime or (TEMP_PREFERRED_LIFETIME - DESYNC_FACTOR). An implementation MUST NOT create a temporary address with a zero Preferred Lifetime.

ip, privacy

normative-requirement §3.2.1 SHOULD

The initial history value SHOULD be generated at random using techniques that ensure it is hard to guess; RFC 4086 is referenced for guidance on random number sources.

ip, privacy, crypto

normative-requirement §3.1 SHOULD

The randomized interface identifier value SHOULD change over time; while the same identifier can be used to create more than one temporary address, it should not remain static indefinitely.

ip, privacy

normative-requirement §3.6 SHOULD

The use of temporary addresses SHOULD be disabled by default to minimize potential disruptions to applications that depend on address stability or reverse-DNS validation.

ip, privacy, v6ops

normative-requirement §3.5 MUST

When a preferred lifetime expires, a new temporary address MUST be generated using the new randomized interface identifier.

ip, privacy

normative-requirement §3.4 MUST

When a temporary address becomes deprecated, a new one MUST be generated, except when the deprecation results from a Prefix Information Option with a zero Preferred Lifetime, in which case a new temporary address MUST NOT be generated.

ip, privacy

normative-requirement §3.5 SHOULD

When an interface connects to a new link, a new randomized interface identifier SHOULD be generated immediately together with a new set of temporary addresses, to prevent correlation of addresses across links.

ip, privacy, v6ops

normative-requirement §3.3 MUST

When processing a Router Advertisement with a global-scope Prefix Information option with A bit set, the node MUST perform DAD on every generated temporary address. If DAD detects a collision, the node MUST generate a new randomized interface identifier and retry up to TEMP_IDGEN_RETRIES times; after exhausting retries it MUST log a system error and MUST NOT generate further temporary addresses for that interface.

ip, privacy, v6ops

privacy-consideration §3.6

If only a very small number of nodes share a prefix for extended periods, changing the interface identifier alone does not ensure privacy, because the network prefix itself serves as a constant identifier grouping those nodes.

privacy, ip

privacy-consideration §1.2

IPv6 stateless address autoconfiguration embeds a fixed interface identifier (derived from an IEEE MAC address) into every global address, enabling eavesdroppers to correlate seemingly unrelated transactions across time and topology changes, even when upper-layer payloads are encrypted.

privacy, ip, v6ops

privacy-consideration §6

Temporary addresses are ineffective against sophisticated traffic analysis based on packet payload content, size, and timing. More advanced techniques such as onion routing may be needed for stronger anonymity.

privacy, censorship

protocol-element §3.2.1

A randomized interface identifier is a 64-bit value derived by computing the MD5 digest over a concatenation of a history value and the IEEE-derived interface identifier, taking the leftmost 64 bits, and setting bit 6 to zero to indicate local significance only.

ip, privacy

protocol-element §3.3

A temporary address is formed by appending the interface's current randomized interface identifier to a globally scoped prefix received in a Router Advertisement Prefix Information option (A bit set). Its Valid Lifetime is min(public address Valid Lifetime, TEMP_VALID_LIFETIME) and its Preferred Lifetime is min(public address Preferred Lifetime, TEMP_PREFERRED_LIFETIME - DESYNC_FACTOR).

ip, privacy, v6ops

protocol-element §5

Defined constants: TEMP_VALID_LIFETIME = 1 week (default), TEMP_PREFERRED_LIFETIME = 1 day (default), REGEN_ADVANCE = 5 seconds, MAX_DESYNC_FACTOR = 10 minutes, TEMP_IDGEN_RETRIES = 3 (default). All user-configurable except REGEN_ADVANCE.

ip, privacy

protocol-element §5

DESYNC_FACTOR is a random value in the range [0, MAX_DESYNC_FACTOR] computed once at system start, ensuring clients do not synchronize address regeneration. It must never exceed (TEMP_VALID_LIFETIME - REGEN_ADVANCE). MAX_DESYNC_FACTOR is 10 minutes.

ip, privacy

security-consideration §7

Frequent generation of new temporary addresses in large networks may make it difficult for ingress filtering mechanisms to distinguish legitimately changing temporary addresses from spoofed in-prefix source addresses. Per-address access control at network egress points is suggested as a mitigation.

security, ip, privacy