| rfc8981xml2.original.xml | rfc8981.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!-- updated by Chris 12/18/20 --> | ||||
| <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | ||||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" obsoletes="4941" ipr="trust20090 | ||||
| 2" | ||||
| docName="draft-ietf-6man-rfc4941bis-12" number="8981" updates="" submissionType= | ||||
| "IETF" | ||||
| category="std" consensus="true" xml:lang="en" tocInclude="true" symRefs="true" | ||||
| sortRefs="true" version="3"> | ||||
| <!-- xml2rfc v2v3 conversion 3.5.0 --> | ||||
| <front> | ||||
| <title abbrev="Temporary Address Extensions to Autoconf">Temporary Address E | ||||
| xtensions for Stateless Address Autoconfiguration in | ||||
| IPv6</title> | ||||
| <seriesInfo name="RFC" value="8981"/> | ||||
| <author fullname="Fernando Gont" initials="F." surname="Gont"> | ||||
| <organization abbrev="SI6 Networks">SI6 Networks</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>Segurola y Habana 4310, 7mo Piso</street> | ||||
| <city>Villa Devoto</city> | ||||
| <region>Ciudad Autonoma de Buenos Aires</region> | ||||
| <country>Argentina</country> | ||||
| </postal> | ||||
| <email>fgont@si6networks.com</email> | ||||
| <uri>https://www.si6networks.com</uri> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Suresh Krishnan" initials="S." surname="Krishnan"> | ||||
| <organization>Kaloom</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street/> | ||||
| <city/> | ||||
| <region/> | ||||
| <code/> | ||||
| <country/> | ||||
| </postal> | ||||
| <email>suresh@kaloom.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="T." surname="Narten" fullname="Thomas Narten"> | ||||
| <address> | ||||
| <email>narten@cs.duke.edu</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="R." surname="Draves" fullname="Richard Draves"> | ||||
| <organization>Microsoft Research</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>One Microsoft Way</street> | ||||
| <city>Redmond</city> | ||||
| <region>WA</region> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>richdr@microsoft.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <date year="2021" month="February" /> | ||||
| <area>Internet</area> | ||||
| <workgroup>IPv6 Maintenance (6man) Working Group</workgroup> | ||||
| <keyword>privacy</keyword> | ||||
| <keyword>anonymity</keyword> | ||||
| <keyword>unlinkability</keyword> | ||||
| <keyword>crypto-based address changing</keyword> | ||||
| <abstract> | ||||
| <t>This document describes an extension to IPv6 Stateless Address Autoconf | ||||
| iguration that causes | ||||
| hosts to generate temporary addresses with randomized interface identifier | ||||
| s for each prefix advertised with autoconfiguration enabled. Changing addresses | ||||
| over time limits the window of time during which eavesdroppers and other informa | ||||
| tion collectors may trivially perform address-based network-activity correlation | ||||
| when the same address is employed for multiple | ||||
| transactions by the same host. Additionally, it reduces the window of expo | ||||
| sure of a host as being | ||||
| accessible via an address that becomes revealed as a result of active communicat | ||||
| ion. This document obsoletes RFC 4941.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <middle> | ||||
| <section anchor="intro" numbered="true" toc="default"> | ||||
| <name>Introduction</name> | ||||
| <t><xref target="RFC4862" format="default"/> specifies Stateless Address A | ||||
| utoconfiguration (SLAAC) for | ||||
| IPv6, which typically results in hosts configuring one or | ||||
| more "stable" IPv6 addresses composed of a network prefix advertised by a | ||||
| local router and a locally generated interface identifier (IID). The secur | ||||
| ity and privacy implications of such addresses have been discussed in detail in | ||||
| <xref target="RFC7721" format="default"/>, <xref target="RFC7217" format="defaul | ||||
| t"/>, and <xref target="RFC7707" format="default"/>. This document specifies an | ||||
| extension to SLAAC for generating temporary addresses that can help mitigate som | ||||
| e of the aforementioned issues. This document is a revision of RFC 4941 and form | ||||
| ally obsoletes it. <xref target="changes" format="default"/> describes the chang | ||||
| es from <xref target="RFC4941" format="default"/>.</t> | ||||
| <t>The default address selection for IPv6 has been specified in <xref targ | ||||
| et="RFC6724" format="default"/>. In some cases, the determination as to whether | ||||
| to use stable versus temporary addresses can only be made by an application. For | ||||
| example, some applications may always want | ||||
| to use temporary addresses, while others may want to use them | ||||
| only in some circumstances or not at all. An Application Programming Inter | ||||
| face (API) such as that specified in <xref target="RFC5014" format="default"/> c | ||||
| an enable | ||||
| individual applications to indicate a preference for the use of temporary | ||||
| addresses. | ||||
| </t> | ||||
| <t> | ||||
| <xref target="SECTION2" format="default"/> provides background information | ||||
| . <xref target="SECTION3" format="default"/> describes a procedure for | ||||
| generating temporary addresses. | ||||
| <xref target="SECTION4" format="default"/> discusses implications of chang | ||||
| ing | ||||
| IIDs. <xref target="changes" format="default"/> describes the changes from | ||||
| <xref target="RFC4941" format="default"/>. | ||||
| </t> | ||||
| <section anchor="term" numbered="true" toc="default"> | ||||
| <name>Terminology</name> | ||||
| <t> | ||||
| The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | ||||
| IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
| NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | ||||
| RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
| be interpreted as | ||||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
| when, and only when, they appear in all capitals, as shown here. | ||||
| </t> | ||||
| <t>The terms "public address", "stable address", "temporary address", "c | ||||
| onstant IID", "stable IID", and "temporary IID" are to be | ||||
| interpreted as specified in <xref target="RFC7721" format="default"/>.</t | ||||
| > | ||||
| <t>The term "global-scope addresses" is | ||||
| used in this document to collectively refer to "Global | ||||
| unicast addresses" as defined in | ||||
| <xref target="RFC4291" format="default"/> and "Unique local addresses" as | ||||
| defined in | ||||
| <xref target="RFC4193" format="default"/>, and not to "globally reachable | ||||
| addresses" as defined in <xref target="RFC8190" format="default"/>.</t> | ||||
| </section> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>Problem Statement</name> | ||||
| <t>Addresses generated using SLAAC | ||||
| <xref target="RFC4862" format="default"/> contain an embedded interface | ||||
| identifier, which may remain stable over time. Anytime a | ||||
| fixed identifier is used in multiple contexts, it becomes | ||||
| possible to correlate seemingly unrelated activity using | ||||
| this identifier.</t> | ||||
| <t>The correlation can be performed by: | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>An attacker who is in the path between the host in question and | ||||
| the peer(s) to which it is communicating, who can view the | ||||
| IPv6 addresses present in the datagrams.</li> | ||||
| <li>An attacker who can access the communication logs of | ||||
| the peers with which the host has communicated.</li> | ||||
| </ul> | ||||
| <t>Since the identifier is embedded within the IPv6 | ||||
| address, it cannot be hidden. This document | ||||
| proposes a solution to this issue by generating interface | ||||
| identifiers that vary over time.</t> | ||||
| <t>Note that an attacker, who is on path, may be able to | ||||
| perform significant correlation based on: | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>The payload contents of unencrypted packets on the wire.</li> | ||||
| <li>The characteristics of the packets, such as packet size | ||||
| and timing.</li> | ||||
| </ul> | ||||
| <t>Use of temporary addresses will not prevent such correlation, nor wil | ||||
| l it prevent an on-link observer (e.g., the host's default router) from tracking | ||||
| all the host's addresses.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="SECTION2" numbered="true" toc="default"> | ||||
| <name>Background</name> | ||||
| <t>This section discusses the problem in more detail, | ||||
| provides context for evaluating the significance of the | ||||
| concerns in specific environments, and makes comparisons with | ||||
| existing practices.</t> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>Extended Use of the Same Identifier</name> | ||||
| <t>The use of a non-changing IID to form | ||||
| addresses is a specific instance of the more general case | ||||
| where a constant identifier is reused over an extended | ||||
| period of time and in multiple independent activities. | ||||
| Anytime the same identifier is used in multiple contexts, | ||||
| it becomes possible for that identifier to be used to | ||||
| correlate seemingly unrelated activity. For example, a | ||||
| network sniffer placed strategically on a link traversed by | ||||
| all traffic to/from a particular host could keep | ||||
| track of which destinations a host communicated with and at | ||||
| what times. In some cases, such information can be used to | ||||
| infer things, such as what hours an employee was active, | ||||
| when someone is at home, etc. Although it might appear that | ||||
| changing an address regularly in such environments would be | ||||
| desirable to lessen privacy concerns, it should be noted | ||||
| that the network-prefix portion of an address also serves | ||||
| as a constant identifier. All hosts at, say, a home would | ||||
| have the same network prefix, which identifies the | ||||
| topological location of those hosts. This has implications | ||||
| for privacy, though not at the same granularity as the | ||||
| concern that this document addresses. Specifically, all | ||||
| hosts within a home could be grouped together for the | ||||
| purposes of collecting information. If the network contains | ||||
| a very small number of hosts -- say, just one -- changing just | ||||
| the IID will not enhance privacy, | ||||
| since the prefix serves as a constant identifier.</t> | ||||
| <t>One of the requirements for correlating seemingly | ||||
| unrelated activities is the use (and reuse) of an | ||||
| identifier that is recognizable over time within different | ||||
| contexts. IP addresses provide one obvious example, but | ||||
| there are more. For example: | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>Many hosts also have DNS names associated | ||||
| with their addresses, in which case, the DNS name serves as | ||||
| a similar identifier. Although the DNS name associated with | ||||
| an address is more work to obtain (it may require a DNS | ||||
| query), the information is often readily available. In such | ||||
| cases, changing the address on a host over time would do | ||||
| little to address the concerns raised in this document, | ||||
| unless the DNS name is also changed at the same time (see | ||||
| <xref target="SECTION4" format="default"/>).</li> | ||||
| <li>Web browsers and servers typically exchange "cookies" | ||||
| with each other | ||||
| <xref target="RFC6265" format="default"/>. Cookies allow web servers to | ||||
| correlate a current activity with a previous activity. One | ||||
| common usage is to send back targeted advertising to a user | ||||
| by using the cookie supplied by the browser to identify | ||||
| what earlier queries had been made (e.g., for what type of | ||||
| information). Based on the earlier queries, advertisements | ||||
| can be targeted to match the (assumed) interests of the | ||||
| end user.</li> | ||||
| </ul> | ||||
| <t>The use of a constant identifier within an address is of | ||||
| special concern, because addresses are a fundamental | ||||
| requirement of communication and cannot easily be hidden | ||||
| from eavesdroppers and other parties. Even when higher | ||||
| layers encrypt their payloads, addresses in packet headers | ||||
| appear in the clear. Consequently, if a mobile host (e.g., | ||||
| laptop) accessed the network from several different | ||||
| locations, an eavesdropper might be able to track the | ||||
| movement of that mobile host from place to place, even if | ||||
| the upper-layer payloads were encrypted.</t> | ||||
| <t>Changing addresses over time limits the time window over which eavesd | ||||
| roppers and other information collectors may trivially correlate network activit | ||||
| y when the same address is employed for multiple transactions by the same host. | ||||
| Additionally, it reduces the window of exposure during which a host is accessibl | ||||
| e via an address that becomes revealed as a result of active communication.</t> | ||||
| <t>The security and privacy implications of IPv6 addresses are discussed | ||||
| in | ||||
| detail in <xref target="RFC7721" format="default"/>, <xref target="RF | ||||
| C7707" format="default"/>, and <xref target="RFC7217" format="default"/>.</t> | ||||
| </section> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>Possible Approaches</name> | ||||
| <t>One approach, compatible with the SLAAC architecture, would be to cha | ||||
| nge the | ||||
| IID portion of an address over time. Changing | ||||
| the IID can | ||||
| make it more difficult to look at the IP addresses in | ||||
| independent transactions and identify which ones actually | ||||
| correspond to the same host, both in the case where the | ||||
| routing-prefix portion of an address changes and when it | ||||
| does not.</t> | ||||
| <t>Many hosts function as both clients and servers. In | ||||
| such cases, the host would need a name (e.g., a DNS domain name) for its | ||||
| use | ||||
| as a server. Whether the address stays fixed or changes has | ||||
| little impact on privacy, since the name remains | ||||
| constant and serves as a constant identifier. However, when acting | ||||
| as a client (e.g., initiating communication), such | ||||
| a host may want to vary the addresses it uses. In such | ||||
| environments, one may need multiple addresses: a stable | ||||
| address associated with the name, which is used to accept | ||||
| incoming connection requests from | ||||
| other hosts, and a temporary address used to shield | ||||
| the identity of the client when it initiates communication. | ||||
| </t> | ||||
| <t>On the other hand, a host that functions only as a | ||||
| client may want to employ only temporary addresses for | ||||
| public communication.</t> | ||||
| <t>To make it difficult to make educated guesses as to | ||||
| whether two different IIDs belong to the | ||||
| same host, the algorithm for generating alternate | ||||
| identifiers must include input that has an unpredictable | ||||
| component from the perspective of the outside entities that | ||||
| are collecting information.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="SECTION3" numbered="true" toc="default"> | ||||
| <name>Protocol Description</name> | ||||
| <t>The following subsections define the procedures for the generation of I | ||||
| Pv6 temporary addresses.</t> | ||||
| <section anchor="design" numbered="true" toc="default"> | ||||
| <name>Design Guidelines</name> | ||||
| <t>Temporary addresses observe the following properties:</t> | ||||
| <ol spacing="normal" type="1"><li>Temporary addresses are typically empl | ||||
| oyed for initiating | ||||
| outgoing sessions.</li> | ||||
| <li>Temporary addresses are used for a short period of time (typically | ||||
| hours to days) | ||||
| and are subsequently deprecated. Deprecated addresses can | ||||
| continue to be used for established connections | ||||
| but are not used to initiate new connections.</li> | ||||
| <li>New | ||||
| temporary addresses are generated over time to replace | ||||
| temporary addresses that expire (i.e., become deprecated and | ||||
| eventually invalidated).</li> | ||||
| <li>Temporary addresses must have a limited lifetime (limited "valid l | ||||
| ifetime" and "preferred lifetime" from <xref target="RFC4862" format="default"/> | ||||
| ). The lifetime of an address should be further reduced when privacy-meaningful | ||||
| events (such as a host attaching to a different network, or the regeneration of | ||||
| a new randomized Media Access Control (MAC) address) take place. The lifetime of | ||||
| temporary addresses must be statistically different for different addresses, su | ||||
| ch that it is hard to predict or infer when a new temporary address is generated | ||||
| or correlate a newly generated address with an existing one.</li> | ||||
| <li> | ||||
| By default, one address is generated for each prefix advertised | ||||
| by SLAAC. The resulting interface | ||||
| identifiers must be statistically different when addresses are | ||||
| configured for different prefixes or different network | ||||
| interfaces. This means that, given two addresses, it must be difficult fo | ||||
| r an outside entity to | ||||
| infer whether the addresses correspond to the same | ||||
| host or network interface. | ||||
| </li> | ||||
| <li>It must be difficult for an outside entity to predict the interfac | ||||
| e | ||||
| identifiers that will be employed for temporary addresses, even with knowledg | ||||
| e | ||||
| of the algorithm/method employed to generate them and/or knowledge of the IID | ||||
| s previously employed for other temporary addresses. These IIDs must be semantic | ||||
| ally opaque <xref target="RFC7136" format="default"/> and must not follow any sp | ||||
| ecific patterns.</li> | ||||
| </ol> | ||||
| </section> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>Assumptions</name> | ||||
| <t>The following algorithm assumes that, for a given temporary | ||||
| address, an implementation can determine the prefix from | ||||
| which it was generated. When a temporary address is | ||||
| deprecated, a new temporary address is generated. The | ||||
| specific valid and preferred lifetimes for the new address | ||||
| are dependent on the corresponding lifetime values set for | ||||
| the prefix from which it was generated.</t> | ||||
| <t>Finally, this document assumes that, when a host | ||||
| initiates outgoing communications, temporary addresses can | ||||
| be given preference over stable addresses (if available), when the devic | ||||
| e | ||||
| is configured to do so. | ||||
| <xref target="RFC6724" format="default"/> mandates that implementations | ||||
| provide a mechanism that allows an application to | ||||
| configure its preference for temporary addresses over | ||||
| stable addresses. It also allows an implementation to | ||||
| prefer temporary addresses by default, so that the | ||||
| connections initiated by the host can use temporary | ||||
| addresses without requiring application-specific | ||||
| enablement. This document also assumes that an API will | ||||
| exist that allows individual applications to indicate | ||||
| whether they prefer to use temporary or stable addresses | ||||
| and override the system defaults (see, for example, <xref target="RFC501 | ||||
| 4" format="default"/>). | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="SECTION3_2" numbered="true" toc="default"> | ||||
| <name>Generation of Randomized IIDs</name> | ||||
| <t>The following subsections specify example algorithms for generating t | ||||
| emporary IIDs that follow the guidelines in <xref target="design" format="defaul | ||||
| t"/> of this document. The algorithm specified in <xref target="randomized-IIDs" | ||||
| format="default"/> assumes a pseudorandom number generator (PRNG) is available | ||||
| on the system. The algorithm specified in <xref target="RFC-7217" format="defaul | ||||
| t"/> allows for code reuse by hosts that implement <xref target="RFC7217" format | ||||
| ="default"/>. | ||||
| </t> | ||||
| <section anchor="randomized-IIDs" numbered="true" toc="default"> | ||||
| <name>Simple Randomized IIDs</name> | ||||
| <t>One approach is to select a pseudorandom number of the appropriate | ||||
| length. A host employing this algorithm should generate IIDs as follows: | ||||
| </t> | ||||
| <ol spacing="normal" type="1"> | ||||
| <li>Obtain a random number from a PRNG that can produce random numbers of at l | ||||
| east as many bits as | ||||
| required for the IID (please see the next step). | ||||
| <xref target="RFC4086" format="default"/> specifies randomness requirements for | ||||
| security.</li> | ||||
| <li>The IID is obtained by taking as many bits from the random number obtained i | ||||
| n the previous step as necessary. See <xref target="RFC7136" format="default"/> | ||||
| for the necessary number of bits (i.e., the length of the IID). See also <xref | ||||
| target="RFC7421" format="default"/> for a discussion of the privacy implications | ||||
| of the IID length. Note: there are no special bits in an IID <xref target="RFC7 | ||||
| 136" format="default"/>. | ||||
| </li> | ||||
| <li> | ||||
| The resulting IID <bcp14>MUST</bcp14> be compared against the reserved IPv6 IIDs | ||||
| <xref target="RFC5453" format="default"/> <xref target="IANA-RESERVED-IID" form | ||||
| at="default"/> and against those IIDs already employed in an address of the same | ||||
| network interface and the same network prefix. In the event that an unacceptabl | ||||
| e identifier has been generated, a new IID should be generated by repeating the | ||||
| algorithm from the first step. | ||||
| </li> | ||||
| </ol> | ||||
| </section> | ||||
| <section anchor="RFC-7217" numbered="true" toc="default"> | ||||
| <name>Generation of IIDs with Pseudorandom Functions</name> | ||||
| <t>The algorithm in <xref target="RFC7217" format="default"/> can be a | ||||
| ugmented for the generation of temporary addresses. The benefit of this is that | ||||
| a host could employ a single algorithm for generating stable and temporary addre | ||||
| sses by employing appropriate parameters.</t> | ||||
| <t>Hosts would employ the following algorithm for generating the tempo | ||||
| rary IID: | ||||
| </t> | ||||
| <ol spacing="normal" type="1"><li> | ||||
| <t> | ||||
| Compute a random identifier with the expression: | ||||
| </t> | ||||
| <t> | ||||
| RID = F(Prefix, Net_Iface, Network_ID, Time, DAD_Counter, | ||||
| secret_key) | ||||
| </t> | ||||
| <t> | ||||
| Where: | ||||
| </t> | ||||
| <dl newline="true" spacing="normal"> | ||||
| <dt>RID:</dt> | ||||
| <dd>Random Identifier</dd> | ||||
| <dt>F():</dt> | ||||
| <dd>A pseudorandom function (PRF) that <bcp14>MUST NOT</bcp14> be computable | ||||
| from the outside (without knowledge of the secret key). F() <bcp14>MUST</bcp14> | ||||
| also be difficult to reverse, such that it resists attempts to obtain the secre | ||||
| t_key, even when given samples of the output of F() and knowledge | ||||
| or control of the other input parameters. F() <bcp14>SHOULD</bcp14> produce an o | ||||
| utput of at least as many bits as required for the IID. | ||||
| BLAKE3 (256-bit key, arbitrary-length output) <xref target="BLAKE3" format="defa | ||||
| ult"/> is one possible option for F(). Alternatively, F() could be implemented w | ||||
| ith a keyed-hash message authentication code (HMAC) <xref target="RFC2104" forma | ||||
| t="default"/>. HMAC-SHA-256 <xref target="FIPS-SHS" format="default"/> is one po | ||||
| ssible option for such an implementation alternative. Note: use of HMAC-MD5 <xre | ||||
| f target="RFC1321" format="default"/> is considered unacceptable for F() <xref t | ||||
| arget="RFC6151" format="default"/>.</dd> | ||||
| <dt>Prefix:</dt> | ||||
| <dd>The prefix to be used for SLAAC, as learned from an ICMPv6 Router Advertisem | ||||
| ent message.</dd> | ||||
| <dt>Net_Iface:</dt> | ||||
| <dd>The MAC address corresponding to the underlying network-interface card, in t | ||||
| he case the link uses IEEE 802 link-layer identifiers. Employing the MAC address | ||||
| for this parameter (over the other suggested options in <xref target="RFC7217" | ||||
| format="default"/>) means that the regeneration of a randomized MAC address will | ||||
| result in a different temporary address.</dd> | ||||
| <dt>Network_ID:</dt> | ||||
| <dd>Some network-specific data that identifies | ||||
| the subnet to which this interface is attached -- for example, the IEEE 802.11 S | ||||
| ervice Set Identifier (SSID) corresponding to the network to which this interfac | ||||
| e is associated. Additionally, "Simple Procedures for Detecting Network Attachme | ||||
| nt in IPv6" ("Simple DNA") <xref target="RFC6059" format="default"/> describes i | ||||
| deas that could be leveraged to generate a Network_ID parameter. This parameter | ||||
| <bcp14>SHOULD</bcp14> be employed if some form of "Network_ID" is available.</dd | ||||
| > | ||||
| <dt>Time:</dt> | ||||
| <dd>An implementation-dependent representation of time. One possible example is | ||||
| the representation in UNIX-like systems <xref target="OPEN-GROUP" format="defaul | ||||
| t"/>, which measure time in terms of the number of seconds elapsed since the Epo | ||||
| ch (00:00:00 Coordinated Universal Time (UTC), 1 January 1970). The addition of | ||||
| the "Time" argument results in (statistically) different IIDs over time.</dd> | ||||
| <dt>DAD_Counter:</dt> | ||||
| <dd>A counter that is employed to resolve the conflict where an unacceptable ide | ||||
| ntifier has been generated. This can be result of Duplicate Address Detection (D | ||||
| AD), or step 3 below. | ||||
| </dd> | ||||
| <dt>secret_key:</dt> | ||||
| <dd>A secret key that is not known by the attacker. The secret key <bcp14>SHOULD | ||||
| </bcp14> be of at least 128 bits. It <bcp14>MUST</bcp14> be initialized to a pse | ||||
| udorandom number (see <xref target="RFC4086" format="default"/> for randomness r | ||||
| equirements for security) when the operating system is "bootstrapped". The secre | ||||
| t_key <bcp14>MUST NOT</bcp14> be employed for any other purpose than the one dis | ||||
| cussed in this section. For example, implementations <bcp14>MUST NOT</bcp14> emp | ||||
| loy the same secret_key for the generation of stable addresses <xref target="RFC | ||||
| 7217" format="default"/> and the generation of temporary addresses via this algo | ||||
| rithm.</dd> | ||||
| </dl> | ||||
| </li> | ||||
| <li>The IID is finally obtained by taking as many bits from the RID value (compu | ||||
| ted in the previous step) as necessary, starting from the least significant bit. | ||||
| See <xref target="RFC7136" format="default"/> for the necessary number of bits | ||||
| (i.e., the length of the IID). See also <xref target="RFC7421" format="default | ||||
| "/> for a discussion of the privacy implications of the IID length. Note: there | ||||
| are no special bits in an IID <xref target="RFC7136" format="default"/>. | ||||
| </li> | ||||
| <li> | ||||
| The resulting IID <bcp14>MUST</bcp14> be compared against the reserved IPv6 IIDs | ||||
| <xref target="RFC5453" format="default"/> <xref target="IANA-RESERVED-IID" form | ||||
| at="default"/> and against those IIDs already employed in an address of the same | ||||
| network interface and the same network prefix. In the event that an unacceptabl | ||||
| e identifier has been generated, the DAD_Counter should be incremented by 1, and | ||||
| the algorithm should be restarted from the first step. | ||||
| </li> | ||||
| </ol> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="SECTION3_3" numbered="true" toc="default"> | ||||
| <name>Generating Temporary Addresses</name> | ||||
| <t> | ||||
| <xref target="RFC4862" format="default"/> describes the steps for | ||||
| generating a link-local address when an interface becomes | ||||
| enabled, as well as the steps for generating addresses for | ||||
| other scopes. This document extends | ||||
| <xref target="RFC4862" format="default"/> as follows. When processing a | ||||
| Router Advertisement with a Prefix Information option | ||||
| carrying a prefix for the purposes of address | ||||
| autoconfiguration (i.e., the A bit is set), the host <bcp14>MUST</bcp14> | ||||
| perform the following steps:</t> | ||||
| <t> | ||||
| </t> | ||||
| <ol spacing="normal" type="1"> | ||||
| <li><t>Process the Prefix Information option as specified in <xref targe | ||||
| t="RFC4862" format="default"/>, adjusting the lifetimes of existing | ||||
| temporary addresses, with the overall constraint that no | ||||
| temporary addresses should ever remain "valid" or | ||||
| "preferred" for a time longer than (TEMP_VALID_LIFETIME) | ||||
| or (TEMP_PREFERRED_LIFETIME - DESYNC_FACTOR), respectively. The confi | ||||
| guration variables | ||||
| TEMP_VALID_LIFETIME and TEMP_PREFERRED_LIFETIME correspond to the | ||||
| maximum valid lifetime and the maximum preferred lifetime of temporary a | ||||
| ddresses, respectively. | ||||
| </t> | ||||
| <dl newline="true" spacing="normal"> | ||||
| <dt>Note:</dt> | ||||
| <dd>DESYNC_FACTOR is the value computed when the address was creat | ||||
| ed (see step 4 below).</dd> | ||||
| </dl> | ||||
| </li> | ||||
| <li><t>One way an implementation can satisfy the above | ||||
| constraints is to associate with each temporary address | ||||
| a creation time (called CREATION_TIME) that indicates | ||||
| the time at which the address was created. When | ||||
| updating the preferred lifetime of an existing | ||||
| temporary address, it would be set to expire at | ||||
| whichever time is earlier: the time indicated by the | ||||
| received lifetime or (CREATION_TIME + | ||||
| TEMP_PREFERRED_LIFETIME - DESYNC_FACTOR). A similar | ||||
| approach can be used with the valid lifetime. | ||||
| </t> | ||||
| <dl newline="true" spacing="normal"> | ||||
| <dt>Note:</dt> | ||||
| <dd>DESYNC_FACTOR is the value computed when the address was creat | ||||
| ed (see step 4 below).</dd> | ||||
| </dl> | ||||
| </li> | ||||
| <li> | ||||
| <t>If the host has not configured any temporary address for the corr | ||||
| esponding prefix, the host <bcp14>SHOULD</bcp14> create | ||||
| a new temporary address for such prefix. | ||||
| </t> | ||||
| <dl newline="true" spacing="normal"> | ||||
| <dt>Note:</dt> | ||||
| <dd>For example, a host might implement prefix-specific policies s | ||||
| uch as | ||||
| not configuring temporary addresses for the Unique Local IPv6 Unicast | ||||
| Addresses (ULAs) <xref target="RFC4193" format="default"/> prefix.</dd> | ||||
| </dl> | ||||
| </li> | ||||
| <li> | ||||
| <t>When creating a temporary address, DESYNC_FACTOR <bcp14>MUST</bcp | ||||
| 14> be | ||||
| computed and associated with the newly created address, and the address | ||||
| lifetime | ||||
| values <bcp14>MUST</bcp14> be derived from the corresponding prefix | ||||
| as | ||||
| follows: | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>Its valid lifetime is the lower of the Valid | ||||
| Lifetime of the prefix and TEMP_VALID_LIFETIME.</li> | ||||
| <li>Its preferred lifetime is the lower of the | ||||
| Preferred Lifetime of the prefix and | ||||
| TEMP_PREFERRED_LIFETIME - DESYNC_FACTOR.</li> | ||||
| </ul> | ||||
| </li> | ||||
| <li>A temporary address is created only if this | ||||
| calculated preferred lifetime is greater than | ||||
| REGEN_ADVANCE time units. In particular, an | ||||
| implementation <bcp14>MUST NOT</bcp14> create a temporary address wi | ||||
| th | ||||
| a zero preferred lifetime.</li> | ||||
| <li>New temporary addresses <bcp14>MUST</bcp14> be created by appendin | ||||
| g | ||||
| a randomized IID to the prefix that was received. <xref target="SECT | ||||
| ION3_2" format="default"/> of this document specifies some sample algorithms for | ||||
| generating the randomized IID.</li> | ||||
| <li>The host <bcp14>MUST</bcp14> perform DAD | ||||
| on the generated temporary address. If DAD | ||||
| indicates the address is already in use, the host <bcp14>MUST</bcp14 | ||||
| > | ||||
| generate a new randomized IID and repeat the | ||||
| previous steps as appropriate (starting from step 4), up to TEMP_IDG | ||||
| EN_RETRIES | ||||
| times. If, after TEMP_IDGEN_RETRIES consecutive attempts, | ||||
| the host is unable to generate a unique temporary address, the host | ||||
| <bcp14>MUST</bcp14> log | ||||
| a system error and <bcp14>SHOULD NOT</bcp14> attempt to generate a t | ||||
| emporary address for the given prefix for the duration of the host's attachment | ||||
| to the network via this interface. This allows hosts to recover from occasional | ||||
| DAD failures or otherwise log the recurrent address collisions.</li> | ||||
| </ol> | ||||
| </section> | ||||
| <section anchor="SECTION3_4" numbered="true" toc="default"> | ||||
| <name>Expiration of Temporary Addresses</name> | ||||
| <t>When a temporary address becomes deprecated, a new one | ||||
| <bcp14>MUST</bcp14> be generated. This is done by repeating the actions | ||||
| described in | ||||
| <xref target="SECTION3_3" format="default"/>, starting at step 4). Note | ||||
| that, in normal operation, except for the transient period when a tempor | ||||
| ary | ||||
| address is being regenerated, at most | ||||
| one temporary address per prefix should be in a | ||||
| nondeprecated state at any given time on a given | ||||
| interface. Note that if a temporary address becomes | ||||
| deprecated as result of processing a Prefix Information | ||||
| option with a zero preferred lifetime, then a new temporary | ||||
| address <bcp14>MUST NOT</bcp14> be generated (in response to the same Pr | ||||
| efix Information | ||||
| option). To ensure that a preferred | ||||
| temporary address is always available, a new temporary | ||||
| address <bcp14>SHOULD</bcp14> be regenerated slightly before its | ||||
| predecessor is deprecated. This is to allow sufficient time | ||||
| to avoid race conditions in the case where generating a new | ||||
| temporary address is not instantaneous, such as when | ||||
| DAD must be performed. The host <bcp14>SHOULD</bcp14> | ||||
| start the process of address regeneration REGEN_ADVANCE time | ||||
| units before a temporary address is | ||||
| deprecated.</t> | ||||
| <t>As an optional optimization, an implementation <bcp14>MAY</bcp14> | ||||
| remove a deprecated temporary address that is not in use by | ||||
| applications or upper layers, as detailed in | ||||
| <xref target="SECTION6" format="default"/>.</t> | ||||
| </section> | ||||
| <section anchor="REGEN" numbered="true" toc="default"> | ||||
| <name>Regeneration of Temporary Addresses</name> | ||||
| <t>The frequency at which temporary addresses change | ||||
| depends on how a device is being used (e.g., how frequently | ||||
| it initiates new communication) and the concerns of the end | ||||
| user. | ||||
| The most egregious privacy concerns appear to involve | ||||
| addresses used for long periods of time (from weeks to | ||||
| years). The more frequently an address changes, the less | ||||
| feasible collecting or coordinating information keyed on | ||||
| IIDs becomes. Moreover, the cost of | ||||
| collecting information and attempting to correlate it based | ||||
| on IIDs will only be justified if enough | ||||
| addresses contain non-changing identifiers to make it | ||||
| worthwhile. Thus, having large numbers of clients change | ||||
| their address on a daily or weekly basis is likely to be | ||||
| sufficient to alleviate most privacy concerns.</t> | ||||
| <t>There are also client costs associated with having a | ||||
| large number of addresses associated with a host (e.g., in | ||||
| doing address lookups, the need to join many multicast | ||||
| groups, etc.). Thus, changing addresses frequently (e.g., | ||||
| every few minutes) may have performance implications.</t> | ||||
| <t> | ||||
| Hosts following this specification <bcp14>SHOULD</bcp14> generate ne | ||||
| w temporary | ||||
| addresses over time. This can be achieved by generating a | ||||
| new temporary address REGEN_ADVANCE time units before a temporary address be | ||||
| comes deprecated. As described above, | ||||
| this produces addresses with a | ||||
| preferred lifetime no larger than TEMP_PREFERRED_LIFETIME. The value | ||||
| DESYNC_FACTOR is a random value computed when a temporary address is | ||||
| generated; it ensures that clients do not generate new addresses at | ||||
| a fixed frequency and that clients do not synchronize with each other | ||||
| and generate new addresses at exactly the same time. When the | ||||
| preferred lifetime expires, a new temporary address <bcp14>MUST</bcp14> be g | ||||
| enerated | ||||
| using the algorithm specified in <xref target="SECTION3_3" format="default"/ | ||||
| > (starting at step 4).</t> | ||||
| <t>Because the frequency at which it is appropriate | ||||
| to generate new addresses varies from one environment to | ||||
| another, implementations <bcp14>SHOULD</bcp14> provide end users with th | ||||
| e | ||||
| ability to change the frequency at which addresses are | ||||
| regenerated. The default value is given in | ||||
| TEMP_PREFERRED_LIFETIME and is one day. In addition, the | ||||
| exact time at which to invalidate a temporary address | ||||
| depends on how applications are used by end users. Thus, | ||||
| the suggested default value of two days | ||||
| (TEMP_VALID_LIFETIME) may not be appropriate in all | ||||
| environments. Implementations <bcp14>SHOULD</bcp14> provide end users wi | ||||
| th | ||||
| the ability to override both of these default values.</t> | ||||
| <t>Finally, when an interface connects to a new (different) link, existi | ||||
| ng temporary addresses for the corresponding interface <bcp14>MUST</bcp14> be re | ||||
| moved, and new temporary addresses <bcp14>MUST</bcp14> be generated for use on t | ||||
| he new link, using the algorithm in <xref target="SECTION3_3" format="default"/> | ||||
| . | ||||
| If a device moves from one link to another, generating | ||||
| new temporary addresses ensures that the device | ||||
| uses different randomized IIDs for the | ||||
| temporary addresses associated with the two links, making | ||||
| it more difficult to correlate addresses from the two | ||||
| different links as being from the same host. The host <bcp14>MAY</bcp14> | ||||
| follow any process available to it to determine that the | ||||
| link change has occurred. One such process is described by "Simple DNA" | ||||
| <xref target="RFC6059" format="default"/>. Detecting link changes would prevent | ||||
| link down/up events from causing temporary addresses to be (unnecessarily) regen | ||||
| erated.</t> | ||||
| </section> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>Implementation Considerations</name> | ||||
| <t>Devices implementing this specification <bcp14>MUST</bcp14> provide a | ||||
| way for the end user to explicitly enable or disable the | ||||
| use of temporary addresses. In addition, a site might wish | ||||
| to disable the use of temporary addresses in order to | ||||
| simplify network debugging and operations. Consequently, | ||||
| implementations <bcp14>SHOULD</bcp14> provide a way for trusted system | ||||
| administrators to enable or disable the use of temporary | ||||
| addresses.</t> | ||||
| <t>Additionally, sites might wish to selectively enable or | ||||
| disable the use of temporary addresses for some prefixes. | ||||
| For example, a site might wish to disable temporary-address | ||||
| generation for ULA | ||||
| <xref target="RFC4193" format="default"/> prefixes while still generatin | ||||
| g | ||||
| temporary addresses for all other prefixes advertised via PIOs for addre | ||||
| ss configuration. Another | ||||
| site might wish to enable temporary-address generation only | ||||
| for the prefixes 2001:db8:1::/48 and 2001:db8:2::/48 while disabling it | ||||
| for all other prefixes. To support this behavior, | ||||
| implementations <bcp14>SHOULD</bcp14> provide a way to enable and disabl | ||||
| e | ||||
| generation of temporary addresses for specific prefix | ||||
| subranges. This per-prefix setting <bcp14>SHOULD</bcp14> override the | ||||
| global settings on the host with respect to the specified | ||||
| prefix subranges. Note that the per-prefix setting can be | ||||
| applied at any granularity, and not necessarily on a per-subnet basis.</ | ||||
| t> | ||||
| </section> | ||||
| <section anchor="constants" numbered="true" toc="default"> | ||||
| <name>Defined Protocol Parameters and Configuration Variables</name> | ||||
| <t>Protocol parameters and configuration variables defined in this docum | ||||
| ent include:</t> | ||||
| <dl newline="true"> | ||||
| <dt>TEMP_VALID_LIFETIME</dt><dd>Default value: 2 days. Users should | ||||
| be able to override the default value.</dd> | ||||
| <dt>TEMP_PREFERRED_LIFETIME</dt><dd>Default value: 1 day. Users | ||||
| should be able to override the default value. Note: The TEMP_PREFERRED_LIF | ||||
| ETIME value <bcp14>MUST</bcp14> be smaller than the TEMP_VALID_LIFETIME value, t | ||||
| o avoid the pathological case where an address is employed for new communication | ||||
| s but becomes invalid in less than 1 second, disrupting those communications.</d | ||||
| d> | ||||
| </dl> | ||||
| <dl newline="true"> | ||||
| <dt>REGEN_ADVANCE</dt><dd>2 + (TEMP_IDGEN_RETRIES * DupAddrDetectTransmi | ||||
| ts * RetransTimer / 1000)</dd> | ||||
| </dl> | ||||
| <aside> | ||||
| <t>Rationale: This parameter is specified as a function of other proto | ||||
| col | ||||
| parameters, to account for the time possibly spent in DAD in the worst-cas | ||||
| e scenario of | ||||
| TEMP_IDGEN_RETRIES. This prevents the pathological case | ||||
| where the generation of a new temporary address is not started | ||||
| with enough anticipation, such that a new preferred address is | ||||
| generated before the currently preferred temporary address becomes | ||||
| deprecated.</t> | ||||
| <t>RetransTimer is specified in | ||||
| <xref target="RFC4861" format="default"/>, while DupAddrDetectTransmits is | ||||
| specified in <xref target="RFC4862" format="default"/>. Since RetransTimer is s | ||||
| pecified in units of milliseconds, this expression employs the constant "1000", | ||||
| such that | ||||
| REGEN_ADVANCE is expressed in seconds. | ||||
| </t> | ||||
| </aside> | ||||
| <dl newline="true"> | ||||
| <dt>MAX_DESYNC_FACTOR</dt><dd>0.4 * TEMP_PREFERRED_LIFETIME. Upper boun | ||||
| d on DESYNC_FACTOR.</dd> | ||||
| </dl> | ||||
| <aside> | ||||
| <t>Rationale: Setting MAX_DESYNC_FACTOR to 0.4 TEMP_PREFERRED_LIFETIME | ||||
| results in addresses that have statistically different | ||||
| lifetimes, and a maximum of three concurrent temporary | ||||
| addresses when the default values specified in this | ||||
| section are employed.</t> | ||||
| </aside> | ||||
| <dl newline="true"> | ||||
| <dt>DESYNC_FACTOR</dt><dd>A random value within the range 0 - | ||||
| MAX_DESYNC_FACTOR. It is computed each time a temporary address is | ||||
| generated, and is associated with the corresponding address. It MUST be sma | ||||
| ller than (TEMP_PREFERRED_LIFETIME - REGEN_ADVANCE).</dd> | ||||
| <dt>TEMP_IDGEN_RETRIES</dt><dd>Default value: 3</dd> | ||||
| </dl> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="SECTION4" numbered="true" toc="default"> | ||||
| <name>Implications of Changing IIDs</name> | ||||
| <t>The desire to protect individual privacy can conflict with the desire | ||||
| to effectively maintain and debug a network. Having clients use addresses | ||||
| that | ||||
| change over time will make it more difficult to track down | ||||
| and isolate operational problems. For example, when looking | ||||
| at packet traces, it could become more difficult to determine | ||||
| whether one is seeing behavior caused by a single errant | ||||
| host or a number of them.</t> | ||||
| <t>It is currently recommended that network deployments provide multiple IPv6 ad | ||||
| dresses from each prefix to general-purpose hosts <xref target="RFC7934" format= | ||||
| "default"/>. However, in some scenarios, use of a large number of IPv6 addresses | ||||
| may have negative implications on network devices that need to maintain entries | ||||
| for each IPv6 address in some data structures (e.g., SAVI <xref target="RFC7039 | ||||
| " format="default"/>). For example, concurrent active use of multiple IPv6 addre | ||||
| sses will increase Neighbor Discovery traffic if Neighbor Caches in network devi | ||||
| ces are not large enough to store all addresses on the link. This can impact pe | ||||
| rformance and energy efficiency on networks on which multicast is expensive (see | ||||
| e.g., <xref target="I-D.ietf-mboned-ieee802-mcast-problems" format="default"/>) | ||||
| . Additionally, some network-security devices might incorrectly infer IPv6 addre | ||||
| ss forging if temporary addresses are regenerated at a high rate.</t> | ||||
| <t>The use of temporary addresses may cause unexpected | ||||
| difficulties with some applications. For example, | ||||
| some servers refuse to accept communications from clients | ||||
| for which they cannot map the IP address into a DNS name. That is, they | ||||
| perform a DNS PTR query to | ||||
| determine the DNS name corresponding to an IPv6 address, and may then also | ||||
| perform an AAAA | ||||
| query on the returned name to verify it maps back into the the same addres | ||||
| s. Consequently, | ||||
| clients not properly registered in the DNS may be unable to | ||||
| access some services. However, a host's DNS | ||||
| name (if non-changing) would serve as a constant identifier. The | ||||
| wide deployment of the extension described in this document | ||||
| could challenge the practice of inverse-DNS-based | ||||
| "validation", which has little validity, though it is | ||||
| widely implemented. In order to meet server challenges, hosts | ||||
| could register temporary addresses in the DNS using random | ||||
| names (for example, a string version of the random address | ||||
| itself), albeit at the expense of increased complexity.</t> | ||||
| <t>In addition, some applications may not behave robustly if | ||||
| an address becomes invalid while it is still in use by the application o | ||||
| r if the | ||||
| application opens multiple sessions and expects them to all use the | ||||
| same address.</t> | ||||
| <t> | ||||
| <xref target="RFC4941" format="default"/> employed a randomized temporary IID fo | ||||
| r generating a set of temporary addresses, such that temporary addresses configu | ||||
| red at a given time for multiple SLAAC prefixes would employ the same IID. Shari | ||||
| ng the same IID among multiple addresses allowed a host to join only one solicit | ||||
| ed-node multicast group per temporary address set. | ||||
| </t> | ||||
| <t>This document requires that the IIDs of all temporary addresses on a host are | ||||
| statistically different from each other. This means that when a network employs | ||||
| multiple prefixes, each temporary address of a set will result in a different s | ||||
| olicited-node multicast address, and, thus, the number of multicast groups that | ||||
| a host must join becomes a function of the number of SLAAC prefixes employed for | ||||
| generating temporary addresses.</t> | ||||
| <t> | ||||
| Thus, a network that employs multiple prefixes may require hosts to join more mu | ||||
| lticast groups than in the case of implementations of RFC 4941. If the number of | ||||
| multicast groups were large enough, a host might need to resort to setting the | ||||
| network interface card to promiscuous mode. This could cause the host to process | ||||
| more packets than strictly necessary and might have a negative impact on batter | ||||
| y life and system performance in general.</t> | ||||
| <t> | ||||
| We note that since this document reduces the default TEMP_VALID_LIFETIME from 7 | ||||
| days (in <xref target="RFC4941" format="default"/>) to 2 days, the number of con | ||||
| current temporary addresses per SLAAC prefix will be smaller than for RFC 4941 i | ||||
| mplementations; thus, the number of multicast groups for a network that employs, | ||||
| say, between 1 and 3 prefixes, will be similar to the number of such groups for | ||||
| RFC 4941 implementations.</t> | ||||
| <t> | ||||
| Implementations concerned with the maximum number of multicast groups that would | ||||
| be required to join as a result of configured addresses, or the overall number | ||||
| of configured addresses, should consider enforcing implementation-specific limit | ||||
| s on, e.g., the maximum number of configured addresses, the maximum number of SL | ||||
| AAC prefixes that are employed for autoconfiguration, and/or the maximum ratio f | ||||
| or TEMP_VALID_LIFETIME/TEMP_PREFERRED_LIFETIME (which ultimately controls the ap | ||||
| proximate number of concurrent temporary addresses per SLAAC prefix). Many of th | ||||
| ese configuration limits are readily available in SLAAC and RFC 4941 implementat | ||||
| ions. We note that these configurable limits are meant to prevent pathological b | ||||
| ehaviors (as opposed to simply limiting the usage of IPv6 addresses), since IPv6 | ||||
| implementations are expected to leverage the usage of multiple addresses <xref | ||||
| target="RFC7934" format="default"/>. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="changes" numbered="true" toc="default"> | ||||
| <name>Significant Changes from RFC 4941</name> | ||||
| <t>This section summarizes the substantive changes in this document | ||||
| relative to RFC 4941.</t> | ||||
| <t>Broadly speaking, this document introduces the following changes: | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>Addresses a number of flaws in the algorithm for generating temporar | ||||
| y addresses. | ||||
| The aforementioned flaws include the use of MD5 for computing the tempora | ||||
| ry IIDs, and reusing the same IID for multiple prefixes (see <xref target="RAID2 | ||||
| 015" format="default"/> and <xref target="RFC7721" format="default"/> for furthe | ||||
| r details).</li> | ||||
| <li> | ||||
| Allows hosts to employ only temporary addresses. <xref target="RFC4941 | ||||
| " format="default"/> assumed that temporary addresses were configured in additio | ||||
| n to stable addresses. This document does not imply or require the configuration | ||||
| of stable addresses; thus, implementations can now configure both stable and te | ||||
| mporary addresses or temporary addresses only. | ||||
| </li> | ||||
| <li> | ||||
| Removes the recommendation that temporary addresses be disabled by def | ||||
| ault. This is in line with BCP 188 (<xref target="RFC7258" format="default"/>) a | ||||
| nd also with BCP 204 (<xref target="RFC7934" format="default"/>). | ||||
| </li> | ||||
| <li>Reduces the default maximum valid lifetime for temporary addresses ( | ||||
| TEMP_VALID_LIFETIME). | ||||
| TEMP_VALID_LIFETIME has been | ||||
| reduced from 1 week to 2 days, decreasing the typical number of | ||||
| concurrent temporary addresses from 7 to 3. This reduces the | ||||
| possible stress on network elements (see <xref target="SECTION4"/> for fu | ||||
| rther | ||||
| details).</li> | ||||
| <li>DESYNC_FACTOR is computed each time a temporary address is generated | ||||
| and is associated with the corresponding temporary address, such that each temp | ||||
| orary address has a statistically different preferred lifetime, and thus tempora | ||||
| ry addresses are not generated at any specific frequency.</li> | ||||
| <li>Changes the requirement to not try to regenerate temporary addresses | ||||
| upon TEMP_IDGEN_RETRIES consecutive DAD failures from "<bcp14>MUST NOT</bcp14>" | ||||
| to "<bcp14>SHOULD NOT</bcp14>".</li> | ||||
| <li>The discussion about the security and privacy implications of differ | ||||
| ent address generation techniques has been replaced with references to recent wo | ||||
| rk in this area (<xref target="RFC7707" format="default"/>, <xref target="RFC772 | ||||
| 1" format="default"/>, and <xref target="RFC7217" format="default"/>). | ||||
| </li> | ||||
| <li><t>This document incorporates errata submitted (at the time of writing | ||||
| ) for <xref target="RFC4941" format="default"/> by <contact fullname="Jiri Bohac | ||||
| "/> and <contact fullname="Alfred Hoenes"/>.</t></li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="SECTION6" numbered="true" toc="default"> | ||||
| <name>Future Work</name> | ||||
| <t>An implementation might want to keep track of which | ||||
| addresses are being used by upper layers so as to be able to | ||||
| remove a deprecated temporary address from internal data | ||||
| structures once no upper-layer protocols are using it (but | ||||
| not before). This is in contrast to current approaches, where | ||||
| addresses are removed from an interface when they become | ||||
| invalid | ||||
| <xref target="RFC4862" format="default"/>, independent of whether or not | ||||
| upper-layer protocols are still using them. For TCP | ||||
| connections, such information is available in control blocks. | ||||
| For UDP-based applications, it may be the case that only the | ||||
| applications have knowledge about what addresses are actually | ||||
| in use. Consequently, an implementation generally will need | ||||
| to use heuristics in deciding when an address is no longer in | ||||
| use.</t> | ||||
| </section> | ||||
| <section anchor="iana-cons" numbered="true" toc="default"> | ||||
| <name>IANA Considerations</name> | ||||
| <t>This document has no IANA actions.</t> | ||||
| </section> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>Security Considerations</name> | ||||
| <t>If a very small number of hosts (say, only one) use a | ||||
| given prefix for extended periods of time, just changing | ||||
| the interface-identifier part of the address may not be | ||||
| sufficient to mitigate address-based network-activity correlation, since | ||||
| the prefix acts as a | ||||
| constant identifier. The procedures described in this | ||||
| document are most effective when the prefix is reasonably | ||||
| nonstatic or used by a fairly large number of | ||||
| hosts. Additionally, if a temporary address is used in a session where t | ||||
| he user | ||||
| authenticates, any notion of "privacy" for that address is | ||||
| compromised for the party or parties that receive the authentication | ||||
| information.</t> | ||||
| <t>While this document discusses ways to limit the lifetime of interface | ||||
| identifiers to reduce the ability of attackers to perform | ||||
| address-based network-activity correlation, the method described is | ||||
| believed to be | ||||
| ineffective against sophisticated forms of traffic analysis. | ||||
| To increase effectiveness, one may need to consider the use of | ||||
| more advanced techniques, such as onion routing | ||||
| <xref target="ONION" format="default"/>.</t> | ||||
| <t>Ingress filtering has been and is being deployed as a | ||||
| means of preventing the use of spoofed source addresses in | ||||
| Distributed Denial of Service (DDoS) attacks. In a network | ||||
| with a large number of hosts, new temporary addresses are | ||||
| created at a fairly high rate. This might make it difficult | ||||
| for ingress-/egress-filtering mechanisms to distinguish between | ||||
| legitimately changing temporary addresses and spoofed source | ||||
| addresses, which are "in-prefix" (using a topologically | ||||
| correct prefix and nonexistent interface identifier). This can be | ||||
| addressed by using access-control mechanisms on a per-address | ||||
| basis on the network ingress point -- though, as noted in <xref target="SE | ||||
| CTION4" format="default"/>, there are corresponding costs | ||||
| for doing so.</t> | ||||
| </section> | ||||
| </middle> | ||||
| <back> | ||||
| <displayreference target="I-D.ietf-mboned-ieee802-mcast-problems" to="MCAST-PROB | ||||
| LEMS"/> | ||||
| <references> | ||||
| <name>References</name> | ||||
| <references> | ||||
| <name>Normative References</name> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4861.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.6724.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.4086.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5453.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7136.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.2119.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8174.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4193.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4291.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4862.xml"/> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7217.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4941.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8190.xml"/> | ||||
| <!-- [I-D.ietf-mboned-ieee802-mcast-problems] IESG state IESG Evaluation::Revise | ||||
| d I-D Needed --> | ||||
| <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D. | ||||
| ietf-mboned-ieee802-mcast-problems.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7934.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7039.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.7421.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.7258.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.5014.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.2104.xml"/> | ||||
| <reference anchor="IANA-RESERVED-IID" target="https://www.iana.org/assig | ||||
| nments/ipv6-interface-ids"> | ||||
| <front> | ||||
| <title>Reserved IPv6 Interface Identifiers</title> | ||||
| <author> | ||||
| <organization>IANA</organization> | ||||
| </author> | ||||
| <date/> | ||||
| </front> | ||||
| </reference> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.1321.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6151.xml"/> | ||||
| <reference anchor="RAID2015" target="https://publications.sba-research.o | ||||
| rg/publications/Ullrich2015Privacy.pdf"> | ||||
| <front> | ||||
| <title>Privacy is Not an Option: Attacking the IPv6 Privacy Extensio | ||||
| n</title> | ||||
| <author fullname="Johanna Ullrich" initials="J." surname="Ullrich"> | ||||
| </author> | ||||
| <author fullname="Edgar R. Weippl" initials="E.R." surname="Weippl"> | ||||
| </author> | ||||
| <date year="2015"/> | ||||
| </front> | ||||
| <seriesInfo name="" value="International Symposium on Recent Advances | ||||
| in Intrusion Detection (RAID)"/> | ||||
| </reference> | ||||
| <reference anchor="FIPS-SHS" target="https://nvlpubs.nist.gov/nistpubs/F | ||||
| IPS/NIST.FIPS.180-4.pdf"> | ||||
| <front> | ||||
| <title>Secure Hash Standard (SHS)</title> | ||||
| <author> | ||||
| <organization>NIST</organization> | ||||
| </author> | ||||
| <date month="August" year="2015"/> | ||||
| </front> | ||||
| <seriesInfo name="FIPS PUB" value="180-4"/> | ||||
| <seriesInfo name="DOI" value="10.6028/NIST.FIPS.180-4"/> | ||||
| </reference> | ||||
| <reference anchor="BLAKE3" target="https://blake3.io/"> | ||||
| <front> | ||||
| <title>BLAKE3: one function, fast everywhere</title> | ||||
| <author initials="J." surname="O'Connor" fullname="Jack O | ||||
| 'Connor"> | ||||
| <organization></organization> | ||||
| </author> | ||||
| <author initials="J. P." surname="Aumasson" fullname="Jea | ||||
| n-Philippe Aumasson"> | ||||
| <organization>NAGRA</organization> | ||||
| </author> | ||||
| <author initials="S." surname="Neves" fullname="Samuel Ne | ||||
| ves"> | ||||
| <organization></organization> | ||||
| </author> | ||||
| <author initials="Z." surname="Wilcox-O'Hearn" fullname=" | ||||
| Zooko Wilcox-O'Hearn"> | ||||
| <organization></organization> | ||||
| </author> | ||||
| <date year="2020"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="OPEN-GROUP" target="http://pubs.opengroup.org/onlinep | ||||
| ubs/9699919799/basedefs/contents.html"> | ||||
| <front> | ||||
| <title>The Open Group Base Specifications Issue 7</title> | ||||
| <author> | ||||
| <organization>The Open Group</organization> | ||||
| </author> | ||||
| <date year="2016"/> | ||||
| </front> | ||||
| <seriesInfo name="Section 4.16" value="Seconds Since the Epoch"/> | ||||
| <seriesInfo name="IEEE Std" value="1003.1"/> | ||||
| </reference> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.6265.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.7721.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7707.xml"/> | ||||
| <reference anchor="ONION"> | ||||
| <front> | ||||
| <title>Proxies for Anonymous Routing</title> | ||||
| <author initials="M.G." surname="Reed" fullname="Michael G. Reed"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="P.F." surname="Syverson" fullname="Paul F. Syverso | ||||
| n"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="D.M." surname="Goldschlag" fullname="David M. Gold | ||||
| schlag"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="December" year="1996"/> | ||||
| </front> | ||||
| <seriesInfo name="Proceedings of the" value="12th Annual Computer Secu | ||||
| rity Applications Conference"/> | ||||
| <seriesInfo name="DOI" value="10.1109/CSAC.1996.569678" /> | ||||
| </reference> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.6059.xml"/> | ||||
| </references> | ||||
| </references> | ||||
| <section numbered="false" toc="default"> | ||||
| <name>Acknowledgments</name> | ||||
| <t>Fernando Gont was the sole author of this document (a revision of RFC 4 | ||||
| 941). He would like to thank (in alphabetical order) <contact fullname="Fred Ba | ||||
| ker"/>, <contact fullname="Brian Carpenter"/>, <contact fullname="Tim Chown"/>, | ||||
| <contact fullname="Lorenzo Colitti"/>, <contact fullname="Roman Danyliw"/>, <con | ||||
| tact fullname="David Farmer"/>, <contact fullname="Tom Herbert"/>, <contact full | ||||
| name="Bob Hinden"/>, <contact fullname="Christian Huitema"/>, <contact fullname= | ||||
| "Benjamin Kaduk"/>, <contact fullname="Erik Kline"/>, <contact fullname="Gyan Mi | ||||
| shra"/>, <contact fullname="Dave Plonka"/>, <contact fullname="Alvaro Retana"/>, | ||||
| <contact fullname="Michael Richardson"/>, <contact fullname="Mark Smith"/>, <co | ||||
| ntact fullname="Dave Thaler"/>, <contact fullname="Pascal Thubert"/>, <contact f | ||||
| ullname="Ole Troan"/>, <contact fullname="Johanna Ullrich"/>, <contact fullname= | ||||
| "Eric Vyncke"/>, <contact fullname="Timothy Winters"/>, and <contact fullname="C | ||||
| hristopher Wood"/> for providing valuable comments on earlier draft versions of | ||||
| this document.</t> | ||||
| <t>This document incorporates errata submitted for RFC 4941 by <contact fu | ||||
| llname="Jiri Bohac"/> and <contact fullname="Alfred Hoenes"/> (at the time of wr | ||||
| iting).</t> | ||||
| <t><contact fullname="Suresh Krishnan"/> was the sole author of RFC | ||||
| 4941 (a revision of RFC 3041). He would like to acknowledge the contributions of | ||||
| the IPv6 Working Group and, in particular, <contact fullname="Jari Arkko"/>, <c | ||||
| ontact fullname="Pekka Nikander"/>, <contact fullname="Pekka Savola"/>, <contact | ||||
| fullname="Francis Dupont"/>, <contact fullname="Brian Haberman"/>, <contact ful | ||||
| lname="Tatuya Jinmei"/>, and <contact fullname="Margaret Wasserman"/> | ||||
| for their detailed comments.</t> | ||||
| <t> | ||||
| <contact fullname="Rich Draves"/> and <contact fullname="Thomas Narten"/> wer | ||||
| e the authors of RFC 3041. They | ||||
| would like to acknowledge the contributions of the IPv6 Working Group | ||||
| and, in particular, <contact fullname="Ran Atkinson"/>, <contact fullname="Ma | ||||
| tt Crawford"/>, <contact fullname="Steve Deering"/>, <contact fullname="Allison | ||||
| Mankin"/>, and <contact fullname="Peter Bieringer"/>. | ||||
| </t> | ||||
| </section> | ||||
| </back> | ||||
| </rfc> | ||||
| End of changes. 1 change blocks. | ||||
| lines changed or deleted | lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||