draft-ietf-6man-stable-privacy-addresses-13.txt   draft-ietf-6man-stable-privacy-addresses-14.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 September 3, 2013 Intended status: Standards Track October 11, 2013
Expires: March 7, 2014 Expires: April 14, 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-13 draft-ietf-6man-stable-privacy-addresses-14
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
address (e.g., using IEEE identifiers), 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 March 7, 2014. This Internet-Draft will expire on April 14, 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 . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Design goals . . . . . . . . . . . . . . . . . . . . . . . . . 7 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6
3. Algorithm specification . . . . . . . . . . . . . . . . . . . 9 3. Relationship to Other standards . . . . . . . . . . . . . . . 7
4. Resolving Duplicate Address Detection (DAD) conflicts . . . . 14 4. Design goals . . . . . . . . . . . . . . . . . . . . . . . . . 8
5. Specified Constants . . . . . . . . . . . . . . . . . . . . . 15 5. Algorithm specification . . . . . . . . . . . . . . . . . . . 10
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 6. Resolving Duplicate Address Detection (DAD) conflicts . . . . 15
7. Security Considerations . . . . . . . . . . . . . . . . . . . 17 7. Specified Constants . . . . . . . . . . . . . . . . . . . . . 16
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 19 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20 9. Security Considerations . . . . . . . . . . . . . . . . . . . 18
9.1. Normative References . . . . . . . . . . . . . . . . . . . 20 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 20
9.2. Informative References . . . . . . . . . . . . . . . . . . 21 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Appendix A. Possible sources for the Net_Iface parameter . . . . 23 11.1. Normative References . . . . . . . . . . . . . . . . . . 21
A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 23 11.2. Informative References . . . . . . . . . . . . . . . . . 21
A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . . 23 Appendix A. Possible sources for the Net_Iface parameter . . . . 24
A.3. Link-layer Addresses . . . . . . . . . . . . . . . . . . . 23 A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 24
A.4. Logical Network Service Identity . . . . . . . . . . . . . 24 A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . 24
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 25 A.3. Link-layer Addresses . . . . . . . . . . . . . . . . . . 24
A.4. Logical Network Service Identity . . . . . . . . . . . . 25
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 26
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., using IEEE identifiers) [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. thus negatively affecting the privacy of users (see
[I-D.cooper-6man-ipv6-address-generation-privacy] and
[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
Identifier will result in specific address patterns, such patterns Identifier will result in specific address patterns, such patterns
may be leveraged by attackers to reduce the search space when may be leveraged by attackers to reduce the search space when
performing address scanning attacks. For example, the IPv6 performing address scanning attacks
addresses of all nodes manufactured by the same vendor (at a given [I-D.ietf-opsec-ipv6-host-scanning]. For example, the IPv6
time frame) will likely contain the same IEEE Organizationally addresses of all nodes manufactured by the same vendor (within a
Unique Identifier (OUI) in the Interface Identifier. given time frame) will likely contain the same IEEE
Organizationally Unique Identifier (OUI) in the Interface
Identifier.
o embedding the underlying link-layer 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.cooper-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.
These temporary addresses are generated in addition to the These temporary addresses are generated in addition to the
traditional IPv6 addresses based on IEEE identifiers, with the traditional IPv6 addresses based on IEEE LAC MAC addresses, with the
"temporary addresses" being employed for "outgoing communications", "temporary addresses" being employed for "outgoing communications",
and the traditional SLAAC addresses being employed for "server" and the traditional SLAAC addresses being employed for "server"
functions (i.e., receiving incoming connections). functions (i.e., receiving incoming connections).
It should be noted that temporary addresses can be challenging in It should be noted that temporary addresses can be challenging in a
a number of areas. For example, from a network-management point number of areas. For example, from a network-management point of
of view, they tend to increase the complexity of event logging, view, they tend to increase the complexity of event logging, trouble-
trouble-shooting, enforcement of access controls and quality of shooting, enforcement of access controls and quality of service, etc.
service, etc. As a result, some organizations disable the use of As a result, some organizations disable the use of temporary
temporary addresses even at the expense of reduced privacy addresses even at the expense of reduced privacy [Broersma].
[Broersma]. Temporary addresses may also result in increased Temporary addresses may also result in increased implementation
implementation complexity, which might not be possible or complexity, which might not be possible or desirable in some
desirable in some implementations (e.g., some embedded devices). implementations (e.g., some embedded devices).
In scenarios in which temporary addresses are deliberately not In scenarios in which temporary addresses are deliberately not used
used (possibly for any of the aforementioned reasons), all a host (possibly for any of the aforementioned reasons), all a host is left
is left with is the stable addresses that have been generated with is the stable addresses that have typically been generated from
using e.g. IEEE identifiers. In such scenarios, it may still be the underlying hardware addresses. In such scenarios, it may still
desirable to have addresses that mitigate address scanning be desirable to have addresses that mitigate address scanning
attacks, and that at the very least do not reveal the node's attacks, and that at the very least do not reveal the node's identity
identity when roaming from one network to another -- without when roaming from one network to another -- without complicating the
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.cooper-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 those 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
not. not.
We note that attackers can employ a plethora of probing techniques
[I-D.ietf-opsec-ipv6-host-scanning] to exploit the aforementioned
issues. Some of them (such as the use of ICMPv6 Echo Request and
ICMPv6 Echo Response packets) could mitigated by a personal firewall
at the target host. For other vectors, such listening to ICMPv6
"Destination Unreachable, Address Unreachable" (Type 1, Code 3) error
messages referring to the target addresses
[I-D.ietf-opsec-ipv6-host-scanning], there is nothing a host can do
(e.g., a personal firewall at the target host would not be able to
mitigate this probing technique).
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.
The method specified in this document is a orthogonal to the use of 2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
3. Relationship to Other standards
The method specified in this document is orthogonal to the use of
"temporary" addresses [RFC4941], since it is meant to improve the "temporary" addresses [RFC4941], since it is meant to improve the
security and privacy properties of the stable addresses that are security and privacy properties of the stable addresses that are
employed along with the aforementioned "temporary" addresses. In employed along with the aforementioned "temporary" addresses. In
scenarios in which "temporary addresses" are employed, implementation scenarios in which "temporary addresses" are employed, implementation
of the mechanism described in this document (in replacement of stable of the mechanism described in this document (in replacement of stable
addresses based on e.g. IEEE identifiers) would mitigate address- addresses based on e.g., IEEE LAN MAC addresses) will mitigate
scanning attacks and also mitigate the remaining vectors for address-scanning attacks and also mitigate the remaining vectors for
correlating host activities based on the node's constant (i.e. stable correlating host activities based on the node's constant (i.e. stable
across networks) Interface Identifiers. On the other hand, for nodes across networks) Interface Identifiers. On the other hand, for nodes
that currently disable "temporary addresses" [RFC4941] for some of that currently disable "temporary addresses" [RFC4941],
the reasons described earlier in this document, implementation of implementation of this mechanism would mitigate the host-tracking and
this mechanism will result in stable privacy-enhanced addresses which address scanning issues discussed in Section 1.
address some of the concerns related to addresses that embed IEEE
identifiers [RFC4291], and which mitigate IPv6 address-scanning
attacks.
We note that this method is incrementally deployable, since it does
not pose any interoperability implications when deployed on networks
where other nodes do not implement or employ it. Additionally, we
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].
While the method specified in this document is meant to be used with While the method specified in this document is meant to be used with
SLAAC, this does not preclude the same algorithm from being used with SLAAC, this does not preclude this algorithm from being used with
other address configuration mechanisms, such as DHCPv6 [RFC3315] or other address configuration mechanisms, such as DHCPv6 [RFC3315] or
manual address configuration. manual address configuration.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 4. Design goals
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
2. Design goals
This document specifies a method for selecting Interface Identifiers This document specifies a method for generating Interface Identifiers
to be used with IPv6 SLAAC, with the following goals: to be used with IPv6 SLAAC, with the following goals:
o The resulting Interface Identifiers remain 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 (for the same interface) belonging to the same prefix an address (for the same interface) belonging to the same prefix
within the same subnet. within the same subnet.
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
skipping to change at page 7, line 30 skipping to change at page 8, line 30
must be (statistically) different. This means that, given two must be (statistically) different. This means that, given two
addresses produced by the method specified in this document, it addresses produced by the method specified in this document, it
must be difficult for an attacker tell whether the addresses have must be difficult for an attacker 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 3 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. link-layer address). independent of the underlying hardware (e.g. IEEE LAN MAC
This means that e.g. replacing a Network Interface Card (NIC) will address). This means that e.g. replacing a Network Interface Card
not have the (generally undesirable) effect of changing the IPv6 (NIC) or adding links dynamically to a Link Aggregation Group
addresses used for that network interface. (LAG) will not have the (generally undesirable) effect of changing
the IPv6 addresses used for that network interface.
o The method specified in this document is meant to be an o The method specified in this document is meant to be an
alternative to producing IPv6 addresses based on e.g. IEEE alternative to producing IPv6 addresses based hardware addresses
identifiers (as specified in [RFC2464]). It is meant to be (e.g. IEEE LAN MAC addresses, as specified in [RFC2464]). That
employed for all of the stable (i.e. non-temporary) IPv6 addresses is, this document does not formally obsolete or deprecate any of
configured with SLAAC for a given interface, including global, the existing algorithms to generate Interface Identifiers. It is
link-local, and unique-local IPv6 addresses. meant to be employed for all of the stable (i.e. non-temporary)
IPv6 addresses configured with SLAAC for a given interface,
including global, link-local, and unique-local IPv6 addresses.
We note that of use of the algorithm specified in this document is We note that this method is incrementally deployable, since it does
(to a large extent) orthogonal to the use of "temporary addresses" not pose any interoperability implications when deployed on networks
[RFC4941]. When employed along with "temporary addresses", the where other nodes do not implement or employ it. Additionally, we
method specified in this document will mitigate address-scanning note that this document does not update or modify IPv6 StateLess
attacks and correlation of node activities across networks (see Address Auto-Configuration (SLAAC) [RFC4862] itself, but rather only
[I-D.cooper-6man-ipv6-address-generation-privacy] and [IAB-PRIVACY]). specifies an alternative algorithm to generate Interface Identifiers.
On the other hand, hosts that do not implement/use "temporary
addresses" but employ the method specified in this document would, at
the very least, mitigate the host-tracking and address scanning
issues discussed in the previous section.
3. Algorithm specification 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].
5. Algorithm specification
IPv6 implementations conforming to this specification MUST generate IPv6 implementations conforming to this specification MUST generate
Interface Identifiers using the algorithm specified in this section Interface Identifiers using the algorithm specified in this section
in replacement of any other algorithms used for generating "stable" in replacement of any other algorithms used for generating "stable"
addresses with SLAAC (such as those specified in [RFC2464]). addresses with SLAAC (such as those specified in [RFC2464],
However, implementations conforming to this specification MAY employ [RFC2467], and [RFC2470]). However, implementations conforming to
the algorithm specified in [RFC4941] to generate temporary addresses this specification MAY employ the algorithm specified in [RFC4941] to
in addition to the addresses generated with the algorithm specified generate temporary addresses in addition to the addresses generated
in this document. The method specified in this document MUST be with the algorithm specified in this document. The method specified
employed for generating the Interface Identifiers with SLAAC for all in this document MUST be employed for generating the Interface
the stable addresses of a given interface, including IPv6 global, Identifiers with SLAAC for all the stable addresses, including IPv6
link-local, and unique-local addresses. global, link-local, and unique-local addresses.
This means that this document does not formally obsolete or
deprecate any of the existing algorithms to generate Interface
Identifiers (e.g. such as that specified in [RFC2464]). However,
those IPv6 implementations that employ this specification MUST
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. algorithm for generating Interface Identifiers.
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 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) Interface Identifier Random (but stable) Identifier
F(): F():
A pseudorandom function (PRF) that is not computable from the A pseudorandom function (PRF) that MUST NOT be computable from
outside (without knowledge of the secret key), which should the outside (without knowledge of the secret key). F() MUST
produce an output of at least 64 bits.The PRF could be also be difficult to reverse, such that it resists attempts to
implemented as a cryptographic hash of the concatenation of obtain the secret_key, even when given samples of the output
of F() and knowledge or control of the other input parameters.
F() SHOULD produce an output of at least 64 bits. F() 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, or the link-local IPv6 unicast Router Advertisement message, or the link-local IPv6 unicast
prefix. prefix [RFC4291].
Net_Iface: Net_Iface:
An implementation-dependent stable identifier associated with An implementation-dependent stable identifier associated with
the network interface for which the RID is being generated. the network interface for which the RID is being generated.
An implementation MAY provide a configuration option to select An implementation MAY provide a configuration option to select
the source of the identifier to be used for the Net_Iface the source of the identifier to be used for the Net_Iface
parameter. A discussion of possible sources for this value parameter. A discussion of possible sources for this value
(along with the corresponding trade-offs) can be found in (along with the corresponding trade-offs) can be found in
Appendix A. Appendix A.
skipping to change at page 10, line 34 skipping to change at page 11, line 29
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, Net_Iface, Network_ID} tuple MUST initialize {Prefix, Net_Iface, Network_ID} tuple MUST initialize
DAD_Counter to the recorded value if such an entry exists in DAD_Counter to the recorded value if such an entry exists in
non-volatile memory). See Section 4 for additional details. non-volatile memory. See Section 6 for additional details.
secret_key: secret_key:
A secret key that is not known by the attacker. The secret A secret key that is not known by the attacker. The secret
key MUST be initialized at operating system installation time key MUST be initialized to a pseudo-random number (see
to a pseudo-random number (see [RFC4086] for randomness [RFC4086] for randomness requirements for security) at
requirements for security). An implementation MAY provide the operating system installation time or when the IPv6 protocol
means for the the system administrator to change or display stack is initialized for the first time. An implementation
the secret key. MAY provide the means for the the system 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 all
unicast addresses (except those that start with the binary unicast addresses (except those that start with the binary
value 000) be 64-bit long. However, the method discussed in value 000) be 64-bit long. However, the method discussed in
this document could be employed for generating Interface IDs this document could be employed for generating Interface IDs
of any arbitrary length, albeit at the expense of reduced of any arbitrary length, albeit at the expense of reduced
entropy (when employing Interface IDs smaller than 64 bits). entropy (when employing Interface IDs smaller than 64 bits).
The resulting Interface Identifier should be compared against the The resulting Interface Identifier SHOULD be compared against the
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 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.
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
skipping to change at page 11, line 42 skipping to change at page 12, line 38
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 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
address scanning attacks). IPv6 address scanning attacks).
The Net_Iface is a value that identifies the network interface for The Net_Iface is a value that identifies the network interface for
which an IPv6 address is being generated. The following properties which an IPv6 address is being generated. The following properties
are required for the Net_Iface parameter: are required for the Net_Iface parameter:
o it MUST be constant across system bootstrap sequences and other o it MUST be constant across system bootstrap sequences and other
network events (e.g., bringing another interface up or down) network events (e.g., bringing another interface up or down)
o it MUST be different for each network interface simultaneously in o it MUST be different for each network interface simultaneously in
use use
skipping to change at page 12, line 27 skipping to change at page 13, line 21
that are attached to the underlying network interface card (NIC), that are attached to the underlying network interface card (NIC),
such that a removable NIC always gets the same IPv6 address, such that a removable NIC always gets the same IPv6 address,
irrespective of the system communications port to which it is irrespective of the system communications port to which it is
attached. On the other hand, a server-oriented operating system attached. On the other hand, a server-oriented operating system
might prefer Net_Iface identifiers that are attached to system slots/ might prefer Net_Iface identifiers that are attached to system slots/
ports, such that replacement of a network interface card does not ports, such that replacement of a network interface card does not
result in an IPv6 address change. Appendix A discusses possible result in an IPv6 address change. Appendix A discusses possible
sources for the Net_Iface, along with their pros and cons. 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 causes the algorithm to produce a different Interface
Interface Identifier when connecting to different networks, even when Identifier when connecting to different networks, even when
configuring addresses belonging to the same prefix. This means that configuring addresses belonging to the same prefix. This means that
a host would employ a different Interface Identifier as it moves from a host would employ a different Interface Identifier as it moves from
one network to another even for IPv6 link-local addresses or Unique one network to another even for IPv6 link-local addresses or Unique
Local Addresses (ULAs). In those scenarios where the Network_ID is Local Addresses (ULAs). In those scenarios where the Network_ID is
unknown to the attacker, including this parameter might help mitigate unknown to the attacker, including this parameter might help mitigate
attacks where a victim node connects to the same subnet as the attacks where a victim node connects to the same subnet as the
attacker, and the attacker tries to learn the Interface Identifier attacker, and the attacker tries to learn the Interface Identifier
used by the victim node for a remote network (see Section 7 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 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 4. 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. For example, the universal/local bit
of Modified EUI-64 format identifiers is treated as any other bit of of Modified EUI-64 format identifiers is treated as any other bit of
such identifier. In theory, this might result in Duplicate Address such identifier. In theory, this might result in Duplicate Address
Detection (DAD) failures that would otherwise not be encountered. Detection (DAD) failures that would otherwise not be encountered.
However, this is not deemed as a real issue, because of the following However, this is not deemed as a real issue, because of the following
considerations: considerations:
o The interface IDs of all addresses (except those of addresses that o The interface IDs of all addresses (except those of addresses that
that start with the binary value 000) are 64-bit long. Since the 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
identifiers) might result in DAD failures, and hence LAN MAC addresses) might result in DAD failures, and hence
implementations should be prepared to gracefully handle such implementations should be prepared to gracefully handle such
occurrences. occurrences.
o Since some popular and widely-deployed operating systems (such as o Since some popular and widely-deployed operating systems (such as
Microsoft Windows) do not employ unique hardware identifiers for Microsoft Windows) do not employ unique hardware addresses for the
the Interface IDs of their stable addresses, reliance on such Interface IDs of their stable addresses, reliance on such unique
unique identifiers is more reduced in the deployed world (fewer identifiers is more reduced in the deployed world (fewer deployed
deployed systems rely on them for the avoidance of address systems rely on them for the avoidance of address collisions).
collisions).
4. Resolving Duplicate Address Detection (DAD) conflicts 6. 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 5 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 Identifier is generated with the algorithm o A new Interface Identifier is generated with the algorithm
specified in Section 3, using the incremented DAD_Counter value. specified in Section 5, using the incremented DAD_Counter value.
Hosts SHOULD introduce a random delay between 0 and IDGEN_DELAY
seconds (see Section 7) before trying a new tentative address, to
avoid lock-step behavior of multiple hosts.
This procedure may be repeated a number of times until the address This procedure may be repeated a number of times until the address
conflict is resolved. Hosts SHOULD try at least IDGEN_RETRIES (see conflict is resolved. Hosts SHOULD try at least IDGEN_RETRIES (see
Section 5) tentative addresses if DAD fails for successive generated Section 7) tentative addresses if DAD fails for successive generated
addresses, in the hopes of resolving the address conflict. We also addresses, in the hopes of resolving the address conflict. We also
note that hosts MUST limit the number of tentative addresses that are note that hosts MUST limit the number of tentative addresses that are
tried (rather than indefinitely try a new tentative address until the tried (rather than indefinitely try a new tentative address until the
conflict is resolved). conflict is resolved).
In those (unlikely) scenarios in which duplicate addresses are In those unlikely scenarios in which duplicate addresses are detected
detected and in which the order in which the conflicting nodes and in which the order in which the conflicting nodes configure their
configure their addresses may vary (e.g., because they may be addresses may vary (e.g., because they may be bootstrapped in
bootstrapped in different order), the algorithm specified in this different order), the algorithm specified in this section for
section for resolving DAD conflicts could lead to addresses that are resolving DAD conflicts could lead to addresses that are not stable
not stable within the same subnet. In order to mitigate this within the same subnet. In order to mitigate this potential problem,
potential problem, nodes MAY record the DAD_Counter value employed nodes MAY record the DAD_Counter value employed for a specific
for a specific {Prefix, Net_Iface, Network_ID} tuple in non-volatile {Prefix, Net_Iface, Network_ID} tuple in non-volatile memory, such
memory, such that the same DAD_Counter value is employed when that the same DAD_Counter value is employed when configuring an
configuring an address for the same Prefix and subnet at any other address for the same Prefix and subnet at any other point in time.
point in time. We note that the use of non-volatile memory is OPTIONAL, and hosts
that do not implement this feature are still compliant to this
protocol specification.
In the event that a DAD conflict cannot be solved (possibly after In the event that a DAD conflict cannot be solved (possibly after
trying a number of different addresses), address configuration would trying a number of different addresses), address configuration would
fail. In those scenarios, nodes MUST NOT automatically fall back to fail. In those scenarios, nodes MUST NOT automatically fall back to
employing other algorithms for generating Interface Identifiers. employing other algorithms for generating Interface Identifiers.
5. Specified Constants 7. Specified Constants
This document specifies the following constant: This document specifies the following constant:
IDGEN_RETRIES: IDGEN_RETRIES:
defaults to 3. defaults to 3.
6. IANA Considerations IDGEN_DELAY:
defaults to 1 second.
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.
7. 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
IEEE identifiers (such as those specified in [RFC2464]). When hardware addresses (such as those specified in [RFC2464], [RFC2467],
compared to such identifiers, the identifiers specified in this and [RFC2470]). When compared to such identifiers, the identifiers
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.cooper-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 3) is employed. source for Net_Iface (Section 5) is employed.
o They prevent the information leakage produced by embedding o They prevent the information leakage produced by embedding
hardware addresses in the Interface Identifier (which could be hardware addresses in the Interface Identifier (which could be
exploited to launch device-specific attacks). exploited to launch device-specific attacks).
o Since the method specified in this document will result in o Since the method specified in this document will result in
different Interface Identifiers for each configured address, different Interface Identifiers for each configured address,
knowledge/leakage of the Interface Identifier employed for one knowledge/leakage of the Interface Identifier employed for one
stable address of will not negatively affect the security/privacy stable address will not negatively affect the security/privacy of
of other stable addresses configured for other prefixes (whether other stable addresses configured for other prefixes (whether at
at the same time or at some other point in time). the same time or at some other point in time).
We note that while some probing techniques (such as the use of ICMPv6
Echo Request and ICMPv6 Echo Response packets) could be mitigated by
a personal firewall at the target host, for other probing vectors,
such as listening to ICMPv6 "Destination Unreachable, Address
Unreachable" (Type 1, Code 3) error messages referring to the target
addresses [I-D.ietf-opsec-ipv6-host-scanning], there is nothing a
host can do (e.g., a personal firewall at the target host would not
be able to mitigate this probing technique). Hence, the method
specified in this document is still of value for nodes that employ
personal firewalls.
In scenarios in which an attacker can connect to the same subnet as a In scenarios in which an attacker can connect to the same subnet as a
victim node, the attacker might be able to learn the Interface victim node, the attacker might be able to learn the Interface
Identifier employed by the victim node for an arbitrary prefix, by Identifier employed by the victim node for an arbitrary prefix, by
simply sending a forged Router Advertisement [RFC4861] for that simply sending a forged Router Advertisement [RFC4861] for that
prefix, and subsequently learning the corresponding address prefix, and subsequently learning the corresponding address
configured by the victim node (either listening to the Duplicate configured by the victim node (either listening to the Duplicate
Address Detection packets, or to any other traffic that employs the Address Detection packets, or to any other traffic that employs the
newly configured address). We note that a number of factors might newly configured address). We note that a number of factors might
limit the ability of an attacker to successfully perform such an limit the ability of an attacker to successfully perform such an
attack: attack:
o First-Hop security mechanisms such as RA-Guard [RFC6105] o First-Hop security mechanisms such as RA-Guard [RFC6105]
[I-D.ietf-v6ops-ra-guard-implementation] could prevent the forged [I-D.ietf-v6ops-ra-guard-implementation] could prevent the forged
Router Advertisement from reaching the victim node Router Advertisement from reaching the victim node
o If the victim implementation includes the (optional) Network_ID o If the victim implementation includes the (optional) Network_ID
parameter for computing F() (see Section 3), and the Network_ID parameter for computing F() (see Section 5), and the Network_ID
employed by the victim for a remote network is unknown to the employed by the victim for a remote network is unknown to the
attacker, the Interface Identifier learned by the attacker would attacker, the Interface Identifier learned by the attacker would
differ from the one used by the victim when connecting to the differ from the one used by the victim when connecting to the
legitimate network. legitimate network.
In any case, we note that at the point in which this kind of attack In any case, we note that at the point in which this kind of attack
becomes a concern, a host should consider employing Secure Neighbor becomes a concern, a host should consider employing Secure Neighbor
Discovery (SEND) [RFC3971] to prevent an attacker from illegitimately Discovery (SEND) [RFC3971] to prevent an attacker from illegitimately
claiming authority for a network prefix. claiming authority for a network prefix.
skipping to change at page 18, line 34 skipping to change at page 19, line 43
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.cooper-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 identifiers. addresses that embed IEEE LAN MAC addresses. Finally, we note that
the method described in this document addresses some of the privacy
Finally, we note that the method described in this document addresses concerns arising from the use of IPv6 addresses that embed IEEE LAN
some of the privacy concerns arising from the use of IPv6 addresses MAC addresses, without the use of temporary addresses, thus possibly
that embed IEEE identifiers, without the use of temporary addresses, offering an interesting trade-off for those scenarios in which the
thus possibly offering an interesting trade-off for those scenarios use of temporary addresses is not feasible.
in which the use of temporary addresses is not feasible.
8. Acknowledgements 10. Acknowledgements
The algorithm specified in this document has been inspired by Steven The algorithm specified in this document has been inspired by Steven
Bellovin's work ([RFC1948]) in the area of TCP sequence numbers. Bellovin's work ([RFC1948]) in the area of TCP sequence numbers.
The author would like to thank (in alphabetical order) Mikael The author would like to thank (in alphabetical order) Mikael
Abrahamsson, Ran Atkinson, Karl Auer, Steven Bellovin, Matthias Abrahamsson, Ran Atkinson, Karl Auer, Steven Bellovin, Matthias
Bethke, Ben Campbell, Brian Carpenter, Tassos Chatzithomaoglou, Tim Bethke, Ben Campbell, Brian Carpenter, Tassos Chatzithomaoglou, Tim
Chown, Alissa Cooper, Dominik Elsbroek, Brian Haberman, Bob Hinden, Chown, Alissa Cooper, Dominik Elsbroek, Eric Gray, Brian Haberman,
Christian Huitema, Ray Hunter, Jouni Korhonen, Eliot Lear, Jong-Hyouk Bob Hinden, Christian Huitema, Ray Hunter, Jouni Korhonen, Eliot
Lee, Andrew McGregor, Tom Petch, Michael Richardson, Mark Smith, Dave Lear, Jong-Hyouk Lee, Andrew McGregor, Tom Petch, Michael Richardson,
Thaler, Ole Troan, James Woodyatt, and He Xuan, for providing Mark Smith, Dave Thaler, Ole Troan, James Woodyatt, and He Xuan, for
valuable comments on earlier versions of this document. 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 The author would like to thank CPNI (http://www.cpni.gov.uk) for
their continued support. their continued support.
9. References 11. References
9.1. Normative References 11.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.
[RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C., [RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C.,
and M. Carney, "Dynamic Host Configuration Protocol for and M. Carney, "Dynamic Host Configuration Protocol for
IPv6 (DHCPv6)", RFC 3315, July 2003. IPv6 (DHCPv6)", RFC 3315, July 2003.
[RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W.
Stevens, "Basic Socket Interface Extensions for IPv6",
RFC 3493, February 2003.
[RFC3542] Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei,
"Advanced Sockets Application Program Interface (API) for
IPv6", RFC 3542, May 2003.
[RFC3971] Arkko, J., Kempf, J., Zill, B., and P. Nikander, "SEcure [RFC3971] Arkko, J., Kempf, J., Zill, B., and P. Nikander, "SEcure
Neighbor Discovery (SEND)", RFC 3971, March 2005. Neighbor Discovery (SEND)", RFC 3971, March 2005.
[RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)", [RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)",
RFC 3972, March 2005. RFC 3972, March 2005.
[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
skipping to change at page 21, line 9 skipping to change at page 21, line 49
"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.
[RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. 11.2. Informative References
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.
[RFC2467] Crawford, M., "Transmission of IPv6 Packets over FDDI
Networks", RFC 2467, December 1998.
[RFC2470] Crawford, M., Narten, T., and S. Thomas, "Transmission of
IPv6 Packets over Token Ring Networks", RFC 2470,
December 1998.
[RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W.
Stevens, "Basic Socket Interface Extensions for IPv6",
RFC 3493, February 2003.
[RFC3542] Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei,
"Advanced Sockets Application Program Interface (API) for
IPv6", RFC 3542, May 2003.
[RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J.
Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105,
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-guard-implementation-07 (work in draft-ietf-v6ops-ra-guard-implementation-07 (work in
progress), November 2012. progress), November 2012.
skipping to change at page 21, line 49 skipping to change at page 23, line 6
September 25-29, 2012, September 25-29, 2012,
<https://speakerdeck.com/hdm/derbycon-2012-the-wild-west>. <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, "Recent Advances in IPv6 Security", BRUCON 2012
Conference, Ghent, Belgium, September 2012, <http://
www.si6networks.com/presentations/brucon2012/
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, <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-privacy-review.txt>. 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. 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 3. 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
skipping to change at page 24, line 4 skipping to change at page 25, line 4
(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
network interfaces; although, for obvious reasons, they generally network interfaces; although, for obvious reasons, they generally
change when a network interface card is replaced. In scenarios where change when a network interface card is replaced. In scenarios where
neither Interface Indexes nor Interface Names have the stability neither Interface Indexes nor Interface Names have the stability
properties specified in Section 3 for Net_Iface, an implementation properties specified in Section 5 for Net_Iface, an implementation
might want to employ the link-layer address of the interface for the might want to employ the link-layer address of the interface for the
Net_Iface parameter, albeit at the expense of making the Net_Iface parameter, albeit at the expense of making the
corresponding IPv6 addresses dependent on the underlying network corresponding IPv6 addresses dependent on the underlying network
interface card (i.e., the corresponding IPv6 address would typically interface card (i.e., the corresponding IPv6 address would typically
change upon replacement of the underlying network interface card). change upon replacement of the underlying network interface card).
A.4. Logical Network Service Identity A.4. Logical Network Service Identity
Host operating systems with a conception of logical network service Host operating systems with a conception of logical network service
identity, distinct from network interface identity or index, may keep identity, distinct from network interface identity or index, may keep
 End of changes. 66 change blocks. 
220 lines changed or deleted 224 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/