draft-ietf-dhc-anonymity-profile-08.txt | rfc7844.txt | |||
---|---|---|---|---|
Network Working Group C. Huitema | Internet Engineering Task Force (IETF) C. Huitema | |||
Internet-Draft Microsoft | Request for Comments: 7844 Microsoft | |||
Intended status: Standards Track T. Mrugalski | Category: Standards Track T. Mrugalski | |||
Expires: August 22, 2016 ISC | ISSN: 2070-1721 ISC | |||
S. Krishnan | S. Krishnan | |||
Ericsson | Ericsson | |||
February 19, 2016 | May 2016 | |||
Anonymity profile for DHCP clients | Anonymity Profiles for DHCP Clients | |||
draft-ietf-dhc-anonymity-profile-08.txt | ||||
Abstract | Abstract | |||
Some DHCP options carry unique identifiers. These identifiers can | Some DHCP options carry unique identifiers. These identifiers can | |||
enable device tracking even if the device administrator takes care of | enable device tracking even if the device administrator takes care of | |||
randomizing other potential identifications like link-layer addresses | randomizing other potential identifications like link-layer addresses | |||
or IPv6 addresses. The anonymity profile is designed for clients | or IPv6 addresses. The anonymity profiles are designed for clients | |||
that wish to remain anonymous to the visited network. The profile | that wish to remain anonymous to the visited network. The profiles | |||
provides guidelines on the composition of DHCP or DHCPv6 requests, | provide guidelines on the composition of DHCP or DHCPv6 messages, | |||
designed to minimize disclosure of identifying information. | designed to minimize disclosure of identifying information. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at http://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 5741. | ||||
This Internet-Draft will expire on August 22, 2016. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
http://www.rfc-editor.org/info/rfc7844. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 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 ....................................................4 | |||
1.1. Requirements . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements ...............................................4 | |||
2. Application domain . . . . . . . . . . . . . . . . . . . . . 3 | 2. Application Domain ..............................................4 | |||
2.1. MAC address Randomization hypotheses . . . . . . . . . . 4 | 2.1. MAC Address Randomization Hypotheses .......................5 | |||
2.2. MAC address Randomization and DHCP . . . . . . . . . . . 5 | 2.2. MAC Address Randomization and DHCP .........................6 | |||
2.3. Radio fingerprinting . . . . . . . . . . . . . . . . . . 5 | 2.3. Radio Fingerprinting .......................................6 | |||
2.4. Operating system fingerprinting . . . . . . . . . . . . . 6 | 2.4. Operating System Fingerprinting ............................7 | |||
2.5. No anonymity profile identification . . . . . . . . . . . 6 | 2.5. No Anonymity Profile Identification ........................7 | |||
2.6. Using the anonymity profiles . . . . . . . . . . . . . . 7 | 2.6. Using the Anonymity Profiles ...............................8 | |||
2.7. What about privacy for DHCP servers . . . . . . . . . . . 8 | 2.7. What about privacy for DHCP servers? .......................9 | |||
3. Anonymity profile for DHCPv4 . . . . . . . . . . . . . . . . 8 | 3. Anonymity Profile for DHCPv4 ....................................9 | |||
3.1. Avoiding fingerprinting . . . . . . . . . . . . . . . . . 9 | 3.1. Avoiding Fingerprinting ...................................10 | |||
3.2. Client IP address field . . . . . . . . . . . . . . . . . 9 | 3.2. Client IP Address Field ...................................10 | |||
3.3. Requested IP address option . . . . . . . . . . . . . . . 10 | 3.3. Requested IP Address Option ...............................11 | |||
3.4. Client hardware address field . . . . . . . . . . . . . . 11 | 3.4. Client Hardware Address Field .............................12 | |||
3.5. Client Identifier Option . . . . . . . . . . . . . . . . 11 | 3.5. Client Identifier Option ..................................12 | |||
3.6. Parameter Request List Option . . . . . . . . . . . . . . 12 | 3.6. Parameter Request List Option .............................13 | |||
3.7. Host Name Option . . . . . . . . . . . . . . . . . . . . 12 | 3.7. Host Name Option ..........................................13 | |||
3.8. Client FQDN Option . . . . . . . . . . . . . . . . . . . 13 | 3.8. Client FQDN Option ........................................14 | |||
3.9. UUID/GUID-based Client Identifier Option . . . . . . . . 14 | 3.9. UUID/GUID-Based Client Machine Identifier Option ..........15 | |||
3.10. User and Vendor Class DHCP options . . . . . . . . . . . 14 | 3.10. User and Vendor Class DHCP Options .......................15 | |||
4. Anonymity profile for DHCPv6 . . . . . . . . . . . . . . . . 14 | 4. Anonymity Profile for DHCPv6 ...................................15 | |||
4.1. Avoiding fingerprinting . . . . . . . . . . . . . . . . . 15 | 4.1. Avoiding Fingerprinting ...................................16 | |||
4.2. Do not send Confirm messages, unless really sure where . 15 | 4.2. Do not send Confirm messages, unless really sure about | |||
4.3. Client Identifier DHCPv6 Option . . . . . . . . . . . . . 16 | the location ..............................................17 | |||
4.3.1. Anonymous Information-Request . . . . . . . . . . . . 17 | 4.3. Client Identifier DHCPv6 Option ...........................17 | |||
4.4. Server Identifier Option . . . . . . . . . . . . . . . . 17 | 4.3.1. Anonymous Information-request ......................18 | |||
4.5. Address assignment options . . . . . . . . . . . . . . . 17 | 4.4. Server Identifier Option ..................................18 | |||
4.5.1. Obtain temporary addresses . . . . . . . . . . . . . 18 | 4.5. Address Assignment Options ................................18 | |||
4.5.2. Prefix delegation . . . . . . . . . . . . . . . . . . 18 | 4.5.1. Obtain Temporary Addresses .........................19 | |||
4.6. Option Request Option . . . . . . . . . . . . . . . . . . 19 | 4.5.2. Prefix Delegation ..................................20 | |||
4.6.1. Previous option values . . . . . . . . . . . . . . . 19 | 4.6. Option Request Option .....................................20 | |||
4.7. Authentication Option . . . . . . . . . . . . . . . . . . 19 | 4.6.1. Previous Option Values .............................20 | |||
4.8. User and Vendor Class DHCPv6 options . . . . . . . . . . 19 | 4.7. Authentication Option .....................................21 | |||
4.9. Client FQDN Option . . . . . . . . . . . . . . . . . . . 20 | 4.8. User and Vendor Class DHCPv6 Options ......................21 | |||
5. Operational Considerations . . . . . . . . . . . . . . . . . 20 | 4.9. Client FQDN DHCPv6 Option .................................21 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | 5. Operational Considerations .....................................21 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 | 6. Security Considerations ........................................22 | |||
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 20 | 7. References .....................................................22 | |||
9. Changes from previous versions . . . . . . . . . . . . . . . 21 | 7.1. Normative References ......................................22 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 7.2. Informative References ....................................23 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 24 | Acknowledgments ...................................................26 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 25 | Authors' Addresses ................................................26 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 | ||||
1. Introduction | 1. Introduction | |||
There have been reports of systems that would monitor the wireless | There have been reports of systems that would monitor the wireless | |||
connections of passengers at Canadian airports [CNBC]. We can assume | connections of passengers at Canadian airports [CNBC]. We can assume | |||
that these are either fragments or trial runs of a wider system that | that these are either fragments or trial runs of a wider system that | |||
would attempt to monitor Internet users as they roam through wireless | would attempt to monitor Internet users as they roam through wireless | |||
access points and other temporary network attachments. We can also | access points and other temporary network attachments. We can also | |||
assume that privacy conscious users will attempt to evade this | assume that privacy-conscious users will attempt to evade this | |||
monitoring, for example by ensuring that low level identifiers such | monitoring -- for example, by ensuring that low-level identifiers | |||
as link-layer addresses are "randomized," so that the devices do not | such as link-layer addresses are "randomized", so that the devices | |||
broadcast the same unique identifier in every location that they | do not broadcast the same unique identifier in every location that | |||
visit. | they visit. | |||
Of course, link layer "MAC" addresses are not the only way to | Of course, link-layer MAC (Media Access Control) addresses are not | |||
identify a device. As soon as it connects to a remote network, the | the only way to identify a device. As soon as it connects to a | |||
device may use DHCP and DHCPv6 to obtain network parameters. The | remote network, the device may use DHCP and DHCPv6 to obtain network | |||
analysis of DHCP and DHCPv6 options shows that parameters of these | parameters. The analysis of DHCP and DHCPv6 options shows that | |||
protocols can reveal identifiers of the device, negating the benefits | parameters of these protocols can reveal identifiers of the device, | |||
of link-layer address randomization. This is documented in detail in | negating the benefits of link-layer address randomization. This is | |||
[I-D.ietf-dhc-dhcp-privacy] and [I-D.ietf-dhc-dhcpv6-privacy]. The | documented in detail in [RFC7819] and [RFC7824]. The natural | |||
natural reaction is to restrict the number and values of such | reaction is to restrict the number and values of such parameters in | |||
parameters in order to minimize disclosure. | order to minimize disclosure. | |||
In the absence of a common standard, different system developers are | In the absence of a common standard, different system developers are | |||
likely to implement this minimization of disclosure in different | likely to implement this minimization of disclosure in different | |||
ways. Monitoring entities could then use the differences to identify | ways. Monitoring entities could then use the differences to identify | |||
the software version running on the device. The proposed anonymity | the software version running on the device. The proposed anonymity | |||
profile provides a common standard that minimizes information | profiles provide a common standard that minimizes information | |||
disclosure, including the disclosure of implementation identifiers. | disclosure, including the disclosure of implementation identifiers. | |||
1.1. Requirements | 1.1. Requirements | |||
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]. | |||
2. Application domain | 2. Application Domain | |||
Mobile nodes can be tracked using multiple identifiers, the most | Mobile nodes can be tracked using multiple identifiers, the most | |||
prominent being link-layer addresses, a.k.a. MAC addresses. For | prominent being link-layer addresses, a.k.a. MAC addresses. For | |||
example, when devices use Wi-Fi connectivity, they place the MAC | example, when devices use Wi-Fi connectivity, they place the MAC | |||
address in the header of all the packets that they transmit. | address in the header of all the packets that they transmit. | |||
Standard implementation of Wi-Fi use unique 48 bit link-layer | Standard implementations of Wi-Fi use unique 48-bit link-layer | |||
addresses, assigned to the devices according to procedures defined by | addresses, assigned to the devices according to procedures defined by | |||
IEEE 802. Even when the Wi-Fi packets are encrypted, the portion of | IEEE 802. Even when the Wi-Fi packets are encrypted, the portion of | |||
the header containing the addresses will be sent in clear text. | the header containing the addresses will be sent in cleartext. | |||
Tracking devices can "listen to the airwaves" to find out what | Tracking devices can "listen to the airwaves" to find out what | |||
devices are transmitting near them. | devices are transmitting near them. | |||
We can easily imagine that the MAC addresses can be correlated with | We can easily imagine that the MAC addresses can be correlated with | |||
other data, e.g., clear text names and cookies, to build a registry | other data, e.g., cleartext names and cookies, to build a registry | |||
linking MAC addresses to the identity of devices' owners. Once that | linking MAC addresses to the identity of devices' owners. Once that | |||
correlation is done, tracking the MAC address is sufficient to track | correlation is done, tracking the MAC address is sufficient to track | |||
individual people, even when all application data sent from the | individual people, even when all application data sent from the | |||
devices is encrypted. link-layer addresses can also be correlated | devices is encrypted. Link-layer addresses can also be correlated | |||
with IP addresses of devices, negating potential privacy benefits of | with IP addresses of devices, negating the potential privacy benefits | |||
IPv6 "privacy" addresses. Privacy advocates have reasons to be | of IPv6 "privacy" addresses. Privacy advocates have reasons to be | |||
concerned. | concerned. | |||
The obvious solution is to "randomize" the MAC address. Before | The obvious solution is to "randomize" the MAC address. Before | |||
connecting to a particular network, the device replaces the MAC | connecting to a particular network, the device replaces the MAC | |||
address with a randomly drawn 48 bit value. Link-layer address | address with a randomly drawn 48-bit value. Link-layer address | |||
randomization was successfully tried at the IETF in Honolulu in | randomization was successfully tried at the IETF meeting in Honolulu | |||
November 2014 [IETFMACRandom] and in following meetings | in November 2014 [IETFMACRandom] and in subsequent meetings | |||
[IETFTrialsAndMore]; it is studied in the IEEE 802 EC Privacy | [IETFTrialsAndMore]; it is studied in the IEEE 802 EC Privacy | |||
Recommendation Study Group [IEEE802PRSG]. However, we have to | Recommendation Study Group [IEEE802PRSG]. However, we have to | |||
consider the linkage between link-layer addresses, DHCP identifiers | consider the linkage between link-layer addresses, DHCP identifiers, | |||
and IP addresses. | and IP addresses. | |||
2.1. MAC address Randomization hypotheses | 2.1. MAC Address Randomization Hypotheses | |||
There is not yet an established standard for randomizing link-layer | There is not yet an established standard for randomizing link-layer | |||
addresses. Various prototypes have tried different strategies, such | addresses. Various prototypes have tried different strategies, | |||
as: | such as: | |||
Per connection: Configure a random link-layer address at the time of | Per connection: Configure a random link-layer address at the time of | |||
connecting to a network, e.g. to specific Wi-Fi SSID, and keep it | connecting to a network, e.g., to a specific Wi-Fi SSID (Service | |||
for the duration of the connection. | Set Identifier), and keep it for the duration of the connection. | |||
Per network: Same as "per connection," but always use the same link- | Per network: Same as "per connection", but always use the same | |||
layer address for the same network -- different of course from the | link-layer address for the same network -- different, of course, | |||
addresses used in other networks. | from the addresses used in other networks. | |||
Time interval: Change the link-layer address at regular time | Time interval: Change the link-layer address at regular time | |||
intervals. | intervals. | |||
In practice, there are many reasons to keep the link-layer address | In practice, there are many reasons to keep the link-layer address | |||
constant for the duration of a link-layer connection, as in the "per | constant for the duration of a link-layer connection, as in the | |||
connection" or "per network" variants. On Wi-Fi networks, changing | "per connection" or "per network" variants. In Wi-Fi networks, | |||
the link-layer address requires dropping the existing Wi-Fi | changing the link-layer address requires dropping the existing Wi-Fi | |||
connection and then re-establishing it, which implies repeating the | connection and then re-establishing it, which implies repeating the | |||
connection process and associated procedures. The IP addresses will | connection process and associated procedures. The IP addresses will | |||
change, which means that all required TCP connections will have to be | change, which means that all required TCP connections will have to be | |||
re-established. If the network access is provided through a NAT, | re-established. If the network access is provided through a NAT, | |||
changing IP address also means that the NAT traversal procedures will | changing IP addresses also means that the NAT traversal procedures | |||
have to be restarted. This means a lot of disruption. At the same | will have to be restarted. This means a lot of disruption. At the | |||
time, an observer on the network will easily notice that a station | same time, an observer on the network will easily notice that a | |||
left, another came in just after that, and that the new one appears | station left, another came in just after that, and the new one | |||
to be communicating with the same set of IP addresses as the old one. | appears to be communicating with the same set of IP addresses as the | |||
This provides for easy correlation. | old one. This provides for easy correlation. | |||
The anonymity profile pretty much assumes that the link-layer address | The anonymity profiles pretty much assume that the link-layer address | |||
randomization follows the "per connection" or "per network" | randomization follows the "per connection" or "per network" | |||
strategies, or a variant of the "time interval" strategy in which the | strategies, or a variant of the "time interval" strategy in which the | |||
interval has about the same duration as the average connection. | interval has about the same duration as the average connection. | |||
2.2. MAC address Randomization and DHCP | 2.2. MAC Address Randomization and DHCP | |||
From a privacy point of view, it is clear that link-layer address, IP | From a privacy point of view, it is clear that the link-layer | |||
address and DHCP identifier shall evolve in synchrony. For example, | address, IP address, and DHCP identifier shall evolve in synchrony. | |||
if the link-layer address changes and the DHCP identifier stays | For example, if the link-layer address changes and the DHCP | |||
constant, then it is really easy to correlate old and new link-layer | identifier stays constant, then it is really easy to correlate old | |||
addresses, either by listening to DHCP traffic or by observing that | and new link-layer addresses, either by listening to DHCP traffic or | |||
the IP address remains constant, since it is tied to the DHCP | by observing that the IP address remains constant, since it is tied | |||
identifier. Conversely, if the DHCP identifier changes but the link- | to the DHCP identifier. Conversely, if the DHCP identifier changes | |||
layer address remains constant, the old and new identifiers and | but the link-layer address remains constant, the old and new | |||
addresses can be correlated by listening to L2 traffic. The | identifiers and addresses can be correlated by listening to L2 | |||
procedures documented in the following sections construct DHCP | traffic. The procedures documented in the following sections | |||
identifiers from the current link-layer address, automatically | construct DHCP identifiers from the current link-layer address, | |||
providing for this synchronization. | automatically providing for this synchronization. | |||
The proposed anonymity profiles solve this synchronization issues by | The proposed anonymity profiles solve this synchronization issue by | |||
deriving most identifiers from the link-layer address, and generally | deriving most identifiers from the link-layer address and by | |||
by making sure that DHCP parameter values do not remain constant | generally making sure that DHCP parameter values do not remain | |||
after an address change. | constant after an address change. | |||
2.3. Radio fingerprinting | 2.3. Radio Fingerprinting | |||
MAC address randomization solves the trivial monitoring problem in | MAC address randomization solves the trivial monitoring problem in | |||
which someone just uses a Wi-Fi scanner and records the MAC addresses | which someone just uses a Wi-Fi scanner and records the MAC addresses | |||
seen on the air. DHCP anonymity solves the more elaborated scenario | seen on the air. DHCP anonymity solves the more elaborate scenario | |||
in which someone monitor link-layer addresses and identities used in | in which someone monitors link-layer addresses and identities used in | |||
DHCP at the access point or DHCP server. But these are not the only | DHCP at the access point or DHCP server. But these are not the only | |||
ways to track a mobile device. | ways to track a mobile device. | |||
Radio fingerprinting is a process that identifies a radio transmitter | Radio fingerprinting is a process that identifies a radio transmitter | |||
by the unique "fingerprint" of its signal transmission, i.e., the | by the unique "fingerprint" of its signal transmission, i.e., the | |||
tiny differences caused by minute imperfections of the radio | tiny differences caused by minute imperfections of the radio | |||
transmission hardware. This can be applied to diverse types of | transmission hardware. This can be applied to diverse types of | |||
radios, including Wi-Fi as described for example in | radios, including Wi-Fi as described, for example, in | |||
[WiFiRadioFingerprinting]. No amount of link-layer address | [WiFiRadioFingerprinting]. No amount of link-layer address | |||
randomization will protect against such techniques. Protections may | randomization will protect against such techniques. Protections may | |||
exist, but they are outside the scope of the present document. | exist, but they are outside the scope of the present document. | |||
On the other hand, we should not renounce randomization just because | On the other hand, we should not renounce randomization just because | |||
radio fingerprinting exists. The radio fingerprinting techniques are | radio fingerprinting exists. The radio fingerprinting techniques are | |||
harder to deploy than just recording link-layer addresses with a | harder to deploy than just recording link-layer addresses with a | |||
scanner. They can only track devices for which the fingerprint are | scanner. Such techniques can only track devices for which the | |||
known, and thus have a narrower scope of application than mass | fingerprints are known and thus have a narrower scope of application | |||
monitoring of addresses and DHCP parameters. | than mass monitoring of addresses and DHCP parameters. | |||
2.4. Operating system fingerprinting | 2.4. Operating System Fingerprinting | |||
When a standard like DHCP allows for multiple options, different | When a standard like DHCP allows for multiple options, different | |||
implementers will make different choices for the options that they | implementers will make different choices for the options that they | |||
support or the values they chose for the options. Conversely, | support or the values they choose for the options. Conversely, | |||
monitoring the options and values present in DHCP messages reveals | monitoring the options and values present in DHCP messages reveals | |||
these differences and allows for "operating system fingerprinting," | these differences and allows for "operating system fingerprinting", | |||
i.e., finding the type and version of software that a particular | i.e., finding the type and version of software that a particular | |||
device is running. Finding these versions provides some information | device is running. Finding these versions provides some information | |||
about the device identity, and thus goes against the goal of | about the device's identity and thus goes against the goal of | |||
anonymity. | anonymity. | |||
The design of the anonymity profiles attempts to minimize the number | The design of the anonymity profiles attempts to minimize the number | |||
of options and the choice of values, in order to reduce the | of options and the choice of values, in order to reduce the | |||
possibilities of operating system fingerprinting. | possibilities of operating system fingerprinting. | |||
2.5. No anonymity profile identification | 2.5. No Anonymity Profile Identification | |||
Reviewers of the anonymity profiles have sometimes suggested adding | Reviewers of the anonymity profiles have sometimes suggested adding | |||
an option to explicitly identify the profiles as "using the anonymity | an option to explicitly identify the profiles as "using the anonymity | |||
option." One suggestion is that if the client wishes to remain | option". One suggestion is that the client tell the server about its | |||
anonymous, it would be good if the client told the server about that | desire to remain anonymous, so that a willing server could cooperate | |||
in case the server is willing to co-operate. Another possibility | and protect the client's privacy. Another possibility would be to | |||
would be to use specific privacy-oriented construct, such as for | use a specific privacy-oriented construct, such as, for example, a | |||
example a new type of DUID for a temporary DUID that would be | new type of DHCP Unique Identifier (DUID) for a temporary DUID that | |||
changing over time. | would be changing over time. | |||
This is not workable in a large number of cases as it is possible | This is not workable in a large number of cases, as it is possible | |||
that the network operator (or other entities that have access to the | that the network operator (or other entities that have access to the | |||
operator's network) might be actively participating in surveillance | operator's network) might be actively participating in surveillance | |||
and anti-privacy, willingly or not. Declaring a preference for | and anti-privacy, willingly or not. Declaring a preference for | |||
anonymity is a bit like walking around with a Guy Fawkes mask. (See | anonymity is a bit like walking around with a Guy Fawkes mask. (See | |||
[GuyFawkesMask] for an explanation of this usage.) When anonymity is | [GuyFawkesMask] for an explanation of this usage.) When anonymity is | |||
required, it is generally not a good idea to stick out of the crowd. | required, it is generally not a good idea to stick out of the crowd. | |||
Simply revealing the desire for privacy, could cause the attacker to | Simply revealing the desire for privacy could cause the attacker to | |||
react by triggering additional surveillance or monitoring mechanisms. | react by triggering additional surveillance or monitoring mechanisms. | |||
Therefore, we feel that it is preferable to not disclose one's desire | ||||
Therefore we feel that it is preferable to not disclose one's desire | ||||
for privacy. | for privacy. | |||
This preference leads to some important implications. In particular, | This preference leads to some important implications. In particular, | |||
we make an effort to make the mitigation techniques difficult to | we make an effort to make the mitigation techniques difficult to | |||
distinguish from regular client behaviors, if at all possible. | distinguish from regular client behaviors, if at all possible. | |||
2.6. Using the anonymity profiles | 2.6. Using the Anonymity Profiles | |||
There are downsides to randomizing link-layer addresses and DHCP | There are downsides to randomizing link-layer addresses and DHCP | |||
identifiers. By definition, randomization will break management | identifiers. By definition, randomization will break management | |||
procedures that rely on tracking link-layer addresses. Even if this | procedures that rely on tracking link-layer addresses. Even if this | |||
is not too much of a concern, we have to be worried about the | is not too much of a concern, we have to be worried about the | |||
frequency of link-layer address randomization. Suppose for example | frequency of link-layer address randomization. Suppose, for example, | |||
that many devices would get new random link-layer addresses at short | that many devices would get new random link-layer addresses at short | |||
intervals, maybe every few minutes. This would generate new DHCP | intervals, maybe every few minutes. This would generate new DHCP | |||
requests in rapid succession, with a high risk of exhausting DHCPv4 | requests in rapid succession, with a high risk of exhausting DHCPv4 | |||
address pools. Even with IPv6, there would still be a risk of | address pools. Even with IPv6, there would still be a risk of | |||
increased neighbor discovery traffic, and bloating of various address | increased neighbor discovery traffic and bloating of various address | |||
tables. Implementers will have to be cautious when programming | tables. Implementers will have to be cautious when programming | |||
devices to use randomized MAC addresses. They will have to carefully | devices to use randomized MAC addresses. They will have to carefully | |||
chose the frequency with which such addresses will be renewed. | choose the frequency with which such addresses will be renewed. | |||
This document only provides guidelines for using DHCP when clients | This document only provides guidelines for using DHCP when clients | |||
care about privacy. We assume that the request for anonymity is | care about privacy. We assume that the request for anonymity is | |||
materialized by the assignment of a randomized link-layer address to | materialized by the assignment of a randomized link-layer address to | |||
the network interface. Once that decision is made, the following | the network interface. Once that decision is made, the following | |||
guidelines will avoid leakage of identity in DHCP parameters or in | guidelines will avoid leakage of identity in DHCP parameters or in | |||
assigned addresses. | assigned addresses. | |||
There may be rare situations where the clients want anonymity to | There may be rare situations where the clients want to remain | |||
attackers but not to their DHCP server. These clients should still | anonymous to attackers but not to the DHCP server. These clients | |||
use link-layer address randomization to hide from observers, and some | should still use link-layer address randomization to hide from | |||
form of encrypted communication to the DHCP server. This scenario is | observers, as well as some form of encrypted communication to the | |||
out of scope for this document. | DHCP server. This scenario is out of scope for this document. | |||
To preserve anonymity, the clients need to not use stable values for | To preserve anonymity, the clients need to not use stable values for | |||
the client identifiers. This is clearly a tradeoff, because a stable | the client identifiers. This is clearly a trade-off, because a | |||
client identifier guarantees that the client will receive consistent | stable client identifier guarantees that the client will receive | |||
parameters over time. An example is given in [RFC7618], where the | consistent parameters over time. An example is given in [RFC7618], | |||
client identifier is used to guarantee that the same client will | where the client identifier is used to guarantee that the same client | |||
always get the same combination of IP address and port range. Static | will always get the same combination of IP address and port range. | |||
clients benefit most from stable parameters, and can often be already | Static clients benefit most from stable parameters and often can | |||
identified by physical connection layer parameters. These static | already be identified by physical-connection-layer parameters. These | |||
clients will normally not use the anonymity profile. Mobile clients, | static clients will normally not use the anonymity profiles. Mobile | |||
in contrast, have the option of using the anonymity profile in | clients, in contrast, have the option of using the anonymity profiles | |||
conjunction with [RFC7618] if they are more concerned with privacy | in conjunction with [RFC7618] if they are more concerned with privacy | |||
protection than with stable parameters. | protection than with stable parameters. | |||
2.7. What about privacy for DHCP servers | 2.7. What about privacy for DHCP servers? | |||
This document only provides recommendations for DHCP clients. The | This document only provides recommendations for DHCP clients. The | |||
main target are DHCP clients used in mobile devices. Such devices | main targets are DHCP clients used in mobile devices. Such devices | |||
are a tempting target for various monitoring systems, and providing | are tempting targets for various monitoring systems, so there is an | |||
them with a simple anonymity solution is urgent. We can argue that | urgent need to provide them with a simple anonymity solution. We can | |||
some mobile devices embed DHCP servers, and that providing solutions | argue that some mobile devices embed DHCP servers and that providing | |||
for such devices is also quite important. Two plausible examples | solutions for such devices is also quite important. Two plausible | |||
would be a DHCP server for a car network, or a DHCP server for a | examples would be a DHCP server for a car network and a DHCP server | |||
mobile hot spot. However, mobile servers get a lot of privacy | for a mobile hot spot. However, mobile servers get a lot of privacy | |||
protection through the use of access control and link layer | protection through the use of access control and link-layer | |||
encryption. Servers may disclose information to clients through | encryption. Servers may disclose information to clients through | |||
DHCP, but they normally only do that to clients that have passed the | DHCP, but they normally only do that to clients that have passed the | |||
link-layer access control and have been authorized to use the network | link-layer access control and have been authorized to use the network | |||
services. This arguably makes solving the server problem less urgent | services. This arguably makes solving the server problem less urgent | |||
than solving the client problem. | than solving the client problem. | |||
Server privacy issues are presented in [I-D.ietf-dhc-dhcp-privacy] | Server privacy issues are presented in [RFC7819] and [RFC7824]. | |||
and [I-D.ietf-dhc-dhcpv6-privacy]. Mitigation of these issues is | Mitigation of these issues is left for further study. | |||
left to further study. | ||||
3. Anonymity profile for DHCPv4 | 3. Anonymity Profile for DHCPv4 | |||
Clients using the DHCPv4 anonymity profile limit the disclosure of | Clients using the DHCPv4 anonymity profile limit the disclosure of | |||
information by controlling the header parameters and by limiting the | information by controlling the header parameters and by limiting the | |||
number and values of options. The number of options depend on the | number and values of options. The number of options depends on the | |||
specific DHCP message: | specific DHCP message: | |||
DHCPDISCOVER: The anonymized DHCPDISCOVER messages MUST contain the | DHCPDISCOVER: The anonymized DHCPDISCOVER messages MUST contain the | |||
Message Type, MAY contain the Client Identifier, and MAY contain | Message Type option, MAY contain the Client Identifier option, and | |||
the Parameter Request List options. It SHOULD NOT contain any | MAY contain the Parameter Request List option. It SHOULD NOT | |||
other option. | contain any other option. | |||
DHCPREQUEST: The anonymized DHCPREQUEST messages MUST contain the | DHCPREQUEST: The anonymized DHCPREQUEST messages MUST contain the | |||
Message Type, MAY contain the Client Identifier, and MAY contain | Message Type option, MAY contain the Client Identifier option, and | |||
the Parameter Request List options. If the message is in response | MAY contain the Parameter Request List option. If the message is | |||
to a DHCPOFFER, it MUST contain the corresponding Server | in response to a DHCPOFFER, it MUST contain the corresponding | |||
Identifier option and the Requested IP address. If the message is | Server Identifier option and the Requested IP address option. If | |||
not in response to a DHCPOFFER, it MAY contain a Requested IP | the message is not in response to a DHCPOFFER, it MAY contain a | |||
address as explained in Section 3.3. It SHOULD NOT contain any | Requested IP address option as explained in Section 3.3. It | |||
other option. | SHOULD NOT contain any other option. | |||
DHCPDECLINE: The anonymized DHCPDECLINE messages MUST contain the | DHCPDECLINE: The anonymized DHCPDECLINE messages MUST contain the | |||
Message Type, Server Identifier, and Requested IP address options, | Message Type option, the Server Identifier option, and the | |||
and MAY contain the Client Identifier options. | Requested IP address option; and MAY contain the Client Identifier | |||
option. | ||||
DHCPRELEASE: The anonymized DHCPRELEASE messages MUST contain the | DHCPRELEASE: The anonymized DHCPRELEASE messages MUST contain the | |||
Message Type and Server Identifier options, and MAY contain the | Message Type option and the Server Identifier option, and MAY | |||
Client Identifier option. | contain the Client Identifier option. | |||
DHCPINFORM: The anonymized DHCPINFORM messages MUST contain the | DHCPINFORM: The anonymized DHCPINFORM messages MUST contain the | |||
Message Type, and MAY contain the Client Identifier and Parameter | Message Type option, MAY contain the Client Identifier option, and | |||
Request List options. It SHOULD NOT contain any other option. | MAY contain the Parameter Request List option. It SHOULD NOT | |||
contain any other option. | ||||
Header fields and option values SHOULD be set in accordance with the | Header fields and option values SHOULD be set in accordance with the | |||
DHCP specification, but some header fields and option values SHOULD | DHCP specification, but some header fields and option values SHOULD | |||
be constructed per the following guidelines. | be constructed per the following guidelines. | |||
The inclusion of HostName and FQDN options in DHCPDISCOVER, | The inclusion of the Host Name and Fully Qualified Domain Name (FQDN) | |||
DHCPREQUEST or DHCPINFORM messages is discussed in Section 3.7 and | options in DHCPDISCOVER, DHCPREQUEST, or DHCPINFORM messages is | |||
Section 3.8. | discussed in Sections 3.7 and 3.8. | |||
3.1. Avoiding fingerprinting | 3.1. Avoiding Fingerprinting | |||
There are many choices for implementing DHCPv4 messages. Clients can | There are many choices for implementing DHCPv4 messages. Clients can | |||
choose to transmit a specific set of options, pick particular | choose to transmit a specific set of options, pick a particular | |||
encoding for these options, and transmit options in different orders. | encoding for these options, and transmit options in different orders. | |||
These choices can be use to fingerprint the client. | These choices can be used to fingerprint the client. | |||
The following sections provide guidance on the encoding of options | The following sections provide guidance on the encoding of options | |||
and fields within the packets. However, this guidance alone may not | and fields within the packets. However, this guidance alone may not | |||
be sufficient to prevent fingerprinting from revealing information, | be sufficient to prevent fingerprinting from revealing the device | |||
such as the device type, vendor type or OS type and in some cases | type, the vendor name, or the OS type and specific version. | |||
specific version, or from revealing whether the client is using the | Fingerprinting may also reveal whether the client is using the | |||
anonymity profile. | anonymity profile. | |||
The client intending to protect its privacy SHOULD limit the subset | The client intending to protect its privacy SHOULD limit the subset | |||
of options sent in messages to the subset listed in the remaining | of options sent in messages to the subset listed in the remaining | |||
subsections. | subsections. | |||
The client intending to protect its privacy SHOULD randomize options | The client intending to protect its privacy SHOULD randomize the | |||
order before sending any DHCPv4 message. If this random ordering | ordering of options before sending any DHCPv4 message. If this | |||
cannot be implemented, the client MAY arrange options by increasing | random ordering cannot be implemented, the client MAY order the | |||
order of option codes. | options by option code number (lowest to highest). | |||
3.2. Client IP address field | 3.2. Client IP Address Field | |||
Four bytes in the header of the DHCP messages carry the "Client IP | Four octets in the header of the DHCP messages carry the "Client IP | |||
address" (ciaddr) as defined in [RFC2131]. In DHCP, this field is | address" (ciaddr) as defined in [RFC2131]. In DHCP, this field is | |||
used by the clients to indicate the address that they used | used by the clients to indicate the address that they used | |||
previously, so that as much as possible the server can allocate them | previously, so that as much as possible the server can allocate the | |||
the same address. | same address to them. | |||
There is very little privacy implication of sending this address in | There are very few privacy implications related to sending this | |||
the DHCP messages, except in one case, when connecting to a different | address in the DHCP messages, except in the case of connecting to a | |||
network than the last network connected. If the DHCP client somehow | different network than the last network connected to previously. If | |||
repeated the address used in a previous network attachment, | the DHCP client somehow repeated the address used in a previous | |||
monitoring services might use the information to tie the two network | network attachment, monitoring services might use the information to | |||
locations. DHCP clients SHOULD ensure that the field is cleared when | tie the two network locations. DHCP clients SHOULD ensure that the | |||
they know that the network attachment has changed, and in particular | field is cleared when they know that the network attachment has | |||
if the link layer address is reset by the device's administrator. | changed, particularly if the link-layer address is reset by a | |||
device's administrator. | ||||
The clients using the anonymity profile MUST NOT include in the | The clients using the anonymity profile MUST NOT include in the | |||
message a Client IP Address that has been obtained with a different | message a Client IP address that has been obtained with a different | |||
link-layer address. | link-layer address. | |||
3.3. Requested IP address option | 3.3. Requested IP Address Option | |||
The Requested IP address option is defined in [RFC2132] with code 50. | The Requested IP address option is defined in [RFC2132] with code 50. | |||
It allows the client to request that a particular IP address be | It allows the client to request that a particular IP address be | |||
assigned. The option is mandatory in some protocol messages per | assigned. This option is mandatory in some protocol messages per | |||
[RFC2131], for example when a client selects to use an address | [RFC2131] -- for example, when a client selects an address offered by | |||
offered by a server. However, this option is not mandatory in the | a server. However, this option is not mandatory in the DHCPDISCOVER | |||
DHCPDISCOVER message. It is simply a convenience, an attempt to | message. It is simply a convenience -- an attempt to regain the same | |||
regain the same IP address that was used in a previous connection. | IP address that was used in a previous connection. Doing so entails | |||
Doing so entails the risk of disclosing an IP address used by the | the risk of disclosing an IP address used by the client at a previous | |||
client at a previous location, or with a different link-layer | location or with a different link-layer address. This risk exists | |||
address. The risk exists for all forms of IP addresses, public or | for all forms of IP addresses, public or private, as some private | |||
private, as some private addresses may be used in a wide scope, e.g. | addresses may be used in a wide scope, e.g., when an Internet Service | |||
when an Internet Service Provider is using Network Address | Provider is using NAT. | |||
Translation. | ||||
When using the anonymity profile, clients SHOULD NOT use the | When using the anonymity profile, clients SHOULD NOT use the | |||
Requested IP address option in DHCPDISCOVER messages. They MUST use | Requested IP address option in DHCPDISCOVER messages. They MUST use | |||
the option when mandated by the DHCP protocol, for example in | the option when mandated by DHCP -- for example, in DHCPREQUEST | |||
DHCPREQUEST messages. | messages. | |||
There are scenarios in which a client connecting to a network | There are scenarios in which a client connecting to a network | |||
remembers previously allocated address, i.e. is in the INIT-REBOOT | remembers a previously allocated address, i.e., when it is in the | |||
state. In that state, the client that is concerned with privacy | INIT-REBOOT state. In that state, any client that is concerned with | |||
SHOULD perform a complete four way handshake starting with | privacy SHOULD perform a complete four-way handshake, starting with a | |||
DHCPDISCOVER to obtain a new address lease. If the client can | DHCPDISCOVER, to obtain a new address lease. If the client can | |||
ascertain that this is exactly the same network to which it was | ascertain that this is exactly the same network to which it was | |||
previously connected, and if the link layer address did not change, | previously connected, and if the link-layer address did not change, | |||
the client MAY issue a DHCPREQUEST to try reclaim the current | the client MAY issue a DHCPREQUEST to try to reclaim the current | |||
address. | address. | |||
3.4. Client hardware address field | 3.4. Client Hardware Address Field | |||
Sixteen bytes in the header of the DHCP messages carry the "Client | Sixteen octets in the header of the DHCP messages carry the "Client | |||
hardware address" (chaddr) as defined in [RFC2131]. The presence of | hardware address" (chaddr) as defined in [RFC2131]. The presence of | |||
this address is necessary for the proper operation of the DHCP | this address is necessary for the proper operation of the DHCP | |||
service. | service. | |||
Hardware addresses, called "link layer address" in many RFCs, can be | Hardware addresses, called "link-layer addresses" in many RFCs, can | |||
used to uniquely identify a device, especially if they follow the | be used to uniquely identify a device, especially if they follow the | |||
IEEE 802 recommendations. If the hardware address is reset to a new | IEEE 802 recommendations. If the hardware address is reset to a new | |||
value, or randomized, the DHCP client SHOULD use the new randomized | randomized value, the DHCP client SHOULD use the new randomized value | |||
value in the DHCP messages. | in the DHCP messages. | |||
3.5. Client Identifier Option | 3.5. Client Identifier Option | |||
The client identifier option is defined in [RFC2132] with option code | The Client Identifier option is defined in [RFC2132] with | |||
61. It is discussed in detail in [RFC4361]. The purpose of the | option code 61. It is discussed in detail in [RFC4361]. The purpose | |||
client identifier option is to identify the client in a manner | of the Client Identifier option is to identify the client in a manner | |||
independent of the link layer address. This is particularly useful | independent of the link-layer address. This is particularly useful | |||
if the DHCP server is expected to assign the same address to the | if the DHCP server is expected to assign the same address to the | |||
client after a network attachment is swapped and the link layer | client after a network attachment is swapped and the link-layer | |||
address changes. It is also useful when the same node issues | address changes. It is also useful when the same node issues | |||
requests through several interfaces, and expects the DHCP server to | requests through several interfaces and expects the DHCP server to | |||
provide consistent configuration data over multiple interfaces. | provide consistent configuration data over multiple interfaces. | |||
The considerations for hardware independence and strong client | The considerations for hardware independence and strong client | |||
identity have an adverse effect on the privacy of mobile clients, | identity have an adverse effect on the privacy of mobile clients, | |||
because the hardware-independent unique identifier obviously enables | because the hardware-independent unique identifier obviously enables | |||
very efficient tracking of the client's movements. One option would | very efficient tracking of the clients' movements. One option would | |||
be to not transmit this option at all, but this may affect | be to not transmit this option at all, but this may affect | |||
interoperability and will definitely mark the client as requesting | interoperability and will definitely mark the client as requesting | |||
anonymity, exposing it to the risks mentioned in Section 2.5. | anonymity, exposing it to the risks mentioned in Section 2.5. | |||
The recommendations in [RFC4361] are very strong, stating for example | The recommendations in [RFC4361] are very strong, stating, for | |||
that "DHCPv4 clients MUST NOT use client identifiers based solely on | example, that "DHCPv4 clients MUST NOT use client identifiers based | |||
layer two addresses that are hard-wired to the layer two device | solely on layer two addresses that are hard-wired to the layer two | |||
(e.g., the Ethernet MAC address)." These strong recommendations are | device (e.g., the Ethernet MAC address)." These strong | |||
in fact a tradeoff between ease of management and privacy, and the | recommendations are in fact a trade-off between ease of management | |||
tradeoff should depend on the circumstances. | and privacy, and the trade-off should depend on the circumstances. | |||
In contradiction to [RFC4361], when using the anonymity profile, DHCP | In contradiction to [RFC4361], when using the anonymity profile, DHCP | |||
clients MUST use client identifiers based solely on the link layer | clients MUST use client identifiers based solely on the link-layer | |||
address that will be used in the underlying connection. This will | address that will be used in the underlying connection. This will | |||
ensure that the DHCP client identifier does not leak any information | ensure that the DHCP client identifier does not leak any information | |||
that is not already available to entities monitoring the network | that is not already available to entities monitoring the network | |||
connection. It will also ensure that a strategy of randomizing the | connection. It will also ensure that a strategy of randomizing the | |||
link layer address will not be nullified by the Client Identifier | link-layer address will not be nullified by the Client Identifier | |||
Option. | option. | |||
There are usages of DHCP where the underlying connection is a point | There are usages of DHCP where the underlying connection is a | |||
to point link, in which case there is no link layer address available | point-to-point link, in which case there is no link-layer address | |||
to construct a non-revealing identifier. If anonymity is desired in | available to construct a non-revealing identifier. If anonymity is | |||
such networks, the client SHOULD pick a random identifier that is | desired in such networks, the client SHOULD pick a random identifier | |||
highly likely to be unique to the current link, using for example a | that is highly likely to be unique to the current link, using, for | |||
combination of a local secret and an identifier of the connection. | example, a combination of a local secret and an identifier of the | |||
The algorithm for combining secret and identifiers described in | connection. The algorithm for combining secrets and identifiers, as | |||
section 5 of [RFC7217] solves a similar problem. The criteria for | described in Section 5 of [RFC7217], solves a similar problem. The | |||
the generation of random numbers are stated in [RFC4086]. | criteria for the generation of random numbers are stated | |||
in [RFC4086]. | ||||
3.6. Parameter Request List Option | 3.6. Parameter Request List Option | |||
The Parameter Request List (PRL) option is defined in [RFC2132] with | The Parameter Request List (PRL) option is defined in [RFC2132] with | |||
option code 55. It list the parameters requested from the server by | option code 55. It lists the parameters requested from the server by | |||
the client. Different implementations request different | the client. Different implementations request different parameters. | |||
parameters.[RFC2132] specifies that "the client MAY list the options | [RFC2132] specifies that "the client MAY list the options in order of | |||
in order of preference." It practice, this means that different | preference." In practice, this means that different client | |||
client implementations will request different parameters, in | implementations will request different parameters, in different | |||
different orders. | orders. | |||
The choice of option numbers and the specific ordering of option | The choice of option numbers and the specific ordering of option | |||
numbers in the Parameter Request List can be used to fingerprint the | numbers in the PRL can be used to fingerprint the client. This may | |||
client. This may not reveal the identity of a client, but may | not reveal the identity of a client but may provide additional | |||
provide additional information, such as the device type, vendor type | information such as the device type, the vendor name, or the OS type | |||
or OS type and in some cases specific version. | and specific version. | |||
The client willing to protect its privacy SHOULD only request a | The client intending to protect its privacy SHOULD only request a | |||
minimal number of options in PRL, and SHOULD also randomly shuffle | minimal number of options in the PRL and SHOULD also randomly shuffle | |||
the option codes order in PRL. If this random ordering cannot be | the ordering of option codes in the PRL. If this random ordering | |||
implemented, the client MAY order option codes order in PRL by | cannot be implemented, the client MAY order the option codes in the | |||
increasing order of option codes. | PRL by option code number (lowest to highest). | |||
3.7. Host Name Option | 3.7. Host Name Option | |||
The Host Name option is defined in [RFC2132] with option code 12. | The Host Name option is defined in [RFC2132] with option code 12. | |||
Depending on implementations, the option value can carry either a | Depending on implementations, the option value can carry either an | |||
fully qualified domain name such as "node1984.example.com," or a | FQDN such as "node1984.example.com" or a simple host name such as | |||
simple host name such as "node1984." The host name is commonly used | "node1984". The host name is commonly used by the DHCP server to | |||
by the DHCP server to identify the host, and also to automatically | identify the host and also to automatically update the address of the | |||
update the address of the host in local name services. | host in local name services. | |||
Fully qualified domain names are obviously unique identifiers, but | FQDNs are obviously unique identifiers, but even simple host names | |||
even simple host names can provide a significant amount of | can provide a significant amount of information on the identity of | |||
information on the identity of the device. They are typically chosen | the device. They are typically chosen to be unique in the context | |||
to be unique in the context where the device is most often used. If | where the device is most often used. In a context that contains a | |||
that context is wide enough, in a large company or in a big | substantial number of devices, e.g., in a large company or a big | |||
university, the host name will be a pretty good identifier of the | university, the host name will be a pretty good identifier of the | |||
device. Monitoring services could use that information in | device, due to the specificity required to ensure uniqueness. | |||
conjunction with traffic analysis and quickly derive the identity of | Monitoring services could use that information in conjunction with | |||
the device's owner. | traffic analysis and quickly derive the identity of the device's | |||
owner. | ||||
When using the anonymity profile, DHCP clients SHOULD NOT send the | When using the anonymity profile, DHCP clients SHOULD NOT send the | |||
host name option. If they chose to send the option, DHCP clients | Host Name option. If they choose to send the option, DHCP clients | |||
MUST always send a non-qualified host name instead of a fully | MUST always send a non-qualified host name instead of an FQDN and | |||
qualified domain name, and MUST obfuscate the host name value. | MUST obfuscate the host name value. | |||
There are many ways to obfuscate a host name. The construction rules | There are many ways to obfuscate a host name. The construction rules | |||
SHOULD guarantee that a different host name is generated each time | SHOULD guarantee that a different host name is generated each time | |||
the link-layer address changes and that the obfuscated host name will | the link-layer address changes and that the obfuscated host name will | |||
not reveal the underlying link layer address. The construction | not reveal the underlying link-layer address. The construction | |||
SHOULD generate names that are unique enough to minimize collisions | SHOULD generate names that are unique enough to minimize collisions | |||
in the local link. Clients MAY use the following algorithm: compute | in the local link. Clients MAY use the following algorithm: compute | |||
a secure hash of a local secret and of the link layer address that | a secure hash of a local secret and of the link-layer address that | |||
will be used in the underlying connection, and then use the | will be used in the underlying connection, and then use the | |||
hexadecimal representation of the first 6 bytes of the hash as the | hexadecimal representation of the first 6 octets of the hash as the | |||
obfuscated host name. | obfuscated host name. | |||
There is a potential downside to having a specific name pattern for | The algorithm described in the previous paragraph generates an easily | |||
hosts that require anonymity, as explained in Section 2.5. For this | recognizable pattern. There is a potential downside to having such a | |||
specific name pattern for hosts that require anonymity (the "sticking | ||||
out of the crowd" principle), as explained in Section 2.5. For this | ||||
reason, the above algorithm is just a suggestion. | reason, the above algorithm is just a suggestion. | |||
3.8. Client FQDN Option | 3.8. Client FQDN Option | |||
The Client FQDN option is defined in [RFC4702] with option code 81. | The Client FQDN option is defined in [RFC4702] with option code 81. | |||
The option allows the DHCP clients to advertise to the DHCP server | This option allows the DHCP clients to advertise to the DHCP server | |||
their fully qualified domain name (FQDN) such as | their FQDN, such as "mobile.example.com". This would allow the DHCP | |||
"mobile.example.com." This would allow the DHCP server to update in | server to update in the DNS the PTR record for the IP address | |||
the DNS the PTR record for the IP address allocated to the client. | allocated to the client. Depending on circumstances, either the DHCP | |||
Depending on circumstances, either the DHCP client or the DHCP server | client or the DHCP server could update in the DNS the A record for | |||
could update in the DNS the A record for the FQDN of the client. | the FQDN of the client. | |||
Obviously, this option uniquely identifies the client, exposing it to | Obviously, this option uniquely identifies the client, exposing it to | |||
the DHCP server or to anyone listening to DHCP traffic. In fact, if | the DHCP server or to anyone listening to DHCP traffic. In fact, if | |||
the DNS record is updated, the location of the client becomes visible | the DNS record is updated, the location of the client becomes visible | |||
to anyone with DNS lookup capabilities. | to anyone with DNS lookup capabilities. | |||
When using the anonymity profile, DHCP clients SHOULD NOT include the | When using the anonymity profile, DHCP clients SHOULD NOT include the | |||
Client FQDN option in their DHCP requests. Alternatively, they MAY | Client FQDN option in their DHCP requests. Alternatively, they MAY | |||
include a special purpose FQDN using the same hostname as in the Host | include a special-purpose FQDN using the same host name as in the | |||
Name Option, with a suffix matching the connection-specific DNS | Host Name option, with a suffix matching the connection-specific DNS | |||
suffix being advertised by that DHCP server. Having a name in the | suffix being advertised by that DHCP server. Having a name in the | |||
DNS allows working with legacy systems that require one to be there, | DNS allows working with legacy systems that require one to be there, | |||
e.g., by verifying a forward and reverse lookup succeeds with the | e.g., by verifying that a forward and reverse lookup succeeds with | |||
same result. | the same result. | |||
3.9. UUID/GUID-based Client Identifier Option | 3.9. UUID/GUID-Based Client Machine Identifier Option | |||
The UUID/GUID-based Client Machine Identifier option is defined in | The UUID/GUID-based (where "UUID" means "Universally Unique | |||
[RFC4578], with option code 97. The option is part of a set of | Identifier" and "GUID" means "Globally Unique Identifier") | |||
options for Intel Preboot eXecution Environment (PXE). The purpose | Client Machine Identifier option is defined in [RFC4578] with | |||
of the PXE system is to perform management functions on a device | option code 97. This option is part of a set of options for the | |||
before its main OS is operational. The Client Machine Identifier | Intel Preboot eXecution Environment (PXE). The purpose of the PXE | |||
carries a 16-octet Globally Unique Identifier (GUID), which uniquely | system is to perform management functions on a device before its main | |||
identifies the device. | OS is operational. The Client Machine Identifier carries a 16-octet | |||
GUID that uniquely identifies the device. | ||||
The PXE system is clearly designed for devices operating in a | The PXE system is clearly designed for devices operating in a | |||
controlled environment. The main usage of the PXE system is to | controlled environment. The main usage of the PXE system is to | |||
install a new version of the operating system through a high speed | install a new version of the operating system through a high-speed | |||
Ethernet connection. The process is typically controlled from the | Ethernet connection. The process is typically controlled from the | |||
user interface during the boot process. Common sense seems to | user interface during the boot process. Common sense seems to | |||
dictate that getting a new operating system from an unauthenticated | dictate that getting a new operating system from an unauthenticated | |||
server at an untrusted location is a really bad idea, and that even | server at an untrusted location is a really bad idea and that even if | |||
if the option was available users would not activate it. In any | the option was available users would not activate it. In any case, | |||
case, the option is only used in the "pre boot" environment, and | the option is only used in the "pre-boot" environment, and there is | |||
there is no reason to use it once the system is up and running. | no reason to use it once the system is up and running. Nodes | |||
Nodes visiting untrusted networks MUST NOT send or use the PXE | visiting untrusted networks MUST NOT send or use the PXE options. | |||
options. | ||||
3.10. User and Vendor Class DHCP options | 3.10. User and Vendor Class DHCP Options | |||
Vendor identifying options are defined in [RFC2132] and [RFC3925]. | Vendor-identifying options are defined in [RFC2132] and [RFC3925]. | |||
When using the anonymity profile, DHCP clients SHOULD NOT use the | When using the anonymity profile, DHCPv4 clients SHOULD NOT use the | |||
Vendor Specific Information option (code 43), the Vendor Class | Vendor-Specific Information option (code 43), the Vendor Class | |||
Identifier Option (60), the Vendor Class option (code 124), or the | Identifier option (code 60), the V-I Vendor Class option (code 124), | |||
Vendor Specific Information option (code 125) as these options | or the V-I Vendor-Specific Information option (code 125), as these | |||
potentially reveal identifying information. | options potentially reveal identifying information. | |||
4. Anonymity profile for DHCPv6 | 4. Anonymity Profile for DHCPv6 | |||
DHCPv6 is typically used by clients in one of two scenarios: stateful | DHCPv6 is typically used by clients in one of two scenarios: stateful | |||
and stateless configuration. In the stateful scenario, clients use a | or stateless configuration. In the stateful scenario, clients use a | |||
combination of SOLICIT, REQUEST, CONFIRM, RENEW, REBIND and RELEASE | combination of Solicit, Request, Confirm, Renew, Rebind, Release, and | |||
messages to obtain addresses, and manage these addresses. | Decline messages to obtain addresses and manage these addresses. | |||
In the stateless scenario, clients configure addresses using a | In the stateless scenario, clients configure addresses using a | |||
combination of client managed identifiers and router-advertised | combination of client-managed identifiers and router-advertised | |||
prefixes, without involving the DHCPv6 services. Different ways of | prefixes, without involving the DHCPv6 services. Different ways of | |||
constructing these prefixes have different implications on privacy, | constructing these prefixes have different implications on privacy, | |||
which are discussed in [I-D.ietf-6man-default-iids] and | which are discussed in [DEFAULT-IIDs] and [RFC7721]. In the | |||
[I-D.ietf-6man-ipv6-address-generation-privacy]. In the stateless | stateless scenario, clients use DHCPv6 to obtain network | |||
scenario, clients use DHCPv6 to obtain network configuration | configuration parameters, through the Information-request message. | |||
parameters, through the INFORMATION-REQUEST message. | ||||
The choice between the stateful and stateless scenarios depends on | The choice between the stateful and stateless scenarios depends on | |||
flag and prefix options published by the "Router Advertisement" | flag and prefix options published by the Router Advertisement | |||
messages of local routers, as specified in [RFC4861]. When these | messages of local routers, as specified in [RFC4861]. When these | |||
options enable stateless address configuration hosts using the | options enable stateless address configuration, hosts using the | |||
anonymity profile SHOULD use stateless address configuration instead | anonymity profile SHOULD use stateless address configuration instead | |||
of stateful address configuration, because stateless configuration | of stateful address configuration, because stateless configuration | |||
requires fewer information disclosures than stateful configuration. | requires fewer information disclosures than stateful configuration. | |||
When using the anonymity profile, DHCPv6 clients carefully select | When using the anonymity profile, DHCPv6 clients carefully select | |||
DHCPv6 options used in the various messages that they send. The list | DHCPv6 options used in the various messages that they send. The list | |||
of options that are mandatory or optional for each message is | of options that are mandatory or optional for each message is | |||
specified in [RFC3315]. Some of these options have specific | specified in [RFC3315]. Some of these options have specific | |||
implications on anonymity. The following sections provide guidance | implications on anonymity. The following sections provide guidance | |||
on the choice of option values when using the anonymity profile. | on the choice of option values when using the anonymity profile. | |||
4.1. Avoiding fingerprinting | 4.1. Avoiding Fingerprinting | |||
There are many choices for implementing DHCPv6 messages. As | There are many choices for implementing DHCPv6 messages. As | |||
explained in Section 3.1, these choices can be use to fingerprint the | explained in Section 3.1, these choices can be used to fingerprint | |||
client. | the client. | |||
The following sections provide guidance on the encoding of options. | The following sections provide guidance on the encoding of options. | |||
However, this guidance alone may not be sufficient to prevent | However, this guidance alone may not be sufficient to prevent | |||
fingerprinting from revealing information, such as the device type, | fingerprinting from revealing the device type, the vendor name, or | |||
vendor type or OS type and in some cases specific version, or from | the OS type and specific version. Fingerprinting may also reveal | |||
revealing whether the client is using the anonymity profile. | whether the client is using the anonymity profile. | |||
The client intending to protect its privacy SHOULD limit the subset | The client intending to protect its privacy SHOULD limit the subset | |||
of options sent in messages to the subset listed in the following | of options sent in messages to the subset listed in the following | |||
sections. | sections. | |||
The client intending to protect its privacy SHOULD randomize options | The client intending to protect its privacy SHOULD randomize the | |||
order before sending any DHCPv6 message. If this random ordering | ordering of options before sending any DHCPv6 message. If this | |||
cannot be implemented, the client MAY arrange options by increasing | random ordering cannot be implemented, the client MAY order the | |||
order of option codes. | options by option code number (lowest to highest). | |||
4.2. Do not send Confirm messages, unless really sure where | 4.2. Do not send Confirm messages, unless really sure about | |||
the location | ||||
[RFC3315] requires clients to send a Confirm message when they attach | [RFC3315] requires clients to send a Confirm message when they attach | |||
to a new link to verify whether the addressing and configuration | to a new link to verify whether the addressing and configuration | |||
information they previously received is still valid. This | information they previously received is still valid. This | |||
requirement was relaxed in [I-D.ietf-dhc-rfc3315bis]. When these | requirement was relaxed in [DHCPv6bis]. When these clients send | |||
clients send Confirm messages, they include any IAs assigned to the | Confirm messages, they include any Identity Associations (IAs) | |||
interface that may have moved to a new link, along with the addresses | assigned to the interface that may have moved to a new link, along | |||
associated with those IAs. By examining the addresses in the Confirm | with the addresses associated with those IAs. By examining the | |||
message an attacker can trivially identify the previous point(s) of | addresses in the Confirm message, an attacker can trivially identify | |||
attachment. | the previous point(s) of attachment. | |||
Clients interested in protecting their privacy SHOULD NOT send | Clients interested in protecting their privacy SHOULD NOT send | |||
Confirm messages and instead directly try to acquire addresses on the | Confirm messages and instead SHOULD directly try to acquire addresses | |||
new link. However, not sending confirm messages can result in | on the new link. However, not sending Confirm messages can result in | |||
connectivity hiatus in some scenarios, e.g. roaming between two | connectivity hiatus in some scenarios, e.g., roaming between two | |||
access points in the same wireless network. DHCPv6 clients that can | access points in the same wireless network. DHCPv6 clients that can | |||
verify that the previous link and the current link are part of the | verify that the previous link and the current link are part of the | |||
same network MAY send Confirm messages while still protecting their | same network MAY send Confirm messages while still protecting their | |||
privacy. Such link identification should happen before DHCPv6 is | privacy. Such link identification should happen before DHCPv6 is | |||
used, and thus cannot depend on the DHCPv6 information used in | used, and thus it cannot depend on the DHCPv6 information used in | |||
[RFC6059]. In practice, the most reliable detection of network | [RFC6059]. In practice, the most reliable detection of network | |||
attachment is through link layer security, e.g. [IEEE8021X]. | attachment is through link-layer security, e.g., [IEEE8021X]. | |||
4.3. Client Identifier DHCPv6 Option | 4.3. Client Identifier DHCPv6 Option | |||
The client identifier option is defined in [RFC3315] with option code | The DHCPv6 Client Identifier option is defined in [RFC3315] with | |||
1. The purpose of the client identifier option is to identify the | option code 1. The purpose of the Client Identifier option is to | |||
client to the server. The content of the option is a DHCP Unique | identify the client to the server. The content of the option is a | |||
Identifier (DUID). One of the primary privacy concerns is that a | DHCP Unique Identifier (DUID). One of the primary privacy concerns | |||
client is disclosing a stable identifier (the DUID) that can be use | is that a client is disclosing a stable identifier (the DUID) that | |||
for tracking and profiling. Three DUID formats are specified in | can be used for tracking and profiling. Three DUID formats are | |||
[RFC3315]: Link-layer address plus time (DUID-LLT), Vendor-assigned | specified in [RFC3315]: link-layer address plus time (DUID-LLT), | |||
unique ID based on Enterprise Number, and Link-layer address. A | Vendor-assigned unique ID based on Enterprise Number, and link-layer | |||
fourth type, DUID-UUID is defined in [RFC6355]. | address. A fourth type, DUID-UUID, is defined in [RFC6355]. | |||
When using the anonymity profile in conjunction with randomized link- | When using the anonymity profile in conjunction with randomized | |||
layer addresses, DHCPv6 clients MUST use the DUID format number 3, | link-layer addresses, DHCPv6 clients MUST use DUID format number 3 -- | |||
Link-layer address. The value of the Link-layer address should be | link-layer address. The value of the link-layer address should be | |||
that currently assigned to the interface. | the value currently assigned to the interface. | |||
When using the anonymity profile without the benefit of randomized | When using the anonymity profile without the benefit of randomized | |||
link-layer addresses, clients that want to protect their privacy | link-layer addresses, clients that want to protect their privacy | |||
SHOULD generate a new randomized DUID-LLT every time they attach to a | SHOULD generate a new randomized DUID-LLT every time they attach to a | |||
new link or detect a possible link change event. Syntactically this | new link or detect a possible link change event. Syntactically, this | |||
identifier will conform to [RFC3315] but its content is meaningless. | identifier will conform to [RFC3315], but its content is meaningless. | |||
The exact details are left up to implementors, but there are several | The exact details are left up to implementers, but there are several | |||
factors should be taken into consideration. The DUID type SHOULD be | factors that should be taken into consideration. The DUID type | |||
set to 1 (DUID-LLT). Hardware type SHOULD be set appropriately to | SHOULD be set to 1 (DUID-LLT). Hardware type SHOULD be set | |||
the hardware type. The link address embedded in the LLT SHOULD be | appropriately to the hardware type in question. The link address | |||
set to a randomized value. Time SHOULD be set to a random timestamp | embedded in the LLT SHOULD be set to a randomized value. Time SHOULD | |||
from the previous year. Time MAY be set to current time, but this | be set to a random timestamp from the previous year. Time MAY be set | |||
will reveal the fact that the DUID is newly generated, and could | to current time, but this will reveal the fact that the DUID is newly | |||
provide information for device fingerprinting. The criteria for | generated and thus could provide information for device | |||
generating highly unique random numbers are listed in [RFC4086]. | fingerprinting. The criteria for generating highly unique random | |||
numbers are listed in [RFC4086]. | ||||
4.3.1. Anonymous Information-Request | 4.3.1. Anonymous Information-request | |||
According to [RFC3315], a DHCPv6 client includes its client | According to [RFC3315], a DHCPv6 client includes its client | |||
identifier in most of the messages it sends. There is one exception, | identifier in most of the messages it sends. There is one exception, | |||
however. Client is allowed to omit its client identifier when | however: the client is allowed to omit its client identifier when | |||
sending Information-Request. | sending Information-request messages. | |||
When using stateless DHCPv6, clients wanting to protect their privacy | When using stateless DHCPv6, clients wanting to protect their privacy | |||
SHOULD NOT include client identifiers in their Information-Request | SHOULD NOT include client identifiers in their Information-request | |||
messages. This will prevent the server from specifying client- | messages. This will prevent the server from specifying client- | |||
specific options if it is configured to do so, but the need for | specific options if it is configured to do so, but the need for | |||
anonymity precludes such options anyway. | anonymity precludes such options anyway. | |||
4.4. Server Identifier Option | 4.4. Server Identifier Option | |||
When using the anonymity profile, DHCPv6 clients SHOULD use the | When using the anonymity profile, DHCPv6 clients SHOULD use the | |||
Server Identifier Option (code 2) as specified in [RFC3315]. Clients | Server Identifier option (code 2) as specified in [RFC3315]. Clients | |||
MUST only include server identifier values that were received with | MUST only include server identifier values that were received with | |||
the current link-layer address, because reuse of old values discloses | the current link-layer address, because the reuse of old values | |||
information that can be used to identify the client. | discloses information that can be used to identify the client. | |||
4.5. Address assignment options | 4.5. Address Assignment Options | |||
When using the anonymity profile, DHCPv6 clients might have to use | When using the anonymity profile, DHCPv6 clients might have to use | |||
SOLICIT or REQUEST messages to obtain IPv6 addresses through the DHCP | Solicit or Request messages to obtain IPv6 addresses through the | |||
server. In DHCPv6, the collection of addresses assigned to a client | DHCPv6 server. In DHCPv6, the collection of addresses assigned to a | |||
is identified by an Identity Association (IA).Clients interested in | client is identified by an IA. Clients interested in privacy SHOULD | |||
privacy SHOULD request addresses using the Identity Association for | request addresses using the IA for the Non-temporary Addresses option | |||
Non-temporary Addresses Option (IA_NA, code 3). | (IA_NA, code 3) [RFC3315]. | |||
The IA_NA option includes an IAID parameter that identifies a unique | The IA_NA option includes an IAID parameter that identifies a unique | |||
identity association for the interface for which the Address is | IA for the interface for which the address is requested. Clients | |||
requested. Clients interested in protecting their privacy MUST | interested in protecting their privacy MUST ensure that the IAID does | |||
ensure that the IAID does not enable client identification. They | not enable client identification. They also need to conform to the | |||
also need to conform to the requirement of [RFC3315] that the IAID | requirement of [RFC3315] that the IAID for that IA MUST be consistent | |||
for that IA MUST be consistent across restarts of the DHCP client. | across restarts of the DHCPv6 client. We interpret that as requiring | |||
We interpret that as requiring that the IAID MUST be constant for the | that the IAID MUST be constant for the association, as long as the | |||
association, as long as the link layer address remains constant. | link-layer address remains constant. | |||
Clients MAY meet the privacy, uniqueness and stability requirement of | Clients MAY meet the privacy, uniqueness, and stability requirements | |||
the IAID by constructing it as the combination of one byte encoding | of the IAID by constructing it as the combination of 1 octet encoding | |||
the interface number in the system, and the first three bytes of the | the interface number in the system, and the first 3 octets of the | |||
link layer address. | link-layer address. | |||
The clients MAY use the IA Address Option (code 5) but need to | The clients MAY use the IA Address option (code 5) [RFC3315] but need | |||
balance the potential advantage of "address continuity" versus the | to balance the potential advantage of "address continuity" versus the | |||
potential risk of "previous address disclosure." A potential | potential risk of "previous address disclosure". A potential | |||
solution is to remove all stored addresses when a link-layer address | solution is to remove all stored addresses when a link-layer address | |||
changes, and to only use the IA Address option with addresses that | changes and to only use the IA Address option with addresses that | |||
have been explicitly assigned through the current link-layer address. | have been explicitly assigned through the current link-layer address. | |||
4.5.1. Obtain temporary addresses | 4.5.1. Obtain Temporary Addresses | |||
[RFC3315] defines a special container (IA_TA, code 4) for requesting | [RFC3315] defines a special container (IA_TA, code 4) for requesting | |||
temporary addresses. This is a good mechanism in principle, but | temporary addresses. This is a good mechanism in principle, but | |||
there are a number of issues associated with it. First, this is not | there are a number of issues associated with it. First, this is not | |||
a widely used feature, so clients depending solely on temporary | a widely used feature, so clients depending solely on temporary | |||
addresses may lock themselves out of service. Secondly, [RFC3315] | addresses may lock themselves out of service. Secondly, [RFC3315] | |||
does not specify any lifetime or lease length for temporary | does not specify any lifetime or lease length for temporary | |||
addresses. Therefore support for renewing temporary addresses may | addresses. Therefore, support for renewing temporary addresses may | |||
vary between client implementations, including not being supported at | vary between client implementations, including no support at all. | |||
all. Finally, by requesting temporary addresses a client reveals its | Finally, by requesting temporary addresses, a client reveals its | |||
desire for privacy and potentially risks countermeasures as described | desire for privacy and potentially risks countermeasures as described | |||
in Section 2.5. | in Section 2.5. | |||
Because of these Clients interested in their privacy SHOULD NOT use | Because of these issues, clients interested in their privacy | |||
IA_TA. | SHOULD NOT use IA_TA. | |||
The addresses obtained according to Section 4.5 are temporary in | The addresses obtained according to Section 4.5 are meant to be | |||
nature, and will be discarded when the link layer address is changed. | non-temporary, but the anonymity profile uses them as temporary, and | |||
They thus meet most of the use cases of the temporary addresses | they will be discarded when the link-layer address is changed. They | |||
defined in [RFC4941]. Clients interested in their privacy should not | thus meet most of the use cases of the temporary addresses defined in | |||
publish their IPv6 addresses in the DNS or otherwise associate them | [RFC4941]. Clients interested in their privacy should not publish | |||
with name services, and thus do not normally need two classes of | their IPv6 addresses in the DNS or otherwise associate them with name | |||
addresses, one public, one temporary. | services, and thus do not normally need two classes of addresses -- | |||
one public, one temporary. | ||||
The use of mechanisms to allocate several IPv6 addresses to a client | The use of mechanisms to allocate several IPv6 addresses to a client | |||
while preserving privacy is for further study. | while preserving privacy is left for further study. | |||
4.5.2. Prefix delegation | 4.5.2. Prefix Delegation | |||
The use of DHCPv6 address assignment option for Prefix Delegation is | The use of DHCPv6 address assignment option for Prefix Delegation | |||
defined in [RFC3633]. Because current host OS implementations do not | (PD) is defined in [RFC3633]. Because current host OS | |||
typically request prefixes, clients that wish to use DHCPv6 PD - just | implementations do not typically request prefixes, clients that wish | |||
like clients that wish to use any DHCP or DHCPv6 option that is not | to use DHCPv6 PD -- just like clients that wish to use any DHCP or | |||
currently widely used - should recognize that doing so will serve as | DHCPv6 option that is not currently widely used -- should recognize | |||
a form of fingerprinting unless or until client use of DHCPv6 PD | that doing so will serve as a form of fingerprinting, unless or until | |||
becomes more widespread. | the use of DHCPv6 PD by clients becomes more widespread. | |||
The anonymity properties of DHCPv6 Prefix Delegation, which use IA_PD | The anonymity properties of DHCPv6 PD, which uses IA_PD IAs, are | |||
identity associations, are similar to those of of DHCPv6 address | similar to those of DHCPv6 address assignment using IA_NA IAs. The | |||
assignment using IA_NA identity associations. The IAID could | IAID could potentially be used to identify the client, and a prefix | |||
potentially be used to identify the client, and a prefix hint sent in | hint sent in the IA_PD Prefix option could be used to track the | |||
the IA_PD Prefix option could be used to track the client's previous | client's previous location. Clients that desire anonymity and never | |||
location. Clients that desire anonymity and never request more than | request more than one prefix SHOULD set the IAID value to zero, as | |||
one prefix SHOULD set the IAID value to zero, as authorized in | authorized in Section 6 of [RFC3633], and SHOULD NOT document any | |||
section 6 of [RFC3633], and SHOULD NOT document any previously | previously assigned prefix in the IA_PD Prefix option. | |||
assigned prefix in the IA_PD Prefix option. | ||||
4.6. Option Request Option | 4.6. Option Request Option | |||
The Option Request Option (ORO) is defined in [RFC3315] with option | The Option Request Option (ORO) is defined in [RFC3315] with | |||
code 6. It specifies the options that the client is requesting from | option code 6. It specifies the options that the client is | |||
the server. The choice of requested options and the order of | requesting from the server. The choice of requested options and the | |||
encoding of these options in the ORO can be used to fingerprint the | order of encoding of these options in the ORO can be used to | |||
client. | fingerprint the client. | |||
The client willing to protect its privacy SHOULD only request a | The client intending to protect its privacy SHOULD only request a | |||
minimal subset of options and SHOULD randomly shuffle the option | minimal subset of options and SHOULD randomly shuffle the ordering of | |||
codes order in ORO. If this random ordering cannot be implemented, | option codes in the ORO. If this random ordering cannot be | |||
the client MAY order option codes in ORO by increasing order of | implemented, the client MAY order the option codes in the ORO by | |||
option codes. | option code number (lowest to highest). | |||
4.6.1. Previous option values | 4.6.1. Previous Option Values | |||
According to [RFC3315], the client that includes an Option Request | According to [RFC3315], the client that includes an ORO in a Solicit | |||
Option in a Solicit or Request message MAY additionally include | or Request message MAY additionally include instances of those | |||
instances of those options that are identified in the Option Request | options that are identified in the ORO, with data values as hints to | |||
option, with data values as hints to the server about parameter | the server about parameter values the client would like to have | |||
values the client would like to have returned. | returned. | |||
When using the anonymity profile, clients SHOULD NOT include such | When using the anonymity profile, clients SHOULD NOT include such | |||
instances of options because old values might be used to identify the | instances of options, because old values might be used to identify | |||
client. | the client. | |||
4.7. Authentication Option | 4.7. Authentication Option | |||
The purpose of the Authentication option (code 11) is to authenticate | The purpose of the Authentication option (code 11) [RFC3315] is to | |||
the identity of clients and servers and the contents of DHCP | authenticate the identity of clients and servers and the contents of | |||
messages. As such, the option can be used to identify the client, | DHCPv6 messages. As such, the option can be used to identify the | |||
and is incompatible with the stated goal of "client anonymity." | client, so it is incompatible with the stated goal of "client | |||
DHCPv6 clients that use the anonymity profile SHOULD NOT use the | anonymity". DHCPv6 clients that use the anonymity profile SHOULD NOT | |||
authentication option. They MAY use it if they recognize that they | use the Authentication option. They MAY use it if they recognize | |||
are operating in a trusted environment, e.g., in a work place | that they are operating in a trusted environment, e.g., in a | |||
network. | workplace network. | |||
4.8. User and Vendor Class DHCPv6 options | 4.8. User and Vendor Class DHCPv6 Options | |||
When using the anonymity profile, DHCPv6 clients SHOULD NOT use the | When using the anonymity profile, DHCPv6 clients SHOULD NOT use the | |||
User Class option (code 15) or the Vendor Class option (code 16), as | User Class option (code 15) or the Vendor Class option (code 16) | |||
these options potentially reveal identifying information. | [RFC3315], as these options potentially reveal identifying | |||
information. | ||||
4.9. Client FQDN Option | 4.9. Client FQDN DHCPv6 Option | |||
The Client FQDN option is defined in [RFC4704] with option code 29. | The DHCPv6 Client FQDN option is defined in [RFC4704] with | |||
The option allows the DHCP clients to advertise to the DHCP server | option code 39. This option allows the DHCPv6 clients to advertise | |||
their fully qualified domain name (FQDN) such as | to the DHCPv6 server their FQDN, such as "mobile.example.com". When | |||
"mobile.example.com." When using the anonymity profile, DHCPv6 | using the anonymity profile, DHCPv6 clients SHOULD NOT include the | |||
clients SHOULD NOT include the Client FQDN option in their DHCPv6 | Client FQDN option in their DHCPv6 messages, because it identifies | |||
messages because it identifies the client. As explained in | the client. As explained in Section 3.8, they MAY use a local-only | |||
Section 3.8 they MAY use a local-only FQDN by combining a host name | FQDN by combining a host name derived from the link-layer address and | |||
derived from the link layer address and a suffix advertised by the | a suffix advertised by the local DHCPv6 server. | |||
local DHCP server. | ||||
5. Operational Considerations | 5. Operational Considerations | |||
The anonymity profile has the effect of hiding the client identity | The anonymity profiles have the effect of hiding the client identity | |||
from the DHCP server. This is not always desirable. Some DHCP | from the DHCP server. This is not always desirable. Some DHCP | |||
servers provide facilities like publishing names and addresses in the | servers provide facilities like publishing names and addresses in the | |||
DNS, or ensuring that returning clients get reassigned the same | DNS, or ensuring that returning clients get reassigned the same | |||
address. | address. | |||
Clients using the anonymity profile may be consuming more resources. | Clients using an anonymity profile may be consuming more resources. | |||
For example when they change link-layer address and request for a new | For example, when a client changes its link-layer address and | |||
IP, the old one is still marked as leased by the server. | requests a new IP address, the old IP address is still marked as | |||
leased by the server. | ||||
Some DHCP servers will only give addresses to pre-registered MAC | Some DHCP servers will only give addresses to pre-registered MAC | |||
addresses, forcing clients to choose between remaining anonymous and | addresses, forcing clients to choose between remaining anonymous and | |||
obtaining connectivity. | obtaining connectivity. | |||
Implementers SHOULD provide a way for clients to control when the | Implementers SHOULD provide a way for clients to control when the | |||
anonymity profile is used, and when standard behavior is preferred. | anonymity profiles are used and when standard behavior is preferred. | |||
Implementers MAY implement this control by tying use of the anonymity | ||||
profile to that of link-layer address randomization. | ||||
6. Security Considerations | ||||
The use of the anonymity profile does not change the security | ||||
considerations of the DHCPv4 or DHCPv6 protocols. | ||||
7. IANA Considerations | ||||
This draft does not require any IANA action. | ||||
8. Acknowledgments | ||||
The inspiration for this draft came from discussions in the Perpass | ||||
mailing list. Several people provided feedback on this draft, | ||||
notably Noel Anderson, Brian Carpenter, Lorenzo Colitti, Stephen | ||||
Farrell, Nick Grifka, Tushar Gupta, Brian Haberman, Gabriel | ||||
Montenegro, Marcin Siodelski, Dave Thaler, Bernie Volz, and Jun Wu. | ||||
9. Changes from previous versions | ||||
The RFC Editor must ensure that this section is removed prior to RFC | ||||
publication. | ||||
Changes from draft-00 to draft-01: | ||||
1. In Section 2.6, added guidance when using [RFC7618]. | ||||
2. In Section 3.5, added guidance for case when no link layer | ||||
address is available. | ||||
3. In Section 3.7, changed the recommended mechanism for obfuscating | ||||
host names, in order to avoid reveal the underlying link layer | ||||
address. | ||||
4. In Section 4.2, added an exception to the "should not send | ||||
confirm" recommendation, to account for the "good" use of Confirm | ||||
when roaming between access points on the same network. | ||||
Changes from draft-01 to draft-02: | ||||
1. In Section 3, checked the requirements of parameters in messages | ||||
to ensure consistency with the main text. | ||||
2. In Section 3.5, added guidance for case when no link layer | ||||
address is available. | ||||
3. In Section 3.7, specified that clients SHOULD NOT send the | ||||
option, and that the optional obfuscation mechanism is just a | ||||
suggestion. | ||||
4. Updated the text in Section 4.5.1 for temporary IPv6 address | ||||
allocation. | ||||
5. Rewrote Section 5 on operational requirements for clarity. | ||||
Changes from draft-02 to draft-03: | ||||
1. Removed the update of [RFC4361] since we are specifying when to | ||||
use that RFC, but are not recommending any specific change. | ||||
2. Fixed a number of typos and nits. | ||||
3. In Section 2.7, specified that mitigation of server privacy | ||||
issues is left for further study. | ||||
4. Moved the guidance on avoiding fingerprinting to Section 3.1 and | ||||
Section 4.1. | ||||
5. In Section 3.5, added text explaining why the client identifier | ||||
option should still be sent, even when anonymity is desired. | ||||
6. Added Section 3.6 specifying the random ordering of requested | ||||
option codes in the PRL parameter, with an alternative option for | ||||
strict ordering. | ||||
7. Changed the requirement in Section 4.6 to allow "increasing order | ||||
of option codes" as an alternative to "randomized order of | ||||
options". | ||||
8. In Section 4.5.1 revised the language stating lack of support for | ||||
renewing temporary addresses, as RFC 3315 does in fact specify a | ||||
mechanism for doing so. | ||||
Changes from draft-03 to draft-04 address comments received during | ||||
Working Group Last Call: | ||||
1. In Section 3, tightened the normative language and the use of | ||||
message codes. | ||||
2. In Section 3.3, clarified the reference to the INIT-REBOOT | ||||
scenario. | ||||
3. Revised the writing of Section 4.5 for greater clarity. | ||||
Changes from draft-04 to draft-05 address comments received after | ||||
Working Group Last Call: | ||||
1. Changed the title of Section 4.1 to "Avoiding fingerprinting" to | ||||
align with Section 3.1. | ||||
2. Fixed editing nits in Section 4.5, and added specification that | ||||
the IAID is composed of the interface identifier and the first | ||||
three bytes of the HW address. This matches the implementation | ||||
in Windows 10, and insures that variations will not be used to | ||||
fingerprint the client software. | ||||
3. Dropping "This draft updates RFC4361" from the Abstract, since | ||||
this draft does not actually update RFC4361. | ||||
4. Pruned the list of normative references. | ||||
Changes from draft-05 to draft-06 address comments received during AD | ||||
evaluation | ||||
1. In Section 3.3, clarified that the requirement to not publish | ||||
addresses from previous networks also applies to private | ||||
addresses. | ||||
2. In Section 3.6, corrected the value of the option number to 55. | ||||
3. In Section 3.9, provided more guidance on disabling the PXE | ||||
option. | ||||
4. In Section 4.2, provided guidance on network identification, with | ||||
references to [RFC6059] and [IEEE8021X]. | ||||
5. In Section 4.5, expanded the Identity Association (IA) acronym. | ||||
6. In Section 4.3, spelled out DUID-LLT and tightened the text to | ||||
make randomized identifiers the recommended default. | ||||
Changes from draft-06 to draft-07 address comments received during | ||||
IETF last call | ||||
1. Added informative references to [RFC4086] and [RFC7217] in | ||||
Section 3.5. | ||||
2. In Section 4.3, added precision that the generated DUID-LLT are | ||||
meaningless, and added an informative reference to [RFC4086]. | ||||
3. In Section 4.5.2, reworked the text to reflect the consensus from | ||||
IPv6 experts and provide informed guidance on the use of the | ||||
option if prefix delegation is required. | ||||
4. In Section 5, noticed servers that might mandate link layer | ||||
address registration. | ||||
Changes from draft-07 to draft-08 address comments received during | ||||
IESG review | ||||
1. Corrected a number of typos and applied several minor editing | ||||
suggestions. | ||||
2. Added reference to IEEE study group and other IETF experiments in | ||||
Section 2. | ||||
3. Added reference to journal paper on Guy Fawkes mask in | ||||
Section 2.5. | ||||
4. Removed "if servers do not object" from appliction scope in | ||||
Section 2.6. | ||||
5. Removed redondant text from Section 3.4. | ||||
6. In Section 3.5, say "will not be nullified by the Client | Implementers MAY implement this control by tying the use of the | |||
Identifier Option" instead of "will not be nullified by DHCP | anonymity profiles to that of link-layer address randomization. | |||
options." | ||||
7. In Section 3.9, remove the qualification "if only for privacy | 6. Security Considerations | |||
reasons." | ||||
8. Clarified the preference for stateless address configuration in | The use of the anonymity profiles does not change the security | |||
Section 4. | considerations of the DHCPv4 or DHCPv6 protocols [RFC2131] [RFC3315]. | |||
10. References | 7. References | |||
10.1. Normative References | 7.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
[RFC2131] Droms, R., "Dynamic Host Configuration Protocol", | [RFC2131] Droms, R., "Dynamic Host Configuration Protocol", | |||
RFC 2131, DOI 10.17487/RFC2131, March 1997, | RFC 2131, DOI 10.17487/RFC2131, March 1997, | |||
<http://www.rfc-editor.org/info/rfc2131>. | <http://www.rfc-editor.org/info/rfc2131>. | |||
[RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins, | [RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins, | |||
C., and M. Carney, "Dynamic Host Configuration Protocol | C., and M. Carney, "Dynamic Host Configuration Protocol | |||
for IPv6 (DHCPv6)", RFC 3315, DOI 10.17487/RFC3315, July | for IPv6 (DHCPv6)", RFC 3315, DOI 10.17487/RFC3315, | |||
2003, <http://www.rfc-editor.org/info/rfc3315>. | July 2003, <http://www.rfc-editor.org/info/rfc3315>. | |||
[RFC3633] Troan, O. and R. Droms, "IPv6 Prefix Options for Dynamic | [RFC3633] Troan, O. and R. Droms, "IPv6 Prefix Options for Dynamic | |||
Host Configuration Protocol (DHCP) version 6", RFC 3633, | Host Configuration Protocol (DHCP) version 6", RFC 3633, | |||
DOI 10.17487/RFC3633, December 2003, | DOI 10.17487/RFC3633, December 2003, | |||
<http://www.rfc-editor.org/info/rfc3633>. | <http://www.rfc-editor.org/info/rfc3633>. | |||
[RFC4702] Stapp, M., Volz, B., and Y. Rekhter, "The Dynamic Host | [RFC4702] Stapp, M., Volz, B., and Y. Rekhter, "The Dynamic Host | |||
Configuration Protocol (DHCP) Client Fully Qualified | Configuration Protocol (DHCP) Client Fully Qualified | |||
Domain Name (FQDN) Option", RFC 4702, | Domain Name (FQDN) Option", RFC 4702, | |||
DOI 10.17487/RFC4702, October 2006, | DOI 10.17487/RFC4702, October 2006, | |||
skipping to change at page 25, line 10 ¶ | skipping to change at page 23, line 5 ¶ | |||
[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, | |||
DOI 10.17487/RFC4861, September 2007, | DOI 10.17487/RFC4861, September 2007, | |||
<http://www.rfc-editor.org/info/rfc4861>. | <http://www.rfc-editor.org/info/rfc4861>. | |||
[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, DOI 10.17487/RFC4941, September 2007, | IPv6", RFC 4941, DOI 10.17487/RFC4941, September 2007, | |||
<http://www.rfc-editor.org/info/rfc4941>. | <http://www.rfc-editor.org/info/rfc4941>. | |||
10.2. Informative References | 7.2. Informative References | |||
[CNBC] Weston, G., Greenwald, G., and R. Gallagher, "CBC News: | [CNBC] Weston, G., Greenwald, G., and R. Gallagher, "CBC News: | |||
CSEC used airport Wi-Fi to track Canadian travellers", Jan | CSEC used airport Wi-Fi to track Canadian travellers: | |||
2014, <http://www.cbc.ca/news/politics/csec-used-airport- | Edward Snowden documents", January 2014, | |||
wi-fi-to-track-canadian-travellers-edward-snowden- | <http://www.cbc.ca/news/politics/ | |||
documents-1.2517881>. | csec-used-airport-wi-fi-to-track-canadian-travellers- | |||
edward-snowden-documents-1.2517881>. | ||||
[DEFAULT-IIDs] | ||||
Gont, F., Cooper, A., Thaler, D., and W. Liu, | ||||
"Recommendation on Stable IPv6 Interface Identifiers", | ||||
Work in Progress, draft-ietf-6man-default-iids-11, | ||||
April 2016. | ||||
[DHCPv6bis] | ||||
Mrugalski, T., Ed., Siodelski, M., Volz, B., Yourtchenko, | ||||
A., Richardson, M., Jiang, S., and T. Lemon, "Dynamic Host | ||||
Configuration Protocol for IPv6 (DHCPv6) bis", Work in | ||||
Progress, draft-ietf-dhc-rfc3315bis-04, March 2016. | ||||
[GuyFawkesMask] | [GuyFawkesMask] | |||
Nickelsburg, M., "A brief history of the Guy Fawkes mask", | Nickelsburg, M., "A brief history of the Guy Fawkes mask", | |||
July 2013, <http://theweek.com/articles/463151/ | July 2013, <http://theweek.com/articles/463151/ | |||
brief-history-guy-fawkes-mask>. | brief-history-guy-fawkes-mask>. | |||
[I-D.ietf-6man-default-iids] | ||||
Gont, F., Cooper, A., Thaler, D., and S. LIU, | ||||
"Recommendation on Stable IPv6 Interface Identifiers", | ||||
draft-ietf-6man-default-iids-10 (work in progress), | ||||
February 2016. | ||||
[I-D.ietf-6man-ipv6-address-generation-privacy] | ||||
Cooper, A., Gont, F., and D. Thaler, "Privacy | ||||
Considerations for IPv6 Address Generation Mechanisms", | ||||
draft-ietf-6man-ipv6-address-generation-privacy-08 (work | ||||
in progress), September 2015. | ||||
[I-D.ietf-dhc-dhcp-privacy] | ||||
Jiang, S., Krishnan, S., and T. Mrugalski, "Privacy | ||||
considerations for DHCP", draft-ietf-dhc-dhcp-privacy-04 | ||||
(work in progress), February 2016. | ||||
[I-D.ietf-dhc-dhcpv6-privacy] | ||||
Krishnan, S., Mrugalski, T., and S. Jiang, "Privacy | ||||
considerations for DHCPv6", draft-ietf-dhc- | ||||
dhcpv6-privacy-04 (work in progress), February 2016. | ||||
[I-D.ietf-dhc-rfc3315bis] | ||||
Mrugalski, T., Siodelski, M., Volz, B., Yourtchenko, A., | ||||
Richardson, M., Jiang, S., and T. Lemon, "Dynamic Host | ||||
Configuration Protocol for IPv6 (DHCPv6) bis", draft-ietf- | ||||
dhc-rfc3315bis-03 (work in progress), February 2016. | ||||
[IEEE8021X] | [IEEE8021X] | |||
IEEE Std 802.1X-2010, "IEEE Standards for Local and | IEEE, "IEEE Standard for Local and metropolitan area | |||
Metropolitan Area Networks: Port based Network Access | networks - Port-Based Network Access Control", | |||
Control", Feb 2010, <http://standards.ieee.org/getieee802/ | IEEE 802.1X-2010, DOI 10.1109/ieeestd.2010.5409813, | |||
download/802.1X-2010.pdf>. | <http://ieeexplore.ieee.org/servlet/ | |||
opac?punumber=5409757>. | ||||
[IEEE802PRSG] | [IEEE802PRSG] | |||
IEEE 802 EC PRSG, "IEEE 802 EC Privacy Recommendation | IEEE 802 EC PRSG, "IEEE 802 EC Privacy Recommendation | |||
Study Group", Dec 2015, | Study Group", February 2016, | |||
<http://www.ieee802.org/PrivRecsg/>. | <http://www.ieee802.org/PrivRecsg/>. | |||
[IETFMACRandom] | [IETFMACRandom] | |||
Zuniga, JC., "MAC Privacy", November 2014, | Zuniga, JC., "MAC Privacy", November 2014, | |||
<http://www.ietf.org/blog/2014/11/mac-privacy/>. | <http://www.ietf.org/blog/2014/11/mac-privacy/>. | |||
[IETFTrialsAndMore] | [IETFTrialsAndMore] | |||
Bernardos, CJ., Zuniga, JC., and P. O'Hanlon, "Wi-Fi | Bernardos, CJ., Zuniga, JC., and P. O'Hanlon, "Wi-Fi | |||
Internet connectivity and privacy: hiding your tracks on | Internet connectivity and privacy: hiding your tracks on | |||
the wireless Internet", October 2015, | the wireless Internet", October 2015, | |||
skipping to change at page 27, line 31 ¶ | skipping to change at page 25, line 10 ¶ | |||
Interface Identifiers with IPv6 Stateless Address | Interface Identifiers with IPv6 Stateless Address | |||
Autoconfiguration (SLAAC)", RFC 7217, | Autoconfiguration (SLAAC)", RFC 7217, | |||
DOI 10.17487/RFC7217, April 2014, | DOI 10.17487/RFC7217, April 2014, | |||
<http://www.rfc-editor.org/info/rfc7217>. | <http://www.rfc-editor.org/info/rfc7217>. | |||
[RFC7618] Cui, Y., Sun, Q., Farrer, I., Lee, Y., Sun, Q., and M. | [RFC7618] Cui, Y., Sun, Q., Farrer, I., Lee, Y., Sun, Q., and M. | |||
Boucadair, "Dynamic Allocation of Shared IPv4 Addresses", | Boucadair, "Dynamic Allocation of Shared IPv4 Addresses", | |||
RFC 7618, DOI 10.17487/RFC7618, August 2015, | RFC 7618, DOI 10.17487/RFC7618, August 2015, | |||
<http://www.rfc-editor.org/info/rfc7618>. | <http://www.rfc-editor.org/info/rfc7618>. | |||
[RFC7721] Cooper, A., Gont, F., and D. Thaler, "Security and Privacy | ||||
Considerations for IPv6 Address Generation Mechanisms", | ||||
RFC 7721, DOI 10.17487/RFC7721, March 2016, | ||||
<http://www.rfc-editor.org/info/rfc7721>. | ||||
[RFC7819] Jiang, S., Krishnan, S., and T. Mrugalski, "Privacy | ||||
Considerations for DHCP", RFC 7819, DOI 10.17487/RFC7819, | ||||
April 2016, <http://www.rfc-editor.org/info/rfc7819>. | ||||
[RFC7824] Krishnan, S., Mrugalski, T., and S. Jiang, "Privacy | ||||
Considerations for DHCPv6", RFC 7824, | ||||
DOI 10.17487/RFC7824, May 2016, | ||||
<http://www.rfc-editor.org/info/rfc7824>. | ||||
[WiFiRadioFingerprinting] | [WiFiRadioFingerprinting] | |||
Brik, V., Banerjee, S., Gruteser, M., and S. Oh, "Wireless | Brik, V., Banerjee, S., Gruteser, M., and S. Oh, "Wireless | |||
Device Identification with Radiometric Signatures", | Device Identification with Radiometric Signatures", | |||
September 2008, | DOI 10.1.1.145.8873, September 2008, | |||
<http://www.winlab.rutgers.edu/~gruteser/papers/ | <http://citeseerx.ist.psu.edu/viewdoc/ | |||
brik_paradis.pdf>. | summary?doi=10.1.1.145.8873>. | |||
Acknowledgments | ||||
The inspiration for this document came from discussions in the | ||||
Perpass mailing list. Several people provided feedback on this | ||||
document, notably Noel Anderson, Brian Carpenter, Lorenzo Colitti, | ||||
Stephen Farrell, Nick Grifka, Tushar Gupta, Brian Haberman, Gabriel | ||||
Montenegro, Marcin Siodelski, Dave Thaler, Bernie Volz, and Jun Wu. | ||||
Authors' Addresses | Authors' Addresses | |||
Christian Huitema | Christian Huitema | |||
Microsoft | Microsoft | |||
Redmond, WA 98052 | Redmond, WA 98052 | |||
U.S.A. | United States | |||
Email: huitema@microsoft.com | Email: huitema@microsoft.com | |||
Tomek Mrugalski | Tomek Mrugalski | |||
Internet Systems Consortium, Inc. | Internet Systems Consortium, Inc. | |||
950 Charter Street | 950 Charter Street | |||
Redwood City, CA 94063 | Redwood City, CA 94063 | |||
USA | United States | |||
Email: tomasz.mrugalski@gmail.com | Email: tomasz.mrugalski@gmail.com | |||
Suresh Krishnan | Suresh Krishnan | |||
Ericsson | Ericsson | |||
8400 Decarie Blvd. | 8400 Decarie Blvd. | |||
Town of Mount Royal, QC | Town of Mount Royal, QC | |||
Canada | Canada | |||
Phone: +1 514 345 7900 x42871 | Phone: +1 514 345 7900 x42871 | |||
End of changes. 172 change blocks. | ||||
723 lines changed or deleted | 566 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |