idnits 2.17.1 draft-ietf-6man-stable-privacy-addresses-13.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (September 3, 2013) is 3885 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: 'Gont-BRUCON2012' is defined on line 742, but no explicit reference was found in the text ** Obsolete normative reference: RFC 2460 (Obsoleted by RFC 8200) ** Obsolete normative reference: RFC 3315 (Obsoleted by RFC 8415) ** Downref: Normative reference to an Informational RFC: RFC 3493 ** Downref: Normative reference to an Informational RFC: RFC 3542 ** Obsolete normative reference: RFC 4941 (Obsoleted by RFC 8981) ** Downref: Normative reference to an Informational RFC: RFC 6105 -- Obsolete informational reference (is this intentional?): RFC 1948 (Obsoleted by RFC 6528) == Outdated reference: A later version (-08) exists of draft-ietf-opsec-ipv6-host-scanning-02 Summary: 6 errors (**), 0 flaws (~~), 3 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 IPv6 maintenance Working Group (6man) F. Gont 3 Internet-Draft SI6 Networks / UTN-FRH 4 Intended status: Standards Track September 3, 2013 5 Expires: March 7, 2014 7 A Method for Generating Semantically Opaque Interface Identifiers with 8 IPv6 Stateless Address Autoconfiguration (SLAAC) 9 draft-ietf-6man-stable-privacy-addresses-13 11 Abstract 13 This document specifies a method for generating IPv6 Interface 14 Identifiers to be used with IPv6 Stateless Address Autoconfiguration 15 (SLAAC), such that addresses configured using this method are stable 16 within each subnet, but the Interface Identifier changes when hosts 17 move from one network to another. This method is meant to be an 18 alternative to generating Interface Identifiers based on hardware 19 address (e.g., using IEEE identifiers), such that the benefits of 20 stable addresses can be achieved without sacrificing the privacy of 21 users. The method specified in this document applies to all prefixes 22 a host may be employing, including link-local, global, and unique- 23 local addresses. 25 Status of this Memo 27 This Internet-Draft is submitted in full conformance with the 28 provisions of BCP 78 and BCP 79. 30 Internet-Drafts are working documents of the Internet Engineering 31 Task Force (IETF). Note that other groups may also distribute 32 working documents as Internet-Drafts. The list of current Internet- 33 Drafts is at http://datatracker.ietf.org/drafts/current/. 35 Internet-Drafts are draft documents valid for a maximum of six months 36 and may be updated, replaced, or obsoleted by other documents at any 37 time. It is inappropriate to use Internet-Drafts as reference 38 material or to cite them other than as "work in progress." 40 This Internet-Draft will expire on March 7, 2014. 42 Copyright Notice 44 Copyright (c) 2013 IETF Trust and the persons identified as the 45 document authors. All rights reserved. 47 This document is subject to BCP 78 and the IETF Trust's Legal 48 Provisions Relating to IETF Documents 49 (http://trustee.ietf.org/license-info) in effect on the date of 50 publication of this document. Please review these documents 51 carefully, as they describe your rights and restrictions with respect 52 to this document. Code Components extracted from this document must 53 include Simplified BSD License text as described in Section 4.e of 54 the Trust Legal Provisions and are provided without warranty as 55 described in the Simplified BSD License. 57 Table of Contents 59 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 60 2. Design goals . . . . . . . . . . . . . . . . . . . . . . . . . 7 61 3. Algorithm specification . . . . . . . . . . . . . . . . . . . 9 62 4. Resolving Duplicate Address Detection (DAD) conflicts . . . . 14 63 5. Specified Constants . . . . . . . . . . . . . . . . . . . . . 15 64 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 65 7. Security Considerations . . . . . . . . . . . . . . . . . . . 17 66 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 19 67 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20 68 9.1. Normative References . . . . . . . . . . . . . . . . . . . 20 69 9.2. Informative References . . . . . . . . . . . . . . . . . . 21 70 Appendix A. Possible sources for the Net_Iface parameter . . . . 23 71 A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 23 72 A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . . 23 73 A.3. Link-layer Addresses . . . . . . . . . . . . . . . . . . . 23 74 A.4. Logical Network Service Identity . . . . . . . . . . . . . 24 75 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 25 77 1. Introduction 79 [RFC4862] specifies Stateless Address Autoconfiguration (SLAAC) for 80 IPv6 [RFC2460], which typically results in hosts configuring one or 81 more "stable" addresses composed of a network prefix advertised by a 82 local router, and an Interface Identifier (IID) that typically embeds 83 a hardware address (e.g., using IEEE identifiers) [RFC4291]. 85 Cryptographically Generated Addresses (CGAs) [RFC3972] are yet 86 another method for generating Interface Identifiers, which bind a 87 public signature key to an IPv6 address in the SEcure Neighbor 88 Discovery (SEND) [RFC3971] protocol. 90 Generally, the traditional SLAAC addresses are thought to simplify 91 network management, since they simplify Access Control Lists (ACLs) 92 and logging. However, they have a number of drawbacks: 94 o since the resulting Interface Identifiers do not vary over time, 95 they allow correlation of node activities within the same network, 96 thus negatively affecting the privacy of users. 98 o since the resulting Interface Identifiers are constant across 99 networks, the resulting IPv6 addresses can be leveraged to track 100 and correlate the activity of a node across multiple networks 101 (e.g. track and correlate the activities of a typical client 102 connecting to the public Internet from different locations), thus 103 negatively affecting the privacy of users. 105 o since embedding the underlying link-layer address in the Interface 106 Identifier will result in specific address patterns, such patterns 107 may be leveraged by attackers to reduce the search space when 108 performing address scanning attacks. For example, the IPv6 109 addresses of all nodes manufactured by the same vendor (at a given 110 time frame) will likely contain the same IEEE Organizationally 111 Unique Identifier (OUI) in the Interface Identifier. 113 o embedding the underlying link-layer address in the Interface 114 Identifier leaks device-specific information that could be 115 leveraged to launch device-specific attacks. 117 o embedding the underlying link-layer address in the Interface 118 Identifier means that replacement of the underlying interface 119 hardware will result in a change of the IPv6 address(es) assigned 120 to that interface. 122 [I-D.cooper-6man-ipv6-address-generation-privacy] provides additional 123 details regarding how these vulnerabilities could be exploited, and 124 the extent to which the method discussed in this document mitigates 125 them. 127 The "Privacy Extensions for Stateless Address Autoconfiguration in 128 IPv6" [RFC4941] (henceforth referred to as "temporary addresses") 129 were introduced to complicate the task of eavesdroppers and other 130 information collectors (e.g. IPv6 addresses in web server logs or 131 email headers, etc.) to correlate the activities of a node, and 132 basically result in temporary (and random) Interface Identifiers. 133 These temporary addresses are generated in addition to the 134 traditional IPv6 addresses based on IEEE identifiers, with the 135 "temporary addresses" being employed for "outgoing communications", 136 and the traditional SLAAC addresses being employed for "server" 137 functions (i.e., receiving incoming connections). 139 It should be noted that temporary addresses can be challenging in 140 a number of areas. For example, from a network-management point 141 of view, they tend to increase the complexity of event logging, 142 trouble-shooting, enforcement of access controls and quality of 143 service, etc. As a result, some organizations disable the use of 144 temporary addresses even at the expense of reduced privacy 145 [Broersma]. Temporary addresses may also result in increased 146 implementation complexity, which might not be possible or 147 desirable in some implementations (e.g., some embedded devices). 149 In scenarios in which temporary addresses are deliberately not 150 used (possibly for any of the aforementioned reasons), all a host 151 is left with is the stable addresses that have been generated 152 using e.g. IEEE identifiers. In such scenarios, it may still be 153 desirable to have addresses that mitigate address scanning 154 attacks, and that at the very least do not reveal the node's 155 identity when roaming from one network to another -- without 156 complicating the operation of the corresponding networks. 158 However, even with "temporary addresses" in place, a number of issues 159 remain to be mitigated. Namely, 161 o since "temporary addresses" [RFC4941] do not eliminate the use of 162 fixed identifiers for server-like functions, they only partially 163 mitigate host-tracking and activity correlation across networks 164 (see [I-D.cooper-6man-ipv6-address-generation-privacy] for some 165 example attacks that are still possible with temporary addresses). 167 o since "temporary addresses" [RFC4941] do not replace the 168 traditional SLAAC addresses, an attacker can still leverage 169 patterns in those addresses to greatly reduce the search space for 170 "alive" nodes [Gont-DEEPSEC2011] [CPNI-IPv6] 171 [I-D.ietf-opsec-ipv6-host-scanning]. 173 Hence, there is a motivation to improve the properties of "stable" 174 addresses regardless of whether temporary addresses are employed or 175 not. 177 We note that attackers can employ a plethora of probing techniques 178 [I-D.ietf-opsec-ipv6-host-scanning] to exploit the aforementioned 179 issues. Some of them (such as the use of ICMPv6 Echo Request and 180 ICMPv6 Echo Response packets) could mitigated by a personal firewall 181 at the target host. For other vectors, such listening to ICMPv6 182 "Destination Unreachable, Address Unreachable" (Type 1, Code 3) error 183 messages referring to the target addresses 184 [I-D.ietf-opsec-ipv6-host-scanning], there is nothing a host can do 185 (e.g., a personal firewall at the target host would not be able to 186 mitigate this probing technique). 188 This document specifies a method to generate Interface Identifiers 189 that are stable/constant for each network interface within each 190 subnet, but that change as hosts move from one network to another, 191 thus keeping the "stability" properties of the Interface Identifiers 192 specified in [RFC4291], while still mitigating address-scanning 193 attacks and preventing correlation of the activities of a node as it 194 moves from one network to another. 196 The method specified in this document is a orthogonal to the use of 197 "temporary" addresses [RFC4941], since it is meant to improve the 198 security and privacy properties of the stable addresses that are 199 employed along with the aforementioned "temporary" addresses. In 200 scenarios in which "temporary addresses" are employed, implementation 201 of the mechanism described in this document (in replacement of stable 202 addresses based on e.g. IEEE identifiers) would mitigate address- 203 scanning attacks and also mitigate the remaining vectors for 204 correlating host activities based on the node's constant (i.e. stable 205 across networks) Interface Identifiers. On the other hand, for nodes 206 that currently disable "temporary addresses" [RFC4941] for some of 207 the reasons described earlier in this document, implementation of 208 this mechanism will result in stable privacy-enhanced addresses which 209 address some of the concerns related to addresses that embed IEEE 210 identifiers [RFC4291], and which mitigate IPv6 address-scanning 211 attacks. 213 We note that this method is incrementally deployable, since it does 214 not pose any interoperability implications when deployed on networks 215 where other nodes do not implement or employ it. Additionally, we 216 note that this document does not update or modify IPv6 StateLess 217 Address Auto-Configuration (SLAAC) [RFC4862] itself, but rather only 218 specifies an alternative algorithm to generate Interface Identifiers. 219 Therefore, the usual address lifetime properties (as specified in the 220 corresponding Prefix Information Options) apply when IPv6 addresses 221 are generated as a result of employing the algorithm specified in 222 this document with SLAAC [RFC4862]. Additionally, from the point of 223 view of renumbering, we note that these addresses behave like the 224 traditional IPv6 addresses (that embed a hardware address) resulting 225 from SLAAC [RFC4862]. 227 While the method specified in this document is meant to be used with 228 SLAAC, this does not preclude the same algorithm from being used with 229 other address configuration mechanisms, such as DHCPv6 [RFC3315] or 230 manual address configuration. 232 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 233 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 234 document are to be interpreted as described in RFC 2119 [RFC2119]. 236 2. Design goals 238 This document specifies a method for selecting Interface Identifiers 239 to be used with IPv6 SLAAC, with the following goals: 241 o The resulting Interface Identifiers remain constant/stable for 242 each prefix used with SLAAC within each subnet. That is, the 243 algorithm generates the same Interface Identifier when configuring 244 an address (for the same interface) belonging to the same prefix 245 within the same subnet. 247 o The resulting Interface Identifiers do change when addresses are 248 configured for different prefixes. That is, if different 249 autoconfiguration prefixes are used to configure addresses for the 250 same network interface card, the resulting Interface Identifiers 251 must be (statistically) different. This means that, given two 252 addresses produced by the method specified in this document, it 253 must be difficult for an attacker tell whether the addresses have 254 been generated/used by the same node. 256 o It must be difficult for an outsider to predict the Interface 257 Identifiers that will be generated by the algorithm, even with 258 knowledge of the Interface Identifiers generated for configuring 259 other addresses. 261 o Depending on the specific implementation approach (see Section 3 262 and Appendix A), the resulting Interface Identifiers may be 263 independent of the underlying hardware (e.g. link-layer address). 264 This means that e.g. replacing a Network Interface Card (NIC) will 265 not have the (generally undesirable) effect of changing the IPv6 266 addresses used for that network interface. 268 o The method specified in this document is meant to be an 269 alternative to producing IPv6 addresses based on e.g. IEEE 270 identifiers (as specified in [RFC2464]). It is meant to be 271 employed for all of the stable (i.e. non-temporary) IPv6 addresses 272 configured with SLAAC for a given interface, including global, 273 link-local, and unique-local IPv6 addresses. 275 We note that of use of the algorithm specified in this document is 276 (to a large extent) orthogonal to the use of "temporary addresses" 277 [RFC4941]. When employed along with "temporary addresses", the 278 method specified in this document will mitigate address-scanning 279 attacks and correlation of node activities across networks (see 280 [I-D.cooper-6man-ipv6-address-generation-privacy] and [IAB-PRIVACY]). 281 On the other hand, hosts that do not implement/use "temporary 282 addresses" but employ the method specified in this document would, at 283 the very least, mitigate the host-tracking and address scanning 284 issues discussed in the previous section. 286 3. Algorithm specification 288 IPv6 implementations conforming to this specification MUST generate 289 Interface Identifiers using the algorithm specified in this section 290 in replacement of any other algorithms used for generating "stable" 291 addresses with SLAAC (such as those specified in [RFC2464]). 292 However, implementations conforming to this specification MAY employ 293 the algorithm specified in [RFC4941] to generate temporary addresses 294 in addition to the addresses generated with the algorithm specified 295 in this document. The method specified in this document MUST be 296 employed for generating the Interface Identifiers with SLAAC for all 297 the stable addresses of a given interface, including IPv6 global, 298 link-local, and unique-local addresses. 300 This means that this document does not formally obsolete or 301 deprecate any of the existing algorithms to generate Interface 302 Identifiers (e.g. such as that specified in [RFC2464]). However, 303 those IPv6 implementations that employ this specification MUST 304 generate all of their "stable" addresses as specified in this 305 document. 307 Implementations conforming to this specification SHOULD provide the 308 means for a system administrator to enable or disable the use of this 309 algorithm for generating Interface Identifiers. 311 Unless otherwise noted, all of the parameters included in the 312 expression below MUST be included when generating an Interface 313 Identifier. 315 1. Compute a random (but stable) identifier with the expression: 317 RID = F(Prefix, Net_Iface, Network_ID, DAD_Counter, secret_key) 319 Where: 321 RID: 322 Random (but stable) Interface Identifier 324 F(): 325 A pseudorandom function (PRF) that is not computable from the 326 outside (without knowledge of the secret key), which should 327 produce an output of at least 64 bits.The PRF could be 328 implemented as a cryptographic hash of the concatenation of 329 each of the function parameters. 331 Prefix: 332 The prefix to be used for SLAAC, as learned from an ICMPv6 333 Router Advertisement message, or the link-local IPv6 unicast 334 prefix. 336 Net_Iface: 337 An implementation-dependent stable identifier associated with 338 the network interface for which the RID is being generated. 339 An implementation MAY provide a configuration option to select 340 the source of the identifier to be used for the Net_Iface 341 parameter. A discussion of possible sources for this value 342 (along with the corresponding trade-offs) can be found in 343 Appendix A. 345 Network_ID: 346 Some network specific data that identifies the subnet to which 347 this interface is attached. For example the IEEE 802.11 348 Service Set Identifier (SSID) corresponding to the network to 349 which this interface is associated. This parameter is 350 OPTIONAL. 352 DAD_Counter: 353 A counter that is employed to resolve Duplicate Address 354 Detection (DAD) conflicts. It MUST be initialized to 0, and 355 incremented by 1 for each new tentative address that is 356 configured as a result of a DAD conflict. Implementations 357 that record DAD_Counter in non-volatile memory for each 358 {Prefix, Net_Iface, Network_ID} tuple MUST initialize 359 DAD_Counter to the recorded value if such an entry exists in 360 non-volatile memory). See Section 4 for additional details. 362 secret_key: 363 A secret key that is not known by the attacker. The secret 364 key MUST be initialized at operating system installation time 365 to a pseudo-random number (see [RFC4086] for randomness 366 requirements for security). An implementation MAY provide the 367 means for the the system administrator to change or display 368 the secret key. 370 2. The Interface Identifier is finally obtained by taking as many 371 bits from the RID value (computed in the previous step) as 372 necessary, starting from the least significant bit. 374 We note that [RFC4291] requires that, the Interface IDs of all 375 unicast addresses (except those that start with the binary 376 value 000) be 64-bit long. However, the method discussed in 377 this document could be employed for generating Interface IDs 378 of any arbitrary length, albeit at the expense of reduced 379 entropy (when employing Interface IDs smaller than 64 bits). 381 The resulting Interface Identifier should be compared against the 382 Subnet-Router Anycast [RFC4291] and the Reserved Subnet Anycast 383 Addresses [RFC2526], and against those Interface Identifiers 384 already employed in an address of the same network interface and 385 the same network prefix. In the event that an unacceptable 386 identifier has been generated, this situation should be handled 387 in the same way as the case of duplicate addresses (see 388 Section 4). 390 This document does not require the use of any specific PRF for the 391 function F() above, since the choice of such PRF is usually a trade- 392 off between a number of properties (processing requirements, ease of 393 implementation, possible intellectual property rights, etc.), and 394 since the best possible choice for F() might be different for 395 different types of devices (e.g. embedded systems vs. regular 396 servers) and might possibly change over time. 398 Note that the result of F() in the algorithm above is no more secure 399 than the secret key. If an attacker is aware of the PRF that is 400 being used by the victim (which we should expect), and the attacker 401 can obtain enough material (i.e. addresses configured by the victim), 402 the attacker may simply search the entire secret-key space to find 403 matches. To protect against this, the secret key should be of a 404 reasonable length. Key lengths of at least 128 bits should be 405 adequate. The secret key is initialized at system installation time 406 to a pseudo-random number, thus allowing this mechanism to be 407 enabled/used automatically, without user intervention. 409 Including the SLAAC prefix in the PRF computation causes the 410 Interface Identifier to vary across each prefix (link-local, global, 411 etc.) employed by the node and, as consequently, also across 412 networks. This mitigates the correlation of activities of multi- 413 homed nodes (since each of the corresponding addresses will employ a 414 different Interface ID), host-tracking (since the network prefix will 415 change as the node moves from one network to another), and any other 416 attacks that benefit from predictable Interface Identifiers (such as 417 address scanning attacks). 419 The Net_Iface is a value that identifies the network interface for 420 which an IPv6 address is being generated. The following properties 421 are required for the Net_Iface parameter: 423 o it MUST be constant across system bootstrap sequences and other 424 network events (e.g., bringing another interface up or down) 426 o it MUST be different for each network interface simultaneously in 427 use 429 Since the stability of the addresses generated with this method 430 relies on the stability of all arguments of F(), it is key that the 431 Net_Iface be constant across system bootstrap sequences and other 432 network events. Additionally, the Net_Iface must uniquely identify 433 an interface within the node, such that two interfaces connecting to 434 the same network do not result in duplicate addresses. Different 435 types of operating systems might benefit from different stability 436 properties of the Net_Iface parameter. For example, a client- 437 oriented operating system might want to employ Net_Iface identifiers 438 that are attached to the underlying network interface card (NIC), 439 such that a removable NIC always gets the same IPv6 address, 440 irrespective of the system communications port to which it is 441 attached. On the other hand, a server-oriented operating system 442 might prefer Net_Iface identifiers that are attached to system slots/ 443 ports, such that replacement of a network interface card does not 444 result in an IPv6 address change. Appendix A discusses possible 445 sources for the Net_Iface, along with their pros and cons. 447 Including the optional Network_ID parameter when computing the RID 448 value above would cause the algorithm to produce a different 449 Interface Identifier when connecting to different networks, even when 450 configuring addresses belonging to the same prefix. This means that 451 a host would employ a different Interface Identifier as it moves from 452 one network to another even for IPv6 link-local addresses or Unique 453 Local Addresses (ULAs). In those scenarios where the Network_ID is 454 unknown to the attacker, including this parameter might help mitigate 455 attacks where a victim node connects to the same subnet as the 456 attacker, and the attacker tries to learn the Interface Identifier 457 used by the victim node for a remote network (see Section 7 for 458 further details). 460 The DAD_Counter parameter provides the means to intentionally cause 461 this algorithm produce a different IPv6 addresses (all other 462 parameters being the same). This could be necessary to resolve 463 Duplicate Address Detection (DAD) conflicts, as discussed in detail 464 in Section 4. 466 Finally, we note that all of the bits in the resulting Interface IDs 467 are treated as "opaque" bits. For example, the universal/local bit 468 of Modified EUI-64 format identifiers is treated as any other bit of 469 such identifier. In theory, this might result in Duplicate Address 470 Detection (DAD) failures that would otherwise not be encountered. 471 However, this is not deemed as a real issue, because of the following 472 considerations: 474 o The interface IDs of all addresses (except those of addresses that 475 that start with the binary value 000) are 64-bit long. Since the 476 method specified in this document results in random Interface IDs, 477 the probability of DAD failures is very small. 479 o Real world data indicates that MAC address reuse is far more 480 common than assumed [HDMoore]. This means that even IPv6 481 addresses that employ (allegedly) unique identifiers (such as IEEE 482 identifiers) might result in DAD failures, and hence 483 implementations should be prepared to gracefully handle such 484 occurrences. 486 o Since some popular and widely-deployed operating systems (such as 487 Microsoft Windows) do not employ unique hardware identifiers for 488 the Interface IDs of their stable addresses, reliance on such 489 unique identifiers is more reduced in the deployed world (fewer 490 deployed systems rely on them for the avoidance of address 491 collisions). 493 4. Resolving Duplicate Address Detection (DAD) conflicts 495 If as a result of performing Duplicate Address Detection (DAD) 496 [RFC4862] a host finds that the tentative address generated with the 497 algorithm specified in Section 3 is a duplicate address, it SHOULD 498 resolve the address conflict by trying a new tentative address as 499 follows: 501 o DAD_Counter is incremented by 1. 503 o A new Interface Identifier is generated with the algorithm 504 specified in Section 3, using the incremented DAD_Counter value. 506 This procedure may be repeated a number of times until the address 507 conflict is resolved. Hosts SHOULD try at least IDGEN_RETRIES (see 508 Section 5) tentative addresses if DAD fails for successive generated 509 addresses, in the hopes of resolving the address conflict. We also 510 note that hosts MUST limit the number of tentative addresses that are 511 tried (rather than indefinitely try a new tentative address until the 512 conflict is resolved). 514 In those (unlikely) scenarios in which duplicate addresses are 515 detected and in which the order in which the conflicting nodes 516 configure their addresses may vary (e.g., because they may be 517 bootstrapped in different order), the algorithm specified in this 518 section for resolving DAD conflicts could lead to addresses that are 519 not stable within the same subnet. In order to mitigate this 520 potential problem, nodes MAY record the DAD_Counter value employed 521 for a specific {Prefix, Net_Iface, Network_ID} tuple in non-volatile 522 memory, such that the same DAD_Counter value is employed when 523 configuring an address for the same Prefix and subnet at any other 524 point in time. 526 In the event that a DAD conflict cannot be solved (possibly after 527 trying a number of different addresses), address configuration would 528 fail. In those scenarios, nodes MUST NOT automatically fall back to 529 employing other algorithms for generating Interface Identifiers. 531 5. Specified Constants 533 This document specifies the following constant: 535 IDGEN_RETRIES: 536 defaults to 3. 538 6. IANA Considerations 540 There are no IANA registries within this document. The RFC-Editor 541 can remove this section before publication of this document as an 542 RFC. 544 7. Security Considerations 546 This document specifies an algorithm for generating Interface 547 Identifiers to be used with IPv6 Stateless Address Autoconfiguration 548 (SLAAC), as an alternative to e.g. Interface Identifiers that embed 549 IEEE identifiers (such as those specified in [RFC2464]). When 550 compared to such identifiers, the identifiers specified in this 551 document have a number of advantages: 553 o They prevent trivial host-tracking, since when a host moves from 554 one network to another the network prefix used for 555 autoconfiguration and/or the Network ID (e.g., IEEE 802.11 SSID) 556 will typically change, and hence the resulting Interface 557 Identifier will also change (see 558 [I-D.cooper-6man-ipv6-address-generation-privacy]). 560 o They mitigate address-scanning techniques which leverage 561 predictable Interface Identifiers (e.g., known Organizationally 562 Unique Identifiers) [I-D.ietf-opsec-ipv6-host-scanning]. 564 o They may result in IPv6 addresses that are independent of the 565 underlying hardware (i.e. the resulting IPv6 addresses do not 566 change if a network interface card is replaced) if an appropriate 567 source for Net_Iface (Section 3) is employed. 569 o They prevent the information leakage produced by embedding 570 hardware addresses in the Interface Identifier (which could be 571 exploited to launch device-specific attacks). 573 o Since the method specified in this document will result in 574 different Interface Identifiers for each configured address, 575 knowledge/leakage of the Interface Identifier employed for one 576 stable address of will not negatively affect the security/privacy 577 of other stable addresses configured for other prefixes (whether 578 at the same time or at some other point in time). 580 In scenarios in which an attacker can connect to the same subnet as a 581 victim node, the attacker might be able to learn the Interface 582 Identifier employed by the victim node for an arbitrary prefix, by 583 simply sending a forged Router Advertisement [RFC4861] for that 584 prefix, and subsequently learning the corresponding address 585 configured by the victim node (either listening to the Duplicate 586 Address Detection packets, or to any other traffic that employs the 587 newly configured address). We note that a number of factors might 588 limit the ability of an attacker to successfully perform such an 589 attack: 591 o First-Hop security mechanisms such as RA-Guard [RFC6105] 592 [I-D.ietf-v6ops-ra-guard-implementation] could prevent the forged 593 Router Advertisement from reaching the victim node 595 o If the victim implementation includes the (optional) Network_ID 596 parameter for computing F() (see Section 3), and the Network_ID 597 employed by the victim for a remote network is unknown to the 598 attacker, the Interface Identifier learned by the attacker would 599 differ from the one used by the victim when connecting to the 600 legitimate network. 602 In any case, we note that at the point in which this kind of attack 603 becomes a concern, a host should consider employing Secure Neighbor 604 Discovery (SEND) [RFC3971] to prevent an attacker from illegitimately 605 claiming authority for a network prefix. 607 We note that this algorithm is meant to be an alternative to 608 Interface Identifiers such as those specified in [RFC2464], but is 609 not meant as an alternative to temporary Interface Identifiers (such 610 as those specified in [RFC4941]). Clearly, temporary addresses may 611 help to mitigate the correlation of activities of a node within the 612 same network, and may also reduce the attack exposure window (since 613 temporary addresses are short-lived when compared to the addresses 614 generated with the method specified in this document). We note that 615 implementation of this algorithm would still benefit those hosts 616 employing "temporary addresses", since it would mitigate host- 617 tracking vectors still present when such addresses are used (see 618 [I-D.cooper-6man-ipv6-address-generation-privacy]), and would also 619 mitigate address-scanning techniques that leverage patterns in IPv6 620 addresses that embed IEEE identifiers. 622 Finally, we note that the method described in this document addresses 623 some of the privacy concerns arising from the use of IPv6 addresses 624 that embed IEEE identifiers, without the use of temporary addresses, 625 thus possibly offering an interesting trade-off for those scenarios 626 in which the use of temporary addresses is not feasible. 628 8. Acknowledgements 630 The algorithm specified in this document has been inspired by Steven 631 Bellovin's work ([RFC1948]) in the area of TCP sequence numbers. 633 The author would like to thank (in alphabetical order) Mikael 634 Abrahamsson, Ran Atkinson, Karl Auer, Steven Bellovin, Matthias 635 Bethke, Ben Campbell, Brian Carpenter, Tassos Chatzithomaoglou, Tim 636 Chown, Alissa Cooper, Dominik Elsbroek, Brian Haberman, Bob Hinden, 637 Christian Huitema, Ray Hunter, Jouni Korhonen, Eliot Lear, Jong-Hyouk 638 Lee, Andrew McGregor, Tom Petch, Michael Richardson, Mark Smith, Dave 639 Thaler, Ole Troan, James Woodyatt, and He Xuan, for providing 640 valuable comments on earlier versions of this document. 642 This document is based on the technical report "Security Assessment 643 of the Internet Protocol version 6 (IPv6)" [CPNI-IPv6] authored by 644 Fernando Gont on behalf of the UK Centre for the Protection of 645 National Infrastructure (CPNI). 647 Fernando Gont would like to thank CPNI (http://www.cpni.gov.uk) for 648 their continued support. 650 9. References 652 9.1. Normative References 654 [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 655 (IPv6) Specification", RFC 2460, December 1998. 657 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 658 Requirement Levels", BCP 14, RFC 2119, March 1997. 660 [RFC2526] Johnson, D. and S. Deering, "Reserved IPv6 Subnet Anycast 661 Addresses", RFC 2526, March 1999. 663 [RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C., 664 and M. Carney, "Dynamic Host Configuration Protocol for 665 IPv6 (DHCPv6)", RFC 3315, July 2003. 667 [RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W. 668 Stevens, "Basic Socket Interface Extensions for IPv6", 669 RFC 3493, February 2003. 671 [RFC3542] Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei, 672 "Advanced Sockets Application Program Interface (API) for 673 IPv6", RFC 3542, May 2003. 675 [RFC3971] Arkko, J., Kempf, J., Zill, B., and P. Nikander, "SEcure 676 Neighbor Discovery (SEND)", RFC 3971, March 2005. 678 [RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)", 679 RFC 3972, March 2005. 681 [RFC4086] Eastlake, D., Schiller, J., and S. Crocker, "Randomness 682 Requirements for Security", BCP 106, RFC 4086, June 2005. 684 [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally 685 Unique IDentifier (UUID) URN Namespace", RFC 4122, 686 July 2005. 688 [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing 689 Architecture", RFC 4291, February 2006. 691 [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, 692 "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, 693 September 2007. 695 [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless 696 Address Autoconfiguration", RFC 4862, September 2007. 698 [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy 699 Extensions for Stateless Address Autoconfiguration in 700 IPv6", RFC 4941, September 2007. 702 [RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. 703 Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, 704 February 2011. 706 9.2. Informative References 708 [RFC1948] Bellovin, S., "Defending Against Sequence Number Attacks", 709 RFC 1948, May 1996. 711 [RFC2464] Crawford, M., "Transmission of IPv6 Packets over Ethernet 712 Networks", RFC 2464, December 1998. 714 [I-D.ietf-opsec-ipv6-host-scanning] 715 Gont, F. and T. Chown, "Network Reconnaissance in IPv6 716 Networks", draft-ietf-opsec-ipv6-host-scanning-02 (work in 717 progress), July 2013. 719 [I-D.ietf-v6ops-ra-guard-implementation] 720 Gont, F., "Implementation Advice for IPv6 Router 721 Advertisement Guard (RA-Guard)", 722 draft-ietf-v6ops-ra-guard-implementation-07 (work in 723 progress), November 2012. 725 [I-D.cooper-6man-ipv6-address-generation-privacy] 726 Cooper, A., Gont, F., and D. Thaler, "Privacy 727 Considerations for IPv6 Address Generation Mechanisms", 728 draft-cooper-6man-ipv6-address-generation-privacy-00 (work 729 in progress), July 2013. 731 [HDMoore] HD Moore, "The Wild West", Louisville, Kentucky, U.S.A. 732 September 25-29, 2012, 733 . 735 [Gont-DEEPSEC2011] 736 Gont, "Results of a Security Assessment of the Internet 737 Protocol version 6 (IPv6)", DEEPSEC 2011 Conference, 738 Vienna, Austria, November 2011, . 742 [Gont-BRUCON2012] 743 Gont, "Recent Advances in IPv6 Security", BRUCON 2012 744 Conference, Ghent, Belgium, September 2012, . 748 [Broersma] 749 Broersma, R., "IPv6 Everywhere: Living with a Fully IPv6- 750 enabled environment", Australian IPv6 Summit 2010, 751 Melbourne, VIC Australia, October 2010, . 754 [IAB-PRIVACY] 755 IAB, "Privacy and IPv6 Addresses", July 2011, . 759 [CPNI-IPv6] 760 Gont, F., "Security Assessment of the Internet Protocol 761 version 6 (IPv6)", UK Centre for the Protection of 762 National Infrastructure, (available on request). 764 Appendix A. Possible sources for the Net_Iface parameter 766 The following subsections describe a number of possible sources for 767 the Net_Iface parameter employed by the F() function in Section 3. 768 The choice of a specific source for this value represents a number of 769 trade-offs, which may vary from one implementation to another. 771 A.1. Interface Index 773 The Interface Index [RFC3493] [RFC3542] of an interface uniquely 774 identifies an interface within a node. However, these identifiers 775 might or might not have the stability properties required for the 776 Net_Iface value employed by this method. For example, the Interface 777 Index might change upon removal or installation of a network 778 interface (typically one with a smaller value for the Interface 779 Index, when such a naming scheme is used), or when network interfaces 780 happen to be initialized in a different order. We note that some 781 implementations are known to provide configuration knobs to set the 782 Interface Index for a given interface. Such configuration knobs 783 could be employed to prevent the Interface Index from changing (e.g. 784 as a result of the removal of a network interface). 786 A.2. Interface Name 788 The Interface Name (e.g., "eth0", "em0", etc) tends to be more stable 789 than the underlying Interface Index, since such stability is 790 required/desired when interface names are employed in network 791 configuration (firewall rules, etc.). The stability properties of 792 Interface Names depend on implementation details, such as what is the 793 namespace used for Interface Names. For example, "generic" interface 794 names such as "eth0" or "wlan0" will generally be invariant with 795 respect to network interface card replacements. On the other hand, 796 vendor-dependent interface names such as "rtk0" or the like will 797 generally change when a network interface card is replaced with one 798 from a different vendor. 800 We note that Interface Names might still change when network 801 interfaces are added or removed once the system has been bootstrapped 802 (for example, consider Universal Serial Bus-based network interface 803 cards which might be added or removed once the system has been 804 bootstrapped). 806 A.3. Link-layer Addresses 808 Link-layer addresses typically provide for unique identifiers for 809 network interfaces; although, for obvious reasons, they generally 810 change when a network interface card is replaced. In scenarios where 811 neither Interface Indexes nor Interface Names have the stability 812 properties specified in Section 3 for Net_Iface, an implementation 813 might want to employ the link-layer address of the interface for the 814 Net_Iface parameter, albeit at the expense of making the 815 corresponding IPv6 addresses dependent on the underlying network 816 interface card (i.e., the corresponding IPv6 address would typically 817 change upon replacement of the underlying network interface card). 819 A.4. Logical Network Service Identity 821 Host operating systems with a conception of logical network service 822 identity, distinct from network interface identity or index, may keep 823 a Universally Unique Identifier (UUID) [RFC4122] or similar 824 identifier with the stability properties appropriate for use as the 825 Net_Iface parameter. 827 Author's Address 829 Fernando Gont 830 SI6 Networks / UTN-FRH 831 Evaristo Carriego 2644 832 Haedo, Provincia de Buenos Aires 1706 833 Argentina 835 Phone: +54 11 4650 8472 836 Email: fgont@si6networks.com 837 URI: http://www.si6networks.com