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/ |