draft-ietf-6man-stable-privacy-addresses-06.txt   draft-ietf-6man-stable-privacy-addresses-07.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 April 12, 2013 Intended status: Standards Track May 19, 2013
Expires: October 14, 2013 Expires: November 20, 2013
A method for Generating Stable Privacy-Enhanced Addresses with IPv6 A method for Generating Stable Privacy-Enhanced Addresses with IPv6
Stateless Address Autoconfiguration (SLAAC) Stateless Address Autoconfiguration (SLAAC)
draft-ietf-6man-stable-privacy-addresses-06 draft-ietf-6man-stable-privacy-addresses-07
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. The aforementioned method is meant move from one network to another. This method is meant to be an
to be an alternative to generating Interface Identifiers based on alternative to generating Interface Identifiers based on IEEE
IEEE identifiers, such that the benefits of stable addresses can be identifiers, such that the benefits of stable addresses can be
achieved without sacrificing the privacy of users. achieved without sacrificing the privacy of users.
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 October 14, 2013. This Internet-Draft will expire on November 20, 2013.
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
skipping to change at page 2, line 14 skipping to change at page 2, line 14
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 . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Design goals . . . . . . . . . . . . . . . . . . . . . . . . . 6 2. Design goals . . . . . . . . . . . . . . . . . . . . . . . . . 6
3. Algorithm specification . . . . . . . . . . . . . . . . . . . 7 3. Algorithm specification . . . . . . . . . . . . . . . . . . . 7
4. Resolving Duplicate Address Detection (DAD) conflicts . . . . 10 4. Resolving Duplicate Address Detection (DAD) conflicts . . . . 12
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 5. Specified Constants . . . . . . . . . . . . . . . . . . . . . 13
6. Security Considerations . . . . . . . . . . . . . . . . . . . 12 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 13 7. Security Considerations . . . . . . . . . . . . . . . . . . . 15
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 14 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 17
8.1. Normative References . . . . . . . . . . . . . . . . . . . 14 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 18
8.2. Informative References . . . . . . . . . . . . . . . . . . 14 9.1. Normative References . . . . . . . . . . . . . . . . . . . 18
Appendix A. Privacy issues still present with RFC 4941 . . . . . 16 9.2. Informative References . . . . . . . . . . . . . . . . . . 18
A.1. Host tracking . . . . . . . . . . . . . . . . . . . . . . 16 Appendix A. Possible sources for the Net_Iface parameter . . . . 21
A.1.1. Tracking hosts across networks #1 . . . . . . . . . . 16 A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 21
A.1.2. Tracking hosts across networks #2 . . . . . . . . . . 16 A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . . 21
A.1.3. Revealing the identity of devices performing A.3. Link-layer Addresses . . . . . . . . . . . . . . . . . . . 21
server-like functions . . . . . . . . . . . . . . . . 17 Appendix B. Privacy issues still present when temporary
A.2. Address scanning attacks . . . . . . . . . . . . . . . . . 17 addresses are employed . . . . . . . . . . . . . . . 23
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 18 B.1. Host tracking . . . . . . . . . . . . . . . . . . . . . . 23
B.1.1. Tracking hosts across networks #1 . . . . . . . . . . 23
B.1.2. Tracking hosts across networks #2 . . . . . . . . . . 24
B.1.3. Revealing the identity of devices performing
server-like functions . . . . . . . . . . . . . . . . 24
B.2. Address-scanning attacks . . . . . . . . . . . . . . . . . 24
B.3. Information Leakage . . . . . . . . . . . . . . . . . . . 25
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 26
1. Introduction 1. Introduction
[RFC4862] specifies the Stateless Address Autoconfiguration (SLAAC) [RFC4862] specifies Stateless Address Autoconfiguration (SLAAC) for
for IPv6 [RFC2460], which typically results in hosts configuring one IPv6 [RFC2460], which typically results in hosts configuring one or
or more "stable" addresses composed of a network prefix advertised by more "stable" addresses composed of a network prefix advertised by a
a local router, and an Interface Identifier (IID) that typically local router, and an Interface Identifier (IID) that typically embeds
embeds a hardware address (e.g., using IEEE identifiers) [RFC4291]. a hardware address (e.g., using IEEE identifiers) [RFC4291].
Generally, stable addresses are thought to simplify network Cryptograhically Generated Addresses (CGAs) [RFC3972] are yet
management, since they simplify Access Control Lists (ACLs) and another method for generating Interface Identifiers, which bind a
logging. However, since IEEE identifiers are typically globally public signature key to an IPv6 address in the SEcure Neighbor
unique, the resulting IPv6 addresses can be leveraged to track and Discovery (SEND) [RFC3971] protocol.
correlate the activity of a node over time and across multiple
subnets and networks, thus negatively affecting the privacy of users. Generally, the traditional SLAAC addresses are thought to simplify
network management, since they simplify Access Control Lists (ACLs)
and logging. However, they have a number of drawbacks:
o since the resulting Interface Identifiers do not vary over time,
they allow correlation of node activities within the same network,
thus negatively affecting the privacy of users.
o since the resulting Interface Identifiers are constant across
networks, the resulting IPv6 addresses can be leveraged to track
and correlate the activity of a node across multiple networks
(e.g. track and correlate the activities of a typical client
connecting to the public Internet from different locations), thus
negatively affecting the privacy of users.
o since embedding the underlying link-layer address in the Interface
Identifier results in specific address patterns, such patterns may
be leveraged by attackers to reduce the search space when
performing address scanning attacks.
o embedding the underlying link-layer address in the Interface
Identifier means that changing the interface hardware results in a
different Interface Identifier (and hence different IPv6 address).
The "Privacy Extensions for Stateless Address Autoconfiguration in The "Privacy Extensions for Stateless Address Autoconfiguration in
IPv6" [RFC4941] were introduced to complicate the task of IPv6" [RFC4941] (henceforth referred to as "temporary addresses")
eavesdroppers and other information collectors to correlate the were introduced to complicate the task of eavesdroppers and other
activities of a node, and basically result in temporary (and random) information collectors to correlate the activities of a node, and
Interface Identifiers that are typically more difficult to leverage basically result in temporary (and random) Interface Identifiers.
than those based on IEEE identifiers. When privacy extensions are These temporary addresses are generated *in addition* to the
enabled, "privacy addresses" are employed for "outgoing traditional IPv6 addresses based on IEEE identifiers, with the
communications", while the traditional IPv6 addresses based on IEEE "temporary addresses" being employed for "outgoing communications",
identifiers are still used for "server" functions (i.e., receiving and the traditional SLAAC addresses being employed for "server"
incoming connections). functions (i.e., receiving incoming connections).
As noted in [RFC4941], "anytime a fixed identifier is used in However, even with "temporary addresses" in place, a number of issues
multiple contexts, it becomes possible to correlate seemingly remain to be mitigated. Namely,
unrelated activity using this identifier". Therefore, since
"privacy addresses" [RFC4941] do not eliminate the use of fixed
identifiers for server-like functions, they only *partially*
mitigate the correlation of host activities (see Appendix A for
some example attacks that are still possible with privacy
addresses). Therefore, it is vital that the privacy
characteristics of "stable" addresses are improved such that the
ability of an attacker correlating host activities across networks
is reduced.
Another important aspect not mitigated by "Privacy Addresses" o since "temporary addresses" [RFC4941] do not eliminate the use of
[RFC4941] is that of IPv6 address scanning. Since IPv6 addresses fixed identifiers for server-like functions, they only *partially*
that embed IEEE identifiers have specific patterns, an attacker mitigate host-tracking and activity correlation across networks
could leverage such patterns to greatly reduce the search space (see Appendix B.1 for some example attacks that are still possible
for "live" hosts. Since "privacy addresses" do not eliminate the with temporary addresses).
use of IPv6 addresses that embed IEEE identifiers, address
scanning attacks are still feasible even if "privacy extensions"
are employed [Gont-DEEPSEC2011] [CPNI-IPv6]. This is yet another
motivation to improve the privacy characteristics of "stable"
addresses (currently embedding IEEE identifiers).
Privacy/temporary addresses can be challenging in a number of areas. o since "temporary addresses" [RFC4941] do not replace the
For example, from a network-management point of view, they tend to traditional SLAAC addresses, an attacker can still leverage
increase the complexity of event logging, trouble-shooting, and patterns in those addresses to greatly reduce the search space for
enforcing access controls and quality of service, etc. As a result, "alive" nodes [Gont-DEEPSEC2011] [CPNI-IPv6]
some organizations disable the use of privacy addresses even at the [I-D.ietf-opsec-ipv6-host-scanning].
expense of reduced privacy [Broersma]. Also, they result in
increased complexity, which might not be possible or desirable in
some implementations (e.g., some embedded devices).
In scenarios in which "Privacy Extensions" are deliberately not used Hence, there is a motivation to improve the properties of "stable"
addresses regardless of whether temporary addresses are employed or
not.
Additionally, it should be noted that temporary addresses can be
challenging in a number of areas. For example, from a network-
management point of view, they tend to increase the complexity of
event logging, trouble-shooting, enforcement of access controls and
quality of service, etc. As a result, some organizations disable the
use of temporary addresses even at the expense of reduced privacy
[Broersma]. Temporary addresses may also result in increased
implementation complexity, which might not be possible or desirable
in some implementations (e.g., some embedded devices).
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 addresses that have been generated using e.g. IEEE with is the stable addresses that have been generated using e.g.
identifiers, and this is yet another case in which it is also vital IEEE identifiers. In such scenarios, it may still be desirable to
that the privacy characteristics of these stable addresses are have addresses that mitigate address scanning attacks, and that at
improved. the very least do not reveal the node's identity when roaming from
one network to another -- without complicating the operation of the
corresponding networks.
We note that in most (if not all) of those scenarios in which However, even with temporary addresses [RFC4941] in place,
"Privacy Extensions" are disabled, there is usually no actual desire preventing correlation of activities of a node within a network
to negatively affect user privacy, but rather a desire to simplify may be difficult (if at all possible) to achieve. As a trivial
operation of the network (simplify the use of ACLs, logging, etc.). example, consider a scenario where there is a single node (or a
reduced number of nodes) connected to a specific network. An
attacker could detect new addresses in use at that network, an
infer which addresses are being employed by which hosts. This
task is made particularly easier by the fact that use of
"temporary addresses" can be easily inferred (since the follow
different patterns from that of traditional SLAAC addresses), and
since they are re-generated periodically (i.e., after a specific
amount of time has elapsed).
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/constant for each network interface within each
subnet, but that change as hosts move from one network to another, subnet, but that change as hosts move from one network to another,
thus keeping the "stability" properties of the interface identifiers thus keeping the "stability" properties of the Interface Identifiers
specified in [RFC4291], while still mitigating address-scanning specified in [RFC4291], while still mitigating address-scanning
attacks and preventing correlation of the activities of a node as it attacks and preventing correlation of the activities of a node as it
moves from one network to another. moves from one network to another.
We note that this method is incrementally deployable, since it does For nodes that currently disable "temporary addresses" [RFC4941] for
not pose any interoperability implications when deployed on networks
where other nodes do not implement or employ it.
This document does not update or modify IPv6 StateLess Address Auto-
Configuration (SLAAC) [RFC4862] itself, but rather only specifies an
alternative algorithm to generate Interface IDs. Therefore, the
usual address lifetime properties (as specified in the corresponding
Prefix Information Options) apply when IPv6 addresses are generated
as a result of employing the algorithm specified in this document
with SLAAC [RFC4862]. Additionally, from the point of view of
renumbering, we note that these addresses behave like the traditional
IPv6 addresses (that embed a hardware address) resulting from SLAAC
[RFC4862].
For nodes that currently disable "Privacy extensions" [RFC4941] for
some of the reasons stated above, this mechanism provides stable some of the reasons stated above, this mechanism provides stable
privacy-enhanced addresses which may already address most of the privacy-enhanced addresses which address some of the concerns related
privacy concerns related to addresses that embed IEEE identifiers to addresses that embed IEEE identifiers [RFC4291]. On the other
hand, in scenarios in which "temporary addresses" are employed
together with stable addresses such as those based on IEEE
identifiers, implementation of the mechanism described in this
document would mitigate address-scanning attacks and also mitigate
some vectors for correlating host activities that are not mitigated
by the use of temporary addresses.
[RFC4291]. On the other hand, in scenarios in which "Privacy We note that this method is incrementally deployable, since it does
Extensions" are employed, implementation of the mechanism described not pose any interoperability implications when deployed on networks
in this document would mitigate host-scanning attacks and also where other nodes do not implement or employ it. Additionally, we
mitigate correlation of host activities. note that this document does not update or modify IPv6 StateLess
Address Auto-Configuration (SLAAC) [RFC4862] itself, but rather only
specifies an alternative algorithm to generate Interface Identifiers.
Therefore, the usual address lifetime properties (as specified in the
corresponding Prefix Information Options) apply when IPv6 addresses
are generated as a result of employing the algorithm specified in
this document with SLAAC [RFC4862]. Additionally, from the point of
view of renumbering, we note that these addresses behave like the
traditional IPv6 addresses (that embed a hardware address) resulting
from SLAAC [RFC4862].
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 RFC 2119 [RFC2119].
2. Design goals 2. Design goals
This document specifies a method for selecting interface identifiers This document specifies a method for selecting 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 constant/stable for o The resulting Interface Identifiers remain constant/stable for
each prefix used with SLAAC within each subnet. That is, the each prefix used with SLAAC within each subnet. That is, the
algorithm generates the same interface identifier when configuring algorithm generates the same Interface Identifier when configuring
an address belonging to the same prefix within the same subnet. an address (for the same interface) belonging to the same prefix
within the same subnet.
o The resulting interface identifiers do not depend on the
underlying hardware (e.g. link-layer address). This means that
e.g. replacing a Network Interface Card (NIC) will not have the
(generally undesirable) effect of changing the IPv6 addresses used
for that network interface.
o The resulting interface identifiers do change when addresses are o The resulting Interface Identifiers do 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. must be (statistically) different.
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 The aforementioned interface identifiers are meant to be an o Depending on the specific implementation approach (see Section 3
and Appendix A), the resulting Interface Identifiers may be
independent of the underlying hardware (e.g. link-layer address).
This means that e.g. replacing a Network Interface Card (NIC) will
not have the (generally undesirable) effect of changing the IPv6
addresses used for that network interface.
o The aforementioned Interface Identifiers are meant to be an
alternative to those based on e.g. IEEE identifiers, such as alternative to those based on e.g. IEEE identifiers, such as
those specified in [RFC2464]. those specified in [RFC2464].
We note that of use of the algorithm specified in this document is We note that of use of the algorithm specified in this document is
(to a large extent) orthogonal to the use of "Privacy Extensions" (to a large extent) orthogonal to the use of "temporary addresses"
[RFC4941]. Hosts that do not implement/use "Privacy Extensions" [RFC4941]. Hosts that do not implement/use "temporary addresses"
would have the benefit that they would not be subject to the host- would have the benefit that they would not be subject to the host-
tracking and address scanning issues discussed in the previous tracking and address scanning issues discussed in the previous
section. On the other hand, in the case of hosts employing "Privacy section. On the other hand, in the case of hosts employing
Extensions", the method specified in this document would prevent "temporary addresses", the method specified in this document would
address scanning attacks and correlation of node activities across mitigate address-scanning attacks and correlation of node activities
networks (see Appendix A). across networks (see Appendix B and [IAB-PRIVACY]).
3. Algorithm specification 3. 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" in replacement of any other algorithms used for generating "stable"
addresses (such as that specified in [RFC2464]). The aforementioned addresses (such as that specified in [RFC2464]). The aforementioned
algorithm MUST be employed for generating the interface identifiers algorithm MUST be employed for generating the Interface Identifiers
for all of the IPv6 addresses configured with SLAAC for a given for all of the IPv6 addresses configured with SLAAC for a given
interface, including IPv6 link-local addresses. interface, including IPv6 link-local addresses.
This means that this document does not formally obsolete or This means that this document does not formally obsolete or
deprecate any of the existing algorithms to generate Interface IDs deprecate any of the existing algorithms to generate Interface
(e.g. such as that specified in [RFC2464]). However, those IPv6 Identifiers (e.g. such as that specified in [RFC2464]). However,
implementations that employ this specification must generate all those IPv6 implementations that employ this specification MUST
of their "stable" addresses as specified in this document. generate all of their "stable" addresses as specified in this
document.
Implementations conforming to this specification SHOULD provide the Implementations conforming to this specification SHOULD provide the
means for a system administrator to enable or disable the use of this means for a system administrator to enable or disable the use of this
algorithm for generating Interface Identifiers. Implementations algorithm for generating Interface Identifiers. Implementations
conforming to this specification MAY employ the algorithm specified conforming to this specification MAY employ the algorithm specified
in [RFC4941] to generate temporary addresses in addition to the in [RFC4941] to generate temporary addresses in addition to the
addresses generated with the algorithm specified in this document. addresses generated with the algorithm specified in this document.
Unless otherwise noted, all of the parameters included in the Unless otherwise noted, all of the parameters included in the
expression below MUST be included when generating an Interface ID. expression below MUST be included when generating an Interface
Identifier.
1. Compute a random (but stable) identifier with the expression: 1. Compute a random (but stable) identifier with the expression:
RID = F(Prefix, Interface_Index, Network_ID, DAD_Counter, RID = F(Prefix, Net_Iface, Network_ID, DAD_Counter, secret_key)
secret_key)
Where: Where:
RID: RID:
Random (but stable) Interface Identifier Random (but stable) Interface Identifier
F(): F():
A pseudorandom function (PRF) that is not computable from the A pseudorandom function (PRF) that is not computable from the
outside (without knowledge of the secret key). The PRF could outside (without knowledge of the secret key), which
be implemented as a cryptographic hash of the concatenation of shouldproduce an output of at least 64 bits.The PRF could be
implemented as a cryptographic hash of the concatenation of
each of the function parameters. each of the function parameters.
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. Router Advertisement message.
Interface_Index: Net_Iface:
The interface index [RFC3493] [RFC3542] corresponding to this An implementation-dependent stable identifier associated with
network interface. the network interface for which the RID is being generated.
An implementation MAY provide a configuration option to select
the source of the identifier to be used for the Net_Iface
parameter. A discussion of possible 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 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. This parameter is which this interface is associated. This parameter is
OPTIONAL. 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, Interface_Index, 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 4 for additional details. non-volatile memory). See Section 4 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 at system installation time to a key MUST be initialized at operating system installation time
pseudo-random number (see [RFC4086] for randomness to a pseudo-random number (see [RFC4086] for randomness
requirements for security). An implementation MAY provide the requirements for security). An implementation MAY provide the
means for the user to change the secret key. means for the the system administrator to change or display
the secret key.
2. The Interface Identifier is finally obtained by taking as many
bits from the RID value (computed in the previous step) as
necessary, starting from the rightmost bit.
We note that [RFC4291] requires that, the Interface IDs of all
unicast addresses (except those that start with the binary
value 000) be 64-bit long. However, the method discussed in
this document could be employed for generating Interface IDs
of any arbitrary length, albeit at the expense of reduced
entropy (when employing Interface IDs smaller than 64 bits).
2. The Interface Identifier is finally obtained by taking the
leftmost 64 bits of the RID value computed in the previous step.
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 4). Section 4).
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
skipping to change at page 9, line 15 skipping to change at page 9, line 30
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/used automatically, without user intervention. enabled/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 ID to vary across networks that employ different prefixes, Interface Identifier to vary across networks that employ different
thus mitigating host-tracking attacks and any other attacks that prefixes, thus mitigating host-tracking attacks and any other attacks
benefit from predictable Interface IDs (such as address scanning). that benefit from predictable Interface Identifiers (such as address
scanning attacks).
The Interface Index is expected to remain constant across system The Net_Iface is a value that identifies the network interface for
reboots and other events. However, we note that it might change upon which an IPv6 address is being generated. The following properties
removal or installation of a network interface (typically one with a are desirable for the Net_Iface:
smaller value for the Interface Index, when such a naming scheme is
used). When such change occurs, the IPv6 addresses resulting from o it MUST be constant across system bootstrap sequences and other
this algorithm for the corresponding interface will change, thus network events (e.g., bringing another interface up or down)
affecting the stability property of this method. We note that we
expect these scenarios to be unusual. Some implementations are known o it MUST be different for each network interface
to provide configuration knobs to set the Interface Index for a given
interface. Such configuration knobs could be employed to prevent the Since the stability of the addresses generated with this method
Interface Index from changing (e.g. as a result of the removal of a relies on the stability of all arguments of F(), it is key that the
network interface). Net_Iface be constant across system bootstrap sequences and other
network events. Additionally, the Net_Iface must uniquely identify
an interface within the node, such that two interfaces connecting to
the same network do not result in duplicate addresses. Different
types of operating systems might benefit from different stability
properties of the Net_Iface parameter. For example, a client-
oriented operating system might want to employ Net_Iface identifiers
that are attached to the underlying network interface card (NIC),
such that a removable NIC always gets the same IPv6 address,
irrespective of the system communications port to which it is
attached. On the other hand, a server-oriented operating system
might prefer Net_Iface identifers that are attached to system slots/
ports, such that replacement of a network interface card does not
result in an IPv6 address change. 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 would cause the algorithm to produce a different value above would cause the algorithm to produce a different
Interface Identifier when connecting to different networks, even when Interface 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 ID as it moves from one a host would employ a different Interface Identifier as it moves from
network to another even for IPv6 link-local addresses or Unique Local one network to another even for IPv6 link-local addresses or Unique
Addresses (ULAs). Local Addresses (ULAs). In those scenarios where the Network_ID is
unknown to the attacker, including this parameter might help mitigate
attacks where a victim node connects to the same subnet as the
attacker, and the attacker tries to learn the Interface Identifier
used by the victim node for a remote network (see Section 7 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 produce a different IPv6 addresses (all other this algorithm 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 4. in Section 4.
Finally, we note that all of the bits in the resulting Interface IDs
are treated as "opaque" bits. For example, the universal/local bit
of Modified EUI-64 format identifiers is treated as any other bit of
such identifier. In theory, this might result in Duplicate Address
Detection (DAD) failures that would otherwise not be encountered.
However, this is not deemed as a real issue, because of the following
considerations:
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
method specified in this document results in random Interface IDs,
the probability of DAD failures is very small.
o Real world data indicates that MAC address reuse is far more
common than assumed [HDMoore]. This means that even IPv6
addresses that employ (allegedly) unique identifiers (such as IEEE
identifiers) might result in DAD failures, and hence
implementations should be prepared to gracefully handle such
occurrences.
Finally, we note that some popular and widely-deployed operating
systems (such as Microsoft Windows) do not employ unique identifiers
for the Interface IDs of their stable addresses. Therefore, such
implementations would not be affected by the method specified in this
document.
4. Resolving Duplicate Address Detection (DAD) conflicts 4. Resolving Duplicate Address Detection (DAD) conflicts
If as a result of performing Duplicate Address Detection (DAD) If as a result of performing Duplicate Address Detection (DAD)
[RFC4862] a host finds that the tentative address generated with the [RFC4862] a host finds that the tentative address generated with the
algorithm specified in Section 3 is a duplicate address, it SHOULD algorithm specified in Section 3 is a duplicate address, it SHOULD
resolve the address conflict by trying a new tentative address as resolve the address conflict by 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 ID is generated with the algorithm specified in o A new Interface Identifier is generated with the algorithm
Section 3, using the incremented DAD_Counter value. specified in Section 3, using the incremented DAD_Counter value.
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. We RECOMMEND hosts to try at least conflict is resolved. Hosts SHOULD try at least IDGEN_RETRIES (see
IDGEN_RETRIES (hereby specified as "3") tentative addresses if DAD Section 5) tentative addresses if DAD fails for successive generated
fails for successive generated addresses, in the hopes of resolving addresses, in the hopes of resolving the address conflict. We also
the address conflict. We also note that hosts MUST limit the number note that hosts MUST limit the number of tentative addresses that are
of tentative addresses that are tried (rather than indefinitely try a tried (rather than indefinitely try a new tentative address until the
new tentative address until the conflict is resolved). conflict is resolved).
In those (unlikely) scenarios in which duplicate addresses are In those (unlikely) scenarios in which duplicate addresses are
detected and in which the order in which the conflicting nodes detected and in which the order in which the conflicting nodes
configure their addresses may vary (e.g., because they may be configure their addresses may vary (e.g., because they may be
bootstrapped in different order), the algorithm specified in this bootstrapped in different order), the algorithm specified in this
section for resolving DAD conflicts could lead to addresses that are section for resolving DAD conflicts could lead to addresses that are
not stable within the same subnet. In order to mitigate this not stable within the same subnet. In order to mitigate this
potential problem, nodes MAY record the DAD_Counter value employed potential problem, nodes MAY record the DAD_Counter value employed
for a specific {Prefix, Interface_Index, Network_ID} tuple in non- for a specific {Prefix, Net_Iface, Network_ID} tuple in non-volatile
volatile memory, such that the same DAD_Counter value is employed memory, such that the same DAD_Counter value is employed when
when configuring an address for the same Prefix and subnet at any configuring an address for the same Prefix and subnet at any other
other point in time. point in time.
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, nodes MUST NOT automatically fall back to
employing other algorithms for generating interface identifiers. employing other algorithms for generating Interface Identifiers.
5. IANA Considerations 5. Specified Constants
This document specifies the following constant:
IDGEN_RETRIES:
defaults to 3.
6. 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.
6. Security Considerations 7. 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
IEEE identifiers (such as those specified in [RFC2464]). When IEEE identifiers (such as those specified in [RFC2464]). When
compared to such identifiers, the identifiers specified in this compared to such identifiers, the identifiers specified in this
document have a number of advantages: 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 Appendix A. Identifier will also change (see Appendix B.1).
o They mitigate address-scanning techniques which leverage o They mitigate address-scanning techniques which leverage
predictable interface identifiers (e.g., known Organizational 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 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). change if a network interface card is replaced) if an appropriate
source for Net_Iface (Section 3) is employed.
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
Identifier employed by the victim node for an arbitrary prefix, by
simply sending a forged Router Advertisement [RFC4861] for that
prefix, and subsequently learning the corresponding address
configured by the victim node (either listening to the Duplicate
Address Detection packets, or to any other traffic that employs the
newly configued address). We note that a number of factors might
limit the ability of an attaker from successfully performing such
attack:
o First-Hop security mechanisms such as RA-Guard [RFC6105]
[I-D.ietf-v6ops-ra-guard-implementation] could prevent the forged
Router Advertisement from reaching the victim node
o If the victim implementation includes the (optional) Network_ID
parameter for computing F() (see Section 3), and the Network_ID
employed by the victim for a remote network is unknown to the
attacker, the Interface Identifier learned by the attacker would
differ from the one used by the victim when connecting to the
legitimate network.
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
Discovery (SEND) [RFC3971] to prevent an attacker from illegitimately
claiming authority for a 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 is
not meant as an alternative to temporary Interface IDs (such as those not meant as an alternative to temporary Interface Identifiers (such
specified in [RFC4941]). Clearly, temporary addresses may help to as those specified in [RFC4941]). Clearly, temporary addresses may
mitigate the correlation of activities of a node within the same help to mitigate the correlation of activities of a node within the
network, and may also reduce the attack exposure window (since same network, and may also reduce the attack exposure window (since
privacy/temporary addresses are short-lived when compared to the temporary addresses are short-lived when compared to the addresses
addresses generated with the method specified in this document). We generated with the method specified in this document). We note that
note that implementation of this algorithm would still benefit those implementation of this algorithm would still benefit those hosts
hosts employing "Privacy Addresses", since it would mitigate host- employing "temporary addresses", since it would mitigate host-
tracking vectors still present when privacy addresses are used (see tracking vectors still present when such addresses are used (see
Appendix A), and would also mitigate host-scanning techniques that Appendix B.1), and would also mitigate address-scanning techniques
leverage patterns in IPv6 addresses that embed IEEE identifiers. that leverage patterns in IPv6 addresses that embed IEEE identifiers.
Finally, we note that the method described in this document may Finally, we note that the method described in this document addresses
mitigate most of the privacy concerns arising from the use of IPv6 some of the privacy concerns arising from the use of IPv6 addresses
addresses that embed IEEE identifiers, without the use of temporary that embed IEEE identifiers, without the use of temporary addresses,
addresses, thus possibly offering an interesting trade-off for those thus possibly offering an interesting trade-off for those scenarios
scenarios in which the use of temporary addresses is not feasible. in which the use of temporary addresses is not feasible.
7. Acknowledgements 8. 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) Karl Auer, The author would like to thank (in alphabetical order) Ran Atkinson,
Steven Bellovin, Matthias Bethke, Brian Carpenter, Tassos Karl Auer, Steven Bellovin, Matthias Bethke, Ben Campbell, Brian
Chatzithomaoglou, Dominik Elsbroek, Brian Haberman, Bob Hinden, Carpenter, Tassos Chatzithomaoglou, Alissa Cooper, Dominik Elsbroek,
Christian Huitema, Ray Hunter, Jong-Hyouk Lee, Michael Richardson, Brian Haberman, Bob Hinden, Christian Huitema, Ray Hunter, Jouni
Mark Smith, and Ole Troan, for providing valuable comments on earlier Korhonen, Eliot Lear, Jong-Hyouk Lee, Andrew McGregor, Tom Petch,
versions of this document. Michael Richardson, Mark Smith, Ole Troan, and He Xuan, for providing
valuable comments on earlier versions of this document.
This document is based on the technical report "Security Assessment This document is based on the technical report "Security Assessment
of the Internet Protocol version 6 (IPv6)" [CPNI-IPv6] authored by of the Internet Protocol version 6 (IPv6)" [CPNI-IPv6] authored by
Fernando Gont on behalf of the UK Centre for the Protection of Fernando Gont on behalf of the UK Centre for the Protection of
National Infrastructure (CPNI). National Infrastructure (CPNI).
Fernando Gont would like to thank CPNI (http://www.cpni.gov.uk) for Fernando Gont would like to thank CPNI (http://www.cpni.gov.uk) for
their continued support. their continued support.
8. References 9. References
8.1. Normative References 9.1. Normative References
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", RFC 2460, December 1998. (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.
[RFC2526] Johnson, D. and S. Deering, "Reserved IPv6 Subnet Anycast [RFC2526] Johnson, D. and S. Deering, "Reserved IPv6 Subnet Anycast
Addresses", RFC 2526, March 1999. Addresses", RFC 2526, March 1999.
[RFC3971] Arkko, J., Kempf, J., Zill, B., and P. Nikander, "SEcure
Neighbor Discovery (SEND)", RFC 3971, March 2005.
[RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)",
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.
[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,
"Neighbor Discovery for IP version 6 (IPv6)", RFC 4861,
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.
8.2. Informative References [RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J.
Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105,
February 2011.
9.2. Informative References
[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.
[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 3493, February 2003. RFC 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.
[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-00 (work in Networks", draft-ietf-opsec-ipv6-host-scanning-01 (work in
progress), December 2012. progress), April 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.
[HDMoore] HD Moore, "The Wild West", Louisville, Kentucky, U.S.A.
September 25-29, 2012., September 2012,
<https://speakerdeck.com/hdm/derbycon-2012-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-deepsec2011-ipv6-security.pdf>. fgont-deepsec2011-ipv6-security.pdf>.
[Gont-BRUCON2012] [Gont-BRUCON2012]
Gont, "Recent Advances in IPv6 Security", BRUCON 2012 Gont, "Recent Advances in IPv6 Security", BRUCON 2012
Conference, Ghent, Belgium, September 2012, <http:// Conference, Ghent, Belgium, September 2012, <http://
www.si6networks.com/presentations/brucon2012/ www.si6networks.com/presentations/brucon2012/
fgont-brucon2012-recent-advances-in-ipv6-security.pdf>. fgont-brucon2012-recent-advances-in-ipv6-security.pdf>.
[Broersma] [Broersma]
Broersma, R., "IPv6 Everywhere: Living with a Fully IPv6- Broersma, R., "IPv6 Everywhere: Living with a Fully IPv6-
enabled environment", Australian IPv6 Summit 2010, enabled environment", Australian IPv6 Summit 2010,
Melbourne, VIC Australia, October 2010, Melbourne, VIC Australia, October 2010, <http://
<http://www.ipv6.org.au/summit/talks/Ron_Broersma.pdf>. 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] [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).
Appendix A. Privacy issues still present with RFC 4941 Appendix A. Possible sources for the Net_Iface parameter
This section aims to clarify the motivation of using the method The following subsections describe a number of possible sources for
specified in this document even when privacy/temporary addresses the Net_Iface parameter employed by the F() function in Section 3.
[RFC4941] are employed. It discusses a (non-exaustive) number of The choice of a specific source for this value represents a number of
scenarios in which host privacy is still sacrificed even when trade-offs, which may vary from one implementation to another.
privacy/temporary addresses [RFC4941] are employed, as a result of
employing interface identifiers that are constant across networks
(e.g., those resulting from embedding IEEE identifiers).
A.1. Host tracking A.1. Interface Index
The Interface Index [RFC3493] [RFC3542] of an interface uniquely
identifies an interface within a node. However, these identifiers
might or might not have the stability properties required for the
Net_Iface value employed by this method. For example, the Interface
Index might change upon removal or installation of a network
interface (typically one with a smaller value for the Interface
Index, when such a naming scheme is used), or when network interface
happen to be initialized in a different order. We note that some
implementations are known to provide configuration knobs to set the
Interface Index for a given interface. Such configuration knobs
could be employed to prevent the Interface Index from changing (e.g.
as a result of the removal of a network interface).
A.2. Interface Name
The Interface Name (e.g., "eth0", "em0", etc) tends to be more stable
than the underlying Interface Index, since such stability is
required/desired when interface names are employed in network
configuration (firewall rules, etc.). The stability properties of
Interface Names depend on implementation details, such as what is the
namespace used for Interface Names. For example, "generic" interface
names such as "eth0" or "wlan0" will generally be invariant with
respect to network interface card replacements. On the other hand,
vendor-dependent interface names such as "rtk0" or the like will
generally change when a network interface card is replaced with one
from a different vendor.
We note that Interface Names might still change when network
interfaces are added or removed once the system has been bootstrapped
(for example, consider Universal Serial Bus-based network interface
cards which might be added or removed once the system has been
bootstrapped).
A.3. Link-layer Addresses
Link-layer addresses typically provide for unique identfiers for
network interfaces; although, for obvious reasons, they generally
change when a network interface card is replaced. In scenarios where
neither Interface Indexes nor Interface Names have the stability
properties specified in Section 3 for Net_Iface, an implementation
might want to employ the link-layer address of the interface for the
Net_Iface parameter, albeit at the expense of making the
corresponding IPv6 addresses dependent on the underlying network
interface card (i.e., the corresponding IPv6 address would typically
change upon replacement of the underlying network interface card).
Appendix B. Privacy issues still present when temporary addresses are
employed
It is not unusual for people to assume or expect that all the
security/privacy implications of traditional SLAAC addresses to me
mitigated when "temporary addresses" [RFC4941] are employed.
However, as noted in Section 1 of this document and [IAB-PRIVACY],
since temporary addresses are employed in addition to (rather than in
replacement of) traditional SLAAC addresses, many of the security/
privacy implications of traditional SLAAC addresses are not mitigated
by the use of temporary addresses.
This section discusses a (non-exhaustive) number of scenarios in
which host security/privacy is still negatively affected as a result
of employing Interface Identifiers that are constant across networks
(e.g., those resulting from embedding IEEE identifiers), even when
temporary addresses [RFC4941] are employed. It aims to clarify the
motivation of employing the method specified in this document in
replacement of the traditional SLAAC addresses even when privacy/
temporary addresses [RFC4941] are employed.
B.1. Host tracking
This section describes one possible attack scenario that illustrates This section describes one possible attack scenario that illustrates
that host-tracking may still be possible when privacy/temporary that host-tracking may still be possible when privacy/temporary
addresses [RFC4941] are employed. addresses [RFC4941] are employed.
A.1.1. Tracking hosts across networks #1 B.1.1. Tracking hosts across networks #1
A host configures its stable addresses with the constant A host configures its stable addresses with the constant Interface
Interface-ID, and runs any application that needs to perform a Identifier, and runs any application that needs to perform a server-
server-like function (e.g. a peer-to-peer application). As a result like function (e.g. a peer-to-peer application). As a result of
of that, an attacker/user participating in the same application that, an attacker/user participating in the same application (e.g.,
(e.g., P2P) would learn the constant Interface-ID used by the host P2P) would learn the constant Interface Identifier used by the host
for that network interface. for that network interface.
Some time later, the same host moves to a completely different Some time later, the same host moves to a completely different
network, and employs the same P2P application, probably even with a network, and employs the same P2P application, probably even with a
different username. The attacker now interacts with the same host different username. The attacker now interacts with the same host
again, and hence can learn its newly-configured stable address. again, and hence can learn its newly-configured stable address.
Since the interface ID is the same as the one used before, the Since the Interface Identifier is the same as the one used before,
attacker can infer that it is communicating with the same device as the attacker can infer that it is communicating with the same device
before. as before.
This is just *one* possible attack scenario, which should remind us This is just *one* possible attack scenario, which should remind us
that one should not disclose more than it is really needed for that one should not disclose more than it is really needed for
achieving a specific goal (and an Interface-ID that is constant achieving a specific goal (and an Interface Identifier that is
across different networks does exactly that: it discloses more constant across different networks does exactly that: it discloses
information than is needed for providing a stable address). more information than is needed for providing a stable address).
A.1.2. Tracking hosts across networks #2 B.1.2. Tracking hosts across networks #2
Once an attacker learns the constant Interface-ID employed by the Once an attacker learns the constant Interface Identifier employed by
victim host for its stable address, the attacker is able to "probe" a the victim host for its stable address, the attacker is able to
network for the presence of such host at any given network. "probe" a network for the presence of such host at any given network.
See Appendix A.1.1 for just one example of how an attacker could See Appendix B.1.1 for just one example of how an attacker could
learn such value. Other examples include being able to share the learn such value. Other examples include being able to share the
same network segment at some point in time (e.g. a conference same network segment at some point in time (e.g. a conference
network or any public network), etc. network or any public network), etc.
For example, if an attacker learns that in one network the victim For example, if an attacker learns that in one network the victim
used the Interface-ID 1111:2222:3333:4444 for its stable addresses, used the Interface Identifier 1111:2222:3333:4444 for its stable
then he could subsequently probe for the presence of such device in addresses, then he could subsequently probe for the presence of such
the network 2011:db8::/64 by sending a probe packet (ICMPv6 Echo device in the network 2011:db8::/64 by sending a probe packet (ICMPv6
Request, or any other probe packet) to the address 2001:db8::1111: Echo Request, or any other probe packet) to the address 2001:db8::
2222:3333:4444. 1111:2222:3333:4444.
A.1.3. Revealing the identity of devices performing server-like B.1.3. Revealing the identity of devices performing server-like
functions functions
Some devices, such as storage devices or printers, may typically Some devices, such as storage devices, may typically perform server-
perform server-like functions and may be usually moved from one like functions and may be usually moved from one network to another.
network to another. Such devices are likely to simply disable (or Such devices are likely to simply disable (or not even implement)
not even implement) privacy/temporary addresses [RFC4941]. If the privacy/temporary addresses [RFC4941]. If the aforementioned devices
aforementioned devices employ Interface-IDs that are constant across employ Interface Identifiers that are constant across networks, it
networks, it would be trivial for an attacker to tell whether the would be trivial for an attacker to tell whether the same device is
same device is being used across networks by simply looking at the being used across networks by simply looking at the Interface
Interface ID. Clearly, performing server-like functions should not Identifier. Clearly, performing server-like functions should not
imply that a device discloses its identity (i.e., that the attacker imply that a device discloses its identity (i.e., that the attacker
can tell whether it is the same device providing some function in two can tell whether it is the same device providing some function in two
different networks, at two different points in time). different networks, at two different points in time).
The scheme proposed in this document prevents such information The scheme proposed in this document prevents such information
leakage by causing nodes to generate different Interface-IDs when leakage by causing nodes to generate different Interface Identifiers
moving to one network to another, thus mitigating this kind of when moving from one network to another, thus mitigating this kind of
privacy attack. privacy attack.
A.2. Address scanning attacks B.2. Address-scanning attacks
While it is usually assumed that IPv6 address-scanning attacks are While it is usually assumed that IPv6 address-scanning attacks are
unfeasible, an attacker could leverage patterns in IPv6 addresses to unfeasible, an attacker can leverage address patterns in IPv6
greatly reduce the search space [I-D.ietf-opsec-ipv6-host-scanning] addresses to greatly reduce the search space
[Gont-BRUCON2012]. [I-D.ietf-opsec-ipv6-host-scanning] [Gont-BRUCON2012]. Addresses
that embed IEEE identifiers result in one of such patterns that could
be leveraged to reduce the search space when other nodes employ the
same IEEE OUI (Organizationally Unique Identifier).
As noted earlier in this document, privacy/temporary addresses do not As noted earlier in this document, temporary addresses [RFC4941] do
eliminate the use of IPv6 addresses that embed IEEE identifiers, and not replace/eliminate the use of IPv6 addresses that embed IEEE
hence such hosts would still be vulnerable to address-scanning identifiers (they are employed *in addition* to those), and hence
attacks. The method specified in this document eliminates such hosts implementing [RFC4941] would still be vulnerable to address-
patterns and would thus mitigate the aforementioned address-scanning scanning attacks. The method specified in this document is meant as
attacks. an alternative to addresses that embed IEEE identifiers, and hence
eliminates such patterns (thus mitigating the aforementioned address-
scanning attacks).
B.3. Information Leakage
IPv6 addresses embedding IEEE identifiers leak information about the
device (Network Interface Card vendor, or even Operating System
and/or software type), which could be leveraged by an attacker with
device/software-specific vulnerabilities knowledge to quickly find
possible targets. Since temporary addresses do not replace the
traditional SLAAC addresses that typically embedd IEEE identifiers,
employing temporary addresses does not eliminate this possible
information leakage.
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
 End of changes. 83 change blocks. 
271 lines changed or deleted 519 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/