draft-ietf-6man-stable-privacy-addresses-14.txt | draft-ietf-6man-stable-privacy-addresses-15.txt | |||
---|---|---|---|---|
IPv6 maintenance Working Group (6man) F. Gont | IPv6 maintenance Working Group (6man) F. Gont | |||
Internet-Draft SI6 Networks / UTN-FRH | Internet-Draft SI6 Networks / UTN-FRH | |||
Intended status: Standards Track October 11, 2013 | Intended status: Standards Track November 26, 2013 | |||
Expires: April 14, 2014 | Expires: May 30, 2014 | |||
A Method for Generating Semantically Opaque Interface Identifiers with | A Method for Generating Semantically Opaque Interface Identifiers with | |||
IPv6 Stateless Address Autoconfiguration (SLAAC) | IPv6 Stateless Address Autoconfiguration (SLAAC) | |||
draft-ietf-6man-stable-privacy-addresses-14 | draft-ietf-6man-stable-privacy-addresses-15 | |||
Abstract | Abstract | |||
This document specifies a method for generating IPv6 Interface | This document specifies a method for generating IPv6 Interface | |||
Identifiers to be used with IPv6 Stateless Address Autoconfiguration | Identifiers to be used with IPv6 Stateless Address Autoconfiguration | |||
(SLAAC), such that addresses configured using this method are stable | (SLAAC), such that addresses configured using this method are stable | |||
within each subnet, but the Interface Identifier changes when hosts | within each subnet, but the Interface Identifier changes when hosts | |||
move from one network to another. This method is meant to be an | move from one network to another. This method is meant to be an | |||
alternative to generating Interface Identifiers based on hardware | alternative to generating Interface Identifiers based on hardware | |||
addresses (e.g., IEEE LAN MAC addresses), such that the benefits of | addresses (e.g., IEEE LAN MAC addresses), such that the benefits of | |||
stable addresses can be achieved without sacrificing the privacy of | stable addresses can be achieved without sacrificing the privacy of | |||
users. The method specified in this document applies to all prefixes | users. The method specified in this document applies to all prefixes | |||
a host may be employing, including link-local, global, and unique- | a host may be employing, including link-local, global, and unique- | |||
local addresses. | local addresses. | |||
Status of this Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on April 14, 2014. | This Internet-Draft will expire on May 30, 2014. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2013 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. Relationship to Other standards . . . . . . . . . . . . . . . 7 | 3. Relationship to Other standards . . . . . . . . . . . . . . . 5 | |||
4. Design goals . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4. Design goals . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
5. Algorithm specification . . . . . . . . . . . . . . . . . . . 10 | 5. Algorithm specification . . . . . . . . . . . . . . . . . . . 6 | |||
6. Resolving Duplicate Address Detection (DAD) conflicts . . . . 15 | 6. Resolving Duplicate Address Detection (DAD) conflicts . . . . 11 | |||
7. Specified Constants . . . . . . . . . . . . . . . . . . . . . 16 | 7. Specified Constants . . . . . . . . . . . . . . . . . . . . . 12 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 20 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14 | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 21 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 15 | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 21 | 11.2. Informative References . . . . . . . . . . . . . . . . . 16 | |||
Appendix A. Possible sources for the Net_Iface parameter . . . . 24 | Appendix A. Possible sources for the Net_Iface parameter . . . . 17 | |||
A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 24 | A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 17 | |||
A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . 24 | A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . 18 | |||
A.3. Link-layer Addresses . . . . . . . . . . . . . . . . . . 24 | A.3. Link-layer Addresses . . . . . . . . . . . . . . . . . . 18 | |||
A.4. Logical Network Service Identity . . . . . . . . . . . . 25 | A.4. Logical Network Service Identity . . . . . . . . . . . . 18 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 26 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
1. Introduction | 1. Introduction | |||
[RFC4862] specifies Stateless Address Autoconfiguration (SLAAC) for | [RFC4862] specifies Stateless Address Autoconfiguration (SLAAC) for | |||
IPv6 [RFC2460], which typically results in hosts configuring one or | IPv6 [RFC2460], which typically results in hosts configuring one or | |||
more "stable" addresses composed of a network prefix advertised by a | more "stable" addresses composed of a network prefix advertised by a | |||
local router, and an Interface Identifier (IID) that typically embeds | local router, and an Interface Identifier (IID) that typically embeds | |||
a hardware address (e.g., an IEEE LAN MAC address) [RFC4291]. | a hardware address (e.g., an IEEE LAN MAC address) [RFC4291]. | |||
Cryptographically Generated Addresses (CGAs) [RFC3972] are yet | Cryptographically Generated Addresses (CGAs) [RFC3972] are yet | |||
another method for generating Interface Identifiers, which bind a | another method for generating Interface Identifiers, which bind a | |||
public signature key to an IPv6 address in the SEcure Neighbor | public signature key to an IPv6 address in the SEcure Neighbor | |||
Discovery (SEND) [RFC3971] protocol. | Discovery (SEND) [RFC3971] protocol. | |||
Generally, the traditional SLAAC addresses are thought to simplify | Generally, the traditional SLAAC addresses are thought to simplify | |||
network management, since they simplify Access Control Lists (ACLs) | network management, since they simplify Access Control Lists (ACLs) | |||
and logging. However, they have a number of drawbacks: | and logging. However, they have a number of drawbacks: | |||
o since the resulting Interface Identifiers do not vary over time, | o since the resulting Interface Identifiers do not vary over time, | |||
they allow correlation of node activities within the same network, | they allow correlation of node activities within the same network, | |||
thus negatively affecting the privacy of users (see | thus negatively affecting the privacy of users (see | |||
[I-D.cooper-6man-ipv6-address-generation-privacy] and | [I-D.ietf-6man-ipv6-address-generation-privacy] and | |||
[IAB-PRIVACY]). | [IAB-PRIVACY]). | |||
o since the resulting Interface Identifiers are constant across | o since the resulting Interface Identifiers are constant across | |||
networks, the resulting IPv6 addresses can be leveraged to track | networks, the resulting IPv6 addresses can be leveraged to track | |||
and correlate the activity of a node across multiple networks | and correlate the activity of a node across multiple networks | |||
(e.g. track and correlate the activities of a typical client | (e.g. track and correlate the activities of a typical client | |||
connecting to the public Internet from different locations), thus | connecting to the public Internet from different locations), thus | |||
negatively affecting the privacy of users. | negatively affecting the privacy of users. | |||
o since embedding the underlying link-layer address in the Interface | o since embedding the underlying link-layer address in the Interface | |||
skipping to change at page 4, line 5 | skipping to change at page 3, line 34 | |||
o embedding the underlying hardware address in the Interface | o embedding the underlying hardware address in the Interface | |||
Identifier leaks device-specific information that could be | Identifier leaks device-specific information that could be | |||
leveraged to launch device-specific attacks. | leveraged to launch device-specific attacks. | |||
o embedding the underlying link-layer address in the Interface | o embedding the underlying link-layer address in the Interface | |||
Identifier means that replacement of the underlying interface | Identifier means that replacement of the underlying interface | |||
hardware will result in a change of the IPv6 address(es) assigned | hardware will result in a change of the IPv6 address(es) assigned | |||
to that interface. | to that interface. | |||
[I-D.cooper-6man-ipv6-address-generation-privacy] provides additional | [I-D.ietf-6man-ipv6-address-generation-privacy] provides additional | |||
details regarding how these vulnerabilities could be exploited, and | details regarding how these vulnerabilities could be exploited, and | |||
the extent to which the method discussed in this document mitigates | the extent to which the method discussed in this document mitigates | |||
them. | them. | |||
The "Privacy Extensions for Stateless Address Autoconfiguration in | The "Privacy Extensions for Stateless Address Autoconfiguration in | |||
IPv6" [RFC4941] (henceforth referred to as "temporary addresses") | IPv6" [RFC4941] (henceforth referred to as "temporary addresses") | |||
were introduced to complicate the task of eavesdroppers and other | were introduced to complicate the task of eavesdroppers and other | |||
information collectors (e.g., IPv6 addresses in web server logs or | information collectors (e.g., IPv6 addresses in web server logs or | |||
email headers, etc.) to correlate the activities of a node, and | email headers, etc.) to correlate the activities of a node, and | |||
basically result in temporary (and random) Interface Identifiers. | basically result in temporary (and random) Interface Identifiers. | |||
skipping to change at page 4, line 47 | skipping to change at page 4, line 30 | |||
attacks, and that at the very least do not reveal the node's identity | attacks, and that at the very least do not reveal the node's identity | |||
when roaming from one network to another -- without complicating the | when roaming from one network to another -- without complicating the | |||
operation of the corresponding networks. | operation of the corresponding networks. | |||
However, even with "temporary addresses" in place, a number of issues | However, even with "temporary addresses" in place, a number of issues | |||
remain to be mitigated. Namely, | remain to be mitigated. Namely, | |||
o since "temporary addresses" [RFC4941] do not eliminate the use of | o since "temporary addresses" [RFC4941] do not eliminate the use of | |||
fixed identifiers for server-like functions, they only partially | fixed identifiers for server-like functions, they only partially | |||
mitigate host-tracking and activity correlation across networks | mitigate host-tracking and activity correlation across networks | |||
(see [I-D.cooper-6man-ipv6-address-generation-privacy] for some | (see [I-D.ietf-6man-ipv6-address-generation-privacy] for some | |||
example attacks that are still possible with temporary addresses). | example attacks that are still possible with temporary addresses). | |||
o since "temporary addresses" [RFC4941] do not replace the | o since "temporary addresses" [RFC4941] do not replace the | |||
traditional SLAAC addresses, an attacker can still leverage | traditional SLAAC addresses, an attacker can still leverage | |||
patterns in SLAAC addresses to greatly reduce the search space for | patterns in SLAAC addresses to greatly reduce the search space for | |||
"alive" nodes [Gont-DEEPSEC2011] [CPNI-IPv6] | "alive" nodes [Gont-DEEPSEC2011] [CPNI-IPv6] | |||
[I-D.ietf-opsec-ipv6-host-scanning]. | [I-D.ietf-opsec-ipv6-host-scanning]. | |||
Hence, there is a motivation to improve the properties of "stable" | Hence, there is a motivation to improve the properties of "stable" | |||
addresses regardless of whether temporary addresses are employed or | addresses regardless of whether temporary addresses are employed or | |||
skipping to change at page 8, line 32 | skipping to change at page 6, line 12 | |||
must be difficult for an attacker tell whether the addresses have | must be difficult for an attacker tell whether the addresses have | |||
been generated/used by the same node. | been generated/used by the same node. | |||
o It must be difficult for an outsider to predict the Interface | o It must be difficult for an outsider to predict the Interface | |||
Identifiers that will be generated by the algorithm, even with | Identifiers that will be generated by the algorithm, even with | |||
knowledge of the Interface Identifiers generated for configuring | knowledge of the Interface Identifiers generated for configuring | |||
other addresses. | other addresses. | |||
o Depending on the specific implementation approach (see Section 5 | o Depending on the specific implementation approach (see Section 5 | |||
and Appendix A), the resulting Interface Identifiers may be | and Appendix A), the resulting Interface Identifiers may be | |||
independent of the underlying hardware (e.g. IEEE LAN MAC | independent of the underlying hardware (e.g. IEEE LAN MAC | |||
address). This means that e.g. replacing a Network Interface Card | address). This means that e.g. replacing a Network Interface Card | |||
(NIC) or adding links dynamically to a Link Aggregation Group | (NIC) or adding links dynamically to a Link Aggregation Group | |||
(LAG) will not have the (generally undesirable) effect of changing | (LAG) will not have the (generally undesirable) effect of changing | |||
the IPv6 addresses used for that network interface. | the IPv6 addresses used for that network interface. | |||
o The method specified in this document is meant to be an | o The method specified in this document is meant to be an | |||
alternative to producing IPv6 addresses based hardware addresses | alternative to producing IPv6 addresses based hardware addresses | |||
(e.g. IEEE LAN MAC addresses, as specified in [RFC2464]). That | (e.g. IEEE LAN MAC addresses, as specified in [RFC2464]). That | |||
is, this document does not formally obsolete or deprecate any of | is, this document does not formally obsolete or deprecate any of | |||
the existing algorithms to generate Interface Identifiers. It is | the existing algorithms to generate Interface Identifiers. It is | |||
meant to be employed for all of the stable (i.e. non-temporary) | meant to be employed for all of the stable (i.e. non-temporary) | |||
IPv6 addresses configured with SLAAC for a given interface, | IPv6 addresses configured with SLAAC for a given interface, | |||
including global, link-local, and unique-local IPv6 addresses. | including global, link-local, and unique-local IPv6 addresses. | |||
We note that this method is incrementally deployable, since it does | We note that this method is incrementally deployable, since it does | |||
not pose any interoperability implications when deployed on networks | not pose any interoperability implications when deployed on networks | |||
where other nodes do not implement or employ it. Additionally, we | where other nodes do not implement or employ it. Additionally, we | |||
note that this document does not update or modify IPv6 StateLess | note that this document does not update or modify IPv6 StateLess | |||
skipping to change at page 10, line 34 | skipping to change at page 7, line 31 | |||
expression below MUST be included when generating an Interface | expression below MUST be included when generating an Interface | |||
Identifier. | Identifier. | |||
1. Compute a random (but stable) identifier with the expression: | 1. Compute a random (but stable) identifier with the expression: | |||
RID = F(Prefix, Net_Iface, Network_ID, DAD_Counter, secret_key) | RID = F(Prefix, Net_Iface, Network_ID, DAD_Counter, secret_key) | |||
Where: | Where: | |||
RID: | RID: | |||
Random (but stable) Identifier | Random (but stable) Identifier | |||
F(): | F(): | |||
A pseudorandom function (PRF) that MUST NOT be computable from | A pseudorandom function (PRF) that MUST NOT be computable | |||
the outside (without knowledge of the secret key). F() MUST | from the outside (without knowledge of the secret key). | |||
also be difficult to reverse, such that it resists attempts to | F() MUST also be difficult to reverse, such that it resists | |||
obtain the secret_key, even when given samples of the output | attempts to obtain the secret_key, even when given samples | |||
of F() and knowledge or control of the other input parameters. | of the output of F() and knowledge or control of the other | |||
F() SHOULD produce an output of at least 64 bits. F() could | input parameters. F() SHOULD produce an output of at least | |||
be implemented as a cryptographic hash of the concatenation of | 64 bits. F() could be implemented as a cryptographic hash | |||
each of the function parameters. | of the concatenation of each of the function parameters. | |||
MD5 [RFC1321] and SHA-1 [FIPS-SHS] are two possible options | ||||
for F(). | ||||
Prefix: | Prefix: | |||
The prefix to be used for SLAAC, as learned from an ICMPv6 | The prefix to be used for SLAAC, as learned from an ICMPv6 | |||
Router Advertisement message, or the link-local IPv6 unicast | Router Advertisement message, or the link-local IPv6 | |||
prefix [RFC4291]. | unicast prefix [RFC4291]. | |||
Net_Iface: | Net_Iface: | |||
An implementation-dependent stable identifier associated with | ||||
the network interface for which the RID is being generated. | An implementation-dependent stable identifier associated | |||
An implementation MAY provide a configuration option to select | with the network interface for which the RID is being | |||
the source of the identifier to be used for the Net_Iface | generated. An implementation MAY provide a configuration | |||
parameter. A discussion of possible sources for this value | option to select the source of the identifier to be used | |||
(along with the corresponding trade-offs) can be found in | for the Net_Iface parameter. A discussion of possible | |||
Appendix A. | sources for this value (along with the corresponding trade- | |||
offs) can be found in Appendix A. | ||||
Network_ID: | Network_ID: | |||
Some network specific data that identifies the subnet to which | Some network specific data that identifies the subnet to | |||
this interface is attached. For example the IEEE 802.11 | which this interface is attached. For example the IEEE | |||
Service Set Identifier (SSID) corresponding to the network to | 802.11 Service Set Identifier (SSID) corresponding to the | |||
which this interface is associated. This parameter is | network to which this interface is associated. This | |||
OPTIONAL. | parameter is OPTIONAL. | |||
DAD_Counter: | DAD_Counter: | |||
A counter that is employed to resolve Duplicate Address | A counter that is employed to resolve Duplicate Address | |||
Detection (DAD) conflicts. It MUST be initialized to 0, and | Detection (DAD) conflicts. It MUST be initialized to 0, | |||
incremented by 1 for each new tentative address that is | and incremented by 1 for each new tentative address that is | |||
configured as a result of a DAD conflict. Implementations | configured as a result of a DAD conflict. Implementations | |||
that record DAD_Counter in non-volatile memory for each | that record DAD_Counter in non-volatile memory for each | |||
{Prefix, Net_Iface, Network_ID} tuple MUST initialize | {Prefix, Net_Iface, Network_ID} tuple MUST initialize | |||
DAD_Counter to the recorded value if such an entry exists in | DAD_Counter to the recorded value if such an entry exists | |||
non-volatile memory. See Section 6 for additional details. | in non-volatile memory. See Section 6 for additional | |||
details. | ||||
secret_key: | secret_key: | |||
A secret key that is not known by the attacker. The secret | A secret key that is not known by the attacker. The secret | |||
key MUST be initialized to a pseudo-random number (see | key MUST be initialized to a pseudo-random number (see | |||
[RFC4086] for randomness requirements for security) at | [RFC4086] for randomness requirements for security) at | |||
operating system installation time or when the IPv6 protocol | operating system installation time or when the IPv6 | |||
stack is initialized for the first time. An implementation | protocol stack is initialized for the first time. An | |||
MAY provide the means for the the system administrator to | implementation MAY provide the means for the the system | |||
change or display the secret key. | administrator to change or display the secret key. | |||
2. The Interface Identifier is finally obtained by taking as many | 2. The Interface Identifier is finally obtained by taking as many | |||
bits from the RID value (computed in the previous step) as | bits from the RID value (computed in the previous step) as | |||
necessary, starting from the least significant bit. | necessary, starting from the least significant bit. | |||
We note that [RFC4291] requires that, the Interface IDs of all | We note that [RFC4291] requires that, the Interface IDs of | |||
unicast addresses (except those that start with the binary | all unicast addresses (except those that start with the | |||
value 000) be 64-bit long. However, the method discussed in | binary value 000) be 64-bit long. However, the method | |||
this document could be employed for generating Interface IDs | discussed in this document could be employed for generating | |||
of any arbitrary length, albeit at the expense of reduced | Interface IDs of any arbitrary length, albeit at the | |||
entropy (when employing Interface IDs smaller than 64 bits). | expense of reduced entropy (when employing Interface IDs | |||
smaller than 64 bits). | ||||
The resulting Interface Identifier SHOULD be compared against the | The resulting Interface Identifier SHOULD be compared against the | |||
Subnet-Router Anycast [RFC4291] and the Reserved Subnet Anycast | Subnet-Router Anycast [RFC4291] and the Reserved Subnet Anycast | |||
Addresses [RFC2526], and against those Interface Identifiers | Addresses [RFC2526], and against those Interface Identifiers | |||
already employed in an address of the same network interface and | already employed in an address of the same network interface and | |||
the same network prefix. In the event that an unacceptable | the same network prefix. In the event that an unacceptable | |||
identifier has been generated, this situation SHOULD be handled | identifier has been generated, this situation SHOULD be handled | |||
in the same way as the case of duplicate addresses (see | in the same way as the case of duplicate addresses (see | |||
Section 6). | Section 6). | |||
This document does not require the use of any specific PRF for the | This document does not require the use of any specific PRF for the | |||
function F() above, since the choice of such PRF is usually a trade- | function F() above, since the choice of such PRF is usually a trade- | |||
off between a number of properties (processing requirements, ease of | off between a number of properties (processing requirements, ease of | |||
implementation, possible intellectual property rights, etc.), and | implementation, possible intellectual property rights, etc.), and | |||
since the best possible choice for F() might be different for | since the best possible choice for F() might be different for | |||
different types of devices (e.g. embedded systems vs. regular | different types of devices (e.g. embedded systems vs. regular | |||
servers) and might possibly change over time. | servers) and might possibly change over time. For informative | |||
purposes, we note that MD5 [RFC1321] and SHA-1 [FIPS-SHS] are two | ||||
possible options for F(). | ||||
Note that the result of F() in the algorithm above is no more secure | Note that the result of F() in the algorithm above is no more secure | |||
than the secret key. If an attacker is aware of the PRF that is | than the secret key. If an attacker is aware of the PRF that is | |||
being used by the victim (which we should expect), and the attacker | being used by the victim (which we should expect), and the attacker | |||
can obtain enough material (i.e. addresses configured by the victim), | can obtain enough material (i.e. addresses configured by the victim), | |||
the attacker may simply search the entire secret-key space to find | the attacker may simply search the entire secret-key space to find | |||
matches. To protect against this, the secret key should be of a | matches. To protect against this, the secret key should be of a | |||
reasonable length. Key lengths of at least 128 bits should be | reasonable length. Key lengths of at least 128 bits should be | |||
adequate. The secret key is initialized at system installation time | adequate. The secret key is initialized at system installation time | |||
to a pseudo-random number, thus allowing this mechanism to be | to a pseudo-random number, thus allowing this mechanism to be enabled | |||
enabled/used automatically, without user intervention. | /used automatically, without user intervention. | |||
Including the SLAAC prefix in the PRF computation causes the | Including the SLAAC prefix in the PRF computation causes the | |||
Interface Identifier to vary across each prefix (link-local, global, | Interface Identifier to vary across each prefix (link-local, global, | |||
etc.) employed by the node and, as consequently, also across | etc.) employed by the node and, as consequently, also across | |||
networks. This mitigates the correlation of activities of multi- | networks. This mitigates the correlation of activities of multi- | |||
homed nodes (since each of the corresponding addresses will employ a | homed nodes (since each of the corresponding addresses will employ a | |||
different Interface ID), host-tracking (since the network prefix will | different Interface ID), host-tracking (since the network prefix will | |||
change as the node moves from one network to another), and any other | change as the node moves from one network to another), and any other | |||
attacks that benefit from predictable Interface Identifiers (such as | attacks that benefit from predictable Interface Identifiers (such as | |||
IPv6 address scanning attacks). | IPv6 address scanning attacks). | |||
skipping to change at page 13, line 40 | skipping to change at page 10, line 46 | |||
used by the victim node for a remote network (see Section 9 for | used by the victim node for a remote network (see Section 9 for | |||
further details). | further details). | |||
The DAD_Counter parameter provides the means to intentionally cause | The DAD_Counter parameter provides the means to intentionally cause | |||
this algorithm to produce a different IPv6 addresses (all other | this algorithm to produce a different IPv6 addresses (all other | |||
parameters being the same). This could be necessary to resolve | parameters being the same). This could be necessary to resolve | |||
Duplicate Address Detection (DAD) conflicts, as discussed in detail | Duplicate Address Detection (DAD) conflicts, as discussed in detail | |||
in Section 6. | in Section 6. | |||
Finally, we note that all of the bits in the resulting Interface IDs | Finally, we note that all of the bits in the resulting Interface IDs | |||
are treated as "opaque" bits. For example, the universal/local bit | are treated as "opaque" bits [I-D.ietf-6man-ug]. For example, the | |||
of Modified EUI-64 format identifiers is treated as any other bit of | universal/local bit of Modified EUI-64 format identifiers is treated | |||
such identifier. In theory, this might result in Duplicate Address | as any other bit of such identifier. In theory, this might result in | |||
Detection (DAD) failures that would otherwise not be encountered. | Duplicate Address Detection (DAD) failures that would otherwise not | |||
However, this is not deemed as a real issue, because of the following | be encountered. However, this is not deemed as a real issue, because | |||
considerations: | of the following considerations: | |||
o The interface IDs of all addresses (except those of addresses that | o The interface IDs of all addresses (except those of addresses that | |||
that start with the binary value 000) are 64-bit long. Since the | that start with the binary value 000) are 64-bit long. Since the | |||
method specified in this document results in random Interface IDs, | method specified in this document results in random Interface IDs, | |||
the probability of DAD failures is very small. | the probability of DAD failures is very small. | |||
o Real world data indicates that MAC address reuse is far more | o Real world data indicates that MAC address reuse is far more | |||
common than assumed [HDMoore]. This means that even IPv6 | common than assumed [HDMoore]. This means that even IPv6 | |||
addresses that employ (allegedly) unique identifiers (such as IEEE | addresses that employ (allegedly) unique identifiers (such as IEEE | |||
LAN MAC addresses) might result in DAD failures, and hence | LAN MAC addresses) might result in DAD failures, and hence | |||
skipping to change at page 18, line 9 | skipping to change at page 12, line 38 | |||
8. IANA Considerations | 8. IANA Considerations | |||
There are no IANA registries within this document. The RFC-Editor | There are no IANA registries within this document. The RFC-Editor | |||
can remove this section before publication of this document as an | can remove this section before publication of this document as an | |||
RFC. | RFC. | |||
9. Security Considerations | 9. Security Considerations | |||
This document specifies an algorithm for generating Interface | This document specifies an algorithm for generating Interface | |||
Identifiers to be used with IPv6 Stateless Address Autoconfiguration | Identifiers to be used with IPv6 Stateless Address Autoconfiguration | |||
(SLAAC), as an alternative to e.g. Interface Identifiers that embed | (SLAAC), as an alternative to e.g. Interface Identifiers that embed | |||
hardware addresses (such as those specified in [RFC2464], [RFC2467], | hardware addresses (such as those specified in [RFC2464], [RFC2467], | |||
and [RFC2470]). When compared to such identifiers, the identifiers | and [RFC2470]). When compared to such identifiers, the identifiers | |||
specified in this document have a number of advantages: | specified in this document have a number of advantages: | |||
o They prevent trivial host-tracking, since when a host moves from | o They prevent trivial host-tracking, since when a host moves from | |||
one network to another the network prefix used for | one network to another the network prefix used for | |||
autoconfiguration and/or the Network ID (e.g., IEEE 802.11 SSID) | autoconfiguration and/or the Network ID (e.g., IEEE 802.11 SSID) | |||
will typically change, and hence the resulting Interface | will typically change, and hence the resulting Interface | |||
Identifier will also change (see | Identifier will also change (see | |||
[I-D.cooper-6man-ipv6-address-generation-privacy]). | [I-D.ietf-6man-ipv6-address-generation-privacy]). | |||
o They mitigate address-scanning techniques which leverage | o They mitigate address-scanning techniques which leverage | |||
predictable Interface Identifiers (e.g., known Organizationally | predictable Interface Identifiers (e.g., known Organizationally | |||
Unique Identifiers) [I-D.ietf-opsec-ipv6-host-scanning]. | Unique Identifiers) [I-D.ietf-opsec-ipv6-host-scanning]. | |||
o They may result in IPv6 addresses that are independent of the | o They may result in IPv6 addresses that are independent of the | |||
underlying hardware (i.e. the resulting IPv6 addresses do not | underlying hardware (i.e. the resulting IPv6 addresses do not | |||
change if a network interface card is replaced) if an appropriate | change if a network interface card is replaced) if an appropriate | |||
source for Net_Iface (Section 5) is employed. | source for Net_Iface (Section 5) is employed. | |||
skipping to change at page 19, line 41 | skipping to change at page 14, line 25 | |||
Interface Identifiers such as those specified in [RFC2464], but is | Interface Identifiers such as those specified in [RFC2464], but is | |||
not meant as an alternative to temporary Interface Identifiers (such | not meant as an alternative to temporary Interface Identifiers (such | |||
as those specified in [RFC4941]). Clearly, temporary addresses may | as those specified in [RFC4941]). Clearly, temporary addresses may | |||
help to mitigate the correlation of activities of a node within the | help to mitigate the correlation of activities of a node within the | |||
same network, and may also reduce the attack exposure window (since | same network, and may also reduce the attack exposure window (since | |||
temporary addresses are short-lived when compared to the addresses | temporary addresses are short-lived when compared to the addresses | |||
generated with the method specified in this document). We note that | generated with the method specified in this document). We note that | |||
implementation of this algorithm would still benefit those hosts | implementation of this algorithm would still benefit those hosts | |||
employing "temporary addresses", since it would mitigate host- | employing "temporary addresses", since it would mitigate host- | |||
tracking vectors still present when such addresses are used (see | tracking vectors still present when such addresses are used (see | |||
[I-D.cooper-6man-ipv6-address-generation-privacy]), and would also | [I-D.ietf-6man-ipv6-address-generation-privacy]), and would also | |||
mitigate address-scanning techniques that leverage patterns in IPv6 | mitigate address-scanning techniques that leverage patterns in IPv6 | |||
addresses that embed IEEE LAN MAC addresses. Finally, we note that | addresses that embed IEEE LAN MAC addresses. Finally, we note that | |||
the method described in this document addresses some of the privacy | the method described in this document addresses some of the privacy | |||
concerns arising from the use of IPv6 addresses that embed IEEE LAN | concerns arising from the use of IPv6 addresses that embed IEEE LAN | |||
MAC addresses, without the use of temporary addresses, thus possibly | MAC addresses, without the use of temporary addresses, thus possibly | |||
offering an interesting trade-off for those scenarios in which the | offering an interesting trade-off for those scenarios in which the | |||
use of temporary addresses is not feasible. | use of temporary addresses is not feasible. | |||
10. Acknowledgements | 10. Acknowledgements | |||
skipping to change at page 21, line 32 | skipping to change at page 15, line 35 | |||
[RFC3971] Arkko, J., Kempf, J., Zill, B., and P. Nikander, "SEcure | [RFC3971] Arkko, J., Kempf, J., Zill, B., and P. Nikander, "SEcure | |||
Neighbor Discovery (SEND)", RFC 3971, March 2005. | Neighbor Discovery (SEND)", RFC 3971, March 2005. | |||
[RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)", | [RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)", | |||
RFC 3972, March 2005. | RFC 3972, March 2005. | |||
[RFC4086] Eastlake, D., Schiller, J., and S. Crocker, "Randomness | [RFC4086] Eastlake, D., Schiller, J., and S. Crocker, "Randomness | |||
Requirements for Security", BCP 106, RFC 4086, June 2005. | Requirements for Security", BCP 106, RFC 4086, June 2005. | |||
[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally | [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally | |||
Unique IDentifier (UUID) URN Namespace", RFC 4122, | Unique IDentifier (UUID) URN Namespace", RFC 4122, July | |||
July 2005. | 2005. | |||
[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing | [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing | |||
Architecture", RFC 4291, February 2006. | Architecture", RFC 4291, February 2006. | |||
[RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, | [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, | |||
"Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, | "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, | |||
September 2007. | September 2007. | |||
[RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless | [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless | |||
Address Autoconfiguration", RFC 4862, September 2007. | Address Autoconfiguration", RFC 4862, September 2007. | |||
[RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy | [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy | |||
Extensions for Stateless Address Autoconfiguration in | Extensions for Stateless Address Autoconfiguration in | |||
IPv6", RFC 4941, September 2007. | IPv6", RFC 4941, September 2007. | |||
[I-D.ietf-6man-ug] | ||||
Carpenter, B. and S. Jiang, "Significance of IPv6 | ||||
Interface Identifiers", draft-ietf-6man-ug-05 (work in | ||||
progress), November 2013. | ||||
11.2. Informative References | 11.2. Informative References | |||
[RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, | ||||
April 1992. | ||||
[RFC1948] Bellovin, S., "Defending Against Sequence Number Attacks", | [RFC1948] Bellovin, S., "Defending Against Sequence Number Attacks", | |||
RFC 1948, May 1996. | RFC 1948, May 1996. | |||
[RFC2464] Crawford, M., "Transmission of IPv6 Packets over Ethernet | [RFC2464] Crawford, M., "Transmission of IPv6 Packets over Ethernet | |||
Networks", RFC 2464, December 1998. | Networks", RFC 2464, December 1998. | |||
[RFC2467] Crawford, M., "Transmission of IPv6 Packets over FDDI | [RFC2467] Crawford, M., "Transmission of IPv6 Packets over FDDI | |||
Networks", RFC 2467, December 1998. | Networks", RFC 2467, December 1998. | |||
[RFC2470] Crawford, M., Narten, T., and S. Thomas, "Transmission of | [RFC2470] Crawford, M., Narten, T., and S. Thomas, "Transmission of | |||
IPv6 Packets over Token Ring Networks", RFC 2470, | IPv6 Packets over Token Ring Networks", RFC 2470, December | |||
December 1998. | 1998. | |||
[RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W. | [RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W. | |||
Stevens, "Basic Socket Interface Extensions for IPv6", | Stevens, "Basic Socket Interface Extensions for IPv6", RFC | |||
RFC 3493, February 2003. | 3493, February 2003. | |||
[RFC3542] Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei, | [RFC3542] Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei, | |||
"Advanced Sockets Application Program Interface (API) for | "Advanced Sockets Application Program Interface (API) for | |||
IPv6", RFC 3542, May 2003. | IPv6", RFC 3542, May 2003. | |||
[RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. | [RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. | |||
Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, | Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, | |||
February 2011. | February 2011. | |||
[I-D.ietf-opsec-ipv6-host-scanning] | [I-D.ietf-opsec-ipv6-host-scanning] | |||
Gont, F. and T. Chown, "Network Reconnaissance in IPv6 | Gont, F. and T. Chown, "Network Reconnaissance in IPv6 | |||
Networks", draft-ietf-opsec-ipv6-host-scanning-02 (work in | Networks", draft-ietf-opsec-ipv6-host-scanning-02 (work in | |||
progress), July 2013. | progress), July 2013. | |||
[I-D.ietf-v6ops-ra-guard-implementation] | [I-D.ietf-v6ops-ra-guard-implementation] | |||
Gont, F., "Implementation Advice for IPv6 Router | Gont, F., "Implementation Advice for IPv6 Router | |||
Advertisement Guard (RA-Guard)", | Advertisement Guard (RA-Guard)", draft-ietf-v6ops-ra- | |||
draft-ietf-v6ops-ra-guard-implementation-07 (work in | guard-implementation-07 (work in progress), November 2012. | |||
progress), November 2012. | ||||
[I-D.cooper-6man-ipv6-address-generation-privacy] | [I-D.ietf-6man-ipv6-address-generation-privacy] | |||
Cooper, A., Gont, F., and D. Thaler, "Privacy | Cooper, A., Gont, F., and D. Thaler, "Privacy | |||
Considerations for IPv6 Address Generation Mechanisms", | Considerations for IPv6 Address Generation Mechanisms", | |||
draft-cooper-6man-ipv6-address-generation-privacy-00 (work | draft-ietf-6man-ipv6-address-generation-privacy-00 (work | |||
in progress), July 2013. | in progress), October 2013. | |||
[HDMoore] HD Moore, "The Wild West", Louisville, Kentucky, U.S.A. | [HDMoore] HD Moore, , "The Wild West", Louisville, Kentucky, U.S.A, | |||
September 25-29, 2012, | September 2012, <https://speakerdeck.com/hdm/derbycon-2012 | |||
<https://speakerdeck.com/hdm/derbycon-2012-the-wild-west>. | -the-wild-west>. | |||
[Gont-DEEPSEC2011] | [Gont-DEEPSEC2011] | |||
Gont, "Results of a Security Assessment of the Internet | Gont, , "Results of a Security Assessment of the Internet | |||
Protocol version 6 (IPv6)", DEEPSEC 2011 Conference, | Protocol version 6 (IPv6)", DEEPSEC 2011 Conference, | |||
Vienna, Austria, November 2011, <http:// | Vienna, Austria, November 2011, <http:// | |||
www.si6networks.com/presentations/deepsec2011/ | www.si6networks.com/presentations/deepsec2011/fgont- | |||
fgont-deepsec2011-ipv6-security.pdf>. | deepsec2011-ipv6-security.pdf>. | |||
[Broersma] | [Broersma] | |||
Broersma, R., "IPv6 Everywhere: Living with a Fully IPv6- | Broersma, R., "IPv6 Everywhere: Living with a Fully | |||
enabled environment", Australian IPv6 Summit 2010, | IPv6-enabled environment", Australian IPv6 Summit 2010, | |||
Melbourne, VIC Australia, October 2010, <http:// | Melbourne, VIC Australia, October 2010, <http:// | |||
www.ipv6.org.au/10ipv6summit/talks/Ron_Broersma.pdf>. | www.ipv6.org.au/10ipv6summit/talks/Ron_Broersma.pdf>. | |||
[IAB-PRIVACY] | [IAB-PRIVACY] | |||
IAB, "Privacy and IPv6 Addresses", July 2011, <http:// | IAB, , "Privacy and IPv6 Addresses", July 2011, <http:// | |||
www.iab.org/wp-content/IAB-uploads/2011/07/ | www.iab.org/wp-content/IAB-uploads/2011/07/IPv6-addresses- | |||
IPv6-addresses-privacy-review.txt>. | privacy-review.txt>. | |||
[CPNI-IPv6] | [CPNI-IPv6] | |||
Gont, F., "Security Assessment of the Internet Protocol | Gont, F., "Security Assessment of the Internet Protocol | |||
version 6 (IPv6)", UK Centre for the Protection of | version 6 (IPv6)", UK Centre for the Protection of | |||
National Infrastructure, (available on request). | National Infrastructure, (available on request). | |||
[FIPS-SHS] | ||||
FIPS, , "Secure Hash Standard (SHS)", Federal Information | ||||
Processing Standards Publication 180-4, March 2012, <http: | ||||
//csrc.nist.gov/publications/fips/fips180-4/ | ||||
fips-180-4.pdf>. | ||||
Appendix A. Possible sources for the Net_Iface parameter | Appendix A. Possible sources for the Net_Iface parameter | |||
The following subsections describe a number of possible sources for | The following subsections describe a number of possible sources for | |||
the Net_Iface parameter employed by the F() function in Section 5. | the Net_Iface parameter employed by the F() function in Section 5. | |||
The choice of a specific source for this value represents a number of | The choice of a specific source for this value represents a number of | |||
trade-offs, which may vary from one implementation to another. | trade-offs, which may vary from one implementation to another. | |||
A.1. Interface Index | A.1. Interface Index | |||
The Interface Index [RFC3493] [RFC3542] of an interface uniquely | The Interface Index [RFC3493] [RFC3542] of an interface uniquely | |||
identifies an interface within a node. However, these identifiers | identifies an interface within a node. However, these identifiers | |||
might or might not have the stability properties required for the | might or might not have the stability properties required for the | |||
Net_Iface value employed by this method. For example, the Interface | Net_Iface value employed by this method. For example, the Interface | |||
Index might change upon removal or installation of a network | Index might change upon removal or installation of a network | |||
interface (typically one with a smaller value for the Interface | interface (typically one with a smaller value for the Interface | |||
Index, when such a naming scheme is used), or when network interfaces | Index, when such a naming scheme is used), or when network interfaces | |||
happen to be initialized in a different order. We note that some | happen to be initialized in a different order. We note that some | |||
implementations are known to provide configuration knobs to set the | implementations are known to provide configuration knobs to set the | |||
Interface Index for a given interface. Such configuration knobs | Interface Index for a given interface. Such configuration knobs | |||
skipping to change at page 24, line 30 | skipping to change at page 18, line 20 | |||
Index, when such a naming scheme is used), or when network interfaces | Index, when such a naming scheme is used), or when network interfaces | |||
happen to be initialized in a different order. We note that some | happen to be initialized in a different order. We note that some | |||
implementations are known to provide configuration knobs to set the | implementations are known to provide configuration knobs to set the | |||
Interface Index for a given interface. Such configuration knobs | Interface Index for a given interface. Such configuration knobs | |||
could be employed to prevent the Interface Index from changing (e.g. | could be employed to prevent the Interface Index from changing (e.g. | |||
as a result of the removal of a network interface). | as a result of the removal of a network interface). | |||
A.2. Interface Name | A.2. Interface Name | |||
The Interface Name (e.g., "eth0", "em0", etc) tends to be more stable | The Interface Name (e.g., "eth0", "em0", etc) tends to be more stable | |||
than the underlying Interface Index, since such stability is | than the underlying Interface Index, since such stability is required | |||
required/desired when interface names are employed in network | /desired when interface names are employed in network configuration | |||
configuration (firewall rules, etc.). The stability properties of | (firewall rules, etc.). The stability properties of Interface Names | |||
Interface Names depend on implementation details, such as what is the | depend on implementation details, such as what is the namespace used | |||
namespace used for Interface Names. For example, "generic" interface | for Interface Names. For example, "generic" interface names such as | |||
names such as "eth0" or "wlan0" will generally be invariant with | "eth0" or "wlan0" will generally be invariant with respect to network | |||
respect to network interface card replacements. On the other hand, | interface card replacements. On the other hand, vendor-dependent | |||
vendor-dependent interface names such as "rtk0" or the like will | interface names such as "rtk0" or the like will generally change when | |||
generally change when a network interface card is replaced with one | a network interface card is replaced with one from a different | |||
from a different vendor. | vendor. | |||
We note that Interface Names might still change when network | We note that Interface Names might still change when network | |||
interfaces are added or removed once the system has been bootstrapped | interfaces are added or removed once the system has been bootstrapped | |||
(for example, consider Universal Serial Bus-based network interface | (for example, consider Universal Serial Bus-based network interface | |||
cards which might be added or removed once the system has been | cards which might be added or removed once the system has been | |||
bootstrapped). | bootstrapped). | |||
A.3. Link-layer Addresses | A.3. Link-layer Addresses | |||
Link-layer addresses typically provide for unique identifiers for | Link-layer addresses typically provide for unique identifiers for | |||
End of changes. 41 change blocks. | ||||
122 lines changed or deleted | 141 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |