draft-ietf-ipv6-privacy-addrs-v2-05.txt | rfc4941.txt | |||
---|---|---|---|---|
IPv6 Working Group T. Narten | Network Working Group T. Narten | |||
Internet-Draft IBM Corporation | Request for Comments: 4941 IBM Corporation | |||
Obsoletes: 3041 (if approved) R. Draves | Obsoletes: 3041 R. Draves | |||
Expires: February 2, 2007 Microsoft Research | Category: Standards Track Microsoft Research | |||
S. Krishnan | S. Krishnan | |||
Ericsson Research | Ericsson Research | |||
August 2006 | September 2007 | |||
Privacy Extensions for Stateless Address Autoconfiguration in IPv6 | Privacy Extensions for Stateless Address Autoconfiguration in IPv6 | |||
draft-ietf-ipv6-privacy-addrs-v2-05 | ||||
Status of this Memo | ||||
By submitting this Internet-Draft, each author represents that any | Status of This Memo | |||
applicable patent or other IPR claims of which he or she is aware | ||||
have been or will be disclosed, and any of which he or she becomes | ||||
aware will be disclosed, in accordance with Section 6 of BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF), its areas, and its working groups. Note that | ||||
other groups may also distribute working documents as Internet- | ||||
Drafts. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | ||||
and may be updated, replaced, or obsoleted by other documents at any | ||||
time. It is inappropriate to use Internet-Drafts as reference | ||||
material or to cite them other than as "work in progress." | ||||
The list of current Internet-Drafts can be accessed at | ||||
http://www.ietf.org/ietf/1id-abstracts.txt. | ||||
The list of Internet-Draft Shadow Directories can be accessed at | ||||
http://www.ietf.org/shadow.html. | ||||
This Internet-Draft will expire on February 2, 2007. | ||||
Copyright Notice | ||||
Copyright (C) The Internet Society (2006). | This document specifies an Internet standards track protocol for the | |||
Internet community, and requests discussion and suggestions for | ||||
improvements. Please refer to the current edition of the "Internet | ||||
Official Protocol Standards" (STD 1) for the standardization state | ||||
and status of this protocol. Distribution of this memo is unlimited. | ||||
Abstract | Abstract | |||
Nodes use IPv6 stateless address autoconfiguration to generate | Nodes use IPv6 stateless address autoconfiguration to generate | |||
addresses using a combination of locally available information and | addresses using a combination of locally available information and | |||
information advertised by routers. Addresses are formed by combining | information advertised by routers. Addresses are formed by combining | |||
network prefixes with an interface identifier. On interfaces that | network prefixes with an interface identifier. On an interface that | |||
contain embedded IEEE Identifiers, the interface identifier is | contains an embedded IEEE Identifier, the interface identifier is | |||
typically derived from it. On other interface types, the interface | typically derived from it. On other interface types, the interface | |||
identifier is generated through other means, for example, via random | identifier is generated through other means, for example, via random | |||
number generation. This document describes an extension to IPv6 | number generation. This document describes an extension to IPv6 | |||
stateless address autoconfiguration for interfaces whose interface | stateless address autoconfiguration for interfaces whose interface | |||
identifier is derived from an IEEE identifier. Use of the extension | identifier is derived from an IEEE identifier. Use of the extension | |||
causes nodes to generate global scope addresses from interface | causes nodes to generate global scope addresses from interface | |||
identifiers that change over time, even in cases where the interface | identifiers that change over time, even in cases where the interface | |||
contains an embedded IEEE identifier. Changing the interface | contains an embedded IEEE identifier. Changing the interface | |||
identifier (and the global scope addresses generated from it) over | identifier (and the global scope addresses generated from it) over | |||
time makes it more difficult for eavesdroppers and other information | time makes it more difficult for eavesdroppers and other information | |||
collectors to identify when different addresses used in different | collectors to identify when different addresses used in different | |||
transactions actually correspond to the same node. | transactions actually correspond to the same node. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Conventions used in this document . . . . . . . . . . . . 4 | 1.1. Conventions Used in This Document . . . . . . . . . . . . 4 | |||
1.2. Problem Statement . . . . . . . . . . . . . . . . . . . . 4 | 1.2. Problem Statement . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Background . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
2.1. Extended Use of the Same Identifier . . . . . . . . . . . 5 | 2.1. Extended Use of the Same Identifier . . . . . . . . . . . 5 | |||
2.2. Address Usage in IPv4 Today . . . . . . . . . . . . . . . 6 | 2.2. Address Usage in IPv4 Today . . . . . . . . . . . . . . . 6 | |||
2.3. The Concern With IPv6 Addresses . . . . . . . . . . . . . 7 | 2.3. The Concern with IPv6 Addresses . . . . . . . . . . . . . 7 | |||
2.4. Possible Approaches . . . . . . . . . . . . . . . . . . . 8 | 2.4. Possible Approaches . . . . . . . . . . . . . . . . . . . 8 | |||
3. Protocol Description . . . . . . . . . . . . . . . . . . . . . 10 | 3. Protocol Description . . . . . . . . . . . . . . . . . . . . . 9 | |||
3.1. Assumptions . . . . . . . . . . . . . . . . . . . . . . . 10 | 3.1. Assumptions . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
3.2. Generation Of Randomized Interface Identifiers . . . . . . 12 | 3.2. Generation of Randomized Interface Identifiers . . . . . . 10 | |||
3.2.1. When Stable Storage Is Present . . . . . . . . . . . . 12 | 3.2.1. When Stable Storage Is Present . . . . . . . . . . . . 11 | |||
3.2.2. In The Absence of Stable Storage . . . . . . . . . . . 13 | 3.2.2. In The Absence of Stable Storage . . . . . . . . . . . 12 | |||
3.2.3. Alternate approaches . . . . . . . . . . . . . . . . . 14 | 3.2.3. Alternate Approaches . . . . . . . . . . . . . . . . . 12 | |||
3.3. Generating Temporary Addresses . . . . . . . . . . . . . . 14 | 3.3. Generating Temporary Addresses . . . . . . . . . . . . . . 13 | |||
3.4. Expiration of Temporary Addresses . . . . . . . . . . . . 15 | 3.4. Expiration of Temporary Addresses . . . . . . . . . . . . 14 | |||
3.5. Regeneration of Randomized Interface Identifiers . . . . . 16 | 3.5. Regeneration of Randomized Interface Identifiers . . . . . 15 | |||
3.6. Deployment Considerations . . . . . . . . . . . . . . . . 17 | 3.6. Deployment Considerations . . . . . . . . . . . . . . . . 16 | |||
4. Implications of Changing Interface Identifiers . . . . . . . . 19 | 4. Implications of Changing Interface Identifiers . . . . . . . . 17 | |||
5. Defined Constants . . . . . . . . . . . . . . . . . . . . . . 20 | 5. Defined Constants . . . . . . . . . . . . . . . . . . . . . . 18 | |||
6. Future Work . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 6. Future Work . . . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 22 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | |||
8. Significant Changes from RFC 3041 . . . . . . . . . . . . . . 23 | 8. Significant Changes from RFC 3041 . . . . . . . . . . . . . . 19 | |||
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 24 | 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 25 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . . 25 | 10.1. Normative References . . . . . . . . . . . . . . . . . . . 20 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . . 25 | 10.2. Informative References . . . . . . . . . . . . . . . . . . 20 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 27 | ||||
Intellectual Property and Copyright Statements . . . . . . . . . . 28 | ||||
1. Introduction | 1. Introduction | |||
Stateless address autoconfiguration [ADDRCONF] defines how an IPv6 | Stateless address autoconfiguration [ADDRCONF] defines how an IPv6 | |||
node generates addresses without the need for a DHCPv6 server. Some | node generates addresses without the need for a Dynamic Host | |||
types of network interfaces come with an embedded IEEE Identifier | Configuration Protocol for IPv6 (DHCPv6) server. Some types of | |||
(i.e., a link-layer MAC address), and in those cases stateless | network interfaces come with an embedded IEEE Identifier (i.e., a | |||
address autoconfiguration uses the IEEE identifier to generate a 64- | link-layer MAC address), and in those cases, stateless address | |||
bit interface identifier [ADDRARCH]. By design, the interface | autoconfiguration uses the IEEE identifier to generate a 64-bit | |||
identifier is likely to be globally unique when generated in this | interface identifier [ADDRARCH]. By design, the interface identifier | |||
fashion. The interface identifier is in turn appended to a prefix to | is likely to be globally unique when generated in this fashion. The | |||
form a 128-bit IPv6 address. Note that an IPv6 identifier does not | interface identifier is in turn appended to a prefix to form a | |||
128-bit IPv6 address. Note that an IPv6 identifier does not | ||||
necessarily have to be 64 bits in length, but the algorithm specified | necessarily have to be 64 bits in length, but the algorithm specified | |||
in this document is targeted towards 64-bit interface identifiers. | in this document is targeted towards 64-bit interface identifiers. | |||
All nodes combine interface identifiers (whether derived from an IEEE | All nodes combine interface identifiers (whether derived from an IEEE | |||
identifier or generated through some other technique) with the | identifier or generated through some other technique) with the | |||
reserved link-local prefix to generate link-local addresses for their | reserved link-local prefix to generate link-local addresses for their | |||
attached interfaces. Additional addresses can then be created by | attached interfaces. Additional addresses can then be created by | |||
combining prefixes advertised in Router Advertisements via Neighbor | combining prefixes advertised in Router Advertisements via Neighbor | |||
Discovery [DISCOVERY] with the interface identifier. | Discovery [DISCOVERY] with the interface identifier. | |||
Not all nodes and interfaces contain IEEE identifiers. In such | Not all nodes and interfaces contain IEEE identifiers. In such | |||
cases, an interface identifier is generated through some other means | cases, an interface identifier is generated through some other means | |||
(e.g., at random), and the resultant interface identifier may not be | (e.g., at random), and the resultant interface identifier may not be | |||
globally unique and may also change over time. The focus of this | globally unique and may also change over time. The focus of this | |||
document is on addresses derived from IEEE identifiers, because | document is on addresses derived from IEEE identifiers because | |||
tracking of individual devices, the concern being addressed here, is | tracking of individual devices, the concern being addressed here, is | |||
possible only in those cases where the interface identifier is | possible only in those cases where the interface identifier is | |||
globally unique and non-changing. The rest of this document assumes | globally unique and non-changing. The rest of this document assumes | |||
that IEEE identifiers are being used, but the techniques described | that IEEE identifiers are being used, but the techniques described | |||
may also apply to interfaces with other types of globally unique | may also apply to interfaces with other types of globally unique | |||
and/or persistent identifiers. | and/or persistent identifiers. | |||
This document discusses concerns associated with the embedding of | This document discusses concerns associated with the embedding of | |||
non-changing interface identifiers within IPv6 addresses and | non-changing interface identifiers within IPv6 addresses and | |||
describes extensions to stateless address autoconfiguration that can | describes extensions to stateless address autoconfiguration that can | |||
help mitigate those concerns for individual users and in environments | help mitigate those concerns for individual users and in environments | |||
where such concerns are significant. Section 2 provides background | where such concerns are significant. Section 2 provides background | |||
information on the issue. Section 3 describes a procedure for | information on the issue. Section 3 describes a procedure for | |||
generating alternate interface identifiers and global scope | generating alternate interface identifiers and global scope | |||
addresses. Section 4 discusses implications of changing interface | addresses. Section 4 discusses implications of changing interface | |||
identifiers. The term "global scope addresses" is used in this | identifiers. The term "global scope addresses" is used in this | |||
document to collectively refer to "Global unicast addresses" as | document to collectively refer to "Global unicast addresses" as | |||
defined in [ADDRARCH] and "Unique local addresses" as defined in | defined in [ADDRARCH] and "Unique local addresses" as defined in | |||
[ULA] | [ULA]. | |||
1.1. Conventions used in this document | 1.1. Conventions Used in This Document | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
1.2. Problem Statement | 1.2. Problem Statement | |||
Addresses generated using Stateless address autoconfiguration | Addresses generated using stateless address autoconfiguration | |||
[ADDRCONF]contain an embedded interface identifier, which remains | [ADDRCONF]contain an embedded interface identifier, which remains | |||
constant over time. Anytime a fixed identifier is used in multiple | constant over time. Anytime a fixed identifier is used in multiple | |||
contexts, it becomes possible to correlate seemingly unrelated | contexts, it becomes possible to correlate seemingly unrelated | |||
activity using this identifier. | activity using this identifier. | |||
The correlation can be performed by | The correlation can be performed by | |||
o An attacker who is in the path between the node in question and | o An attacker who is in the path between the node in question and | |||
the peer(s) it is communicating to, and can view the IPv6 | the peer(s) to which it is communicating, and who can view the | |||
addresses present in the datagrams. | IPv6 addresses present in the datagrams. | |||
o An attacker who can access the communication logs of the peers | o An attacker who can access the communication logs of the peers | |||
with which the node has communicated. | with which the node has communicated. | |||
Since the identifier is embedded within the IPv6 address, which is a | Since the identifier is embedded within the IPv6 address, which is a | |||
fundamental requirement of communication, it cannot be easily hidden. | fundamental requirement of communication, it cannot be easily hidden. | |||
This document proposes a solution to this issue by generating | This document proposes a solution to this issue by generating | |||
interface identifiers which vary over time. | interface identifiers that vary over time. | |||
Note that an attacker, who is on path, may be able to perform | Note that an attacker, who is on path, may be able to perform | |||
significant correlation based on | significant correlation based on | |||
o The payload contents of the packets on the wire | o The payload contents of the packets on the wire | |||
o The characteristics of the packets such as packet size and timing | o The characteristics of the packets such as packet size and timing | |||
Use of temporary addresses will not prevent such payload based | Use of temporary addresses will not prevent such payload-based | |||
correlation. | correlation. | |||
2. Background | 2. Background | |||
This section discusses the problem in more detail, provides context | This section discusses the problem in more detail, provides context | |||
for evaluating the significance of the concerns in specific | for evaluating the significance of the concerns in specific | |||
environments and makes comparisons with existing practices. | environments and makes comparisons with existing practices. | |||
2.1. Extended Use of the Same Identifier | 2.1. Extended Use of the Same Identifier | |||
skipping to change at page 5, line 27 | skipping to change at page 5, line 27 | |||
multiple contexts, it becomes possible for that identifier to be used | multiple contexts, it becomes possible for that identifier to be used | |||
to correlate seemingly unrelated activity. For example, a network | to correlate seemingly unrelated activity. For example, a network | |||
sniffer placed strategically on a link across which all traffic to/ | sniffer placed strategically on a link across which all traffic to/ | |||
from a particular host crosses could keep track of which destinations | from a particular host crosses could keep track of which destinations | |||
a node communicated with and at what times. Such information can in | a node communicated with and at what times. Such information can in | |||
some cases be used to infer things, such as what hours an employee | some cases be used to infer things, such as what hours an employee | |||
was active, when someone is at home, etc. Although it might appear | was active, when someone is at home, etc. Although it might appear | |||
that changing an address regularly in such environments would be | that changing an address regularly in such environments would be | |||
desirable to lessen privacy concerns, it should be noted that the | desirable to lessen privacy concerns, it should be noted that the | |||
network prefix portion of an address also serves as a constant | network prefix portion of an address also serves as a constant | |||
identifier. All nodes at (say) a home, would have the same network | identifier. All nodes at, say, a home, would have the same network | |||
prefix, which identifies the topological location of those nodes. | prefix, which identifies the topological location of those nodes. | |||
This has implications for privacy, though not at the same granularity | This has implications for privacy, though not at the same granularity | |||
as the concern that this document addresses. Specifically, all nodes | as the concern that this document addresses. Specifically, all nodes | |||
within a home could be grouped together for the purposes of | within a home could be grouped together for the purposes of | |||
collecting information. If the network contains a very small number | collecting information. If the network contains a very small number | |||
of nodes, say just one, changing just the interface identifier will | of nodes, say, just one, changing just the interface identifier will | |||
not enhance privacy at all, since the prefix serves as a constant | not enhance privacy at all, since the prefix serves as a constant | |||
identifier. | identifier. | |||
One of the requirements for correlating seemingly unrelated | One of the requirements for correlating seemingly unrelated | |||
activities is the use (and reuse) of an identifier that is | activities is the use (and reuse) of an identifier that is | |||
recognizable over time within different contexts. IP addresses | recognizable over time within different contexts. IP addresses | |||
provide one obvious example, but there are more. Many nodes also | provide one obvious example, but there are more. Many nodes also | |||
have DNS names associated with their addresses, in which case the DNS | have DNS names associated with their addresses, in which case the DNS | |||
name serves as a similar identifier. Although the DNS name | name serves as a similar identifier. Although the DNS name | |||
associated with an address is more work to obtain (it may require a | associated with an address is more work to obtain (it may require a | |||
DNS query) the information is often readily available. In such | DNS query), the information is often readily available. In such | |||
cases, changing the address on a machine over time would do little to | cases, changing the address on a machine over time would do little to | |||
address the concerns raised in this document, unless the DNS name is | address the concerns raised in this document, unless the DNS name is | |||
changed as well (see Section 4). | changed as well (see Section 4). | |||
Web browsers and servers typically exchange "cookies" with each other | Web browsers and servers typically exchange "cookies" with each other | |||
[COOKIES]. Cookies allow web servers to correlate a current activity | [COOKIES]. Cookies allow Web servers to correlate a current activity | |||
with a previous activity. One common usage is to send back targeted | with a previous activity. One common usage is to send back targeted | |||
advertising to a user by using the cookie supplied by the browser to | advertising to a user by using the cookie supplied by the browser to | |||
identify what earlier queries had been made (e.g., for what type of | identify what earlier queries had been made (e.g., for what type of | |||
information). Based on the earlier queries, advertisements can be | information). Based on the earlier queries, advertisements can be | |||
targeted to match the (assumed) interests of the end-user. | targeted to match the (assumed) interests of the end user. | |||
The use of a constant identifier within an address is of special | The use of a constant identifier within an address is of special | |||
concern because addresses are a fundamental requirement of | concern because addresses are a fundamental requirement of | |||
communication and cannot easily be hidden from eavesdroppers and | communication and cannot easily be hidden from eavesdroppers and | |||
other parties. Even when higher layers encrypt their payloads, | other parties. Even when higher layers encrypt their payloads, | |||
addresses in packet headers appear in the clear. Consequently, if a | addresses in packet headers appear in the clear. Consequently, if a | |||
mobile host (e.g., laptop) accessed the network from several | mobile host (e.g., laptop) accessed the network from several | |||
different locations, an eavesdropper might be able to track the | different locations, an eavesdropper might be able to track the | |||
movement of that mobile host from place to place, even if the upper | movement of that mobile host from place to place, even if the upper | |||
layer payloads were encrypted. | layer payloads were encrypted. | |||
skipping to change at page 6, line 32 | skipping to change at page 6, line 32 | |||
addresses are assigned statically and typically change infrequently. | addresses are assigned statically and typically change infrequently. | |||
Over the last few years, sites have begun moving away from static | Over the last few years, sites have begun moving away from static | |||
allocation to dynamic allocation via DHCP [DHCP]. In theory, the | allocation to dynamic allocation via DHCP [DHCP]. In theory, the | |||
address a client gets via DHCP can change over time, but in practice | address a client gets via DHCP can change over time, but in practice | |||
servers often return the same address to the same client (unless | servers often return the same address to the same client (unless | |||
addresses are in such short supply that they are reused immediately | addresses are in such short supply that they are reused immediately | |||
by a different node when they become free). Thus, even within sites | by a different node when they become free). Thus, even within sites | |||
using DHCP, clients frequently end up using the same address for | using DHCP, clients frequently end up using the same address for | |||
weeks to months at a time. | weeks to months at a time. | |||
For home users accessing the Internet over dialup lines, the | For home users accessing the Internet over dial-up lines, the | |||
situation is generally different. Such users do not have permanent | situation is generally different. Such users do not have permanent | |||
connections and are often assigned temporary addresses each time they | connections and are often assigned temporary addresses each time they | |||
connect to their ISP. Consequently, the addresses they use change | connect to their ISP. Consequently, the addresses they use change | |||
frequently over time and are shared among a number of different | frequently over time and are shared among a number of different | |||
users. Thus, an address does not reliably identify a particular | users. Thus, an address does not reliably identify a particular | |||
device over time spans of more than a few minutes. | device over time spans of more than a few minutes. | |||
A more interesting case concerns always-on connections (e.g., cable | A more interesting case concerns always-on connections (e.g., cable | |||
modems, ISDN, DSL, etc.) that result in a home site using the same | modems, ISDN, DSL, etc.) that result in a home site using the same | |||
address for extended periods of time. This is a scenario that is | address for extended periods of time. This is a scenario that is | |||
just starting to become common in IPv4 and promises to become more of | just starting to become common in IPv4 and promises to become more of | |||
a concern as always-on internet connectivity becomes widely | a concern as always-on Internet connectivity becomes widely | |||
available. | available. | |||
Finally, it should be noted that nodes that need a (non-changing) DNS | Finally, it should be noted that nodes that need a (non-changing) DNS | |||
name generally have static addresses assigned to them to simplify the | name generally have static addresses assigned to them to simplify the | |||
configuration of DNS servers. Although Dynamic DNS [DDNS] can be | configuration of DNS servers. Although Dynamic DNS [DDNS] can be | |||
used to update the DNS dynamically, it may not always be available | used to update the DNS dynamically, it may not always be available | |||
depending on the administrative policy. In addition, changing an | depending on the administrative policy. In addition, changing an | |||
address but keeping the same DNS name does not really address the | address but keeping the same DNS name does not really address the | |||
underlying concern, since the DNS name becomes a non-changing | underlying concern, since the DNS name becomes a non-changing | |||
identifier. Servers generally require a DNS name (so clients can | identifier. Servers generally require a DNS name (so clients can | |||
connect to them), and clients often do as well (e.g., some servers | connect to them), and clients often do as well (e.g., some servers | |||
refuse to speak to a client whose address cannot be mapped into a DNS | refuse to speak to a client whose address cannot be mapped into a DNS | |||
name that also maps back into the same address). Section 4 describes | name that also maps back into the same address). Section 4 describes | |||
one approach to this issue. | one approach to this issue. | |||
2.3. The Concern With IPv6 Addresses | 2.3. The Concern with IPv6 Addresses | |||
The division of IPv6 addresses into distinct topology and interface | The division of IPv6 addresses into distinct topology and interface | |||
identifier portions raises an issue new to IPv6 in that a fixed | identifier portions raises an issue new to IPv6 in that a fixed | |||
portion of an IPv6 address (i.e., the interface identifier) can | portion of an IPv6 address (i.e., the interface identifier) can | |||
contain an identifier that remains constant even when the topology | contain an identifier that remains constant even when the topology | |||
portion of an address changes (e.g., as the result of connecting to a | portion of an address changes (e.g., as the result of connecting to a | |||
different part of the Internet). In IPv4, when an address changes, | different part of the Internet). In IPv4, when an address changes, | |||
the entire address (including the local part of the address) usually | the entire address (including the local part of the address) usually | |||
changes. It is this new issue that this document addresses. | changes. It is this new issue that this document addresses. | |||
If addresses are generated from an interface identifier, a home | If addresses are generated from an interface identifier, a home | |||
user's address could contain an interface identifier that remains the | user's address could contain an interface identifier that remains the | |||
same from one dialup session to the next, even if the rest of the | same from one dial-up session to the next, even if the rest of the | |||
address changes. The way PPP is used today, however, PPP servers | address changes. The way PPP is used today, however, PPP servers | |||
typically unilaterally inform the client what address they are to use | typically unilaterally inform the client what address they are to use | |||
(i.e., the client doesn't generate one on its own). This practice, | (i.e., the client doesn't generate one on its own). This practice, | |||
if continued in IPv6, would avoid the concerns that are the focus of | if continued in IPv6, would avoid the concerns that are the focus of | |||
this document. | this document. | |||
A more troubling case concerns mobile devices (e.g., laptops, PDAs, | A more troubling case concerns mobile devices (e.g., laptops, PDAs, | |||
etc.) that move topologically within the Internet. Whenever they | etc.) that move topologically within the Internet. Whenever they | |||
move they form new addresses for their current topological point of | move, they form new addresses for their current topological point of | |||
attachment. This is typified today by the "road warrior" who has | attachment. This is typified today by the "road warrior" who has | |||
Internet connectivity both at home and at the office. While the | Internet connectivity both at home and at the office. While the | |||
node's address changes as it moves, however, the interface identifier | node's address changes as it moves, the interface identifier | |||
contained within the address remains the same (when derived from an | contained within the address remains the same (when derived from an | |||
IEEE Identifier). In such cases, the interface identifier can be | IEEE Identifier). In such cases, the interface identifier can be | |||
used to track the movement and usage of a particular machine. For | used to track the movement and usage of a particular machine. For | |||
example, a server that logs usage information together with a source | example, a server that logs usage information together with source | |||
addresses, is also recording the interface identifier since it is | addresses, is also recording the interface identifier since it is | |||
embedded within an address. Consequently, any data-mining technique | embedded within an address. Consequently, any data-mining technique | |||
that correlates activity based on addresses could easily be extended | that correlates activity based on addresses could easily be extended | |||
to do the same using the interface identifier. This is of particular | to do the same using the interface identifier. This is of particular | |||
concern with the expected proliferation of next-generation network- | concern with the expected proliferation of next-generation network- | |||
connected devices (e.g., PDAs, cell phones, etc.) in which large | connected devices (e.g., PDAs, cell phones, etc.) in which large | |||
numbers of devices are in practice associated with individual users | numbers of devices are, in practice, associated with individual users | |||
(i.e., not shared). Thus, the interface identifier embedded within | (i.e., not shared). Thus, the interface identifier embedded within | |||
an address could be used to track activities of an individual, even | an address could be used to track activities of an individual, even | |||
as they move topologically within the internet. | as they move topologically within the Internet. | |||
In summary, IPv6 addresses on a given interface generated via | In summary, IPv6 addresses on a given interface generated via | |||
Stateless Autoconfiguration contain the same interface identifier, | Stateless Autoconfiguration contain the same interface identifier, | |||
regardless of where within the Internet the device connects. This | regardless of where within the Internet the device connects. This | |||
facilitates the tracking of individual devices (and thus potentially | facilitates the tracking of individual devices (and thus, | |||
users). The purpose of this document is to define mechanisms that | potentially, users). The purpose of this document is to define | |||
eliminate this issue, in those situations where it is a concern. | mechanisms that eliminate this issue in those situations where it is | |||
a concern. | ||||
2.4. Possible Approaches | 2.4. Possible Approaches | |||
One way to avoid having a static non-changing address is to use | One way to avoid having a static non-changing address is to use | |||
DHCPv6[DHCPV6] for obtaining addresses. Section 12 of [DHCPV6] | DHCPv6[DHCPV6] for obtaining addresses. Section 12 of [DHCPV6] | |||
discusses the use of DHCPv6 for the assignment and management of | discusses the use of DHCPv6 for the assignment and management of | |||
"temporary addresses", which are never renewed and provide the same | "temporary addresses", which are never renewed and provide the same | |||
property of temporary addresses described in this document with | property of temporary addresses described in this document with | |||
regards to the privacy concern. | regards to the privacy concern. | |||
skipping to change at page 10, line 13 | skipping to change at page 9, line 23 | |||
different sequences. | different sequences. | |||
3. Protocol Description | 3. Protocol Description | |||
The goal of this section is to define procedures that: | The goal of this section is to define procedures that: | |||
1. Do not result in any changes to the basic behavior of addresses | 1. Do not result in any changes to the basic behavior of addresses | |||
generated via stateless address autoconfiguration [ADDRCONF]. | generated via stateless address autoconfiguration [ADDRCONF]. | |||
2. Create additional addresses based on a random interface | 2. Create additional addresses based on a random interface | |||
identifier for the purpose of initiating outgoing sessions These | identifier for the purpose of initiating outgoing sessions. | |||
"random" or temporary addresses would be used for a short period | These "random" or temporary addresses would be used for a short | |||
of time (hours to days) and would then be deprecated. Deprecated | period of time (hours to days) and would then be deprecated. | |||
address can continue to be used for already established | Deprecated address can continue to be used for already | |||
connections, but are not used to initiate new connections. New | established connections, but are not used to initiate new | |||
temporary addresses are generated periodically to replace | connections. New temporary addresses are generated periodically | |||
temporary addresses that expire, with the exact time between | to replace temporary addresses that expire, with the exact time | |||
address generation a matter of local policy. | between address generation a matter of local policy. | |||
3. Produce a sequence of temporary global scope addresses from a | 3. Produce a sequence of temporary global scope addresses from a | |||
sequence of interface identifiers that appear to be random in the | sequence of interface identifiers that appear to be random in the | |||
sense that it is difficult for an outside observer to predict a | sense that it is difficult for an outside observer to predict a | |||
future address (or identifier) based on a current one and it is | future address (or identifier) based on a current one, and it is | |||
difficult to determine previous addresses (or identifiers) | difficult to determine previous addresses (or identifiers) | |||
knowing only the present one. | knowing only the present one. | |||
4. By default, generate a set of addresses from the same | 4. By default, generate a set of addresses from the same | |||
(randomized) interface identifier, one address for each prefix | (randomized) interface identifier, one address for each prefix | |||
for which a global address has been generated via stateless | for which a global address has been generated via stateless | |||
address autoconfiguration. Using the same interface identifier | address autoconfiguration. Using the same interface identifier | |||
to generate a set of temporary addresses reduces the number of IP | to generate a set of temporary addresses reduces the number of IP | |||
multicast groups a host must join. Nodes join the solicited-node | multicast groups a host must join. Nodes join the solicited-node | |||
multicast address for each unicast address they support, and | multicast address for each unicast address they support, and | |||
solicited-node addresses are dependent only on the low-order bits | solicited-node addresses are dependent only on the low-order bits | |||
of the corresponding address. This default behaviour was made to | of the corresponding address. This default behavior was made to | |||
address the concern that a node that joins a large number of | address the concern that a node that joins a large number of | |||
multicast groups may be required to put its interface into | multicast groups may be required to put its interface into | |||
promiscuous mode, resulting in possible reduced performance. | promiscuous mode, resulting in possible reduced performance. | |||
A node highly concerned about privacy MAY use different interface | A node highly concerned about privacy MAY use different interface | |||
identifiers on different prefixes, resulting in a set of global | identifiers on different prefixes, resulting in a set of global | |||
addresses that cannot be easily tied to each other. For example | addresses that cannot be easily tied to each other. For example | |||
a node MAY create different interface identifiers I1,I2, and I3 | a node MAY create different interface identifiers I1,I2, and I3 | |||
for use with different prefixes P1,P2, and P3 on the same | for use with different prefixes P1,P2, and P3 on the same | |||
interface. | interface. | |||
3.1. Assumptions | 3.1. Assumptions | |||
The following algorithm assumes that each interface maintains an | The following algorithm assumes that each interface maintains an | |||
associated randomized interface identifier. When temporary addresses | associated randomized interface identifier. When temporary addresses | |||
are generated, the current value of the associated randomized | are generated, the current value of the associated randomized | |||
interface identifier is used. While the same identifier can be used | interface identifier is used. While the same identifier can be used | |||
to create more than one temporary address, the value SHOULD change | to create more than one temporary address, the value SHOULD change | |||
over time as described in Section 3.5. | over time as described in Section 3.5. | |||
The algorithm also assumes that for a given temporary address, an | The algorithm also assumes that, for a given temporary address, an | |||
implementation can determine the prefix from which it was generated. | implementation can determine the prefix from which it was generated. | |||
When a temporary address is deprecated, a new temporary address is | When a temporary address is deprecated, a new temporary address is | |||
generated. The specific valid and preferred lifetimes for the new | generated. The specific valid and preferred lifetimes for the new | |||
address are dependent on the corresponding lifetime values set for | address are dependent on the corresponding lifetime values set for | |||
the prefix from which it was generated. | the prefix from which it was generated. | |||
Finally, this document assumes that when a node initiates outgoing | Finally, this document assumes that when a node initiates outgoing | |||
communication, temporary addresses can be given preference over | communication, temporary addresses can be given preference over | |||
public addresses, when the device is configured to do so. | public addresses when the device is configured to do so. | |||
[ADDR_SELECT] mandates implementations to provide a mechanism, which | [ADDR_SELECT] mandates implementations to provide a mechanism, which | |||
allows an application to configure its preference for temporary | allows an application to configure its preference for temporary | |||
addresses over public addresses. It also allows for an | addresses over public addresses. It also allows for an | |||
implementation to prefer temporary addresses by default, so that the | implementation to prefer temporary addresses by default, so that the | |||
connections initiated by the node can use temporary addresses without | connections initiated by the node can use temporary addresses without | |||
requiring application-specific enablement. This document also | requiring application-specific enablement. This document also | |||
assumes that an API will exist that allows individual applications to | assumes that an API will exist that allows individual applications to | |||
indicate whether they prefer to use temporary or public addresses and | indicate whether they prefer to use temporary or public addresses and | |||
override the system defaults. | override the system defaults. | |||
3.2. Generation Of Randomized Interface Identifiers | 3.2. Generation of Randomized Interface Identifiers | |||
We describe two approaches for the generation and maintenance of the | We describe two approaches for the generation and maintenance of the | |||
randomized interface identifier. The first assumes the presence of | randomized interface identifier. The first assumes the presence of | |||
stable storage that can be used to record state history for use as | stable storage that can be used to record state history for use as | |||
input into the next iteration of the algorithm across system | input into the next iteration of the algorithm across system | |||
restarts. A second approach addresses the case where stable storage | restarts. A second approach addresses the case where stable storage | |||
is unavailable and there is a need to generate randomized interface | is unavailable and there is a need to generate randomized interface | |||
identifiers without previous state. | identifiers without previous state. | |||
The random interface identifier generation algorithm, as described in | The random interface identifier generation algorithm, as described in | |||
skipping to change at page 12, line 41 | skipping to change at page 11, line 31 | |||
A randomized interface identifier is created as follows: | A randomized interface identifier is created as follows: | |||
1. Take the history value from the previous iteration of this | 1. Take the history value from the previous iteration of this | |||
algorithm (or a random value if there is no previous value) and | algorithm (or a random value if there is no previous value) and | |||
append to it the interface identifier generated as described in | append to it the interface identifier generated as described in | |||
[ADDRARCH]. | [ADDRARCH]. | |||
2. Compute the MD5 message digest [MD5] over the quantity created in | 2. Compute the MD5 message digest [MD5] over the quantity created in | |||
the previous step. | the previous step. | |||
3. Take the left-most 64-bits of the MD5 digest and set bit 6 (the | 3. Take the leftmost 64-bits of the MD5 digest and set bit 6 (the | |||
left-most bit is numbered 0) to zero. This creates an interface | leftmost bit is numbered 0) to zero. This creates an interface | |||
identifier with the universal/local bit indicating local | identifier with the universal/local bit indicating local | |||
significance only. | significance only. | |||
4. Compare the generated identifier against a list of reserved | 4. Compare the generated identifier against a list of reserved | |||
interface identifiers and to those already assigned to an address | interface identifiers and to those already assigned to an address | |||
on the local device. In the event that an unacceptable | on the local device. In the event that an unacceptable | |||
identifier has been generated, the node MUST restart the process | identifier has been generated, the node MUST restart the process | |||
at step 1 above, using the right-most 64 bits of the MD5 digest | at step 1 above, using the rightmost 64 bits of the MD5 digest | |||
obtained in step 2 in place of the history value in step 1. | obtained in step 2 in place of the history value in step 1. | |||
5. Save the generated identifier as the associated randomized | 5. Save the generated identifier as the associated randomized | |||
interface identifier. | interface identifier. | |||
6. Take the rightmost 64-bits of the MD5 digest computed in step 2) | 6. Take the rightmost 64-bits of the MD5 digest computed in step 2) | |||
and save them in stable storage as the history value to be used | and save them in stable storage as the history value to be used | |||
in the next iteration of the algorithm. | in the next iteration of the algorithm. | |||
MD5 was chosen for convenience, and because its particular properties | MD5 was chosen for convenience, and because its particular properties | |||
were adequate to produce the desired level of randomization.The node | were adequate to produce the desired level of randomization. The | |||
MAY use another algorithm instead of MD5 to produce the random | node MAY use another algorithm instead of MD5 to produce the random | |||
interface identifier | interface identifier | |||
In theory, generating successive randomized interface identifiers | In theory, generating successive randomized interface identifiers | |||
using a history scheme as above has no advantages over generating | using a history scheme as above has no advantages over generating | |||
them at random. In practice, however, generating truly random | them at random. In practice, however, generating truly random | |||
numbers can be tricky. Use of a history value is intended to avoid | numbers can be tricky. Use of a history value is intended to avoid | |||
the particular scenario where two nodes generate the same randomized | the particular scenario where two nodes generate the same randomized | |||
interface identifier, both detect the situation via DAD, but then | interface identifier, both detect the situation via DAD, but then | |||
proceed to generate identical randomized interface identifiers via | proceed to generate identical randomized interface identifiers via | |||
the same (flawed) random number generation algorithm. The above | the same (flawed) random number generation algorithm. The above | |||
algorithm avoids this problem by having the interface identifier | algorithm avoids this problem by having the interface identifier | |||
(which will often be globally unique) used in the calculation that | (which will often be globally unique) used in the calculation that | |||
generates subsequent randomized interface identifiers. Thus, if two | generates subsequent randomized interface identifiers. Thus, if two | |||
nodes happen to generate the same randomized interface identifier, | nodes happen to generate the same randomized interface identifier, | |||
they should generate different ones on the followup attempt. | they should generate different ones on the follow-up attempt. | |||
3.2.2. In The Absence of Stable Storage | 3.2.2. In The Absence of Stable Storage | |||
In the absence of stable storage, no history value will be available | In the absence of stable storage, no history value will be available | |||
across system restarts to generate a pseudo-random sequence of | across system restarts to generate a pseudo-random sequence of | |||
interface identifiers. Consequently, the initial history value used | interface identifiers. Consequently, the initial history value used | |||
above SHOULD be generated at random. A number of techniques might be | above SHOULD be generated at random. A number of techniques might be | |||
appropriate. Consult [RANDOM] for suggestions on good sources for | appropriate. Consult [RANDOM] for suggestions on good sources for | |||
obtaining random numbers. Note that even though machines may not | obtaining random numbers. Note that even though machines may not | |||
have stable storage for storing a history value, they will in many | have stable storage for storing a history value, they will in many | |||
cases have configuration information that differs from one machine to | cases have configuration information that differs from one machine to | |||
another (e.g., user identity, security keys, serial numbers, etc.). | another (e.g., user identity, security keys, serial numbers, etc.). | |||
One approach to generating a random initial history value in such | One approach to generating a random initial history value in such | |||
cases is to use the configuration information to generate some data | cases is to use the configuration information to generate some data | |||
bits (which may remain constant for the life of the machine, but will | bits (which may remain constant for the life of the machine, but will | |||
vary from one machine to another), append some random data and | vary from one machine to another), append some random data, and | |||
compute the MD5 digest as before. | compute the MD5 digest as before. | |||
3.2.3. Alternate approaches | 3.2.3. Alternate Approaches | |||
Note that there are other approaches to generate random interface | Note that there are other approaches to generate random interface | |||
identifiers, albeit with different goals and applicability. One such | identifiers, albeit with different goals and applicability. One such | |||
approach is CGA [CGA], which generates a random interface identifier | approach is Cryptographically Generated Addresses (CGAs) [CGA], which | |||
based on the public key of the node. The goal of CGAs is to prove | generate a random interface identifier based on the public key of the | |||
ownership of an address and to prevent spoofing and stealing of | node. The goal of CGAs is to prove ownership of an address and to | |||
existing IPv6 addresses. They are used for securing neighbor | prevent spoofing and stealing of existing IPv6 addresses. They are | |||
discovery using [SEND]. The CGA random interface identifier | used for securing neighbor discovery using [SEND]. The CGA random | |||
generation algorithm may not be suitable for privacy addresses | interface identifier generation algorithm may not be suitable for | |||
because of the following properties | privacy addresses because of the following properties: | |||
o It requires the node to have a public key. This means that the | o It requires the node to have a public key. This means that the | |||
node can still be identified by its public key | node can still be identified by its public key. | |||
o The random interface identifier process is computationally | o The random interface identifier process is computationally | |||
intensive and hence discourages frequent regeneration | intensive and hence discourages frequent regeneration. | |||
3.3. Generating Temporary Addresses | 3.3. Generating Temporary Addresses | |||
[ADDRCONF] describes the steps for generating a link-local address | [ADDRCONF] describes the steps for generating a link-local address | |||
when an interface becomes enabled as well as the steps for generating | when an interface becomes enabled as well as the steps for generating | |||
addresses for other scopes. This document extends [ADDRCONF] as | addresses for other scopes. This document extends [ADDRCONF] as | |||
follows. When processing a Router Advertisement with a Prefix | follows. When processing a Router Advertisement with a Prefix | |||
Information option carrying a global scope prefix for the purposes of | Information option carrying a global scope prefix for the purposes of | |||
address autoconfiguration (i.e., the A bit is set), the node MUST | address autoconfiguration (i.e., the A bit is set), the node MUST | |||
perform the following steps: | perform the following steps: | |||
1. Process the Prefix Information Option as defined in [ADDRCONF], | 1. Process the Prefix Information Option as defined in [ADDRCONF], | |||
either creating a new public address or adjusting the lifetimes | either creating a new public address or adjusting the lifetimes | |||
of existing addresses, both public and temporary. If a received | of existing addresses, both public and temporary. If a received | |||
option will extend the lifetime of a public address, the | option will extend the lifetime of a public address, the | |||
lifetimes of temporary addresses should be extended, subject to | lifetimes of temporary addresses should be extended, subject to | |||
the overall constraint that no temporary addresses should ever | the overall constraint that no temporary addresses should ever | |||
remain "valid" or "preferred" for a time longer than | remain "valid" or "preferred" for a time longer than | |||
(TEMP_VALID_LIFETIME - DESYNC_FACTOR) or (TEMP_PREFERRED_LIFETIME | (TEMP_VALID_LIFETIME) or (TEMP_PREFERRED_LIFETIME - | |||
- DESYNC_FACTOR) respectively. The configuration variables | DESYNC_FACTOR), respectively. The configuration variables | |||
TEMP_VALID_LIFETIME and TEMP_PREFERRED_LIFETIME correspond to | TEMP_VALID_LIFETIME and TEMP_PREFERRED_LIFETIME correspond to | |||
approximate target lifetimes for temporary addresses. | approximate target lifetimes for temporary addresses. | |||
2. One way an implementation can satisfy the above constraints is to | 2. One way an implementation can satisfy the above constraints is to | |||
associate with each temporary address a creation time (called | associate with each temporary address a creation time (called | |||
CREATION_TIME) that indicates the time at which the address was | CREATION_TIME) that indicates the time at which the address was | |||
created. When updating the preferred lifetime of an existing | created. When updating the preferred lifetime of an existing | |||
temporary address, it would be set to expire at whichever time is | temporary address, it would be set to expire at whichever time is | |||
earlier: the time indicated by the received lifetime or | earlier: the time indicated by the received lifetime or | |||
(CREATION_TIME + TEMP_PREFERRED_LIFETIME - DESYNC_FACTOR). A | (CREATION_TIME + TEMP_PREFERRED_LIFETIME - DESYNC_FACTOR). A | |||
similar approach can be used with the valid lifetime. | similar approach can be used with the valid lifetime. | |||
3. When a new public address is created as described in [ADDRCONF], | 3. When a new public address is created as described in [ADDRCONF], | |||
the node SHOULD also create a new temporary address. | the node SHOULD also create a new temporary address. | |||
4. When creating a temporary address, the lifetime values MUST be | 4. When creating a temporary address, the lifetime values MUST be | |||
derived from the corresponding prefix as follows: | derived from the corresponding prefix as follows: | |||
* Its Valid Lifetime is the lower of the Valid Lifetime of the | * Its Valid Lifetime is the lower of the Valid Lifetime of the | |||
public address or TEMP_VALID_LIFETIME | public address or TEMP_VALID_LIFETIME. | |||
* Its Preferred Lifetime is the lower of the Preferred Lifetime | * Its Preferred Lifetime is the lower of the Preferred Lifetime | |||
of the public address or TEMP_PREFERRED_LIFETIME - | of the public address or TEMP_PREFERRED_LIFETIME - | |||
DESYNC_FACTOR. | DESYNC_FACTOR. | |||
5. A temporary address is created only if this calculated Preferred | 5. A temporary address is created only if this calculated Preferred | |||
Lifetime is greater than REGEN_ADVANCE time units. In | Lifetime is greater than REGEN_ADVANCE time units. In | |||
particular, an implementation MUST NOT create a temporary address | particular, an implementation MUST NOT create a temporary address | |||
with a zero Preferred Lifetime. | with a zero Preferred Lifetime. | |||
6. New temporary addresses MUST be created by appending the | 6. New temporary addresses MUST be created by appending the | |||
interface's current randomized interface identifier to the prefix | interface's current randomized interface identifier to the prefix | |||
that was received. | that was received. | |||
7. The node MUST Perform duplicate address detection (DAD) on the | 7. The node MUST perform duplicate address detection (DAD) on the | |||
generated temporary address. If DAD indicates the address is | generated temporary address. If DAD indicates the address is | |||
already in use, the node MUST generate a new randomized interface | already in use, the node MUST generate a new randomized interface | |||
identifier as described in Section 3.2 above, and repeat the | identifier as described in Section 3.2 above, and repeat the | |||
previous steps as appropriate up to TEMP_IDGEN_RETRIES times. If | previous steps as appropriate up to TEMP_IDGEN_RETRIES times. If | |||
after TEMP_IDGEN_RETRIES consecutive attempts no non-unique | after TEMP_IDGEN_RETRIES consecutive attempts no non-unique | |||
address was generated, the node MUST log a system error and MUST | address was generated, the node MUST log a system error and MUST | |||
NOT attempt to generate temporary addresses for that interface. | NOT attempt to generate temporary addresses for that interface. | |||
Note that DAD MUST be performed on every unicast address | Note that DAD MUST be performed on every unicast address | |||
generated from this randomized interface identifier. | generated from this randomized interface identifier. | |||
skipping to change at page 16, line 11 | skipping to change at page 14, line 51 | |||
temporary address SHOULD be regenerated slightly before its | temporary address SHOULD be regenerated slightly before its | |||
predecessor is deprecated. This is to allow sufficient time to avoid | predecessor is deprecated. This is to allow sufficient time to avoid | |||
race conditions in the case where generating a new temporary address | race conditions in the case where generating a new temporary address | |||
is not instantaneous, such as when duplicate address detection must | is not instantaneous, such as when duplicate address detection must | |||
be run. The node SHOULD start the address regeneration process | be run. The node SHOULD start the address regeneration process | |||
REGEN_ADVANCE time units before a temporary address would actually be | REGEN_ADVANCE time units before a temporary address would actually be | |||
deprecated. | deprecated. | |||
As an optional optimization, an implementation MAY remove a | As an optional optimization, an implementation MAY remove a | |||
deprecated temporary address that is not in use by applications or | deprecated temporary address that is not in use by applications or | |||
upper-layers as detailed in Section 6. | upper layers as detailed in Section 6. | |||
3.5. Regeneration of Randomized Interface Identifiers | 3.5. Regeneration of Randomized Interface Identifiers | |||
The frequency at which temporary addresses changes depends on how a | The frequency at which temporary addresses changes depends on how a | |||
device is being used (e.g., how frequently it initiates new | device is being used (e.g., how frequently it initiates new | |||
communication) and the concerns of the end user. The most egregious | communication) and the concerns of the end user. The most egregious | |||
privacy concerns appear to involve addresses used for long periods of | privacy concerns appear to involve addresses used for long periods of | |||
time (weeks to months to years). The more frequently an address | time (weeks to months to years). The more frequently an address | |||
changes, the less feasible collecting or coordinating information | changes, the less feasible collecting or coordinating information | |||
keyed on interface identifiers becomes. Moreover, the cost of | keyed on interface identifiers becomes. Moreover, the cost of | |||
skipping to change at page 17, line 38 | skipping to change at page 16, line 32 | |||
temporary addresses in order to simplify network debugging and | temporary addresses in order to simplify network debugging and | |||
operations. Consequently, implementations SHOULD provide a way for | operations. Consequently, implementations SHOULD provide a way for | |||
trusted system administrators to enable or disable the use of | trusted system administrators to enable or disable the use of | |||
temporary addresses. | temporary addresses. | |||
Additionally, sites might wish to selectively enable or disable the | Additionally, sites might wish to selectively enable or disable the | |||
use of temporary addresses for some prefixes. For example, a site | use of temporary addresses for some prefixes. For example, a site | |||
might wish to disable temporary address generation for "Unique local" | might wish to disable temporary address generation for "Unique local" | |||
[ULA] prefixes while still generating temporary addresses for all | [ULA] prefixes while still generating temporary addresses for all | |||
other global prefixes. Another site might wish to enable temporary | other global prefixes. Another site might wish to enable temporary | |||
address generation only for the prefixes 2001::/16 and 2002::/16 | address generation only for the prefixes 2001::/16 and 2002::/16, | |||
while disabling it for all other prefixes. To support this behavior, | while disabling it for all other prefixes. To support this behavior, | |||
implementations SHOULD provide a way to enable and disable generation | implementations SHOULD provide a way to enable and disable generation | |||
of temporary addresses for specific prefix subranges. This per- | of temporary addresses for specific prefix subranges. This per- | |||
prefix setting SHOULD override the global settings on the node with | prefix setting SHOULD override the global settings on the node with | |||
respect to the specified prefix subranges. Note that the pre-prefix | respect to the specified prefix subranges. Note that the pre-prefix | |||
setting can be applied at any granularity, and not necessarily on a | setting can be applied at any granularity, and not necessarily on a | |||
per subnet basis. | per-subnet basis. | |||
The use of temporary addresses may cause unexpected difficulties with | The use of temporary addresses may cause unexpected difficulties with | |||
some applications. As described below, some servers refuse to accept | some applications. As described below, some servers refuse to accept | |||
communications from clients for which they cannot map the IP address | communications from clients for which they cannot map the IP address | |||
into a DNS name. In addition, some applications may not behave | into a DNS name. In addition, some applications may not behave | |||
robustly if temporary addresses are used and an address expires | robustly if temporary addresses are used and an address expires | |||
before the application has terminated, or if it opens multiple | before the application has terminated, or if it opens multiple | |||
sessions, but expects them to all use the same addresses. | sessions, but expects them to all use the same addresses. | |||
Consequently, the use of temporary addresses SHOULD be disabled by | Consequently, the use of temporary addresses SHOULD be disabled by | |||
default in order to minimize potential disruptions. Individual | default in order to minimize potential disruptions. Individual | |||
applications, which have specific knowledge about the normal duration | applications, which have specific knowledge about the normal duration | |||
of connections, MAY override this as appropriate. | of connections, MAY override this as appropriate. | |||
If a very small number of nodes (say only one) use a given prefix for | If a very small number of nodes (say, only one) use a given prefix | |||
extended periods of time, just changing the interface identifier part | for extended periods of time, just changing the interface identifier | |||
of the address may not be sufficient to ensure privacy, since the | part of the address may not be sufficient to ensure privacy, since | |||
prefix acts as a constant identifier. The procedures described in | the prefix acts as a constant identifier. The procedures described | |||
this document are most effective when the prefix is reasonably non | in this document are most effective when the prefix is reasonably non | |||
static or is used by a fairly large number of nodes. | static or is used by a fairly large number of nodes. | |||
4. Implications of Changing Interface Identifiers | 4. Implications of Changing Interface Identifiers | |||
The IPv6 addressing architecture goes to some lengths to ensure that | The IPv6 addressing architecture goes to some lengths to ensure that | |||
interface identifiers are likely to be globally unique where easy to | interface identifiers are likely to be globally unique where easy to | |||
do so. The widespread use of temporary addresses may result in a | do so. The widespread use of temporary addresses may result in a | |||
significant fraction of Internet traffic not using addresses in which | significant fraction of Internet traffic not using addresses in which | |||
the interface identifier portion is globally unique. Consequently, | the interface identifier portion is globally unique. Consequently, | |||
usage of the algorithms in this document may complicate providing | usage of the algorithms in this document may complicate providing | |||
skipping to change at page 19, line 34 | skipping to change at page 17, line 41 | |||
exists. That is, they perform a DNS PTR query to determine the DNS | exists. That is, they perform a DNS PTR query to determine the DNS | |||
name, and may then also perform an AAAA query on the returned name to | name, and may then also perform an AAAA query on the returned name to | |||
verify that the returned DNS name maps back into the address being | verify that the returned DNS name maps back into the address being | |||
used. Consequently, clients not properly registered in the DNS may | used. Consequently, clients not properly registered in the DNS may | |||
be unable to access some services. As noted earlier, however, a | be unable to access some services. As noted earlier, however, a | |||
node's DNS name (if non-changing) serves as a constant identifier. | node's DNS name (if non-changing) serves as a constant identifier. | |||
The wide deployment of the extension described in this document could | The wide deployment of the extension described in this document could | |||
challenge the practice of inverse-DNS-based "authentication," which | challenge the practice of inverse-DNS-based "authentication," which | |||
has little validity, though it is widely implemented. In order to | has little validity, though it is widely implemented. In order to | |||
meet server challenges, nodes could register temporary addresses in | meet server challenges, nodes could register temporary addresses in | |||
the DNS using random names (for example a string version of the | the DNS using random names (for example, a string version of the | |||
random address itself). | random address itself). | |||
Use of the extensions defined in this document may complicate | Use of the extensions defined in this document may complicate | |||
debugging and other operational troubleshooting activities. | debugging and other operational troubleshooting activities. | |||
Consequently, it may be site policy that temporary addresses should | Consequently, it may be site policy that temporary addresses should | |||
not be used. Consequently, implementations MUST provide a method for | not be used. Consequently, implementations MUST provide a method for | |||
the end user or trusted administrator to override the use of | the end user or trusted administrator to override the use of | |||
temporary addresses. | temporary addresses. | |||
5. Defined Constants | 5. Defined Constants | |||
skipping to change at page 21, line 29 | skipping to change at page 18, line 50 | |||
The determination as to whether to use public versus temporary | The determination as to whether to use public versus temporary | |||
addresses can in some cases only be made by an application. For | addresses can in some cases only be made by an application. For | |||
example, some applications may always want to use temporary | example, some applications may always want to use temporary | |||
addresses, while others may want to use them only in some | addresses, while others may want to use them only in some | |||
circumstances or not at all. Suitable API extensions will likely | circumstances or not at all. Suitable API extensions will likely | |||
need to be developed to enable individual applications to indicate | need to be developed to enable individual applications to indicate | |||
with sufficient granularity their needs with regards to the use of | with sufficient granularity their needs with regards to the use of | |||
temporary addresses. Recommendations on DNS practices to avoid the | temporary addresses. Recommendations on DNS practices to avoid the | |||
problem described in Section 4 when reverse DNS lookups fail may be | problem described in Section 4 when reverse DNS lookups fail may be | |||
needed. [DNSOP] contains a more detailed discussion of the DNS | needed. [DNSOP] contains a more detailed discussion of the DNS- | |||
related issues. | related issues. | |||
While this document discusses ways of obscuring a user's permanent IP | While this document discusses ways of obscuring a user's permanent IP | |||
address, the method described is believed to be ineffective against | address, the method described is believed to be ineffective against | |||
sophisticated forms of traffic analysis. To increase effectiveness, | sophisticated forms of traffic analysis. To increase effectiveness, | |||
one may need to consider use of more advanced techniques, such as | one may need to consider use of more advanced techniques, such as | |||
Onion Routing [ONION]. | Onion Routing [ONION]. | |||
7. Security Considerations | 7. Security Considerations | |||
Ingress filtering has been and is being deployed as a means of | Ingress filtering has been and is being deployed as a means of | |||
preventing the use of spoofed source addresses in Distributed Denial | preventing the use of spoofed source addresses in Distributed Denial | |||
of Service(DDoS) attacks. In a network with a large number of nodes, | of Service (DDoS) attacks. In a network with a large number of | |||
new temporary addresses are created at a fairly high rate. This | nodes, new temporary addresses are created at a fairly high rate. | |||
might make it difficult for ingress filtering mechanisms to | This might make it difficult for ingress filtering mechanisms to | |||
distinguish between legitimately changing temporary addresses and | distinguish between legitimately changing temporary addresses and | |||
spoofed source addresses, which are "in-prefix"(They use a | spoofed source addresses, which are "in-prefix" (using a | |||
topologically correct prefix and non-existent interface ID). This | topologically correct prefix and non-existent interface ID). This | |||
can be addressed by using access control mechanisms on a per address | can be addressed by using access control mechanisms on a per-address | |||
basis on the network egress point. | basis on the network egress point. | |||
8. Significant Changes from RFC 3041 | 8. Significant Changes from RFC 3041 | |||
This section summarizes the changes in this document relative to RFC | This section summarizes the changes in this document relative to RFC | |||
3041 that an implementer of RFC 3041 should be aware of. | 3041 that an implementer of RFC 3041 should be aware of. | |||
1. Excluded certain interface identifiers from the range of | 1. Excluded certain interface identifiers from the range of | |||
acceptable interface identifiers. Interface IDs such as those | acceptable interface identifiers. Interface IDs such as those | |||
for reserved anycast addresses [RFC], etc. | for reserved anycast addresses [RFC2526], etc. | |||
2. Added a configuration knob that provides the end user with a way | 2. Added a configuration knob that provides the end user with a way | |||
to enable or disable the use of temporary addresses on a per- | to enable or disable the use of temporary addresses on a per- | |||
prefix basis. | prefix basis. | |||
3. Added a check for denial of service attacks using low valid | 3. Added a check for denial of service attacks using low valid | |||
lifetimes in router advertisements | lifetimes in router advertisements. | |||
4. DAD is now run on all temporary addresses, not just the first one | 4. DAD is now run on all temporary addresses, not just the first one | |||
generated from an interface identifier. | generated from an interface identifier. | |||
5. Changed the default setting for usage of temporary addresses to | 5. Changed the default setting for usage of temporary addresses to | |||
be disabled. | be disabled. | |||
6. The node is now allowed to generate different interface | 6. The node is now allowed to generate different interface | |||
identifiers for different prefixes, if it so desires. | identifiers for different prefixes, if it so desires. | |||
7. The algorithm used for generating random interface identifiers is | 7. The algorithm used for generating random interface identifiers is | |||
no longer restricted to just MD5 | no longer restricted to just MD5. | |||
8. Reduced default number of retries to from and added a | 8. Reduced default number of retries to 3 and added a configuration | |||
configuration variable | variable. | |||
9. RA processing algorithm is no longer included in the document, | 9. Router advertisement (RA) processing algorithm is no longer | |||
and is replaced by a reference to [ADDRCONF]. | included in the document, and is replaced by a reference to | |||
[ADDRCONF]. | ||||
9. Acknowledgements | 9. Acknowledgments | |||
The authors would like to acknowledge the contributions of the ipv6 | Rich Draves and Thomas Narten were the authors of RFC 3041. They | |||
working group and, in particular, Ran Atkinson, Matt Crawford, Steve | would like to acknowledge the contributions of the ipv6 working group | |||
Deering, Allison Mankin, Peter Bieringer, Jari Arkko, Pekka Nikander, | and, in particular, Ran Atkinson, Matt Crawford, Steve Deering, | |||
Pekka Savola, Francis Dupont, Brian Haberman, Tatuya Jinmei and | Allison Mankin, and Peter Bieringer. | |||
Margaret Wasserman for their detailed comments. | ||||
Suresh Krishnan was the sole author of this version of the document. | ||||
He would like to acknowledge the contributions of the ipv6 working | ||||
group and, in particular, Jari Arkko, Pekka Nikander, Pekka Savola, | ||||
Francis Dupont, Brian Haberman, Tatuya Jinmei, and Margaret Wasserman | ||||
for their detailed comments. | ||||
10. References | 10. References | |||
10.1. Normative References | 10.1. Normative References | |||
[ADDRARCH] | [ADDRARCH] Hinden, R. and S. Deering, "IP Version 6 Addressing | |||
Hinden, R. and S. Deering, "Internet Protocol Version 6 | Architecture", RFC 4291, February 2006. | |||
(IPv6) Addressing Architecture", RFC 3513, April 2003. | ||||
[ADDRCONF] | [ADDRCONF] Thomson, S., Narten, T., and T. Jinmei, "IPv6 | |||
Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless | Stateless Address Autoconfiguration", RFC 4862, | |||
Address Autoconfiguration", draft-ietf-ipv6-rfc2462bis-07 | September 2007. | |||
(work in progress), December 2004. | ||||
[DISCOVERY] | [DISCOVERY] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, | |||
Narten, T., Nordmark, E., Simpson, W., and H. Soliman, | ||||
"Neighbor Discovery for IP version 6 (IPv6)", | "Neighbor Discovery for IP version 6 (IPv6)", | |||
draft-ietf-ipv6-2461bis-02 (work in progress), | RFC 4861, September 2007. | |||
February 2005. | ||||
[MD5] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, | [MD5] Rivest, R., "The MD5 Message-Digest Algorithm", | |||
April 1992. | RFC 1321, April 1992. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", RFC 2119, March 1997. | Requirement Levels", RFC 2119, March 1997. | |||
10.2. Informative References | 10.2. Informative References | |||
[ADDR_SELECT] | [ADDR_SELECT] Draves, R., "Default Address Selection for Internet | |||
Draves, R., "Default Address Selection for Internet | ||||
Protocol version 6 (IPv6)", RFC 3484, February 2003. | Protocol version 6 (IPv6)", RFC 3484, February 2003. | |||
[CGA] Aura, T., "Cryptographically Generated Addresses (CGA)", | [CGA] Aura, T., "Cryptographically Generated Addresses | |||
RFC 3972, March 2005. | (CGA)", RFC 3972, March 2005. | |||
[COOKIES] Kristol, D. and L. Montulli, "HTTP State Management | [COOKIES] Kristol, D. and L. Montulli, "HTTP State Management | |||
Mechanism", RFC 2965, October 2000. | Mechanism", RFC 2965, October 2000. | |||
[DDNS] Vixie, P., Thomson, S., Rekhter, Y., and J. Bound, | [DDNS] Vixie, P., Thomson, S., Rekhter, Y., and J. Bound, | |||
"Dynamic Updates in the Domain Name System (DNS UPDATE)", | "Dynamic Updates in the Domain Name System (DNS | |||
RFC 2136, April 1997. | UPDATE)", RFC 2136, April 1997. | |||
[DHCP] Droms, R., "Dynamic Host Configuration Protocol", | [DHCP] Droms, R., "Dynamic Host Configuration Protocol", | |||
RFC 2131, March 1997. | RFC 2131, March 1997. | |||
[DHCPV6] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C., | [DHCPV6] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, | |||
and M. Carney, "Dynamic Host Configuration Protocol for | C., and M. Carney, "Dynamic Host Configuration | |||
IPv6 (DHCPv6)", RFC 3315, July 2003. | Protocol for IPv6 (DHCPv6)", RFC 3315, July 2003. | |||
[DNA] Choi, J. and G. Daley, "Detecting Network Attachment in | [DNA] Choi, JH. and G. Daley, "Goals of Detecting Network | |||
IPv6 Goals", draft-ietf-dna-goals-04 (work in progress), | Attachment in IPv6", RFC 4135, August 2005. | |||
December 2004. | ||||
[DNSOP] Durand, A., Ihren, J., and P. Savola, "Operational | [DNSOP] Durand, A., Ihren, J., and P. Savola, "Operational | |||
Considerations and Issues with IPv6 DNS", | Considerations and Issues with IPv6 DNS", RFC 4472, | |||
draft-ietf-dnsop-ipv6-dns-issues-10 (work in progress), | April 2006. | |||
October 2004. | ||||
[ONION] Reed, MGR., Syverson, PFS., and DMG. Goldschlag, "Proxies | [ONION] Reed, MGR., Syverson, PFS., and DMG. Goldschlag, | |||
for Anonymous Routing", Proceedings of the 12th Annual | "Proxies for Anonymous Routing", Proceedings of the | |||
Computer Security Applications Conference, San Diego, CA, | 12th Annual Computer Security Applications Conference, | |||
December 1996. | San Diego, CA, December 1996. | |||
[RANDOM] Eastlake, D., Crocker, S., and J. Schiller, "Randomness | [RANDOM] Eastlake, D., Schiller, J., and S. Crocker, | |||
Recommendations for Security", RFC 1750, December 1994. | "Randomness Requirements for Security", BCP 106, | |||
RFC 4086, June 2005. | ||||
[SEND] Arkko, J., Kempf, J., Zill, B., and P. Nikander, "SEcure | [RFC2526] Johnson, D. and S. Deering, "Reserved IPv6 Subnet | |||
Neighbor Discovery (SEND)", RFC 3971, March 2005. | Anycast Addresses", RFC 2526, March 1999. | |||
[SEND] Arkko, J., Kempf, J., Zill, B., and P. Nikander, | ||||
"SEcure Neighbor Discovery (SEND)", RFC 3971, | ||||
March 2005. | ||||
[ULA] Hinden, R. and B. Haberman, "Unique Local IPv6 Unicast | [ULA] Hinden, R. and B. Haberman, "Unique Local IPv6 Unicast | |||
Addresses", draft-ietf-ipv6-unique-local-addr-09 (work in | Addresses", RFC 4193, October 2005. | |||
progress), January 2005. | ||||
Authors' Addresses | Authors' Addresses | |||
Thomas Narten | Thomas Narten | |||
IBM Corporation | IBM Corporation | |||
P.O. Box 12195 | P.O. Box 12195 | |||
Research Triangle Park, NC | Research Triangle Park, NC | |||
USA | USA | |||
Email: narten@raleigh.ibm.com | EMail: narten@us.ibm.com | |||
Richard Draves | Richard Draves | |||
Microsoft Research | Microsoft Research | |||
One Microsoft Way | One Microsoft Way | |||
Redmond, WA | Redmond, WA | |||
USA | USA | |||
Email: richdr@microsoft.com | EMail: richdr@microsoft.com | |||
Suresh Krishnan | Suresh Krishnan | |||
Ericsson Research | Ericsson Research | |||
8400 Decarie Blvd. | 8400 Decarie Blvd. | |||
Town of Mount Royal, QC | Town of Mount Royal, QC | |||
Canada | Canada | |||
Email: suresh.krishnan@ericsson.com | EMail: suresh.krishnan@ericsson.com | |||
Intellectual Property Statement | Full Copyright Statement | |||
Copyright (C) The IETF Trust (2007). | ||||
This document is subject to the rights, licenses and restrictions | ||||
contained in BCP 78, and except as set forth therein, the authors | ||||
retain all their rights. | ||||
This document and the information contained herein are provided on an | ||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | ||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND | ||||
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS | ||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | ||||
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | ||||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
Intellectual Property | ||||
The IETF takes no position regarding the validity or scope of any | The IETF takes no position regarding the validity or scope of any | |||
Intellectual Property Rights or other rights that might be claimed to | Intellectual Property Rights or other rights that might be claimed to | |||
pertain to the implementation or use of the technology described in | pertain to the implementation or use of the technology described in | |||
this document or the extent to which any license under such rights | this document or the extent to which any license under such rights | |||
might or might not be available; nor does it represent that it has | might or might not be available; nor does it represent that it has | |||
made any independent effort to identify any such rights. Information | made any independent effort to identify any such rights. Information | |||
on the procedures with respect to rights in RFC documents can be | on the procedures with respect to rights in RFC documents can be | |||
found in BCP 78 and BCP 79. | found in BCP 78 and BCP 79. | |||
skipping to change at page 28, line 28 | skipping to change at line 1018 | |||
attempt made to obtain a general license or permission for the use of | attempt made to obtain a general license or permission for the use of | |||
such proprietary rights by implementers or users of this | such proprietary rights by implementers or users of this | |||
specification can be obtained from the IETF on-line IPR repository at | specification can be obtained from the IETF on-line IPR repository at | |||
http://www.ietf.org/ipr. | http://www.ietf.org/ipr. | |||
The IETF invites any interested party to bring to its attention any | The IETF invites any interested party to bring to its attention any | |||
copyrights, patents or patent applications, or other proprietary | copyrights, patents or patent applications, or other proprietary | |||
rights that may cover technology that may be required to implement | rights that may cover technology that may be required to implement | |||
this standard. Please address the information to the IETF at | this standard. Please address the information to the IETF at | |||
ietf-ipr@ietf.org. | ietf-ipr@ietf.org. | |||
Disclaimer of Validity | ||||
This document and the information contained herein are provided on an | ||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | ||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | ||||
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | ||||
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | ||||
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | ||||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
Copyright Statement | ||||
Copyright (C) The Internet Society (2006). This document is subject | ||||
to the rights, licenses and restrictions contained in BCP 78, and | ||||
except as set forth therein, the authors retain all their rights. | ||||
Acknowledgment | ||||
Funding for the RFC Editor function is currently provided by the | ||||
Internet Society. | ||||
End of changes. 87 change blocks. | ||||
194 lines changed or deleted | 191 lines changed or added | |||
This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |