draft-ietf-6man-stable-privacy-addresses-17.txt   rfc7217.txt 
IPv6 maintenance Working Group (6man) F. Gont Internet Engineering Task Force (IETF) F. Gont
Internet-Draft SI6 Networks / UTN-FRH Request for Comments: 7217 SI6 Networks / UTN-FRH
Intended status: Standards Track January 27, 2014 Category: Standards Track April 2014
Expires: July 31, 2014 ISSN: 2070-1721
A Method for Generating Semantically Opaque Interface Identifiers with A Method for Generating Semantically Opaque Interface Identifiers
IPv6 Stateless Address Autoconfiguration (SLAAC) with IPv6 Stateless Address Autoconfiguration (SLAAC)
draft-ietf-6man-stable-privacy-addresses-17
Abstract Abstract
This document specifies a method for generating IPv6 Interface This document specifies a method for generating IPv6 Interface
Identifiers to be used with IPv6 Stateless Address Autoconfiguration Identifiers to be used with IPv6 Stateless Address Autoconfiguration
(SLAAC), such that addresses configured using this method are stable (SLAAC), such that an IPv6 address configured using this method is
within each subnet, but the Interface Identifier changes when hosts stable within each subnet, but the corresponding Interface Identifier
move from one network to another. This method is meant to be an changes when the host moves from one network to another. This method
alternative to generating Interface Identifiers based on hardware is meant to be an alternative to generating Interface Identifiers
addresses (e.g., IEEE LAN MAC addresses), such that the benefits of based on hardware addresses (e.g., IEEE LAN Media Access Control
stable addresses can be achieved without sacrificing the privacy of (MAC) addresses), such that the benefits of stable addresses can be
users. The method specified in this document applies to all prefixes achieved without sacrificing the security and privacy of users. The
a host may be employing, including link-local, global, and unique- method specified in this document applies to all prefixes a host may
local addresses. be employing, including link-local, global, and unique-local prefixes
(and their corresponding addresses).
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This is an Internet Standards Track document.
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 5741.
This Internet-Draft will expire on July 31, 2014. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
http://www.rfc-editor.org/info/rfc7217.
Copyright Notice Copyright Notice
Copyright (c) 2014 IETF Trust and the persons identified as the Copyright (c) 2014 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
(http://trustee.ietf.org/license-info) in effect on the date of (http://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 . . . . . . . . . . . . . . . . . . . . . . . . . 5 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Relationship to Other standards . . . . . . . . . . . . . . . 5 3. Relationship to Other Standards . . . . . . . . . . . . . . . 5
4. Design goals . . . . . . . . . . . . . . . . . . . . . . . . 5 4. Design Goals . . . . . . . . . . . . . . . . . . . . . . . . 6
5. Algorithm specification . . . . . . . . . . . . . . . . . . . 6 5. Algorithm Specification . . . . . . . . . . . . . . . . . . . 7
6. Resolving Duplicate Address Detection (DAD) conflicts . . . . 11 6. Resolving DAD Conflicts . . . . . . . . . . . . . . . . . . . 12
7. Specified Constants . . . . . . . . . . . . . . . . . . . . . 12 7. Specified Constants . . . . . . . . . . . . . . . . . . . . . 13
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 8. Security Considerations . . . . . . . . . . . . . . . . . . . 13
9. Security Considerations . . . . . . . . . . . . . . . . . . . 12 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 15
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 15
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 10.1. Normative References . . . . . . . . . . . . . . . . . . 15
11.1. Normative References . . . . . . . . . . . . . . . . . . 15 10.2. Informative References . . . . . . . . . . . . . . . . . 16
11.2. Informative References . . . . . . . . . . . . . . . . . 16 Appendix A. Possible Sources for the Net_Iface Parameter . . . . 19
Appendix A. Possible sources for the Net_Iface parameter . . . . 18 A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 19
A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 18 A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . 19
A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . 18 A.3. Link-Layer Addresses . . . . . . . . . . . . . . . . . . 19
A.3. Link-layer Addresses . . . . . . . . . . . . . . . . . . 19 A.4. Logical Network Service Identity . . . . . . . . . . . . 20
A.4. Logical Network Service Identity . . . . . . . . . . . . 19
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 19
1. Introduction 1. Introduction
[RFC4862] specifies Stateless Address Autoconfiguration (SLAAC) for [RFC4862] specifies Stateless Address Autoconfiguration (SLAAC) for
IPv6 [RFC2460], which typically results in hosts configuring one or IPv6 [RFC2460], which typically results in hosts configuring one or
more "stable" addresses composed of a network prefix advertised by a more "stable" addresses composed of a network prefix advertised by a
local router, and an Interface Identifier (IID) that typically embeds local router, and an Interface Identifier (IID) that typically embeds
a hardware address (e.g., an IEEE LAN MAC address) [RFC4291]. a hardware address (e.g., an IEEE LAN MAC address) [RFC4291].
Cryptographically Generated Addresses (CGAs) [RFC3972] are yet Cryptographically Generated Addresses (CGAs) [RFC3972] are yet
another method for generating Interface Identifiers, which bind a another method for generating Interface Identifiers; CGAs bind a
public signature key to an IPv6 address in the SEcure Neighbor public signature key to an IPv6 address in the SEcure Neighbor
Discovery (SEND) [RFC3971] protocol. Discovery (SEND) [RFC3971] protocol.
Generally, the traditional SLAAC addresses are thought to simplify Generally, the traditional SLAAC addresses are thought to simplify
network management, since they simplify Access Control Lists (ACLs) network management, since they simplify Access Control Lists (ACLs)
and logging. However, they have a number of drawbacks: and logging. However, they have a number of drawbacks:
o since the resulting Interface Identifiers do not vary over time, o Since the resulting Interface Identifiers do not vary over time,
they allow correlation of node activities within the same network, they allow correlation of host activities within the same network,
thus negatively affecting the privacy of users (see thus negatively affecting the privacy of users (see
[I-D.ietf-6man-ipv6-address-generation-privacy] and [ADDR-GEN-PRIVACY] and [IAB-PRIVACY]).
[IAB-PRIVACY]).
o since the resulting Interface Identifiers are constant across o Since the resulting Interface Identifiers are constant across
networks, the resulting IPv6 addresses can be leveraged to track networks, the resulting IPv6 addresses can be leveraged to track
and correlate the activity of a node across multiple networks and correlate the activity of a host across multiple networks
(e.g. track and correlate the activities of a typical client (e.g., track and correlate the activities of a typical client
connecting to the public Internet from different locations), thus connecting to the public Internet from different locations), thus
negatively affecting the privacy of users. negatively affecting the privacy of users.
o since embedding the underlying link-layer address in the Interface o Since embedding the underlying link-layer address in the Interface
Identifier will result in specific address patterns, such patterns Identifier will result in specific address patterns, such patterns
may be leveraged by attackers to reduce the search space when may be leveraged by attackers to reduce the search space when
performing address scanning attacks performing address-scanning attacks [IPV6-RECON]. For example,
[I-D.ietf-opsec-ipv6-host-scanning]. For example, the IPv6 the IPv6 addresses of all hosts manufactured by the same vendor
addresses of all nodes manufactured by the same vendor (within a (within a given time frame) will likely contain the same IEEE
given time frame) will likely contain the same IEEE
Organizationally Unique Identifier (OUI) in the Interface Organizationally Unique Identifier (OUI) in the Interface
Identifier. Identifier.
o embedding the underlying hardware address in the Interface o Embedding the underlying hardware address in the Interface
Identifier leaks device-specific information that could be Identifier leaks device-specific information that could be
leveraged to launch device-specific attacks. leveraged to launch device-specific attacks.
o embedding the underlying link-layer address in the Interface o Embedding the underlying link-layer address in the Interface
Identifier means that replacement of the underlying interface Identifier means that replacement of the underlying interface
hardware will result in a change of the IPv6 address(es) assigned hardware will result in a change of the IPv6 address(es) assigned
to that interface. to that interface.
[I-D.ietf-6man-ipv6-address-generation-privacy] provides additional [ADDR-GEN-PRIVACY] provides additional details regarding how the
details regarding how these vulnerabilities could be exploited, and aforementioned vulnerabilities could be exploited and the extent to
the extent to which the method discussed in this document mitigates which the method discussed in this document mitigates them.
them.
The "Privacy Extensions for Stateless Address Autoconfiguration in The "Privacy Extensions for Stateless Address Autoconfiguration in
IPv6" [RFC4941] (henceforth referred to as "temporary addresses") IPv6" [RFC4941] (henceforth referred to as "temporary addresses")
were introduced to complicate the task of eavesdroppers and other were introduced to complicate the task of eavesdroppers and other
information collectors (e.g., IPv6 addresses in web server logs or information collectors (e.g., IPv6 addresses in web server logs or
email headers, etc.) to correlate the activities of a node, and email headers, etc.) to correlate the activities of a host, and
basically result in temporary (and random) Interface Identifiers. basically result in temporary (and random) Interface Identifiers.
These temporary addresses are generated in addition to the These temporary addresses are generated in addition to the
traditional IPv6 addresses based on IEEE LAN MAC addresses, with the traditional IPv6 addresses based on IEEE LAN MAC addresses, with the
"temporary addresses" being employed for "outgoing communications", temporary addresses being employed for "outgoing communications", and
and the traditional SLAAC addresses being employed for "server" the traditional SLAAC addresses being employed for "server" functions
functions (i.e., receiving incoming connections). (i.e., receiving incoming connections).
It should be noted that temporary addresses can be challenging in a It should be noted that temporary addresses can be challenging in a
number of areas. For example, from a network-management point of number of areas. For example, from a network-management point of
view, they tend to increase the complexity of event logging, trouble- view, they tend to increase the complexity of event logging,
shooting, enforcement of access controls and quality of service, etc. troubleshooting, enforcement of access controls, and quality of
As a result, some organizations disable the use of temporary service, etc. As a result, some organizations disable the use of
addresses even at the expense of reduced privacy [Broersma]. temporary addresses even at the expense of reduced privacy
Temporary addresses may also result in increased implementation [BROERSMA]. Temporary addresses may also result in increased
complexity, which might not be possible or desirable in some implementation complexity, which might not be possible or desirable
implementations (e.g., some embedded devices). in some implementations (e.g., some embedded devices).
In scenarios in which temporary addresses are deliberately not used In scenarios in which temporary addresses are deliberately not used
(possibly for any of the aforementioned reasons), all a host is left (possibly for any of the aforementioned reasons), all a host is left
with is the stable addresses that have typically been generated from with is the stable addresses that have typically been generated from
the underlying hardware addresses. In such scenarios, it may still the underlying hardware addresses. In such scenarios, it may still
be desirable to have addresses that mitigate address scanning be desirable to have addresses that mitigate address-scanning attacks
attacks, and that at the very least do not reveal the node's identity and that, at the very least, do not reveal the host's identity when
when roaming from one network to another -- without complicating the roaming from one network to another -- without complicating the
operation of the corresponding networks. operation of the corresponding networks.
However, even with "temporary addresses" in place, a number of issues However, even with temporary addresses in place, a number of issues
remain to be mitigated. Namely, remain to be mitigated. Namely,
o since "temporary addresses" [RFC4941] do not eliminate the use of o since temporary addresses [RFC4941] do not eliminate the use of
fixed identifiers for server-like functions, they only partially fixed identifiers for server-like functions, they only partially
mitigate host-tracking and activity correlation across networks mitigate host-tracking and activity correlation across networks
(see [I-D.ietf-6man-ipv6-address-generation-privacy] for some (see [ADDR-GEN-PRIVACY] for some example attacks that are still
example attacks that are still possible with temporary addresses). possible with temporary addresses).
o since "temporary addresses" [RFC4941] do not replace the o since temporary addresses [RFC4941] do not replace the traditional
traditional SLAAC addresses, an attacker can still leverage SLAAC addresses, an attacker can still leverage patterns in SLAAC
patterns in SLAAC addresses to greatly reduce the search space for addresses to greatly reduce the search space for "alive" nodes
"alive" nodes [Gont-DEEPSEC2011] [CPNI-IPv6] [GONT-DEEPSEC2011] [CPNI-IPV6] [IPV6-RECON].
[I-D.ietf-opsec-ipv6-host-scanning].
Hence, there is a motivation to improve the properties of "stable" Hence, there is a motivation to improve the properties of "stable"
addresses regardless of whether temporary addresses are employed or addresses regardless of whether or not temporary addresses are
not. employed.
This document specifies a method to generate Interface Identifiers This document specifies a method to generate Interface Identifiers
that are stable/constant for each network interface within each that are stable for each network interface within each subnet, but
subnet, but that change as hosts move from one network to another, that change as a host moves from one network to another. Thus, this
thus keeping the "stability" properties of the Interface Identifiers method enables keeping the "stability" properties of the Interface
specified in [RFC4291], while still mitigating address-scanning Identifiers specified in [RFC4291], while still mitigating address-
attacks and preventing correlation of the activities of a node as it scanning attacks and preventing correlation of the activities of a
moves from one network to another. host as it moves from one network to another.
2. Terminology 2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"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 RFC 2119 [RFC2119]. document are to be interpreted as described in [RFC2119].
3. Relationship to Other standards 3. Relationship to Other Standards
The method specified in this document is orthogonal to the use of The method specified in this document is orthogonal to the use of
"temporary" addresses [RFC4941], since it is meant to improve the temporary addresses [RFC4941], since it is meant to improve the
security and privacy properties of the stable addresses that are security and privacy properties of the stable addresses that are
employed along with the aforementioned "temporary" addresses. In employed along with the aforementioned temporary addresses. In
scenarios in which "temporary addresses" are employed, implementation scenarios in which temporary addresses are employed, implementation
of the mechanism described in this document (in replacement of stable of the mechanism described in this document (in replacement of stable
addresses based on e.g., IEEE LAN MAC addresses) will mitigate addresses based on, e.g., IEEE LAN MAC addresses) will mitigate
address-scanning attacks and also mitigate the remaining vectors for address-scanning attacks and also mitigate the remaining vectors for
correlating host activities based on the node's constant (i.e. stable correlating host activities based on the host's constant (i.e.,
across networks) Interface Identifiers. On the other hand, for nodes stable across networks) Interface Identifiers. On the other hand,
that currently disable "temporary addresses" [RFC4941], for hosts that currently disable temporary addresses [RFC4941],
implementation of this mechanism would mitigate the host-tracking and implementation of this mechanism would mitigate the host-tracking and
address scanning issues discussed in Section 1. address-scanning issues discussed in Section 1.
While the method specified in this document is meant to be used with While the method specified in this document is meant to be used with
SLAAC, this does not preclude this algorithm from being used with SLAAC, this does not preclude this algorithm from being used with
other address configuration mechanisms, such as DHCPv6 [RFC3315] or other address configuration mechanisms, such as DHCPv6 [RFC3315] or
manual address configuration. manual address configuration.
4. Design goals 4. Design Goals
This document specifies a method for generating Interface Identifiers This document specifies a method for generating Interface Identifiers
to be used with IPv6 SLAAC, with the following goals: to be used with IPv6 SLAAC, with the following goals:
o The resulting Interface Identifiers remain stable for each prefix o The resulting Interface Identifiers remain stable for each prefix
used with SLAAC within each subnet for the same network interface. used with SLAAC within each subnet for the same network interface.
That is, the algorithm generates the same Interface Identifier That is, the algorithm generates the same Interface Identifier
when configuring an address (for the same interface) belonging to when configuring an address (for the same interface) belonging to
the same prefix within the same subnet. the same prefix within the same subnet.
o The resulting Interface Identifiers must change when addresses are o The resulting Interface Identifiers must change when addresses are
configured for different prefixes. That is, if different configured for different prefixes. That is, if different
autoconfiguration prefixes are used to configure addresses for the autoconfiguration prefixes are used to configure addresses for the
same network interface card, the resulting Interface Identifiers same network interface card, the resulting Interface Identifiers
must be (statistically) different. This means that, given two must be (statistically) different. This means that, given two
addresses produced by the method specified in this document, it addresses produced by the method specified in this document, it
must be difficult for an attacker tell whether the addresses have must be difficult for an attacker to tell whether the addresses
been generated/used by the same node. have been generated by the same host.
o It must be difficult for an outsider to predict the Interface o It must be difficult for an outsider to predict the Interface
Identifiers that will be generated by the algorithm, even with Identifiers that will be generated by the algorithm, even with
knowledge of the Interface Identifiers generated for configuring knowledge of the Interface Identifiers generated for configuring
other addresses. other addresses.
o Depending on the specific implementation approach (see Section 5 o Depending on the specific implementation approach (see Section 5
and Appendix A), the resulting Interface Identifiers may be and Appendix A), the resulting Interface Identifiers may be
independent of the underlying hardware (e.g. IEEE LAN MAC independent of the underlying hardware (e.g., IEEE LAN MAC
address). This means that e.g. replacing a Network Interface Card address). For example, this means that replacing a Network
(NIC) or adding links dynamically to a Link Aggregation Group Interface Card (NIC) or adding links dynamically to a Link
(LAG) will not have the (generally undesirable) effect of changing Aggregation Group (LAG) will not have the (generally undesirable)
the IPv6 addresses used for that network interface. effect of changing the IPv6 addresses used for that network
interface.
o The method specified in this document is meant to be an o The method specified in this document is meant to be an
alternative to producing IPv6 addresses based hardware addresses alternative to producing IPv6 addresses based on hardware
(e.g. IEEE LAN MAC addresses, as specified in [RFC2464]). That addresses (e.g., IEEE LAN MAC addresses, as specified in
is, this document does not formally obsolete or deprecate any of [RFC2464]). That is, this document does not formally obsolete or
the existing algorithms to generate Interface Identifiers. It is deprecate any of the existing algorithms to generate Interface
meant to be employed for all of the stable (i.e. non-temporary) Identifiers. It is meant to be employed for all of the stable
IPv6 addresses configured with SLAAC for a given interface, (i.e., non-temporary) IPv6 addresses configured with SLAAC for a
including global, link-local, and unique-local IPv6 addresses. given interface, including global, link-local, and unique-local
IPv6 addresses.
We note that this method is incrementally deployable, since it does We note that this method is incrementally deployable, since it does
not pose any interoperability implications when deployed on networks not pose any interoperability implications when deployed on networks
where other nodes do not implement or employ it. Additionally, we where other nodes do not implement or employ it. Additionally, we
note that this document does not update or modify IPv6 StateLess note that this document does not update or modify IPv6 Stateless
Address Auto-Configuration (SLAAC) [RFC4862] itself, but rather only Address Autoconfiguration (SLAAC) [RFC4862] itself, but rather it
specifies an alternative algorithm to generate Interface Identifiers. only specifies an alternative algorithm to generate Interface
Therefore, the usual address lifetime properties (as specified in the Identifiers. Therefore, the usual address lifetime properties (as
corresponding Prefix Information Options) apply when IPv6 addresses specified in the corresponding Prefix Information Options) apply when
are generated as a result of employing the algorithm specified in IPv6 addresses are generated as a result of employing the algorithm
this document with SLAAC [RFC4862]. Additionally, from the point of specified in this document with SLAAC [RFC4862]. Additionally, from
view of renumbering, we note that these addresses behave like the the point of view of renumbering, we note that these addresses behave
traditional IPv6 addresses (that embed a hardware address) resulting like the traditional IPv6 addresses (that embed a hardware address)
from SLAAC [RFC4862]. resulting from SLAAC [RFC4862].
5. Algorithm specification 5. Algorithm Specification
IPv6 implementations conforming to this specification MUST generate IPv6 implementations conforming to this specification MUST generate
Interface Identifiers using the algorithm specified in this section Interface Identifiers using the algorithm specified in this section
in replacement of any other algorithms used for generating "stable" as a replacement for any other algorithms for generating "stable"
addresses with SLAAC (such as those specified in [RFC2464], addresses with SLAAC (such as those specified in [RFC2464],
[RFC2467], and [RFC2470]). However, implementations conforming to [RFC2467], and [RFC2470]). However, implementations conforming to
this specification MAY employ the algorithm specified in [RFC4941] to this specification MAY employ the algorithm specified in [RFC4941] to
generate temporary addresses in addition to the addresses generated generate temporary addresses in addition to the addresses generated
with the algorithm specified in this document. The method specified with the algorithm specified in this document. The method specified
in this document MUST be employed for generating the Interface in this document MUST be employed for generating the Interface
Identifiers with SLAAC for all the stable addresses, including IPv6 Identifiers with SLAAC for all the stable addresses, including IPv6
global, link-local, and unique-local addresses. global, link-local, and unique-local addresses.
Implementations conforming to this specification SHOULD provide the Implementations conforming to this specification SHOULD provide the
skipping to change at page 8, line 4 skipping to change at page 8, line 24
Net_Iface: Net_Iface:
An implementation-dependent stable identifier associated with An implementation-dependent stable identifier associated with
the network interface for which the RID is being generated. the network interface for which the RID is being generated.
An implementation MAY provide a configuration option to select An implementation MAY provide a configuration option to select
the source of the identifier to be used for the Net_Iface the source of the identifier to be used for the Net_Iface
parameter. A discussion of possible sources for this value parameter. A discussion of possible sources for this value
(along with the corresponding trade-offs) can be found in (along with the corresponding trade-offs) can be found in
Appendix A. Appendix A.
Network_ID: Network_ID:
Some network-specific data that identifies the subnet to which
Some network specific data that identifies the subnet to which this interface is attached -- for example, the IEEE 802.11
this interface is attached. For example the IEEE 802.11
Service Set Identifier (SSID) corresponding to the network to Service Set Identifier (SSID) corresponding to the network to
which this interface is associated. Additionally, Simple DNA which this interface is associated. Additionally, Simple DNA
[RFC6059] describes ideas that could be leveraged to generate [RFC6059] describes ideas that could be leveraged to generate
a Network_ID parameter. This parameter is OPTIONAL. a Network_ID parameter. This parameter is OPTIONAL.
DAD_Counter: DAD_Counter:
A counter that is employed to resolve Duplicate Address A counter that is employed to resolve Duplicate Address
Detection (DAD) conflicts. It MUST be initialized to 0, and Detection (DAD) conflicts. It MUST be initialized to 0, and
incremented by 1 for each new tentative address that is incremented by 1 for each new tentative address that is
configured as a result of a DAD conflict. Implementations configured as a result of a DAD conflict. Implementations
that record DAD_Counter in non-volatile memory for each that record DAD_Counter in non-volatile memory for each
{Prefix, Net_Iface, Network_ID} tuple MUST initialize {Prefix, Net_Iface, Network_ID} tuple MUST initialize
DAD_Counter to the recorded value if such an entry exists in DAD_Counter to the recorded value if such an entry exists in
non-volatile memory. See Section 6 for additional details. non-volatile memory. See Section 6 for additional details.
secret_key: secret_key:
A secret key that is not known by the attacker. The secret A secret key that is not known by the attacker. The secret
key MUST be initialized to a pseudo-random number (see key SHOULD be of at least 128 bits. It MUST be initialized to
[RFC4086] for randomness requirements for security) at a pseudo-random number (see [RFC4086] for randomness
operating system installation time or when the IPv6 protocol requirements for security) when the operating system is
stack is initialized for the first time. An implementation installed or when the IPv6 protocol stack is "bootstrapped"
MAY provide the means for the the system administrator to for the first time. An implementation MAY provide the means
display and change the secret key. for the system administrator to display and change the secret
key.
2. The Interface Identifier is finally obtained by taking as many 2. The Interface Identifier is finally obtained by taking as many
bits from the RID value (computed in the previous step) as bits from the RID value (computed in the previous step) as
necessary, starting from the least significant bit. necessary, starting from the least significant bit.
We note that [RFC4291] requires that, the Interface IDs of all We note that [RFC4291] requires that the Interface IDs of all
unicast addresses (except those that start with the binary unicast addresses (except those that start with the binary
value 000) be 64-bit long. However, the method discussed in value 000) be 64 bits long. However, the method discussed in
this document could be employed for generating Interface IDs this document could be employed for generating Interface IDs
of any arbitrary length, albeit at the expense of reduced of any arbitrary length, albeit at the expense of reduced
entropy (when employing Interface IDs smaller than 64 bits). entropy (when employing Interface IDs smaller than 64 bits).
The resulting Interface Identifier SHOULD be compared against the The resulting Interface Identifier SHOULD be compared against the
reserved IPv6 Interface Identifiers [RFC5453] reserved IPv6 Interface Identifiers [RFC5453] [IANA-RESERVED-IID]
[IANA-RESERVED-IID], and against those Interface Identifiers and against those Interface Identifiers already employed in an
already employed in an address of the same network interface and address of the same network interface and the same network
the same network prefix. In the event that an unacceptable prefix. In the event that an unacceptable identifier has been
identifier has been generated, this situation SHOULD be handled generated, this situation SHOULD be handled in the same way as
in the same way as the case of duplicate addresses (see the case of duplicate addresses (see Section 6).
Section 6).
This document does not require the use of any specific PRF for the This document does not require the use of any specific PRF for the
function F() above, since the choice of such PRF is usually a trade- function F() above, since the choice of such PRF is usually a trade-
off between a number of properties (processing requirements, ease of off between a number of properties (processing requirements, ease of
implementation, possible intellectual property rights, etc.), and implementation, possible intellectual property rights, etc.), and
since the best possible choice for F() might be different for since the best possible choice for F() might be different for
different types of devices (e.g. embedded systems vs. regular different types of devices (e.g., embedded systems vs. regular
servers) and might possibly change over time. servers) and might possibly change over time.
Including the SLAAC prefix in the PRF computation causes the Including the SLAAC prefix in the PRF computation causes the
Interface Identifier to vary across each prefix (link-local, global, Interface Identifier to vary across each prefix (link-local, global,
etc.) employed by the node and, as consequently, also across etc.) employed by the host and, consequently, also across networks.
networks. This mitigates the correlation of activities of multi- This mitigates the correlation of activities of multihomed hosts
homed nodes (since each of the corresponding addresses will employ a (since each of the corresponding addresses will typically employ a
different Interface ID), host-tracking (since the network prefix will different prefix), host-tracking (since the network prefix will
change as the node moves from one network to another), and any other change as the host moves from one network to another), and any other
attacks that benefit from predictable Interface Identifiers (such as attacks that benefit from predictable Interface Identifiers (such as
IPv6 address scanning attacks). IPv6 address-scanning attacks).
The Net_Iface is a value that identifies the network interface for The Net_Iface is a value that identifies the network interface for
which an IPv6 address is being generated. The following properties which an IPv6 address is being generated. The following properties
are required for the Net_Iface parameter: are required for the Net_Iface parameter:
o it MUST be constant across system bootstrap sequences and other o It MUST be constant across system bootstrap sequences and other
network events (e.g., bringing another interface up or down) network events (e.g., bringing another interface up or down).
o it MUST be different for each network interface simultaneously in o It MUST be different for each network interface simultaneously in
use use.
Since the stability of the addresses generated with this method Since the stability of the addresses generated with this method
relies on the stability of all arguments of F(), it is key that the relies on the stability of all arguments of F(), it is key that the
Net_Iface be constant across system bootstrap sequences and other Net_Iface parameter be constant across system bootstrap sequences and
network events. Additionally, the Net_Iface must uniquely identify other network events. Additionally, the Net_Iface parameter must
an interface within the node, such that two interfaces connecting to uniquely identify an interface within the host, such that two
the same network do not result in duplicate addresses. Different interfaces connecting to the same network do not result in duplicate
types of operating systems might benefit from different stability addresses. Different types of operating systems might benefit from
properties of the Net_Iface parameter. For example, a client- different stability properties of the Net_Iface parameter. For
oriented operating system might want to employ Net_Iface identifiers example, a client-oriented operating system might want to employ
that are attached to the NIC, such that a removable NIC always gets Net_Iface identifiers that are attached to the NIC, such that a
the same IPv6 address, irrespective of the system communications port removable NIC always gets the same IPv6 address, irrespective of the
to which it is attached. On the other hand, a server-oriented system communications port to which it is attached. On the other
operating system might prefer Net_Iface identifiers that are attached hand, a server-oriented operating system might prefer Net_Iface
to system slots/ports, such that replacement of a network interface identifiers that are attached to system slots/ports, such that
card does not result in an IPv6 address change. Appendix A discusses replacement of a NIC does not result in an IPv6 address change.
possible sources for the Net_Iface, along with their pros and cons. Appendix A discusses possible sources for the Net_Iface along with
their pros and cons.
Including the optional Network_ID parameter when computing the RID Including the optional Network_ID parameter when computing the RID
value above causes the algorithm to produce a different Interface value above causes the algorithm to produce a different Interface
Identifier when connecting to different networks, even when Identifier when connecting to different networks, even when
configuring addresses belonging to the same prefix. This means that configuring addresses belonging to the same prefix. This means that
a host would employ a different Interface Identifier as it moves from a host would employ a different Interface Identifier as it moves from
one network to another even for IPv6 link-local addresses or Unique one network to another even for IPv6 link-local addresses or Unique
Local Addresses (ULAs) [RFC4193]. In those scenarios where the Local Addresses (ULAs) [RFC4193]. In those scenarios where the
Network_ID is unknown to the attacker, including this parameter might Network_ID is unknown to the attacker, including this parameter might
help mitigate attacks where a victim node connects to the same subnet help mitigate attacks where a victim host connects to the same subnet
as the attacker, and the attacker tries to learn the Interface as the attacker and the attacker tries to learn the Interface
Identifier used by the victim node for a remote network (see Identifier used by the victim host for a remote network (see
Section 9 for further details). Section 8 for further details).
The DAD_Counter parameter provides the means to intentionally cause The DAD_Counter parameter provides the means to intentionally cause
this algorithm to produce a different IPv6 addresses (all other this algorithm to produce different IPv6 addresses (all other
parameters being the same). This could be necessary to resolve parameters being the same). This could be necessary to resolve DAD
Duplicate Address Detection (DAD) conflicts, as discussed in detail conflicts, as discussed in detail in Section 6.
in Section 6.
Note that the result of F() in the algorithm above is no more secure Note that the result of F() in the algorithm above is no more secure
than the secret key. If an attacker is aware of the PRF that is than the secret key. If an attacker is aware of the PRF that is
being used by the victim (which we should expect), and the attacker being used by the victim (which we should expect), and the attacker
can obtain enough material (i.e. addresses configured by the victim), can obtain enough material (i.e., addresses configured by the
the attacker may simply search the entire secret-key space to find victim), the attacker may simply search the entire secret-key space
matches. To protect against this, the secret key SHOULD be of at to find matches. To protect against this, key lengths of at least
least 128 bits. Key lengths of at least 128 bits should be adequate. 128 bits should be adequate. The secret key is initialized at system
The secret key is initialized at system installation time to a installation time to a pseudorandom number, thus allowing this
pseudo-random number, thus allowing this mechanism to be enabled/used mechanism to be enabled and used automatically, without user
automatically, without user intervention. Providing a mechanism to intervention. Providing a mechanism to display and change the
display and change the secret_key would allow and administrator to secret_key would allow an administrator to cause a new/replacement
cause a replaced system (with the same implementation of this system (with the same implementation of this specification) to
document) to generate the same IPv6 addresses as the system being generate the same IPv6 addresses as the system being replaced. We
replaced. We note that since the privacy of the scheme specified in note that since the privacy of the scheme specified in this document
this document relies on the secrecy of the secret_key parameter, relies on the secrecy of the secret_key parameter, implementations
implementations should constrain access to the secret_key parameter should constrain access to the secret_key parameter to the extent
to the extent practicable (e.g., require superuser privileges to practicable (e.g., require superuser privileges to access it).
access it). Furthermore, in order to prevent leakages of the Furthermore, in order to prevent leakages of the secret_key
secret_key parameter, it should not be used for any other purposes parameter, it should not be used for any purposes other than being a
than being a parameter to the scheme specified in this document. parameter to the scheme specified in this document.
We note that all of the bits in the resulting Interface IDs are We note that all of the bits in the resulting Interface IDs are
treated as "opaque" bits [I-D.ietf-6man-ug]. For example, the treated as "opaque" bits [RFC7136]. For example, the universal/local
universal/local bit of Modified EUI-64 format identifiers is treated bit of Modified EUI-64 format identifiers is treated as any other bit
as any other bit of such identifier. In theory, this might result in of such an identifier. In theory, this might result in IPv6 address
IPv6 address collisions and Duplicate Address Detection (DAD) collisions and DAD failures that would otherwise not be encountered.
failures that would otherwise not be encountered. However, this is However, this is not deemed as a likely issue because of the
not deemed as a likely issue, because of the following following considerations:
considerations:
o The interface IDs of all addresses (except those of addresses that o The interface IDs of all addresses (except those of addresses that
that start with the binary value 000) are 64-bit long. Since the start with the binary value 000) are 64 bits long. Since the
method specified in this document results in random Interface IDs, method specified in this document results in random Interface IDs,
the probability of DAD failures is very small. the probability of DAD failures is very small.
o Real world data indicates that MAC address reuse is far more o Real-world data indicates that MAC address reuse is far more
common than assumed [HDMoore]. This means that even IPv6 common than assumed [HD-MOORE]. This means that even IPv6
addresses that employ (allegedly) unique identifiers (such as IEEE addresses that employ (allegedly) unique identifiers (such as IEEE
LAN MAC addresses) might result in DAD failures, and hence LAN MAC addresses) might result in DAD failures and, hence,
implementations should be prepared to gracefully handle such implementations should be prepared to gracefully handle such
occurrences. Additionally, some virtualization technologies occurrences. Additionally, some virtualization technologies
already employ hardware addresses that are randomly selected, and already employ hardware addresses that are randomly selected, and,
hence cannot be guaranteed to be unique hence, cannot be guaranteed to be unique [IPV6-RECON].
[I-D.ietf-opsec-ipv6-host-scanning].
o Since some popular and widely-deployed operating systems (such as o Since some popular and widely deployed operating systems (such as
Microsoft Windows) do not embed hardware addresses in the Microsoft Windows) do not embed hardware addresses in the
Interface IDs of their stable addresses, reliance on such unique Interface IDs of their stable addresses, reliance on such unique
identifiers is more reduced in the deployed world (fewer deployed identifiers is reduced in the deployed world (fewer deployed
systems rely on them for the avoidance of address collisions). systems rely on them for the avoidance of address collisions).
Finally, that since different implementation are likely to use Finally, we note that since different implementations are likely to
different values for the secret_key parameter, and may also employ use different values for the secret_key parameter, and may also
different PRFs for F() and different sources for the Net_Iface employ different PRFs for F() and different sources for the Net_Iface
parameter, the addresses generated by this scheme should not expected parameter, the addresses generated by this scheme should not expected
to be stable across different operating system installations. For to be stable across different operating-system installations. For
example, a host that is dual-boot or that is reinstalled may result example, a host that is dual-boot or that is reinstalled may result
in different IPv6 addresses for each operating system and/or in different IPv6 addresses for each operating system and/or
installation. installation.
6. Resolving Duplicate Address Detection (DAD) conflicts 6. Resolving DAD Conflicts
If as a result of performing Duplicate Address Detection (DAD) If, as a result of performing DAD [RFC4862], a host finds that the
[RFC4862] a host finds that the tentative address generated with the tentative address generated with the algorithm specified in Section 5
algorithm specified in Section 5 is a duplicate address, it SHOULD is a duplicate address, it SHOULD resolve the address conflict by
resolve the address conflict by trying a new tentative address as trying a new tentative address as follows:
follows:
o DAD_Counter is incremented by 1. o DAD_Counter is incremented by 1.
o A new Interface Identifier is generated with the algorithm o A new Interface Identifier is generated with the algorithm
specified in Section 5, using the incremented DAD_Counter value. specified in Section 5, using the incremented DAD_Counter value.
Hosts SHOULD introduce a random delay between 0 and IDGEN_DELAY Hosts SHOULD introduce a random delay between 0 and IDGEN_DELAY
seconds (see Section 7) before trying a new tentative address, to seconds (see Section 7) before trying a new tentative address, to
avoid lock-step behavior of multiple hosts. avoid lockstep behavior of multiple hosts.
This procedure may be repeated a number of times until the address This procedure may be repeated a number of times until the address
conflict is resolved. Hosts SHOULD try at least IDGEN_RETRIES (see conflict is resolved. Hosts SHOULD try at least IDGEN_RETRIES (see
Section 7) tentative addresses if DAD fails for successive generated Section 7) tentative addresses if DAD fails for successive generated
addresses, in the hopes of resolving the address conflict. We also addresses, in the hopes of resolving the address conflict. We also
note that hosts MUST limit the number of tentative addresses that are note that hosts MUST limit the number of tentative addresses that are
tried (rather than indefinitely try a new tentative address until the tried (rather than indefinitely try a new tentative address until the
conflict is resolved). conflict is resolved).
In those unlikely scenarios in which duplicate addresses are detected In those unlikely scenarios in which duplicate addresses are detected
and in which the order in which the conflicting nodes configure their and the order in which the conflicting hosts configure their
addresses may vary (e.g., because they may be bootstrapped in addresses varies (e.g., because they may be bootstrapped in different
different order), the algorithm specified in this section for orders), the algorithm specified in this section for resolving DAD
resolving DAD conflicts could lead to addresses that are not stable conflicts could lead to addresses that are not stable within the same
within the same subnet. In order to mitigate this potential problem, subnet. In order to mitigate this potential problem, hosts MAY
nodes MAY record the DAD_Counter value employed for a specific record the DAD_Counter value employed for a specific {Prefix,
{Prefix, Net_Iface, Network_ID} tuple in non-volatile memory, such Net_Iface, Network_ID} tuple in non-volatile memory, such that the
that the same DAD_Counter value is employed when configuring an same DAD_Counter value is employed when configuring an address for
address for the same Prefix and subnet at any other point in time. the same Prefix and subnet at any other point in time. We note that
We note that the use of non-volatile memory is OPTIONAL, and hosts the use of non-volatile memory is OPTIONAL, and hosts that do not
that do not implement this feature are still compliant to this implement this feature are still compliant to this protocol
protocol specification. specification.
In the event that a DAD conflict cannot be solved (possibly after In the event that a DAD conflict cannot be solved (possibly after
trying a number of different addresses), address configuration would trying a number of different addresses), address configuration would
fail. In those scenarios, nodes MUST NOT automatically fall back to fail. In those scenarios, hosts MUST NOT automatically fall back to
employing other algorithms for generating Interface Identifiers. employing other algorithms for generating Interface Identifiers.
7. Specified Constants 7. Specified Constants
This document specifies the following constant: This document specifies the following constant:
IDGEN_RETRIES: IDGEN_RETRIES:
defaults to 3. defaults to 3.
IDGEN_DELAY: IDGEN_DELAY:
defaults to 1 second. defaults to 1 second.
8. IANA Considerations 8. Security Considerations
There are no IANA registries within this document. The RFC-Editor
can remove this section before publication of this document as an
RFC.
9. Security Considerations
This document specifies an algorithm for generating Interface This document specifies an algorithm for generating Interface
Identifiers to be used with IPv6 Stateless Address Autoconfiguration Identifiers to be used with IPv6 Stateless Address Autoconfiguration
(SLAAC), as an alternative to e.g. Interface Identifiers that embed (SLAAC), as an alternative to e.g., Interface Identifiers that embed
hardware addresses (such as those specified in [RFC2464], [RFC2467], hardware addresses (such as those specified in [RFC2464], [RFC2467],
and [RFC2470]). When compared to such identifiers, the identifiers and [RFC2470]). When compared to such identifiers, the identifiers
specified in this document have a number of advantages: specified in this document have a number of advantages:
o They prevent trivial host-tracking based on the IPv6 address, o They prevent trivial host-tracking based on the IPv6 address,
since when a host moves from one network to another the network since when a host moves from one network to another the network
prefix used for autoconfiguration and/or the Network ID (e.g., prefix used for autoconfiguration and/or the Network ID (e.g.,
IEEE 802.11 SSID) will typically change, and hence the resulting IEEE 802.11 SSID) will typically change; hence, the resulting
Interface Identifier will also change (see Interface Identifier will also change (see [ADDR-GEN-PRIVACY]).
[I-D.ietf-6man-ipv6-address-generation-privacy]).
o They mitigate address-scanning techniques which leverage o They mitigate address-scanning techniques that leverage
predictable Interface Identifiers (e.g., known Organizationally predictable Interface Identifiers (e.g., known Organizationally
Unique Identifiers) [I-D.ietf-opsec-ipv6-host-scanning]. Unique Identifiers) [IPV6-RECON].
o They may result in IPv6 addresses that are independent of the o They may result in IPv6 addresses that are independent of the
underlying hardware (i.e. the resulting IPv6 addresses do not underlying hardware (i.e., the resulting IPv6 addresses do not
change if a network interface card is replaced) if an appropriate change if a network interface card is replaced) if an appropriate
source for Net_Iface (Section 5) is employed. source for Net_Iface (see Section 5) is employed.
o They prevent the information leakage produced by embedding o They prevent the information leakage produced by embedding
hardware addresses in the Interface Identifier (which could be hardware addresses in the Interface Identifier (which could be
exploited to launch device-specific attacks). exploited to launch device-specific attacks).
o Since the method specified in this document will result in o Since the method specified in this document will result in
different Interface Identifiers for each configured address, different Interface Identifiers for each configured address,
knowledge/leakage of the Interface Identifier employed for one knowledge or leakage of the Interface Identifier employed for one
stable address will not negatively affect the security/privacy of stable address will not negatively affect the security/privacy of
other stable addresses configured for other prefixes (whether at other stable addresses configured for other prefixes (whether at
the same time or at some other point in time). the same time or at some other point in time).
We note that while some probing techniques (such as the use of ICMPv6 We note that while some probing techniques (such as the use of ICMPv6
Echo Request and ICMPv6 Echo Response packets) could be mitigated by Echo Request and ICMPv6 Echo Response packets) could be mitigated by
a personal firewall at the target host, for other probing vectors, a personal firewall at the target host, for other probing vectors,
such as listening to ICMPv6 "Destination Unreachable, Address such as listening to ICMPv6 "Destination Unreachable, Address
Unreachable" (Type 1, Code 3) error messages referring to the target Unreachable" (Type 1, Code 3) error messages that refer to the target
addresses [I-D.ietf-opsec-ipv6-host-scanning], there is nothing a addresses [IPV6-RECON], there is nothing a host can do (e.g., a
host can do (e.g., a personal firewall at the target host would not personal firewall at the target host would not be able to mitigate
be able to mitigate this probing technique). Hence, the method this probing technique). Hence, the method specified in this
specified in this document is still of value for nodes that employ document is still of value for hosts that employ personal firewalls.
personal firewalls.
In scenarios in which an attacker can connect to the same subnet as a In scenarios in which an attacker can connect to the same subnet as a
victim node, the attacker might be able to learn the Interface victim host, the attacker might be able to learn the Interface
Identifier employed by the victim node for an arbitrary prefix, by Identifier employed by the victim host for an arbitrary prefix by
simply sending a forged Router Advertisement [RFC4861] for that simply sending a forged Router Advertisement [RFC4861] for that
prefix, and subsequently learning the corresponding address prefix, and subsequently learning the corresponding address
configured by the victim node (either listening to the Duplicate configured by the victim host (either listening to the Duplicate
Address Detection packets, or to any other traffic that employs the Address Detection packets or to any other traffic that employs the
newly configured address). We note that a number of factors might newly configured address). We note that a number of factors might
limit the ability of an attacker to successfully perform such an limit the ability of an attacker to successfully perform such an
attack: attack:
o First-Hop security mechanisms such as RA-Guard [RFC6105] o First-Hop security mechanisms such as Router Advertisement Guard
[I-D.ietf-v6ops-ra-guard-implementation] could prevent the forged (RA-Guard) [RFC6105] [RFC7113] could prevent the forged Router
Router Advertisement from reaching the victim node Advertisement from reaching the victim host.
o If the victim implementation includes the (optional) Network_ID o If the victim implementation includes the (optional) Network_ID
parameter for computing F() (see Section 5), and the Network_ID parameter for computing F() (see Section 5), and the Network_ID
employed by the victim for a remote network is unknown to the employed by the victim for a remote network is unknown to the
attacker, the Interface Identifier learned by the attacker would attacker, the Interface Identifier learned by the attacker would
differ from the one used by the victim when connecting to the differ from the one used by the victim when connecting to the
legitimate network. legitimate network.
In any case, we note that at the point in which this kind of attack In any case, we note that at the point in which this kind of attack
becomes a concern, a host should consider employing Secure Neighbor becomes a concern, a host should consider employing SEND [RFC3971] to
Discovery (SEND) [RFC3971] to prevent an attacker from illegitimately prevent an attacker from illegitimately claiming authority for a
claiming authority for a network prefix. network prefix.
We note that this algorithm is meant to be an alternative to We note that this algorithm is meant to be an alternative to
Interface Identifiers such as those specified in [RFC2464], but is Interface Identifiers such as those specified in [RFC2464], but it is
not meant as an alternative to temporary Interface Identifiers (such not meant as an alternative to temporary Interface Identifiers (such
as those specified in [RFC4941]). Clearly, temporary addresses may as those specified in [RFC4941]). Clearly, temporary addresses may
help to mitigate the correlation of activities of a node within the help to mitigate the correlation of activities of a host within the
same network, and may also reduce the attack exposure window (since same network, and they may also reduce the attack exposure window
temporary addresses are short-lived when compared to the addresses (since temporary addresses are short-lived when compared to the
generated with the method specified in this document). We note that addresses generated with the method specified in this document). We
implementation of this algorithm would still benefit those hosts note that the implementation of this specification would still
employing "temporary addresses", since it would mitigate host- benefit those hosts employing temporary addresses, since it would
tracking vectors still present when such addresses are used (see mitigate host-tracking vectors still present when such addresses are
[I-D.ietf-6man-ipv6-address-generation-privacy]), and would also used (see [ADDR-GEN-PRIVACY]) and would also mitigate address-
mitigate address-scanning techniques that leverage patterns in IPv6 scanning techniques that leverage patterns in IPv6 addresses that
addresses that embed IEEE LAN MAC addresses. Finally, we note that embed IEEE LAN MAC addresses. Finally, we note that the method
the method described in this document addresses some of the privacy described in this document addresses some of the privacy concerns
concerns arising from the use of IPv6 addresses that embed IEEE LAN arising from the use of IPv6 addresses that embed IEEE LAN MAC
MAC addresses, without the use of temporary addresses, thus possibly addresses, without the use of temporary addresses, thus possibly
offering an interesting trade-off for those scenarios in which the offering an interesting trade-off for those scenarios in which the
use of temporary addresses is not feasible. use of temporary addresses is not feasible.
10. Acknowledgements 9. Acknowledgements
The algorithm specified in this document has been inspired by Steven The algorithm specified in this document has been inspired by Steven
Bellovin's work ([RFC1948]) in the area of TCP sequence numbers. Bellovin's work ([RFC1948]) in the area of TCP sequence numbers.
The author would like to thank (in alphabetical order) Mikael The author would like to thank (in alphabetical order) Mikael
Abrahamsson, Ran Atkinson, Karl Auer, Steven Bellovin, Matthias Abrahamsson, Ran Atkinson, Karl Auer, Steven Bellovin, Matthias
Bethke, Ben Campbell, Brian Carpenter, Tassos Chatzithomaoglou, Tim Bethke, Ben Campbell, Brian Carpenter, Tassos Chatzithomaoglou, Tim
Chown, Alissa Cooper, Dominik Elsbroek, Stephen Farrell, Eric Gray, Chown, Alissa Cooper, Dominik Elsbroek, Stephen Farrell, Eric Gray,
Brian Haberman, Bob Hinden, Christian Huitema, Ray Hunter, Jouni Brian Haberman, Bob Hinden, Christian Huitema, Ray Hunter, Jouni
Korhonen, Suresh Krishnan, Eliot Lear, Jong-Hyouk Lee, Andrew Korhonen, Suresh Krishnan, Eliot Lear, Jong-Hyouk Lee, Andrew
McGregor, Thomas Narten, Simon Perreault, Tom Petch, Michael McGregor, Thomas Narten, Simon Perreault, Tom Petch, Michael
Richardson, Vincent Roca, Mark Smith, Hannes Frederic Sowa, Martin Richardson, Vincent Roca, Mark Smith, Hannes Frederic Sowa, Martin
Stiemerling, Dave Thaler, Ole Troan, Lloyd Wood, James Woodyatt, and Stiemerling, Dave Thaler, Ole Troan, Lloyd Wood, James Woodyatt, and
He Xuan, for providing valuable comments on earlier versions of this He Xuan, for providing valuable comments on earlier versions of this
document. document.
Hannes Frederic Sowa produced a reference implementation of this Hannes Frederic Sowa produced a reference implementation of this
specification for the Linux kernel. specification for the Linux kernel.
This document is based on the technical report "Security Assessment Finally, the author wishes to thank Nelida Garcia and Guillermo Gont
of the Internet Protocol version 6 (IPv6)" [CPNI-IPv6] authored by for their love and support.
Fernando Gont on behalf of the UK Centre for the Protection of
National Infrastructure (CPNI).
11. References
11.1. Normative References 10. References
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 10.1. Normative References
(IPv6) Specification", RFC 2460, December 1998.
[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, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", RFC 2460, December 1998.
[RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C., [RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C.,
and M. Carney, "Dynamic Host Configuration Protocol for and M. Carney, "Dynamic Host Configuration Protocol for
IPv6 (DHCPv6)", RFC 3315, July 2003. IPv6 (DHCPv6)", RFC 3315, July 2003.
[RFC3971] Arkko, J., Kempf, J., Zill, B., and P. Nikander, "SEcure [RFC3971] Arkko, J., Kempf, J., Zill, B., and P. Nikander, "SEcure
Neighbor Discovery (SEND)", RFC 3971, March 2005. Neighbor Discovery (SEND)", RFC 3971, March 2005.
[RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)", [RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)",
RFC 3972, March 2005. RFC 3972, March 2005.
skipping to change at page 16, line 19 skipping to change at page 16, line 32
[RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless
Address Autoconfiguration", RFC 4862, September 2007. Address Autoconfiguration", RFC 4862, September 2007.
[RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy
Extensions for Stateless Address Autoconfiguration in Extensions for Stateless Address Autoconfiguration in
IPv6", RFC 4941, September 2007. IPv6", RFC 4941, September 2007.
[RFC5453] Krishnan, S., "Reserved IPv6 Interface Identifiers", RFC [RFC5453] Krishnan, S., "Reserved IPv6 Interface Identifiers", RFC
5453, February 2009. 5453, February 2009.
[I-D.ietf-6man-ug] [RFC7136] Carpenter, B. and S. Jiang, "Significance of IPv6
Carpenter, B. and S. Jiang, "Significance of IPv6 Interface Identifiers", RFC 7136, February 2014.
Interface Identifiers", draft-ietf-6man-ug-06 (work in
progress), December 2013.
11.2. Informative References 10.2. Informative References
[ADDR-GEN-PRIVACY]
Cooper, A., Gont, F., and D. Thaler, "Privacy
Considerations for IPv6 Address Generation Mechanisms",
Work in Progress, February 2014.
[BROERSMA] Broersma, R., "IPv6 Everywhere: Living with a Fully
IPv6-enabled environment", Australian IPv6 Summit 2010,
Melbourne, VIC Australia, October 2010,
<http://www.ipv6.org.au/10ipv6summit/talks/
Ron_Broersma.pdf>.
[CPNI-IPV6]
Gont, F., "Security Assessment of the Internet Protocol
version 6 (IPv6)", UK Centre for the Protection of
National Infrastructure, (available on request).
[FIPS-SHS] NIST, "Secure Hash Standard (SHS)", FIPS Publication
180-4, March 2012, <http://csrc.nist.gov/publications/
fips/fips180-4/fips-180-4.pdf>.
[GONT-DEEPSEC2011]
Gont, F., "Results of a Security Assessment of the
Internet Protocol version 6 (IPv6)", DEEPSEC 2011
Conference, Vienna, Austria, November 2011,
<http://www.si6networks.com/presentations/deepsec2011/
fgont-deepsec2011-ipv6-security.pdf>.
[HD-MOORE] Moore, HD., "The Wild West", Louisville, Kentucky, U.S.A,
DerbyCon 2012, September 2012, <https://speakerdeck.com/
hdm/derbycon-2012-the-wild-west>.
[IAB-PRIVACY]
IAB, "Privacy and IPv6 Addresses", July 2011,
<http://www.iab.org/wp-content/IAB-uploads/2011/07/
IPv6-addresses-privacy-review.txt>.
[IANA-RESERVED-IID]
IANA, "Reserved IPv6 Interface Identifiers",
<http://www.iana.org/assignments/ipv6-interface-ids>.
[IPV6-RECON]
Gont, F. and T. Chown, "Network Reconnaissance in IPv6
Networks", Work in Progress, January 2014.
[RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321,
April 1992. April 1992.
[RFC1948] Bellovin, S., "Defending Against Sequence Number Attacks", [RFC1948] Bellovin, S., "Defending Against Sequence Number Attacks",
RFC 1948, May 1996. RFC 1948, May 1996.
[RFC2464] Crawford, M., "Transmission of IPv6 Packets over Ethernet [RFC2464] Crawford, M., "Transmission of IPv6 Packets over Ethernet
Networks", RFC 2464, December 1998. Networks", RFC 2464, December 1998.
skipping to change at page 17, line 13 skipping to change at page 18, line 21
2010. 2010.
[RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. [RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J.
Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105,
February 2011. February 2011.
[RFC6151] Turner, S. and L. Chen, "Updated Security Considerations [RFC6151] Turner, S. and L. Chen, "Updated Security Considerations
for the MD5 Message-Digest and the HMAC-MD5 Algorithms", for the MD5 Message-Digest and the HMAC-MD5 Algorithms",
RFC 6151, March 2011. RFC 6151, March 2011.
[I-D.ietf-opsec-ipv6-host-scanning] [RFC7113] Gont, F., "Implementation Advice for IPv6 Router
Gont, F. and T. Chown, "Network Reconnaissance in IPv6 Advertisement Guard (RA-Guard)", RFC 7113, February 2014.
Networks", draft-ietf-opsec-ipv6-host-scanning-02 (work in
progress), July 2013.
[I-D.ietf-v6ops-ra-guard-implementation]
Gont, F., "Implementation Advice for IPv6 Router
Advertisement Guard (RA-Guard)", draft-ietf-v6ops-ra-
guard-implementation-07 (work in progress), November 2012.
[I-D.ietf-6man-ipv6-address-generation-privacy]
Cooper, A., Gont, F., and D. Thaler, "Privacy
Considerations for IPv6 Address Generation Mechanisms",
draft-ietf-6man-ipv6-address-generation-privacy-00 (work
in progress), October 2013.
[HDMoore] HD Moore, , "The Wild West", Louisville, Kentucky, U.S.A,
September 2012, <https://speakerdeck.com/hdm/derbycon-2012
-the-wild-west>.
[IANA-RESERVED-IID]
Reserved IPv6 Interface Identifiers, ,
"http://www.iana.org/assignments/ipv6-interface-ids/
ipv6-interface-ids.xml", .
[Gont-DEEPSEC2011]
Gont, , "Results of a Security Assessment of the Internet
Protocol version 6 (IPv6)", DEEPSEC 2011 Conference,
Vienna, Austria, November 2011,
<http://www.si6networks.com/presentations/deepsec2011/
fgont-deepsec2011-ipv6-security.pdf>.
[Broersma]
Broersma, R., "IPv6 Everywhere: Living with a Fully
IPv6-enabled environment", Australian IPv6 Summit 2010,
Melbourne, VIC Australia, October 2010,
<http://www.ipv6.org.au/10ipv6summit/talks/
Ron_Broersma.pdf>.
[IAB-PRIVACY]
IAB, , "Privacy and IPv6 Addresses", July 2011,
<http://www.iab.org/wp-content/IAB-uploads/2011/07/
IPv6-addresses-privacy-review.txt>.
[CPNI-IPv6]
Gont, F., "Security Assessment of the Internet Protocol
version 6 (IPv6)", UK Centre for the Protection of
National Infrastructure, (available on request).
[FIPS-SHS]
FIPS, , "Secure Hash Standard (SHS)", Federal Information
Processing Standards Publication 180-4, March 2012,
<http://csrc.nist.gov/publications/fips/fips180-4/
fips-180-4.pdf>.
Appendix A. Possible sources for the Net_Iface parameter Appendix A. Possible Sources for the Net_Iface Parameter
The following subsections describe a number of possible sources for The following subsections describe a number of possible sources for
the Net_Iface parameter employed by the F() function in Section 5. the Net_Iface parameter employed by the F() function in Section 5.
The choice of a specific source for this value represents a number of The choice of a specific source for this value represents a number of
trade-offs, which may vary from one implementation to another. trade-offs, which may vary from one implementation to another.
A.1. Interface Index A.1. Interface Index
The Interface Index [RFC3493] [RFC3542] of an interface uniquely The Interface Index [RFC3493] [RFC3542] of an interface uniquely
identifies an interface within a node. However, these identifiers identifies that interface within the node. However, these
might or might not have the stability properties required for the identifiers might or might not have the stability properties required
Net_Iface value employed by this method. For example, the Interface for the Net_Iface value employed by this method. For example, the
Index might change upon removal or installation of a network Interface Index might change upon removal or installation of a
interface (typically one with a smaller value for the Interface network interface (typically one with a smaller value for the
Index, when such a naming scheme is used), or when network interfaces Interface Index, when such a naming scheme is used) or when network
happen to be initialized in a different order. We note that some interfaces happen to be initialized in a different order. We note
implementations are known to provide configuration knobs to set the that some implementations are known to provide configuration knobs to
Interface Index for a given interface. Such configuration knobs set the Interface Index for a given interface. Such configuration
could be employed to prevent the Interface Index from changing (e.g. knobs could be employed to prevent the Interface Index from changing
as a result of the removal of a network interface). (e.g., as a result of the removal of a network interface).
A.2. Interface Name A.2. Interface Name
The Interface Name (e.g., "eth0", "em0", etc) tends to be more stable The Interface Name (e.g., "eth0", "em0", etc.) tends to be more
than the underlying Interface Index, since such stability is required stable than the underlying Interface Index, since such stability is
/desired when interface names are employed in network configuration required or desired when interface names are employed in network
(firewall rules, etc.). The stability properties of Interface Names configuration (firewall rules, etc.). The stability properties of
depend on implementation details, such as what is the namespace used Interface Names depend on implementation details, such as what is the
for Interface Names. For example, "generic" interface names such as namespace used for Interface Names. For example, "generic" interface
"eth0" or "wlan0" will generally be invariant with respect to network names such as "eth0" or "wlan0" will generally be invariant with
interface card replacements. On the other hand, vendor-dependent respect to network interface card replacements. On the other hand,
interface names such as "rtk0" or the like will generally change when vendor-dependent interface names such as "rtk0" or the like will
a network interface card is replaced with one from a different generally change when a network interface card is replaced with one
vendor. from a different vendor.
We note that Interface Names might still change when network We note that Interface Names might still change when network
interfaces are added or removed once the system has been bootstrapped interfaces are added or removed once the system has been bootstrapped
(for example, consider Universal Serial Bus-based network interface (for example, consider USB-based network interface cards that might
cards which might be added or removed once the system has been be added or removed once the system has been bootstrapped).
bootstrapped).
A.3. Link-layer Addresses A.3. Link-Layer Addresses
Link-layer addresses typically provide for unique identifiers for Link-layer addresses typically provide for unique identifiers for
network interfaces; although, for obvious reasons, they generally network interfaces; although, for obvious reasons, they generally
change when a network interface card is replaced. In scenarios where change when a network interface card is replaced. In scenarios in
neither Interface Indexes nor Interface Names have the stability which neither Interface Indexes nor Interface Names have the
properties specified in Section 5 for Net_Iface, an implementation stability properties specified in Section 5 for Net_Iface, an
might want to employ the link-layer address of the interface for the implementation might want to employ the link-layer address of the
Net_Iface parameter, albeit at the expense of making the interface for the Net_Iface parameter, albeit at the expense of
corresponding IPv6 addresses dependent on the underlying network making the corresponding IPv6 addresses dependent on the underlying
interface card (i.e., the corresponding IPv6 address would typically network interface card (i.e., the corresponding IPv6 addresses would
change upon replacement of the underlying network interface card). typically change upon replacement of the underlying network interface
card).
A.4. Logical Network Service Identity A.4. Logical Network Service Identity
Host operating systems with a conception of logical network service Host operating systems with a conception of logical network service
identity, distinct from network interface identity or index, may keep identity, distinct from network interface identity or index, may keep
a Universally Unique Identifier (UUID) [RFC4122] or similar a Universally Unique Identifier (UUID) [RFC4122] or similar
identifier with the stability properties appropriate for use as the identifier with the stability properties appropriate for use as the
Net_Iface parameter. Net_Iface parameter.
Author's Address Author's Address
Fernando Gont Fernando Gont
SI6 Networks / UTN-FRH SI6 Networks / UTN-FRH
Evaristo Carriego 2644 Evaristo Carriego 2644
Haedo, Provincia de Buenos Aires 1706 Haedo, Provincia de Buenos Aires 1706
Argentina Argentina
Phone: +54 11 4650 8472 Phone: +54 11 4650 8472
Email: fgont@si6networks.com EMail: fgont@si6networks.com
URI: http://www.si6networks.com URI: http://www.si6networks.com
 End of changes. 100 change blocks. 
392 lines changed or deleted 361 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/