draft-ietf-6man-stable-privacy-addresses-14.txt   draft-ietf-6man-stable-privacy-addresses-15.txt 
IPv6 maintenance Working Group (6man) F. Gont IPv6 maintenance Working Group (6man) F. Gont
Internet-Draft SI6 Networks / UTN-FRH Internet-Draft SI6 Networks / UTN-FRH
Intended status: Standards Track October 11, 2013 Intended status: Standards Track November 26, 2013
Expires: April 14, 2014 Expires: May 30, 2014
A Method for Generating Semantically Opaque Interface Identifiers with A Method for Generating Semantically Opaque Interface Identifiers with
IPv6 Stateless Address Autoconfiguration (SLAAC) IPv6 Stateless Address Autoconfiguration (SLAAC)
draft-ietf-6man-stable-privacy-addresses-14 draft-ietf-6man-stable-privacy-addresses-15
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 addresses configured using this method are stable
within each subnet, but the Interface Identifier changes when hosts within each subnet, but the Interface Identifier changes when hosts
move from one network to another. This method is meant to be an move from one network to another. This method is meant to be an
alternative to generating Interface Identifiers based on hardware alternative to generating Interface Identifiers based on hardware
addresses (e.g., IEEE LAN MAC addresses), such that the benefits of addresses (e.g., IEEE LAN MAC addresses), such that the benefits of
stable addresses can be achieved without sacrificing the privacy of stable addresses can be achieved without sacrificing the privacy of
users. The method specified in this document applies to all prefixes users. The method specified in this document applies to all prefixes
a host may be employing, including link-local, global, and unique- a host may be employing, including link-local, global, and unique-
local addresses. local addresses.
Status of this Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 14, 2014. This Internet-Draft will expire on May 30, 2014.
Copyright Notice Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the Copyright (c) 2013 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 . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Relationship to Other standards . . . . . . . . . . . . . . . 7 3. Relationship to Other standards . . . . . . . . . . . . . . . 5
4. Design goals . . . . . . . . . . . . . . . . . . . . . . . . . 8 4. Design goals . . . . . . . . . . . . . . . . . . . . . . . . 5
5. Algorithm specification . . . . . . . . . . . . . . . . . . . 10 5. Algorithm specification . . . . . . . . . . . . . . . . . . . 6
6. Resolving Duplicate Address Detection (DAD) conflicts . . . . 15 6. Resolving Duplicate Address Detection (DAD) conflicts . . . . 11
7. Specified Constants . . . . . . . . . . . . . . . . . . . . . 16 7. Specified Constants . . . . . . . . . . . . . . . . . . . . . 12
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12
9. Security Considerations . . . . . . . . . . . . . . . . . . . 18 9. Security Considerations . . . . . . . . . . . . . . . . . . . 12
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 20 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14
11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 21 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 15
11.1. Normative References . . . . . . . . . . . . . . . . . . 21 11.1. Normative References . . . . . . . . . . . . . . . . . . 15
11.2. Informative References . . . . . . . . . . . . . . . . . 21 11.2. Informative References . . . . . . . . . . . . . . . . . 16
Appendix A. Possible sources for the Net_Iface parameter . . . . 24 Appendix A. Possible sources for the Net_Iface parameter . . . . 17
A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 24 A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 17
A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . 24 A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . 18
A.3. Link-layer Addresses . . . . . . . . . . . . . . . . . . 24 A.3. Link-layer Addresses . . . . . . . . . . . . . . . . . . 18
A.4. Logical Network Service Identity . . . . . . . . . . . . 25 A.4. Logical Network Service Identity . . . . . . . . . . . . 18
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 26 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, which 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 node activities within the same network,
thus negatively affecting the privacy of users (see thus negatively affecting the privacy of users (see
[I-D.cooper-6man-ipv6-address-generation-privacy] and [I-D.ietf-6man-ipv6-address-generation-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 node 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
skipping to change at page 4, line 5 skipping to change at page 3, line 34
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.cooper-6man-ipv6-address-generation-privacy] provides additional [I-D.ietf-6man-ipv6-address-generation-privacy] provides additional
details regarding how these vulnerabilities could be exploited, and details regarding how these vulnerabilities could be exploited, and
the extent to which the method discussed in this document mitigates the extent to 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 node, and
basically result in temporary (and random) Interface Identifiers. basically result in temporary (and random) Interface Identifiers.
skipping to change at page 4, line 47 skipping to change at page 4, line 30
attacks, and that at the very least do not reveal the node's identity attacks, and that at the very least do not reveal the node's identity
when roaming from one network to another -- without complicating the when 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.cooper-6man-ipv6-address-generation-privacy] for some (see [I-D.ietf-6man-ipv6-address-generation-privacy] for some
example attacks that are still possible with temporary addresses). example attacks that are still possible with temporary addresses).
o since "temporary addresses" [RFC4941] do not replace the o since "temporary addresses" [RFC4941] do not replace the
traditional SLAAC addresses, an attacker can still leverage traditional SLAAC addresses, an attacker can still leverage
patterns in SLAAC addresses to greatly reduce the search space for patterns in SLAAC addresses to greatly reduce the search space for
"alive" nodes [Gont-DEEPSEC2011] [CPNI-IPv6] "alive" nodes [Gont-DEEPSEC2011] [CPNI-IPv6]
[I-D.ietf-opsec-ipv6-host-scanning]. [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 temporary addresses are employed or
skipping to change at page 8, line 32 skipping to change at page 6, line 12
must be difficult for an attacker tell whether the addresses have must be difficult for an attacker tell whether the addresses have
been generated/used by the same node. been generated/used by the same node.
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). This means that e.g. replacing a Network Interface Card
(NIC) or adding links dynamically to a Link Aggregation Group (NIC) or adding links dynamically to a Link Aggregation Group
(LAG) will not have the (generally undesirable) effect of changing (LAG) will not have the (generally undesirable) effect of changing
the IPv6 addresses used for that network interface. 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 hardware addresses
(e.g. IEEE LAN MAC addresses, as specified in [RFC2464]). That (e.g. IEEE LAN MAC addresses, as specified in [RFC2464]). That
is, this document does not formally obsolete or deprecate any of is, this document does not formally obsolete or deprecate any of
the existing algorithms to generate Interface Identifiers. It is the existing algorithms to generate Interface Identifiers. It is
meant to be employed for all of the stable (i.e. non-temporary) meant to be employed for all of the stable (i.e. non-temporary)
IPv6 addresses configured with SLAAC for a given interface, IPv6 addresses configured with SLAAC for a given interface,
including global, link-local, and unique-local IPv6 addresses. 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
skipping to change at page 10, line 34 skipping to change at page 7, line 31
expression below MUST be included when generating an Interface expression below MUST be included when generating an Interface
Identifier. Identifier.
1. Compute a random (but stable) identifier with the expression: 1. Compute a random (but stable) identifier with the expression:
RID = F(Prefix, Net_Iface, Network_ID, DAD_Counter, secret_key) RID = F(Prefix, Net_Iface, Network_ID, DAD_Counter, secret_key)
Where: Where:
RID: RID:
Random (but stable) Identifier Random (but stable) Identifier
F(): F():
A pseudorandom function (PRF) that MUST NOT be computable from A pseudorandom function (PRF) that MUST NOT be computable
the outside (without knowledge of the secret key). F() MUST from the outside (without knowledge of the secret key).
also be difficult to reverse, such that it resists attempts to F() MUST also be difficult to reverse, such that it resists
obtain the secret_key, even when given samples of the output attempts to obtain the secret_key, even when given samples
of F() and knowledge or control of the other input parameters. of the output of F() and knowledge or control of the other
F() SHOULD produce an output of at least 64 bits. F() could input parameters. F() SHOULD produce an output of at least
be implemented as a cryptographic hash of the concatenation of 64 bits. F() could be implemented as a cryptographic hash
each of the function parameters. of the concatenation of each of the function parameters.
MD5 [RFC1321] and SHA-1 [FIPS-SHS] are two possible options
for F().
Prefix: Prefix:
The prefix to be used for SLAAC, as learned from an ICMPv6 The prefix to be used for SLAAC, as learned from an ICMPv6
Router Advertisement message, or the link-local IPv6 unicast Router Advertisement message, or the link-local IPv6
prefix [RFC4291]. unicast prefix [RFC4291].
Net_Iface: Net_Iface:
An implementation-dependent stable identifier associated with
the network interface for which the RID is being generated. An implementation-dependent stable identifier associated
An implementation MAY provide a configuration option to select with the network interface for which the RID is being
the source of the identifier to be used for the Net_Iface generated. An implementation MAY provide a configuration
parameter. A discussion of possible sources for this value option to select the source of the identifier to be used
(along with the corresponding trade-offs) can be found in for the Net_Iface parameter. A discussion of possible
Appendix A. sources for this value (along with the corresponding trade-
offs) can be found in 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
this interface is attached. For example the IEEE 802.11 which this interface is attached. For example the IEEE
Service Set Identifier (SSID) corresponding to the network to 802.11 Service Set Identifier (SSID) corresponding to the
which this interface is associated. This parameter is network to which this interface is associated. This
OPTIONAL. 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,
incremented by 1 for each new tentative address that is and 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
non-volatile memory. See Section 6 for additional details. in 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 MUST be initialized to a pseudo-random number (see
[RFC4086] for randomness requirements for security) at [RFC4086] for randomness requirements for security) at
operating system installation time or when the IPv6 protocol operating system installation time or when the IPv6
stack is initialized for the first time. An implementation protocol stack is initialized for the first time. An
MAY provide the means for the the system administrator to implementation MAY provide the means for the the system
change or display the secret key. administrator to change or display 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
unicast addresses (except those that start with the binary all unicast addresses (except those that start with the
value 000) be 64-bit long. However, the method discussed in binary value 000) be 64-bit long. However, the method
this document could be employed for generating Interface IDs discussed in this document could be employed for generating
of any arbitrary length, albeit at the expense of reduced Interface IDs of any arbitrary length, albeit at the
entropy (when employing Interface IDs smaller than 64 bits). expense of reduced 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
Subnet-Router Anycast [RFC4291] and the Reserved Subnet Anycast Subnet-Router Anycast [RFC4291] and the Reserved Subnet Anycast
Addresses [RFC2526], and against those Interface Identifiers Addresses [RFC2526], and against those Interface Identifiers
already employed in an address of the same network interface and already employed in an address of the same network interface and
the same network prefix. In the event that an unacceptable the same network prefix. In the event that an unacceptable
identifier has been generated, this situation SHOULD be handled identifier has been generated, this situation SHOULD be handled
in the same way as the case of duplicate addresses (see in the same way as 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. For informative
purposes, we note that MD5 [RFC1321] and SHA-1 [FIPS-SHS] are two
possible options for F().
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 victim),
the attacker may simply search the entire secret-key space to find the attacker may simply search the entire secret-key space to find
matches. To protect against this, the secret key should be of a matches. To protect against this, the secret key should be of a
reasonable length. Key lengths of at least 128 bits should be reasonable length. Key lengths of at least 128 bits should be
adequate. The secret key is initialized at system installation time adequate. The secret key is initialized at system installation time
to a pseudo-random number, thus allowing this mechanism to be to a pseudo-random number, thus allowing this mechanism to be enabled
enabled/used automatically, without user intervention. /used automatically, without user intervention.
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 node and, as consequently, also across
networks. This mitigates the correlation of activities of multi- networks. This mitigates the correlation of activities of multi-
homed nodes (since each of the corresponding addresses will employ a homed nodes (since each of the corresponding addresses will employ a
different Interface ID), host-tracking (since the network prefix will different Interface ID), host-tracking (since the network prefix will
change as the node moves from one network to another), and any other change as the node 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).
skipping to change at page 13, line 40 skipping to change at page 10, line 46
used by the victim node for a remote network (see Section 9 for used by the victim node for a remote network (see Section 9 for
further details). 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 a 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
Duplicate Address Detection (DAD) conflicts, as discussed in detail Duplicate Address Detection (DAD) conflicts, as discussed in detail
in Section 6. in Section 6.
Finally, we note that all of the bits in the resulting Interface IDs Finally, we note that all of the bits in the resulting Interface IDs
are treated as "opaque" bits. For example, the universal/local bit are treated as "opaque" bits [I-D.ietf-6man-ug]. For example, the
of Modified EUI-64 format identifiers is treated as any other bit of universal/local bit of Modified EUI-64 format identifiers is treated
such identifier. In theory, this might result in Duplicate Address as any other bit of such identifier. In theory, this might result in
Detection (DAD) failures that would otherwise not be encountered. Duplicate Address Detection (DAD) failures that would otherwise not
However, this is not deemed as a real issue, because of the following be encountered. However, this is not deemed as a real issue, because
considerations: of the following 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 that start with the binary value 000) are 64-bit 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 [HDMoore]. 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
skipping to change at page 18, line 9 skipping to change at page 12, line 38
8. IANA Considerations 8. IANA Considerations
There are no IANA registries within this document. The RFC-Editor There are no IANA registries within this document. The RFC-Editor
can remove this section before publication of this document as an can remove this section before publication of this document as an
RFC. RFC.
9. Security Considerations 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, since when a host moves from o They prevent trivial host-tracking, since when a host moves from
one network to another the network prefix used for one network to another the network prefix used for
autoconfiguration and/or the Network ID (e.g., IEEE 802.11 SSID) autoconfiguration and/or the Network ID (e.g., IEEE 802.11 SSID)
will typically change, and hence the resulting Interface will typically change, and hence the resulting Interface
Identifier will also change (see Identifier will also change (see
[I-D.cooper-6man-ipv6-address-generation-privacy]). [I-D.ietf-6man-ipv6-address-generation-privacy]).
o They mitigate address-scanning techniques which leverage o They mitigate address-scanning techniques which 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) [I-D.ietf-opsec-ipv6-host-scanning].
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 (Section 5) is employed.
skipping to change at page 19, line 41 skipping to change at page 14, line 25
Interface Identifiers such as those specified in [RFC2464], but is Interface Identifiers such as those specified in [RFC2464], but 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 node within the
same network, and may also reduce the attack exposure window (since same network, and may also reduce the attack exposure window (since
temporary addresses are short-lived when compared to the addresses temporary addresses are short-lived when compared to the addresses
generated with the method specified in this document). We note that generated with the method specified in this document). We note that
implementation of this algorithm would still benefit those hosts implementation of this algorithm would still benefit those hosts
employing "temporary addresses", since it would mitigate host- employing "temporary addresses", since it would mitigate host-
tracking vectors still present when such addresses are used (see tracking vectors still present when such addresses are used (see
[I-D.cooper-6man-ipv6-address-generation-privacy]), and would also [I-D.ietf-6man-ipv6-address-generation-privacy]), and would also
mitigate address-scanning techniques that leverage patterns in IPv6 mitigate address-scanning techniques that leverage patterns in IPv6
addresses that embed IEEE LAN MAC addresses. Finally, we note that addresses that embed IEEE LAN MAC addresses. Finally, we note that
the method described in this document addresses some of the privacy the method described in this document addresses some of the privacy
concerns arising from the use of IPv6 addresses that embed IEEE LAN concerns arising from the use of IPv6 addresses that embed IEEE LAN
MAC addresses, without the use of temporary addresses, thus possibly MAC 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 10. Acknowledgements
skipping to change at page 21, line 32 skipping to change at page 15, line 35
[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.
[RFC4086] Eastlake, D., Schiller, J., and S. Crocker, "Randomness [RFC4086] Eastlake, D., Schiller, J., and S. Crocker, "Randomness
Requirements for Security", BCP 106, RFC 4086, June 2005. Requirements for Security", BCP 106, RFC 4086, June 2005.
[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally
Unique IDentifier (UUID) URN Namespace", RFC 4122, Unique IDentifier (UUID) URN Namespace", RFC 4122, July
July 2005. 2005.
[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing
Architecture", RFC 4291, February 2006. Architecture", RFC 4291, February 2006.
[RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman,
"Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861,
September 2007. September 2007.
[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.
[I-D.ietf-6man-ug]
Carpenter, B. and S. Jiang, "Significance of IPv6
Interface Identifiers", draft-ietf-6man-ug-05 (work in
progress), November 2013.
11.2. Informative References 11.2. Informative References
[RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321,
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.
[RFC2467] Crawford, M., "Transmission of IPv6 Packets over FDDI [RFC2467] Crawford, M., "Transmission of IPv6 Packets over FDDI
Networks", RFC 2467, December 1998. Networks", RFC 2467, December 1998.
[RFC2470] Crawford, M., Narten, T., and S. Thomas, "Transmission of [RFC2470] Crawford, M., Narten, T., and S. Thomas, "Transmission of
IPv6 Packets over Token Ring Networks", RFC 2470, IPv6 Packets over Token Ring Networks", RFC 2470, December
December 1998. 1998.
[RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W. [RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W.
Stevens, "Basic Socket Interface Extensions for IPv6", Stevens, "Basic Socket Interface Extensions for IPv6", RFC
RFC 3493, February 2003. 3493, February 2003.
[RFC3542] Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei, [RFC3542] Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei,
"Advanced Sockets Application Program Interface (API) for "Advanced Sockets Application Program Interface (API) for
IPv6", RFC 3542, May 2003. IPv6", RFC 3542, May 2003.
[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.
[I-D.ietf-opsec-ipv6-host-scanning] [I-D.ietf-opsec-ipv6-host-scanning]
Gont, F. and T. Chown, "Network Reconnaissance in IPv6 Gont, F. and T. Chown, "Network Reconnaissance in IPv6
Networks", draft-ietf-opsec-ipv6-host-scanning-02 (work in Networks", draft-ietf-opsec-ipv6-host-scanning-02 (work in
progress), July 2013. progress), July 2013.
[I-D.ietf-v6ops-ra-guard-implementation] [I-D.ietf-v6ops-ra-guard-implementation]
Gont, F., "Implementation Advice for IPv6 Router Gont, F., "Implementation Advice for IPv6 Router
Advertisement Guard (RA-Guard)", Advertisement Guard (RA-Guard)", draft-ietf-v6ops-ra-
draft-ietf-v6ops-ra-guard-implementation-07 (work in guard-implementation-07 (work in progress), November 2012.
progress), November 2012.
[I-D.cooper-6man-ipv6-address-generation-privacy] [I-D.ietf-6man-ipv6-address-generation-privacy]
Cooper, A., Gont, F., and D. Thaler, "Privacy Cooper, A., Gont, F., and D. Thaler, "Privacy
Considerations for IPv6 Address Generation Mechanisms", Considerations for IPv6 Address Generation Mechanisms",
draft-cooper-6man-ipv6-address-generation-privacy-00 (work draft-ietf-6man-ipv6-address-generation-privacy-00 (work
in progress), July 2013. in progress), October 2013.
[HDMoore] HD Moore, "The Wild West", Louisville, Kentucky, U.S.A. [HDMoore] HD Moore, , "The Wild West", Louisville, Kentucky, U.S.A,
September 25-29, 2012, September 2012, <https://speakerdeck.com/hdm/derbycon-2012
<https://speakerdeck.com/hdm/derbycon-2012-the-wild-west>. -the-wild-west>.
[Gont-DEEPSEC2011] [Gont-DEEPSEC2011]
Gont, "Results of a Security Assessment of the Internet Gont, , "Results of a Security Assessment of the Internet
Protocol version 6 (IPv6)", DEEPSEC 2011 Conference, Protocol version 6 (IPv6)", DEEPSEC 2011 Conference,
Vienna, Austria, November 2011, <http:// Vienna, Austria, November 2011, <http://
www.si6networks.com/presentations/deepsec2011/ www.si6networks.com/presentations/deepsec2011/fgont-
fgont-deepsec2011-ipv6-security.pdf>. deepsec2011-ipv6-security.pdf>.
[Broersma] [Broersma]
Broersma, R., "IPv6 Everywhere: Living with a Fully IPv6- Broersma, R., "IPv6 Everywhere: Living with a Fully
enabled environment", Australian IPv6 Summit 2010, IPv6-enabled environment", Australian IPv6 Summit 2010,
Melbourne, VIC Australia, October 2010, <http:// Melbourne, VIC Australia, October 2010, <http://
www.ipv6.org.au/10ipv6summit/talks/Ron_Broersma.pdf>. www.ipv6.org.au/10ipv6summit/talks/Ron_Broersma.pdf>.
[IAB-PRIVACY] [IAB-PRIVACY]
IAB, "Privacy and IPv6 Addresses", July 2011, <http:// IAB, , "Privacy and IPv6 Addresses", July 2011, <http://
www.iab.org/wp-content/IAB-uploads/2011/07/ www.iab.org/wp-content/IAB-uploads/2011/07/IPv6-addresses-
IPv6-addresses-privacy-review.txt>. privacy-review.txt>.
[CPNI-IPv6] [CPNI-IPv6]
Gont, F., "Security Assessment of the Internet Protocol Gont, F., "Security Assessment of the Internet Protocol
version 6 (IPv6)", UK Centre for the Protection of version 6 (IPv6)", UK Centre for the Protection of
National Infrastructure, (available on request). 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 an interface within a node. However, these identifiers
might or might not have the stability properties required for the might or might not have the stability properties required for the
Net_Iface value employed by this method. For example, the Interface Net_Iface value employed by this method. For example, the Interface
Index might change upon removal or installation of a network Index might change upon removal or installation of a network
interface (typically one with a smaller value for the Interface interface (typically one with a smaller value for the Interface
Index, when such a naming scheme is used), or when network interfaces Index, when such a naming scheme is used), or when network interfaces
happen to be initialized in a different order. We note that some happen to be initialized in a different order. We note that some
implementations are known to provide configuration knobs to set the implementations are known to provide configuration knobs to set the
Interface Index for a given interface. Such configuration knobs Interface Index for a given interface. Such configuration knobs
skipping to change at page 24, line 30 skipping to change at page 18, line 20
Index, when such a naming scheme is used), or when network interfaces Index, when such a naming scheme is used), or when network interfaces
happen to be initialized in a different order. We note that some happen to be initialized in a different order. We note that some
implementations are known to provide configuration knobs to set the implementations are known to provide configuration knobs to set the
Interface Index for a given interface. Such configuration knobs Interface Index for a given interface. Such configuration knobs
could be employed to prevent the Interface Index from changing (e.g. could be employed to prevent the Interface Index from changing (e.g.
as a result of the removal of a network interface). 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 stable
than the underlying Interface Index, since such stability is than the underlying Interface Index, since such stability is required
required/desired when interface names are employed in network /desired when interface names are employed in network configuration
configuration (firewall rules, etc.). The stability properties of (firewall rules, etc.). The stability properties of Interface Names
Interface Names depend on implementation details, such as what is the depend on implementation details, such as what is the namespace used
namespace used for Interface Names. For example, "generic" interface for Interface Names. For example, "generic" interface names such as
names such as "eth0" or "wlan0" will generally be invariant with "eth0" or "wlan0" will generally be invariant with respect to network
respect to network interface card replacements. On the other hand, interface card replacements. On the other hand, vendor-dependent
vendor-dependent interface names such as "rtk0" or the like will interface names such as "rtk0" or the like will generally change when
generally change when a network interface card is replaced with one a network interface card is replaced with one from a different
from a different vendor. 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 Universal Serial Bus-based network interface
cards which might be added or removed once the system has been cards which might 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
 End of changes. 41 change blocks. 
122 lines changed or deleted 141 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/