idnits 2.17.1 draft-ietf-6man-stable-privacy-addresses-09.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 (June 3, 2013) is 3980 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) ** Obsolete normative reference: RFC 2460 (Obsoleted by RFC 8200) ** 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-01 Summary: 5 errors (**), 0 flaws (~~), 2 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 June 3, 2013 5 Expires: December 5, 2013 7 A method for Generating Stable Privacy-Enhanced Addresses with IPv6 8 Stateless Address Autoconfiguration (SLAAC) 9 draft-ietf-6man-stable-privacy-addresses-09 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 December 5, 2013. 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 . . . . . . . . . . . . . . . . . . . 8 62 4. Resolving Duplicate Address Detection (DAD) conflicts . . . . 13 63 5. Specified Constants . . . . . . . . . . . . . . . . . . . . . 14 64 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 65 7. Security Considerations . . . . . . . . . . . . . . . . . . . 16 66 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 18 67 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 19 68 9.1. Normative References . . . . . . . . . . . . . . . . . . . 19 69 9.2. Informative References . . . . . . . . . . . . . . . . . . 20 70 Appendix A. Possible sources for the Net_Iface parameter . . . . 22 71 A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 22 72 A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . . 22 73 A.3. Link-layer Addresses . . . . . . . . . . . . . . . . . . . 22 74 A.4. Logical Network Service Identity . . . . . . . . . . . . . 23 75 Appendix B. Security/privacy issues with traditional SLAAC 76 addresses . . . . . . . . . . . . . . . . . . . . . . 24 77 B.1. Correlation of node activities within the same network . . 24 78 B.2. Correlation of node activities across networks . . . . . . 24 79 B.3. Host-tracking attacks . . . . . . . . . . . . . . . . . . 24 80 B.4. Address-scanning attacks . . . . . . . . . . . . . . . . . 25 81 B.5. Exploitation of device-specific information . . . . . . . 25 82 Appendix C. Privacy issues still present when temporary 83 addresses are employed . . . . . . . . . . . . . . . 26 84 C.1. Host tracking . . . . . . . . . . . . . . . . . . . . . . 26 85 C.1.1. Tracking hosts across networks #1 . . . . . . . . . . 26 86 C.1.2. Tracking hosts across networks #2 . . . . . . . . . . 27 87 C.1.3. Revealing the identity of devices performing 88 server-like functions . . . . . . . . . . . . . . . . 27 89 C.2. Address-scanning attacks . . . . . . . . . . . . . . . . . 27 90 C.3. Information Leakage . . . . . . . . . . . . . . . . . . . 28 91 C.4. Correlation of node activities within a network . . . . . 28 92 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 29 94 1. Introduction 96 [RFC4862] specifies Stateless Address Autoconfiguration (SLAAC) for 97 IPv6 [RFC2460], which typically results in hosts configuring one or 98 more "stable" addresses composed of a network prefix advertised by a 99 local router, and an Interface Identifier (IID) that typically embeds 100 a hardware address (e.g., using IEEE identifiers) [RFC4291]. 102 Cryptographically Generated Addresses (CGAs) [RFC3972] are yet 103 another method for generating Interface Identifiers, which bind a 104 public signature key to an IPv6 address in the SEcure Neighbor 105 Discovery (SEND) [RFC3971] protocol. 107 Generally, the traditional SLAAC addresses are thought to simplify 108 network management, since they simplify Access Control Lists (ACLs) 109 and logging. However, they have a number of drawbacks: 111 o since the resulting Interface Identifiers do not vary over time, 112 they allow correlation of node activities within the same network, 113 thus negatively affecting the privacy of users. 115 o since the resulting Interface Identifiers are constant across 116 networks, the resulting IPv6 addresses can be leveraged to track 117 and correlate the activity of a node across multiple networks 118 (e.g. track and correlate the activities of a typical client 119 connecting to the public Internet from different locations), thus 120 negatively affecting the privacy of users. 122 o since embedding the underlying link-layer address in the Interface 123 Identifier will result in specific address patterns, such patterns 124 may be leveraged by attackers to reduce the search space when 125 performing address scanning attacks. For example, the IPv6 126 addresses of all nodes manufactured by the same vendor (at a given 127 time frame) will likely contain the same IEEE Organizationally 128 Unique Identifier (OUI) in the Interface Identifier. 130 o embedding the underlying link-layer address in the Interface 131 Identifier leaks device-specific information that could be 132 leveraged to launch device-specific attacks. 134 o embedding the underlying link-layer address in the Interface 135 Identifier means that replacement of the underlying interface 136 hardware will result in a change of the IPv6 address(es) assigned 137 to that interface. 139 Appendix B provides additional details regarding how these 140 vulnerabilities could be exploited, and the extent to which the 141 method discussed in this document mitigates them. 143 The "Privacy Extensions for Stateless Address Autoconfiguration in 144 IPv6" [RFC4941] (henceforth referred to as "temporary addresses") 145 were introduced to complicate the task of eavesdroppers and other 146 information collectors (e.g. IPv6 addresses in web server logs or 147 email headers, etc.) to correlate the activities of a node, and 148 basically result in temporary (and random) Interface Identifiers. 149 These temporary addresses are generated in addition to the 150 traditional IPv6 addresses based on IEEE identifiers, with the 151 "temporary addresses" being employed for "outgoing communications", 152 and the traditional SLAAC addresses being employed for "server" 153 functions (i.e., receiving incoming connections). 155 It should be noted that temporary addresses can be challenging in 156 a number of areas. For example, from a network-management point 157 of view, they tend to increase the complexity of event logging, 158 trouble-shooting, enforcement of access controls and quality of 159 service, etc. As a result, some organizations disable the use of 160 temporary addresses even at the expense of reduced privacy 161 [Broersma]. Temporary addresses may also result in increased 162 implementation complexity, which might not be possible or 163 desirable in some implementations (e.g., some embedded devices). 165 In scenarios in which temporary addresses are deliberately not 166 used (possibly for any of the aforementioned reasons), all a host 167 is left with is the stable addresses that have been generated 168 using e.g. IEEE identifiers. In such scenarios, it may still be 169 desirable to have addresses that mitigate address scanning 170 attacks, and that at the very least do not reveal the node's 171 identity when roaming from one network to another -- without 172 complicating the operation of the corresponding networks. 174 However, even with "temporary addresses" in place, a number of issues 175 remain to be mitigated. Namely, 177 o since "temporary addresses" [RFC4941] do not eliminate the use of 178 fixed identifiers for server-like functions, they only partially 179 mitigate host-tracking and activity correlation across networks 180 (see Appendix C.1 for some example attacks that are still possible 181 with temporary addresses). 183 o since "temporary addresses" [RFC4941] do not replace the 184 traditional SLAAC addresses, an attacker can still leverage 185 patterns in those addresses to greatly reduce the search space for 186 "alive" nodes [Gont-DEEPSEC2011] [CPNI-IPv6] 187 [I-D.ietf-opsec-ipv6-host-scanning]. 189 Hence, there is a motivation to improve the properties of "stable" 190 addresses regardless of whether temporary addresses are employed or 191 not. 193 We note that attackers can employ a plethora of probing techniques 194 [I-D.ietf-opsec-ipv6-host-scanning] to exploit the aforementioned 195 issues. Some of them (such as the use of ICMPv6 Echo Request and 196 ICMPv6 Echo Response packets) could mitigated by a personal firewall 197 at the target host. For other vectors, such listening to ICMPv6 198 "Destination Unreachable, Address Unreachable" (Type 1, Code 3) error 199 messages referring to the target addresses 200 [I-D.ietf-opsec-ipv6-host-scanning], there is nothing a host can do 201 (e.g., a personal firewall at the target host would not be able to 202 mitigate this probing technique). 204 This document specifies a method to generate Interface Identifiers 205 that are stable/constant for each network interface within each 206 subnet, but that change as hosts move from one network to another, 207 thus keeping the "stability" properties of the Interface Identifiers 208 specified in [RFC4291], while still mitigating address-scanning 209 attacks and preventing correlation of the activities of a node as it 210 moves from one network to another. 212 The method specified in this document is a orthogonal to the use of 213 "temporary" addresses [RFC4941], since it is meant to improve the 214 security and privacy properties of the stable addresses that are 215 employed along with the aforementioned "temporary" addresses. In 216 scenarios in which "temporary addresses" are employed, implementation 217 of the mechanism described in this document (in replacement of stable 218 addresses based on e.g. IEEE identifiers) would mitigate address- 219 scanning attacks and also mitigate the remaining vectors for 220 correlating host activities based on the node's IPv6 addresses. On 221 the other hand, for nodes that currently disable "temporary 222 addresses" [RFC4941] for some of the reasons described earlier in 223 this document, implementation of this mechanism will result in stable 224 privacy-enhanced addresses which address some of the concerns related 225 to addresses that embed IEEE identifiers [RFC4291], and which 226 mitigate IPv6 address-scanning attacks. 228 We note that this method is incrementally deployable, since it does 229 not pose any interoperability implications when deployed on networks 230 where other nodes do not implement or employ it. Additionally, we 231 note that this document does not update or modify IPv6 StateLess 232 Address Auto-Configuration (SLAAC) [RFC4862] itself, but rather only 233 specifies an alternative algorithm to generate Interface Identifiers. 234 Therefore, the usual address lifetime properties (as specified in the 235 corresponding Prefix Information Options) apply when IPv6 addresses 236 are generated as a result of employing the algorithm specified in 237 this document with SLAAC [RFC4862]. Additionally, from the point of 238 view of renumbering, we note that these addresses behave like the 239 traditional IPv6 addresses (that embed a hardware address) resulting 240 from SLAAC [RFC4862]. 242 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 243 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 244 document are to be interpreted as described in RFC 2119 [RFC2119]. 246 2. Design goals 248 This document specifies a method for selecting Interface Identifiers 249 to be used with IPv6 SLAAC, with the following goals: 251 o The resulting Interface Identifiers remain constant/stable for 252 each prefix used with SLAAC within each subnet. That is, the 253 algorithm generates the same Interface Identifier when configuring 254 an address (for the same interface) belonging to the same prefix 255 within the same subnet. 257 o The resulting Interface Identifiers do change when addresses are 258 configured for different prefixes. That is, if different 259 autoconfiguration prefixes are used to configure addresses for the 260 same network interface card, the resulting Interface Identifiers 261 must be (statistically) different. This means that, given two 262 addresses produced by the method specified in this document, it 263 must be difficult for an attacker tell whether the addresses have 264 been generated/used by the same node. 266 o It must be difficult for an outsider to predict the Interface 267 Identifiers that will be generated by the algorithm, even with 268 knowledge of the Interface Identifiers generated for configuring 269 other addresses. 271 o Depending on the specific implementation approach (see Section 3 272 and Appendix A), the resulting Interface Identifiers may be 273 independent of the underlying hardware (e.g. link-layer address). 274 This means that e.g. replacing a Network Interface Card (NIC) will 275 not have the (generally undesirable) effect of changing the IPv6 276 addresses used for that network interface. 278 o The method specified in this document is meant to be an 279 alternative to producing IPv6 addresses based on e.g. IEEE 280 identifiers (as specified in [RFC2464]). It is meant to be 281 employed for all of the stable (i.e. non-temporary) IPv6 addresses 282 configured with SLAAC for a given interface, including global, 283 link-local, and unique-local IPv6 addresses. 285 We note that of use of the algorithm specified in this document is 286 (to a large extent) orthogonal to the use of "temporary addresses" 287 [RFC4941]. When employed along with "temporary addresses", the 288 method specified in this document will mitigate address-scanning 289 attacks and correlation of node activities across networks (see 290 Appendix C and [IAB-PRIVACY]). On the other hand, hosts that do not 291 implement/use "temporary addresses" but employ the method specified 292 in this document would, at the very least, mitigate the host-tracking 293 and address scanning issues discussed in the previous section. 295 3. Algorithm specification 297 IPv6 implementations conforming to this specification MUST generate 298 Interface Identifiers using the algorithm specified in this section 299 in replacement of any other algorithms used for generating "stable" 300 addresses (such as those specified in [RFC2464]). However, 301 implementations conforming to this specification MAY employ the 302 algorithm specified in [RFC4941] to generate temporary addresses in 303 addition to the addresses generated with the algorithm specified in 304 this document. The method specified in this document MUST be 305 employed for generating the Interface Identifiers for all the stable 306 addresses of a given interface, including IPv6 global, link-local, 307 and unique-local addresses. 309 This means that this document does not formally obsolete or 310 deprecate any of the existing algorithms to generate Interface 311 Identifiers (e.g. such as that specified in [RFC2464]). However, 312 those IPv6 implementations that employ this specification MUST 313 generate all of their "stable" addresses as specified in this 314 document. 316 Implementations conforming to this specification SHOULD provide the 317 means for a system administrator to enable or disable the use of this 318 algorithm for generating Interface Identifiers. 320 Unless otherwise noted, all of the parameters included in the 321 expression below MUST be included when generating an Interface 322 Identifier. 324 1. Compute a random (but stable) identifier with the expression: 326 RID = F(Prefix, Net_Iface, Network_ID, DAD_Counter, secret_key) 328 Where: 330 RID: 331 Random (but stable) Interface Identifier 333 F(): 334 A pseudorandom function (PRF) that is not computable from the 335 outside (without knowledge of the secret key), which should 336 produce an output of at least 64 bits.The PRF could be 337 implemented as a cryptographic hash of the concatenation of 338 each of the function parameters. 340 Prefix: 341 The prefix to be used for SLAAC, as learned from an ICMPv6 342 Router Advertisement message, or the link-local IPv6 unicast 343 prefix. 345 Net_Iface: 346 An implementation-dependent stable identifier associated with 347 the network interface for which the RID is being generated. 348 An implementation MAY provide a configuration option to select 349 the source of the identifier to be used for the Net_Iface 350 parameter. A discussion of possible sources for this value 351 (along with the corresponding trade-offs) can be found in 352 Appendix A. 354 Network_ID: 355 Some network specific data that identifies the subnet to which 356 this interface is attached. For example the IEEE 802.11 357 Service Set Identifier (SSID) corresponding to the network to 358 which this interface is associated. This parameter is 359 OPTIONAL. 361 DAD_Counter: 362 A counter that is employed to resolve Duplicate Address 363 Detection (DAD) conflicts. It MUST be initialized to 0, and 364 incremented by 1 for each new tentative address that is 365 configured as a result of a DAD conflict. Implementations 366 that record DAD_Counter in non-volatile memory for each 367 {Prefix, Net_Iface, Network_ID} tuple MUST initialize 368 DAD_Counter to the recorded value if such an entry exists in 369 non-volatile memory). See Section 4 for additional details. 371 secret_key: 372 A secret key that is not known by the attacker. The secret 373 key MUST be initialized at operating system installation time 374 to a pseudo-random number (see [RFC4086] for randomness 375 requirements for security). An implementation MAY provide the 376 means for the the system administrator to change or display 377 the secret key. 379 2. The Interface Identifier is finally obtained by taking as many 380 bits from the RID value (computed in the previous step) as 381 necessary, starting from the least significant bit. 383 We note that [RFC4291] requires that, the Interface IDs of all 384 unicast addresses (except those that start with the binary 385 value 000) be 64-bit long. However, the method discussed in 386 this document could be employed for generating Interface IDs 387 of any arbitrary length, albeit at the expense of reduced 388 entropy (when employing Interface IDs smaller than 64 bits). 390 The resulting Interface Identifier should be compared against the 391 Subnet-Router Anycast [RFC4291] and the Reserved Subnet Anycast 392 Addresses [RFC2526], and against those Interface Identifiers 393 already employed in an address of the same network interface and 394 the same network prefix. In the event that an unacceptable 395 identifier has been generated, this situation should be handled 396 in the same way as the case of duplicate addresses (see 397 Section 4). 399 This document does not require the use of any specific PRF for the 400 function F() above, since the choice of such PRF is usually a trade- 401 off between a number of properties (processing requirements, ease of 402 implementation, possible intellectual property rights, etc.), and 403 since the best possible choice for F() might be different for 404 different types of devices (e.g. embedded systems vs. regular 405 servers) and might possibly change over time. 407 Note that the result of F() in the algorithm above is no more secure 408 than the secret key. If an attacker is aware of the PRF that is 409 being used by the victim (which we should expect), and the attacker 410 can obtain enough material (i.e. addresses configured by the victim), 411 the attacker may simply search the entire secret-key space to find 412 matches. To protect against this, the secret key should be of a 413 reasonable length. Key lengths of at least 128 bits should be 414 adequate. The secret key is initialized at system installation time 415 to a pseudo-random number, thus allowing this mechanism to be 416 enabled/used automatically, without user intervention. 418 Including the SLAAC prefix in the PRF computation causes the 419 Interface Identifier to vary across each prefix (link-local, global, 420 etc.) employed by the node and, as consequently, also across 421 networks. This mitigates the correlation of activities of multi- 422 homed nodes (since each of the corresponding addresses will employ a 423 different Interface ID), host-tracking (since the network prefix will 424 change as the node moves from one network to another), and any other 425 attacks that benefit from predictable Interface Identifiers (such as 426 address scanning attacks). 428 The Net_Iface is a value that identifies the network interface for 429 which an IPv6 address is being generated. The following properties 430 are required for the Net_Iface parameter: 432 o it MUST be constant across system bootstrap sequences and other 433 network events (e.g., bringing another interface up or down) 435 o it MUST be different for each network interface simultaneously in 436 use 438 Since the stability of the addresses generated with this method 439 relies on the stability of all arguments of F(), it is key that the 440 Net_Iface be constant across system bootstrap sequences and other 441 network events. Additionally, the Net_Iface must uniquely identify 442 an interface within the node, such that two interfaces connecting to 443 the same network do not result in duplicate addresses. Different 444 types of operating systems might benefit from different stability 445 properties of the Net_Iface parameter. For example, a client- 446 oriented operating system might want to employ Net_Iface identifiers 447 that are attached to the underlying network interface card (NIC), 448 such that a removable NIC always gets the same IPv6 address, 449 irrespective of the system communications port to which it is 450 attached. On the other hand, a server-oriented operating system 451 might prefer Net_Iface identifiers that are attached to system slots/ 452 ports, such that replacement of a network interface card does not 453 result in an IPv6 address change. Appendix A discusses possible 454 sources for the Net_Iface, along with their pros and cons. 456 Including the optional Network_ID parameter when computing the RID 457 value above would cause the algorithm to produce a different 458 Interface Identifier when connecting to different networks, even when 459 configuring addresses belonging to the same prefix. This means that 460 a host would employ a different Interface Identifier as it moves from 461 one network to another even for IPv6 link-local addresses or Unique 462 Local Addresses (ULAs). In those scenarios where the Network_ID is 463 unknown to the attacker, including this parameter might help mitigate 464 attacks where a victim node connects to the same subnet as the 465 attacker, and the attacker tries to learn the Interface Identifier 466 used by the victim node for a remote network (see Section 7 for 467 further details). 469 The DAD_Counter parameter provides the means to intentionally cause 470 this algorithm produce a different IPv6 addresses (all other 471 parameters being the same). This could be necessary to resolve 472 Duplicate Address Detection (DAD) conflicts, as discussed in detail 473 in Section 4. 475 Finally, we note that all of the bits in the resulting Interface IDs 476 are treated as "opaque" bits. For example, the universal/local bit 477 of Modified EUI-64 format identifiers is treated as any other bit of 478 such identifier. In theory, this might result in Duplicate Address 479 Detection (DAD) failures that would otherwise not be encountered. 480 However, this is not deemed as a real issue, because of the following 481 considerations: 483 o The interface IDs of all addresses (except those of addresses that 484 that start with the binary value 000) are 64-bit long. Since the 485 method specified in this document results in random Interface IDs, 486 the probability of DAD failures is very small. 488 o Real world data indicates that MAC address reuse is far more 489 common than assumed [HDMoore]. This means that even IPv6 490 addresses that employ (allegedly) unique identifiers (such as IEEE 491 identifiers) might result in DAD failures, and hence 492 implementations should be prepared to gracefully handle such 493 occurrences. 495 o Since some popular and widely-deployed operating systems (such as 496 Microsoft Windows) do not employ unique hardware identifiers for 497 the Interface IDs of their stable addresses, reliance on such 498 unique identifiers is more reduced in the deployed world (fewer 499 deployed systems rely on them for the avoidance of address 500 collisions). 502 4. Resolving Duplicate Address Detection (DAD) conflicts 504 If as a result of performing Duplicate Address Detection (DAD) 505 [RFC4862] a host finds that the tentative address generated with the 506 algorithm specified in Section 3 is a duplicate address, it SHOULD 507 resolve the address conflict by trying a new tentative address as 508 follows: 510 o DAD_Counter is incremented by 1. 512 o A new Interface Identifier is generated with the algorithm 513 specified in Section 3, using the incremented DAD_Counter value. 515 This procedure may be repeated a number of times until the address 516 conflict is resolved. Hosts SHOULD try at least IDGEN_RETRIES (see 517 Section 5) tentative addresses if DAD fails for successive generated 518 addresses, in the hopes of resolving the address conflict. We also 519 note that hosts MUST limit the number of tentative addresses that are 520 tried (rather than indefinitely try a new tentative address until the 521 conflict is resolved). 523 In those (unlikely) scenarios in which duplicate addresses are 524 detected and in which the order in which the conflicting nodes 525 configure their addresses may vary (e.g., because they may be 526 bootstrapped in different order), the algorithm specified in this 527 section for resolving DAD conflicts could lead to addresses that are 528 not stable within the same subnet. In order to mitigate this 529 potential problem, nodes MAY record the DAD_Counter value employed 530 for a specific {Prefix, Net_Iface, Network_ID} tuple in non-volatile 531 memory, such that the same DAD_Counter value is employed when 532 configuring an address for the same Prefix and subnet at any other 533 point in time. 535 In the event that a DAD conflict cannot be solved (possibly after 536 trying a number of different addresses), address configuration would 537 fail. In those scenarios, nodes MUST NOT automatically fall back to 538 employing other algorithms for generating Interface Identifiers. 540 5. Specified Constants 542 This document specifies the following constant: 544 IDGEN_RETRIES: 545 defaults to 3. 547 6. IANA Considerations 549 There are no IANA registries within this document. The RFC-Editor 550 can remove this section before publication of this document as an 551 RFC. 553 7. Security Considerations 555 This document specifies an algorithm for generating Interface 556 Identifiers to be used with IPv6 Stateless Address Autoconfiguration 557 (SLAAC), as an alternative to e.g. Interface Identifiers that embed 558 IEEE identifiers (such as those specified in [RFC2464]). When 559 compared to such identifiers, the identifiers specified in this 560 document have a number of advantages: 562 o They prevent trivial host-tracking, since when a host moves from 563 one network to another the network prefix used for 564 autoconfiguration and/or the Network ID (e.g., IEEE 802.11 SSID) 565 will typically change, and hence the resulting Interface 566 Identifier will also change (see Appendix C.1). 568 o They mitigate address-scanning techniques which leverage 569 predictable Interface Identifiers (e.g., known Organizationally 570 Unique Identifiers) [I-D.ietf-opsec-ipv6-host-scanning]. 572 o They may result in IPv6 addresses that are independent of the 573 underlying hardware (i.e. the resulting IPv6 addresses do not 574 change if a network interface card is replaced) if an appropriate 575 source for Net_Iface (Section 3) is employed. 577 o They prevent the information leakage produced by embedding 578 hardware addresses in the Interface Identifier (which could be 579 exploited to launch device-specific attacks). 581 o Since the method specified in this document will result in 582 different Interface Identifiers for each configured address, 583 knowledge/leakage of the Interface Identifier employed for one 584 stable address of will not negatively affect the security/privacy 585 of other stable addresses configured for other prefixes (whether 586 at the same time or at some other point in time). 588 In scenarios in which an attacker can connect to the same subnet as a 589 victim node, the attacker might be able to learn the Interface 590 Identifier employed by the victim node for an arbitrary prefix, by 591 simply sending a forged Router Advertisement [RFC4861] for that 592 prefix, and subsequently learning the corresponding address 593 configured by the victim node (either listening to the Duplicate 594 Address Detection packets, or to any other traffic that employs the 595 newly configured address). We note that a number of factors might 596 limit the ability of an attacker to successfully perform such an 597 attack: 599 o First-Hop security mechanisms such as RA-Guard [RFC6105] 600 [I-D.ietf-v6ops-ra-guard-implementation] could prevent the forged 601 Router Advertisement from reaching the victim node 603 o If the victim implementation includes the (optional) Network_ID 604 parameter for computing F() (see Section 3), and the Network_ID 605 employed by the victim for a remote network is unknown to the 606 attacker, the Interface Identifier learned by the attacker would 607 differ from the one used by the victim when connecting to the 608 legitimate network. 610 In any case, we note that at the point in which this kind of attack 611 becomes a concern, a host should consider employing Secure Neighbor 612 Discovery (SEND) [RFC3971] to prevent an attacker from illegitimately 613 claiming authority for a network prefix. 615 We note that this algorithm is meant to be an alternative to 616 Interface Identifiers such as those specified in [RFC2464], but is 617 not meant as an alternative to temporary Interface Identifiers (such 618 as those specified in [RFC4941]). Clearly, temporary addresses may 619 help to mitigate the correlation of activities of a node within the 620 same network, and may also reduce the attack exposure window (since 621 temporary addresses are short-lived when compared to the addresses 622 generated with the method specified in this document). We note that 623 implementation of this algorithm would still benefit those hosts 624 employing "temporary addresses", since it would mitigate host- 625 tracking vectors still present when such addresses are used (see 626 Appendix C.1), and would also mitigate address-scanning techniques 627 that leverage patterns in IPv6 addresses that embed IEEE identifiers. 629 Finally, we note that the method described in this document addresses 630 some of the privacy concerns arising from the use of IPv6 addresses 631 that embed IEEE identifiers, without the use of temporary addresses, 632 thus possibly offering an interesting trade-off for those scenarios 633 in which the use of temporary addresses is not feasible. 635 8. Acknowledgements 637 The algorithm specified in this document has been inspired by Steven 638 Bellovin's work ([RFC1948]) in the area of TCP sequence numbers. 640 The author would like to thank (in alphabetical order) Ran Atkinson, 641 Karl Auer, Steven Bellovin, Matthias Bethke, Ben Campbell, Brian 642 Carpenter, Tassos Chatzithomaoglou, Tim Chown, Alissa Cooper, Dominik 643 Elsbroek, Brian Haberman, Bob Hinden, Christian Huitema, Ray Hunter, 644 Jouni Korhonen, Eliot Lear, Jong-Hyouk Lee, Andrew McGregor, Tom 645 Petch, Michael Richardson, Mark Smith, Dave Thaler, Ole Troan, James 646 Woodyatt, and He Xuan, for providing valuable comments on earlier 647 versions of this document. 649 This document is based on the technical report "Security Assessment 650 of the Internet Protocol version 6 (IPv6)" [CPNI-IPv6] authored by 651 Fernando Gont on behalf of the UK Centre for the Protection of 652 National Infrastructure (CPNI). 654 Fernando Gont would like to thank CPNI (http://www.cpni.gov.uk) for 655 their continued support. 657 9. References 659 9.1. Normative References 661 [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 662 (IPv6) Specification", RFC 2460, December 1998. 664 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 665 Requirement Levels", BCP 14, RFC 2119, March 1997. 667 [RFC2526] Johnson, D. and S. Deering, "Reserved IPv6 Subnet Anycast 668 Addresses", RFC 2526, March 1999. 670 [RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W. 671 Stevens, "Basic Socket Interface Extensions for IPv6", 672 RFC 3493, February 2003. 674 [RFC3542] Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei, 675 "Advanced Sockets Application Program Interface (API) for 676 IPv6", RFC 3542, May 2003. 678 [RFC3971] Arkko, J., Kempf, J., Zill, B., and P. Nikander, "SEcure 679 Neighbor Discovery (SEND)", RFC 3971, March 2005. 681 [RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)", 682 RFC 3972, March 2005. 684 [RFC4086] Eastlake, D., Schiller, J., and S. Crocker, "Randomness 685 Requirements for Security", BCP 106, RFC 4086, June 2005. 687 [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally 688 Unique IDentifier (UUID) URN Namespace", RFC 4122, 689 July 2005. 691 [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing 692 Architecture", RFC 4291, February 2006. 694 [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, 695 "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, 696 September 2007. 698 [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless 699 Address Autoconfiguration", RFC 4862, September 2007. 701 [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy 702 Extensions for Stateless Address Autoconfiguration in 703 IPv6", RFC 4941, September 2007. 705 [RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. 706 Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, 707 February 2011. 709 9.2. Informative References 711 [RFC1948] Bellovin, S., "Defending Against Sequence Number Attacks", 712 RFC 1948, May 1996. 714 [RFC2464] Crawford, M., "Transmission of IPv6 Packets over Ethernet 715 Networks", RFC 2464, December 1998. 717 [I-D.ietf-opsec-ipv6-host-scanning] 718 Gont, F. and T. Chown, "Network Reconnaissance in IPv6 719 Networks", draft-ietf-opsec-ipv6-host-scanning-01 (work in 720 progress), April 2013. 722 [I-D.ietf-v6ops-ra-guard-implementation] 723 Gont, F., "Implementation Advice for IPv6 Router 724 Advertisement Guard (RA-Guard)", 725 draft-ietf-v6ops-ra-guard-implementation-07 (work in 726 progress), November 2012. 728 [HDMoore] HD Moore, "The Wild West", Louisville, Kentucky, U.S.A. 729 September 25-29, 2012, 730 . 732 [Gont-DEEPSEC2011] 733 Gont, "Results of a Security Assessment of the Internet 734 Protocol version 6 (IPv6)", DEEPSEC 2011 Conference, 735 Vienna, Austria, November 2011, . 739 [Gont-BRUCON2012] 740 Gont, "Recent Advances in IPv6 Security", BRUCON 2012 741 Conference, Ghent, Belgium, September 2012, . 745 [Broersma] 746 Broersma, R., "IPv6 Everywhere: Living with a Fully IPv6- 747 enabled environment", Australian IPv6 Summit 2010, 748 Melbourne, VIC Australia, October 2010, . 751 [IAB-PRIVACY] 752 IAB, "Privacy and IPv6 Addresses", July 2011, . 756 [CPNI-IPv6] 757 Gont, F., "Security Assessment of the Internet Protocol 758 version 6 (IPv6)", UK Centre for the Protection of 759 National Infrastructure, (available on request). 761 Appendix A. Possible sources for the Net_Iface parameter 763 The following subsections describe a number of possible sources for 764 the Net_Iface parameter employed by the F() function in Section 3. 765 The choice of a specific source for this value represents a number of 766 trade-offs, which may vary from one implementation to another. 768 A.1. Interface Index 770 The Interface Index [RFC3493] [RFC3542] of an interface uniquely 771 identifies an interface within a node. However, these identifiers 772 might or might not have the stability properties required for the 773 Net_Iface value employed by this method. For example, the Interface 774 Index might change upon removal or installation of a network 775 interface (typically one with a smaller value for the Interface 776 Index, when such a naming scheme is used), or when network interfaces 777 happen to be initialized in a different order. We note that some 778 implementations are known to provide configuration knobs to set the 779 Interface Index for a given interface. Such configuration knobs 780 could be employed to prevent the Interface Index from changing (e.g. 781 as a result of the removal of a network interface). 783 A.2. Interface Name 785 The Interface Name (e.g., "eth0", "em0", etc) tends to be more stable 786 than the underlying Interface Index, since such stability is 787 required/desired when interface names are employed in network 788 configuration (firewall rules, etc.). The stability properties of 789 Interface Names depend on implementation details, such as what is the 790 namespace used for Interface Names. For example, "generic" interface 791 names such as "eth0" or "wlan0" will generally be invariant with 792 respect to network interface card replacements. On the other hand, 793 vendor-dependent interface names such as "rtk0" or the like will 794 generally change when a network interface card is replaced with one 795 from a different vendor. 797 We note that Interface Names might still change when network 798 interfaces are added or removed once the system has been bootstrapped 799 (for example, consider Universal Serial Bus-based network interface 800 cards which might be added or removed once the system has been 801 bootstrapped). 803 A.3. Link-layer Addresses 805 Link-layer addresses typically provide for unique identifiers for 806 network interfaces; although, for obvious reasons, they generally 807 change when a network interface card is replaced. In scenarios where 808 neither Interface Indexes nor Interface Names have the stability 809 properties specified in Section 3 for Net_Iface, an implementation 810 might want to employ the link-layer address of the interface for the 811 Net_Iface parameter, albeit at the expense of making the 812 corresponding IPv6 addresses dependent on the underlying network 813 interface card (i.e., the corresponding IPv6 address would typically 814 change upon replacement of the underlying network interface card). 816 A.4. Logical Network Service Identity 818 Host operating systems with a conception of logical network service 819 identity, distinct from network interface identity or index, may keep 820 a Universally Unique Identifier (UUID) [RFC4122] or similar 821 identifier with the stability properties appropriate for use as the 822 Net_Iface parameter. 824 Appendix B. Security/privacy issues with traditional SLAAC addresses 826 This section provides additional details regarding security/privacy 827 issues arising from traditional SLAAC addresses- Namely, it provides 828 additional details regarding how those issues could be exploited, and 829 the extent to which the method specified in this document mitigates 830 such issues. 832 B.1. Correlation of node activities within the same network 834 Since traditional SLAAC addresses employ Interface Identifiers that 835 are constant within the same network, such identifiers can be 836 leveraged to correlate the activities of a node within the same 837 network. One sample scenario is that in which a client repeatedly 838 connects to a server over a period of time, and hence, based on the 839 stable Interface Identifier, the server can correlate all 840 communication instances as being initiated by the same node. 842 The method specified in this document does not mitigate this attack 843 vector, since it produces Interface Identifiers that are constant 844 within a given network. 846 This attack vector could only be mitigated by employing "temporary 847 addresses" [RFC4941]. However, as noted earlier in this document, 848 in scenarios in which there is a reduced number of nodes in a 849 given network, mitigation of this vector might be difficult (if at 850 all possible) -- even with "temporary addresses" [RFC4941] in 851 place. 853 B.2. Correlation of node activities across networks 855 Since traditional SLAAC addresses employ Interface Identifiers that 856 are constant across networks, such identifiers can be leveraged to 857 correlate the activities of a node across networks. One sample 858 scenario is that in which a client repeatedly connects to a server 859 over a period of time, and hence, based on the stable Interface 860 Identifier, the server can correlate all communication instances as 861 being initiated by the same node. Since the method specified in this 862 document results in Interface Identifiers that are not constant 863 across networks, this attack vector is mitigated. 865 B.3. Host-tracking attacks 867 Since traditional SLAAC addresses employ Interface Identifiers that 868 are constant across networks, such identifiers can be leveraged to 869 track a node across networks. 871 For example, let us assume that the attacker knows the Interface 872 Identifier employed by the target node. If the target node contacts 873 an attacker-operated node each time it moves from one network to 874 another, the attacker will be able to track the node as it moves from 875 one network to another. 877 An active version of this attack would imply that, once the Interface 878 Identifier is known to the attacker the attacker probes whether there 879 is an address with that Interface Identifier in each target network 880 (i.e., in each network the client might connect to). If such address 881 is found to be "alive", then the attacker could infer that the target 882 node has connected to the corresponding network. 884 This vector is discussed in detail in Appendix C.1.2. 886 Since the method specified in this document results in Interface 887 Identifiers that are not constant across networks, this attack vector 888 is mitigated. 890 B.4. Address-scanning attacks 892 Since traditional SLAAC addresses typically embed the underlying 893 link-layer address, the aforementioned addresses follow specific 894 patterns that can be leveraged to reduce the search space when 895 performing IPv6 address-scanning attacks (this is discussed in detail 896 in [I-D.ietf-opsec-ipv6-host-scanning]). The method specified in 897 this document produces random (but table within each subnet) 898 Interface Identifiers, thus mitigating this attack vector. 900 B.5. Exploitation of device-specific information 902 Since traditional SLAAC addresses typically embed the underlying 903 link-layer address, the aforementioned addresses leaks device- 904 specific information that might be leveraged to launch device- 905 specific attacks. For example, an attacker with knowledge about a 906 specific vulnerability in devices manufactured by some vendor might 907 easily identify potential targets by looking at the Interface 908 Identifier of a list of IPv6 addresses. The method specified in this 909 document produces random (but table within each subnet) Interface 910 Identifiers, thus mitigating this attack vector. 912 Appendix C. Privacy issues still present when temporary addresses are 913 employed 915 It is not unusual for people to assume or expect that all the 916 security/privacy implications of traditional SLAAC addresses are 917 mitigated when "temporary addresses" [RFC4941] are employed. 918 However, as noted in Section 1 of this document and [IAB-PRIVACY], 919 since temporary addresses are employed in addition to (rather than in 920 replacement of) traditional SLAAC addresses, many of the security/ 921 privacy implications of traditional SLAAC addresses are not mitigated 922 by the use of temporary addresses. 924 This section discusses a (non-exhaustive) number of scenarios in 925 which host security/privacy is still negatively affected as a result 926 of employing Interface Identifiers that are constant across networks 927 (e.g., those resulting from embedding IEEE identifiers), even when 928 temporary addresses [RFC4941] are employed. It aims to clarify the 929 motivation of employing the method specified in this document in 930 replacement of the traditional SLAAC addresses even when privacy/ 931 temporary addresses [RFC4941] are employed. 933 C.1. Host tracking 935 This section describes two attack scenarios which illustrate that 936 host-tracking may still be possible when privacy/temporary addresses 937 [RFC4941] are employed. These examples should remind us that one 938 should not disclose more than it is really needed for achieving a 939 specific goal (and an Interface Identifier that is constant across 940 different networks does exactly that: it discloses more information 941 than is needed for providing a stable address). 943 C.1.1. Tracking hosts across networks #1 945 A host configures its stable addresses with the constant Interface 946 Identifier, and runs any application that needs to perform a server- 947 like function (e.g. a peer-to-peer application). As a result of 948 that, an attacker/user participating in the same application (e.g., 949 P2P) would learn the constant Interface Identifier used by the host 950 for that network interface. 952 Some time later, the same host moves to a completely different 953 network, and employs the same P2P application. The attacker now 954 interacts with the same host again, and hence can learn its newly- 955 configured stable address. Since the Interface Identifier is the 956 same as the one used before, the attacker can infer that it is 957 communicating with the same device as before. 959 C.1.2. Tracking hosts across networks #2 961 Once an attacker learns the constant Interface Identifier employed by 962 the victim host for its stable address, the attacker is able to 963 "probe" a network for the presence of such host at any given network. 965 See Appendix C.1.1 for just one example of how an attacker could 966 learn such value. Other examples include being able to share the 967 same network segment at some point in time (e.g. a conference 968 network or any public network), etc. 970 For example, if an attacker learns that in one network the victim 971 used the Interface Identifier 1111:2222:3333:4444 for its stable 972 addresses, then he could subsequently probe for the presence of such 973 device in the network 2011:db8::/64 by sending a probe packet (ICMPv6 974 Echo Request, or any other probe packet) to the address 2001:db8:: 975 1111:2222:3333:4444. 977 C.1.3. Revealing the identity of devices performing server-like 978 functions 980 Some devices, such as storage devices, may typically perform server- 981 like functions and may be usually moved from one network to another. 982 Such devices are likely to simply disable (or not even implement) 983 privacy/temporary addresses [RFC4941]. If the aforementioned devices 984 employ Interface Identifiers that are constant across networks, it 985 would be trivial for an attacker to tell whether the same device is 986 being used across networks by simply looking at the Interface 987 Identifier. Clearly, performing server-like functions should not 988 imply that a device discloses its identity (i.e., that the attacker 989 can tell whether it is the same device providing some function in two 990 different networks, at two different points in time). 992 The scheme proposed in this document prevents such information 993 leakage by causing nodes to generate different Interface Identifiers 994 when moving from one network to another, thus mitigating this kind of 995 privacy attack. 997 C.2. Address-scanning attacks 999 While it is usually assumed that IPv6 address-scanning attacks are 1000 unfeasible, an attacker can leverage address patterns in IPv6 1001 addresses to greatly reduce the search space 1002 [I-D.ietf-opsec-ipv6-host-scanning] [Gont-BRUCON2012]. Addresses 1003 that embed IEEE identifiers result in one of such patterns that could 1004 be leveraged to reduce the search space when other nodes employ the 1005 same IEEE OUI (Organizationally Unique Identifier). 1007 As noted earlier in this document, temporary addresses [RFC4941] do 1008 not replace/eliminate the use of IPv6 addresses that embed IEEE 1009 identifiers (they are employed in addition to those), and hence hosts 1010 implementing [RFC4941] would still be vulnerable to address-scanning 1011 attacks. The method specified in this document is meant as an 1012 alternative to addresses that embed IEEE identifiers, and hence 1013 eliminates such patterns (thus mitigating the aforementioned address- 1014 scanning attacks). 1016 C.3. Information Leakage 1018 IPv6 addresses embedding IEEE identifiers leak information about the 1019 device (Network Interface Card vendor, or even Operating System 1020 and/or software type), which could be leveraged by an attacker with 1021 device/software-specific vulnerabilities knowledge to quickly find 1022 possible targets. Since temporary addresses do not replace the 1023 traditional SLAAC addresses that typically embed IEEE identifiers, 1024 employing temporary addresses does not eliminate this possible 1025 information leakage. 1027 C.4. Correlation of node activities within a network 1029 In scenarios in which the number of nodes connected to a subnetwork 1030 is small, preventing the correlation of the activities of those nodes 1031 within such network might be difficult (if at all possible) to 1032 achieve, even with temporary addresses [RFC4941] in place. As a 1033 trivial example, consider a scenario where there is a single node (or 1034 a reduced number of nodes) connected to a specific network. An 1035 attacker could detect new addresses in use at that network along with 1036 addresses that are no longer in use, and infer which addresses are 1037 being employed by which hosts. This task is made particularly easier 1038 by the fact that use of "temporary addresses" can be easily inferred 1039 (since they follow different patterns from that of traditional SLAAC 1040 addresses), and since they are re-generated periodically (i.e., after 1041 a specific amount of time has elapsed). 1043 Author's Address 1045 Fernando Gont 1046 SI6 Networks / UTN-FRH 1047 Evaristo Carriego 2644 1048 Haedo, Provincia de Buenos Aires 1706 1049 Argentina 1051 Phone: +54 11 4650 8472 1052 Email: fgont@si6networks.com 1053 URI: http://www.si6networks.com