idnits 2.17.1 draft-ietf-6man-stable-privacy-addresses-08.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 (May 24, 2013) is 3989 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) ** 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: 3 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 May 24, 2013 5 Expires: November 25, 2013 7 A method for Generating Stable Privacy-Enhanced Addresses with IPv6 8 Stateless Address Autoconfiguration (SLAAC) 9 draft-ietf-6man-stable-privacy-addresses-08 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 November 25, 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 . . . . . . . . . . . . . . . . . . . . . . . . . 6 61 3. Algorithm specification . . . . . . . . . . . . . . . . . . . 7 62 4. Resolving Duplicate Address Detection (DAD) conflicts . . . . 12 63 5. Specified Constants . . . . . . . . . . . . . . . . . . . . . 13 64 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 65 7. Security Considerations . . . . . . . . . . . . . . . . . . . 15 66 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 17 67 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 18 68 9.1. Normative References . . . . . . . . . . . . . . . . . . . 18 69 9.2. Informative References . . . . . . . . . . . . . . . . . . 18 70 Appendix A. Possible sources for the Net_Iface parameter . . . . 21 71 A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 21 72 A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . . 21 73 A.3. Link-layer Addresses . . . . . . . . . . . . . . . . . . . 21 74 A.4. Logical Network Service Identity . . . . . . . . . . . . . 22 75 Appendix B. Privacy issues still present when temporary 76 addresses are employed . . . . . . . . . . . . . . . 23 77 B.1. Host tracking . . . . . . . . . . . . . . . . . . . . . . 23 78 B.1.1. Tracking hosts across networks #1 . . . . . . . . . . 23 79 B.1.2. Tracking hosts across networks #2 . . . . . . . . . . 24 80 B.1.3. Revealing the identity of devices performing 81 server-like functions . . . . . . . . . . . . . . . . 24 82 B.2. Address-scanning attacks . . . . . . . . . . . . . . . . . 24 83 B.3. Information Leakage . . . . . . . . . . . . . . . . . . . 25 84 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 26 86 1. Introduction 88 [RFC4862] specifies Stateless Address Autoconfiguration (SLAAC) for 89 IPv6 [RFC2460], which typically results in hosts configuring one or 90 more "stable" addresses composed of a network prefix advertised by a 91 local router, and an Interface Identifier (IID) that typically embeds 92 a hardware address (e.g., using IEEE identifiers) [RFC4291]. 94 Cryptographically Generated Addresses (CGAs) [RFC3972] are yet 95 another method for generating Interface Identifiers, which bind a 96 public signature key to an IPv6 address in the SEcure Neighbor 97 Discovery (SEND) [RFC3971] protocol. 99 Generally, the traditional SLAAC addresses are thought to simplify 100 network management, since they simplify Access Control Lists (ACLs) 101 and logging. However, they have a number of drawbacks: 103 o since the resulting Interface Identifiers do not vary over time, 104 they allow correlation of node activities within the same network, 105 thus negatively affecting the privacy of users. 107 o since the resulting Interface Identifiers are constant across 108 networks, the resulting IPv6 addresses can be leveraged to track 109 and correlate the activity of a node across multiple networks 110 (e.g. track and correlate the activities of a typical client 111 connecting to the public Internet from different locations), thus 112 negatively affecting the privacy of users. 114 o since embedding the underlying link-layer address in the Interface 115 Identifier will result in specific address patterns, such patterns 116 may be leveraged by attackers to reduce the search space when 117 performing address scanning attacks. For example, the IPv6 118 addresses of all nodes manufactured by the same vendor (at a given 119 time frame) will likely contain the same IEEE Organizationally 120 Unique Identifier (OUI) in the Interface Identifier. 122 o embedding the underlying link-layer address in the Interface 123 Identifier means that replacement of the underlying interface 124 hardware will result in a change of the IPv6 address(es) assigned 125 to that interface. 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 to correlate the activities of a node, and 131 basically result in temporary (and random) Interface Identifiers. 132 These temporary addresses are generated in addition to the 133 traditional IPv6 addresses based on IEEE identifiers, with the 134 "temporary addresses" being employed for "outgoing communications", 135 and the traditional SLAAC addresses being employed for "server" 136 functions (i.e., receiving incoming connections). 138 However, even with "temporary addresses" in place, a number of issues 139 remain to be mitigated. Namely, 141 o since "temporary addresses" [RFC4941] do not eliminate the use of 142 fixed identifiers for server-like functions, they only partially 143 mitigate host-tracking and activity correlation across networks 144 (see Appendix B.1 for some example attacks that are still possible 145 with temporary addresses). 147 o since "temporary addresses" [RFC4941] do not replace the 148 traditional SLAAC addresses, an attacker can still leverage 149 patterns in those addresses to greatly reduce the search space for 150 "alive" nodes [Gont-DEEPSEC2011] [CPNI-IPv6] 151 [I-D.ietf-opsec-ipv6-host-scanning]. 153 Hence, there is a motivation to improve the properties of "stable" 154 addresses regardless of whether temporary addresses are employed or 155 not. 157 Additionally, it should be noted that temporary addresses can be 158 challenging in a number of areas. For example, from a network- 159 management point of view, they tend to increase the complexity of 160 event logging, trouble-shooting, enforcement of access controls and 161 quality of service, etc. As a result, some organizations disable the 162 use of temporary addresses even at the expense of reduced privacy 163 [Broersma]. Temporary addresses may also result in increased 164 implementation complexity, which might not be possible or desirable 165 in some implementations (e.g., some embedded devices). 167 In scenarios in which temporary addresses are deliberately not used 168 (possibly for any of the aforementioned reasons), all a host is left 169 with is the stable addresses that have been generated using e.g. 170 IEEE identifiers. In such scenarios, it may still be desirable to 171 have addresses that mitigate address scanning attacks, and that at 172 the very least do not reveal the node's identity when roaming from 173 one network to another -- without complicating the operation of the 174 corresponding networks. 176 We note that even with temporary addresses [RFC4941] in place, 177 preventing correlation of activities of a node within a network 178 may be difficult (if at all possible) to achieve. As a trivial 179 example, consider a scenario where there is a single node (or a 180 reduced number of nodes) connected to a specific network. An 181 attacker could detect new addresses in use at that network, an 182 infer which addresses are being employed by which hosts. This 183 task is made particularly easier by the fact that use of 184 "temporary addresses" can be easily inferred (since the follow 185 different patterns from that of traditional SLAAC addresses), and 186 since they are re-generated periodically (i.e., after a specific 187 amount of time has elapsed). 189 This document specifies a method to generate Interface Identifiers 190 that are stable/constant for each network interface within each 191 subnet, but that change as hosts move from one network to another, 192 thus keeping the "stability" properties of the Interface Identifiers 193 specified in [RFC4291], while still mitigating address-scanning 194 attacks and preventing correlation of the activities of a node as it 195 moves from one network to another. 197 The method specified in this document is a orthogonal to the use of 198 "temporary" addresses [RFC4941], since it is meant to improve the 199 security and privacy properties of the stable addresses that are 200 employed along with the aforementioned "temporary" addresses. In 201 scenarios in which "temporary addresses" are employed, implementation 202 of the mechanism described in this document (in replacement of stable 203 addresses based on e.g. IEEE identifiers) would mitigate address- 204 scanning attacks and also mitigate the remaining vectors for 205 correlating host activities based on the node's IPv6 addresses. On 206 the other hand, for nodes that currently disable "temporary 207 addresses" [RFC4941] for some of the reasons described earlier in 208 this document, implementation of this mechanism will result in stable 209 privacy-enhanced addresses which address some of the concerns related 210 to addresses that embed IEEE identifiers [RFC4291], and which 211 mitigate IPv6 address-scanning 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 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 228 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 229 document are to be interpreted as described in RFC 2119 [RFC2119]. 231 2. Design goals 233 This document specifies a method for selecting Interface Identifiers 234 to be used with IPv6 SLAAC, with the following goals: 236 o The resulting Interface Identifiers remain constant/stable for 237 each prefix used with SLAAC within each subnet. That is, the 238 algorithm generates the same Interface Identifier when configuring 239 an address (for the same interface) belonging to the same prefix 240 within the same subnet. 242 o The resulting Interface Identifiers do change when addresses are 243 configured for different prefixes. That is, if different 244 autoconfiguration prefixes are used to configure addresses for the 245 same network interface card, the resulting Interface Identifiers 246 must be (statistically) different. This means that, given two 247 addresses produced by the method specified in this document, it 248 must be difficult for an attacker tell whether the addresses have 249 been generated/used by the same node. 251 o It must be difficult for an outsider to predict the Interface 252 Identifiers that will be generated by the algorithm, even with 253 knowledge of the Interface Identifiers generated for configuring 254 other addresses. 256 o Depending on the specific implementation approach (see Section 3 257 and Appendix A), the resulting Interface Identifiers may be 258 independent of the underlying hardware (e.g. link-layer address). 259 This means that e.g. replacing a Network Interface Card (NIC) will 260 not have the (generally undesirable) effect of changing the IPv6 261 addresses used for that network interface. 263 o The method specified in this document is meant to be an 264 alternative to producing IPv6 addresses based on e.g. IEEE 265 identifiers (as specified in [RFC2464]). It is meant to be 266 employed for all of the stable (i.e. non-temporary) IPv6 addresses 267 configured with SLAAC for a given interface, including global, 268 link-local, and unique-local IPv6 addresses. 270 We note that of use of the algorithm specified in this document is 271 (to a large extent) orthogonal to the use of "temporary addresses" 272 [RFC4941]. When employed along "temporary addresses", the method 273 specified in this document will mitigate address-scanning attacks and 274 correlation of node activities across networks (see Appendix B and 275 [IAB-PRIVACY]). On the other hand, hosts that do not implement/use 276 "temporary addresses" but employ the method specified in this 277 document would, at the very least, mitigate the host-tracking and 278 address scanning issues discussed in the previous section. 280 3. Algorithm specification 282 IPv6 implementations conforming to this specification MUST generate 283 Interface Identifiers using the algorithm specified in this section 284 in replacement of any other algorithms used for generating "stable" 285 addresses (such as that specified in [RFC2464]). However, 286 implementations conforming to this specification MAY employ the 287 algorithm specified in [RFC4941] to generate temporary addresses in 288 addition to the addresses generated with the algorithm specified in 289 this document. The method specified in this document MUST be 290 employed for generating the Interface Identifiers for all the stable 291 addresses of a given interface, including IPv6 global, link-local, 292 and unique-local addresses. 294 This means that this document does not formally obsolete or 295 deprecate any of the existing algorithms to generate Interface 296 Identifiers (e.g. such as that specified in [RFC2464]). However, 297 those IPv6 implementations that employ this specification MUST 298 generate all of their "stable" addresses as specified in this 299 document. 301 Implementations conforming to this specification SHOULD provide the 302 means for a system administrator to enable or disable the use of this 303 algorithm for generating Interface Identifiers. 305 Unless otherwise noted, all of the parameters included in the 306 expression below MUST be included when generating an Interface 307 Identifier. 309 1. Compute a random (but stable) identifier with the expression: 311 RID = F(Prefix, Net_Iface, Network_ID, DAD_Counter, secret_key) 313 Where: 315 RID: 316 Random (but stable) Interface Identifier 318 F(): 319 A pseudorandom function (PRF) that is not computable from the 320 outside (without knowledge of the secret key), which should 321 produce an output of at least 64 bits.The PRF could be 322 implemented as a cryptographic hash of the concatenation of 323 each of the function parameters. 325 Prefix: 326 The prefix to be used for SLAAC, as learned from an ICMPv6 327 Router Advertisement message, or the link-local IPv6 unicast 328 prefix. 330 Net_Iface: 331 An implementation-dependent stable identifier associated with 332 the network interface for which the RID is being generated. 333 An implementation MAY provide a configuration option to select 334 the source of the identifier to be used for the Net_Iface 335 parameter. A discussion of possible sources for this value 336 (along with the corresponding trade-offs) can be found in 337 Appendix A. 339 Network_ID: 340 Some network specific data that identifies the subnet to which 341 this interface is attached. For example the IEEE 802.11 342 Service Set Identifier (SSID) corresponding to the network to 343 which this interface is associated. This parameter is 344 OPTIONAL. 346 DAD_Counter: 347 A counter that is employed to resolve Duplicate Address 348 Detection (DAD) conflicts. It MUST be initialized to 0, and 349 incremented by 1 for each new tentative address that is 350 configured as a result of a DAD conflict. Implementations 351 that record DAD_Counter in non-volatile memory for each 352 {Prefix, Net_Iface, Network_ID} tuple MUST initialize 353 DAD_Counter to the recorded value if such an entry exists in 354 non-volatile memory). See Section 4 for additional details. 356 secret_key: 357 A secret key that is not known by the attacker. The secret 358 key MUST be initialized at operating system installation time 359 to a pseudo-random number (see [RFC4086] for randomness 360 requirements for security). An implementation MAY provide the 361 means for the the system administrator to change or display 362 the secret key. 364 2. The Interface Identifier is finally obtained by taking as many 365 bits from the RID value (computed in the previous step) as 366 necessary, starting from the rightmost bit. 368 We note that [RFC4291] requires that, the Interface IDs of all 369 unicast addresses (except those that start with the binary 370 value 000) be 64-bit long. However, the method discussed in 371 this document could be employed for generating Interface IDs 372 of any arbitrary length, albeit at the expense of reduced 373 entropy (when employing Interface IDs smaller than 64 bits). 375 The resulting Interface Identifier should be compared against the 376 Subnet-Router Anycast [RFC4291] and the Reserved Subnet Anycast 377 Addresses [RFC2526], and against those Interface Identifiers 378 already employed in an address of the same network interface and 379 the same network prefix. In the event that an unacceptable 380 identifier has been generated, this situation should be handled 381 in the same way as the case of duplicate addresses (see 382 Section 4). 384 This document does not require the use of any specific PRF for the 385 function F() above, since the choice of such PRF is usually a trade- 386 off between a number of properties (processing requirements, ease of 387 implementation, possible intellectual property rights, etc.), and 388 since the best possible choice for F() might be different for 389 different types of devices (e.g. embedded systems vs. regular 390 servers) and might possibly change over time. 392 Note that the result of F() in the algorithm above is no more secure 393 than the secret key. If an attacker is aware of the PRF that is 394 being used by the victim (which we should expect), and the attacker 395 can obtain enough material (i.e. addresses configured by the victim), 396 the attacker may simply search the entire secret-key space to find 397 matches. To protect against this, the secret key should be of a 398 reasonable length. Key lengths of at least 128 bits should be 399 adequate. The secret key is initialized at system installation time 400 to a pseudo-random number, thus allowing this mechanism to be 401 enabled/used automatically, without user intervention. 403 Including the SLAAC prefix in the PRF computation causes the 404 Interface Identifier to vary across each prefix (link-local, global, 405 etc.) employed by the node and, as consequently, also across 406 networks. This mitigates the correlation of activities of multi- 407 homed nodes (since each of the corresponding addresses will employ a 408 different Interface ID), host-tracking (since the network prefix will 409 change as the node moves from one network to another), and any other 410 attacks that benefit from predictable Interface Identifiers (such as 411 address scanning attacks). 413 The Net_Iface is a value that identifies the network interface for 414 which an IPv6 address is being generated. The following properties 415 are required for the Net_Iface parameter: 417 o it MUST be constant across system bootstrap sequences and other 418 network events (e.g., bringing another interface up or down) 420 o it MUST be different for each network interface simultaneously in 421 use 423 Since the stability of the addresses generated with this method 424 relies on the stability of all arguments of F(), it is key that the 425 Net_Iface be constant across system bootstrap sequences and other 426 network events. Additionally, the Net_Iface must uniquely identify 427 an interface within the node, such that two interfaces connecting to 428 the same network do not result in duplicate addresses. Different 429 types of operating systems might benefit from different stability 430 properties of the Net_Iface parameter. For example, a client- 431 oriented operating system might want to employ Net_Iface identifiers 432 that are attached to the underlying network interface card (NIC), 433 such that a removable NIC always gets the same IPv6 address, 434 irrespective of the system communications port to which it is 435 attached. On the other hand, a server-oriented operating system 436 might prefer Net_Iface identifiers that are attached to system slots/ 437 ports, such that replacement of a network interface card does not 438 result in an IPv6 address change. Appendix A discusses possible 439 sources for the Net_Iface, along with their pros and cons. 441 Including the optional Network_ID parameter when computing the RID 442 value above would cause the algorithm to produce a different 443 Interface Identifier when connecting to different networks, even when 444 configuring addresses belonging to the same prefix. This means that 445 a host would employ a different Interface Identifier as it moves from 446 one network to another even for IPv6 link-local addresses or Unique 447 Local Addresses (ULAs). In those scenarios where the Network_ID is 448 unknown to the attacker, including this parameter might help mitigate 449 attacks where a victim node connects to the same subnet as the 450 attacker, and the attacker tries to learn the Interface Identifier 451 used by the victim node for a remote network (see Section 7 for 452 further details). 454 The DAD_Counter parameter provides the means to intentionally cause 455 this algorithm produce a different IPv6 addresses (all other 456 parameters being the same). This could be necessary to resolve 457 Duplicate Address Detection (DAD) conflicts, as discussed in detail 458 in Section 4. 460 Finally, we note that all of the bits in the resulting Interface IDs 461 are treated as "opaque" bits. For example, the universal/local bit 462 of Modified EUI-64 format identifiers is treated as any other bit of 463 such identifier. In theory, this might result in Duplicate Address 464 Detection (DAD) failures that would otherwise not be encountered. 465 However, this is not deemed as a real issue, because of the following 466 considerations: 468 o The interface IDs of all addresses (except those of addresses that 469 that start with the binary value 000) are 64-bit long. Since the 470 method specified in this document results in random Interface IDs, 471 the probability of DAD failures is very small. 473 o Real world data indicates that MAC address reuse is far more 474 common than assumed [HDMoore]. This means that even IPv6 475 addresses that employ (allegedly) unique identifiers (such as IEEE 476 identifiers) might result in DAD failures, and hence 477 implementations should be prepared to gracefully handle such 478 occurrences. 480 o Since some popular and widely-deployed operating systems (such as 481 Microsoft Windows) do not employ unique hardware identifiers for 482 the Interface IDs of their stable addresses, reliance on such 483 unique identifiers is more reduced in the deployed world (fewer 484 deployed systems rely on them for the avoidance of address 485 collisions). 487 4. Resolving Duplicate Address Detection (DAD) conflicts 489 If as a result of performing Duplicate Address Detection (DAD) 490 [RFC4862] a host finds that the tentative address generated with the 491 algorithm specified in Section 3 is a duplicate address, it SHOULD 492 resolve the address conflict by trying a new tentative address as 493 follows: 495 o DAD_Counter is incremented by 1. 497 o A new Interface Identifier is generated with the algorithm 498 specified in Section 3, using the incremented DAD_Counter value. 500 This procedure may be repeated a number of times until the address 501 conflict is resolved. Hosts SHOULD try at least IDGEN_RETRIES (see 502 Section 5) tentative addresses if DAD fails for successive generated 503 addresses, in the hopes of resolving the address conflict. We also 504 note that hosts MUST limit the number of tentative addresses that are 505 tried (rather than indefinitely try a new tentative address until the 506 conflict is resolved). 508 In those (unlikely) scenarios in which duplicate addresses are 509 detected and in which the order in which the conflicting nodes 510 configure their addresses may vary (e.g., because they may be 511 bootstrapped in different order), the algorithm specified in this 512 section for resolving DAD conflicts could lead to addresses that are 513 not stable within the same subnet. In order to mitigate this 514 potential problem, nodes MAY record the DAD_Counter value employed 515 for a specific {Prefix, Net_Iface, Network_ID} tuple in non-volatile 516 memory, such that the same DAD_Counter value is employed when 517 configuring an address for the same Prefix and subnet at any other 518 point in time. 520 In the event that a DAD conflict cannot be solved (possibly after 521 trying a number of different addresses), address configuration would 522 fail. In those scenarios, nodes MUST NOT automatically fall back to 523 employing other algorithms for generating Interface Identifiers. 525 5. Specified Constants 527 This document specifies the following constant: 529 IDGEN_RETRIES: 530 defaults to 3. 532 6. IANA Considerations 534 There are no IANA registries within this document. The RFC-Editor 535 can remove this section before publication of this document as an 536 RFC. 538 7. Security Considerations 540 This document specifies an algorithm for generating Interface 541 Identifiers to be used with IPv6 Stateless Address Autoconfiguration 542 (SLAAC), as an alternative to e.g. Interface Identifiers that embed 543 IEEE identifiers (such as those specified in [RFC2464]). When 544 compared to such identifiers, the identifiers specified in this 545 document have a number of advantages: 547 o They prevent trivial host-tracking, since when a host moves from 548 one network to another the network prefix used for 549 autoconfiguration and/or the Network ID (e.g., IEEE 802.11 SSID) 550 will typically change, and hence the resulting Interface 551 Identifier will also change (see Appendix B.1). 553 o They mitigate address-scanning techniques which leverage 554 predictable Interface Identifiers (e.g., known Organizationally 555 Unique Identifiers) [I-D.ietf-opsec-ipv6-host-scanning]. 557 o They may result in IPv6 addresses that are independent of the 558 underlying hardware (i.e. the resulting IPv6 addresses do not 559 change if a network interface card is replaced) if an appropriate 560 source for Net_Iface (Section 3) is employed. 562 o They prevent the information leakage produced by embedding 563 hardware addresses in the Interface Identifier (which could be 564 exploited to launch device-specific attacks). 566 o Since the method specified in this document will result in 567 different Interface Identifiers for each configured address, 568 knowledge/leakage of the Interface Identifier employed for one 569 stable address of will not negatively affect the security/privacy 570 of other stable addresses configured for other prefixes (whether 571 at the same time or at some other point in time). 573 In scenarios in which an attacker can connect to the same subnet as a 574 victim node, the attacker might be able to learn the Interface 575 Identifier employed by the victim node for an arbitrary prefix, by 576 simply sending a forged Router Advertisement [RFC4861] for that 577 prefix, and subsequently learning the corresponding address 578 configured by the victim node (either listening to the Duplicate 579 Address Detection packets, or to any other traffic that employs the 580 newly configured address). We note that a number of factors might 581 limit the ability of an attacker from successfully performing such 582 attack: 584 o First-Hop security mechanisms such as RA-Guard [RFC6105] 585 [I-D.ietf-v6ops-ra-guard-implementation] could prevent the forged 586 Router Advertisement from reaching the victim node 588 o If the victim implementation includes the (optional) Network_ID 589 parameter for computing F() (see Section 3), and the Network_ID 590 employed by the victim for a remote network is unknown to the 591 attacker, the Interface Identifier learned by the attacker would 592 differ from the one used by the victim when connecting to the 593 legitimate network. 595 In any case, we note that at the point in which this kind of attack 596 becomes a concern, a host should consider employing Secure Neighbor 597 Discovery (SEND) [RFC3971] to prevent an attacker from illegitimately 598 claiming authority for a network prefix. 600 We note that this algorithm is meant to be an alternative to 601 Interface Identifiers such as those specified in [RFC2464], but is 602 not meant as an alternative to temporary Interface Identifiers (such 603 as those specified in [RFC4941]). Clearly, temporary addresses may 604 help to mitigate the correlation of activities of a node within the 605 same network, and may also reduce the attack exposure window (since 606 temporary addresses are short-lived when compared to the addresses 607 generated with the method specified in this document). We note that 608 implementation of this algorithm would still benefit those hosts 609 employing "temporary addresses", since it would mitigate host- 610 tracking vectors still present when such addresses are used (see 611 Appendix B.1), and would also mitigate address-scanning techniques 612 that leverage patterns in IPv6 addresses that embed IEEE identifiers. 614 Finally, we note that the method described in this document addresses 615 some of the privacy concerns arising from the use of IPv6 addresses 616 that embed IEEE identifiers, without the use of temporary addresses, 617 thus possibly offering an interesting trade-off for those scenarios 618 in which the use of temporary addresses is not feasible. 620 8. Acknowledgements 622 The algorithm specified in this document has been inspired by Steven 623 Bellovin's work ([RFC1948]) in the area of TCP sequence numbers. 625 The author would like to thank (in alphabetical order) Ran Atkinson, 626 Karl Auer, Steven Bellovin, Matthias Bethke, Ben Campbell, Brian 627 Carpenter, Tassos Chatzithomaoglou, Tim Chown, Alissa Cooper, Dominik 628 Elsbroek, Brian Haberman, Bob Hinden, Christian Huitema, Ray Hunter, 629 Jouni Korhonen, Eliot Lear, Jong-Hyouk Lee, Andrew McGregor, Tom 630 Petch, Michael Richardson, Mark Smith, Ole Troan, James Woodyatt, and 631 He Xuan, for providing valuable comments on earlier versions of this 632 document. 634 This document is based on the technical report "Security Assessment 635 of the Internet Protocol version 6 (IPv6)" [CPNI-IPv6] authored by 636 Fernando Gont on behalf of the UK Centre for the Protection of 637 National Infrastructure (CPNI). 639 Fernando Gont would like to thank CPNI (http://www.cpni.gov.uk) for 640 their continued support. 642 9. References 644 9.1. Normative References 646 [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 647 (IPv6) Specification", RFC 2460, December 1998. 649 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 650 Requirement Levels", BCP 14, RFC 2119, March 1997. 652 [RFC2526] Johnson, D. and S. Deering, "Reserved IPv6 Subnet Anycast 653 Addresses", RFC 2526, March 1999. 655 [RFC3971] Arkko, J., Kempf, J., Zill, B., and P. Nikander, "SEcure 656 Neighbor Discovery (SEND)", RFC 3971, March 2005. 658 [RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)", 659 RFC 3972, March 2005. 661 [RFC4086] Eastlake, D., Schiller, J., and S. Crocker, "Randomness 662 Requirements for Security", BCP 106, RFC 4086, June 2005. 664 [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing 665 Architecture", RFC 4291, February 2006. 667 [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, 668 "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, 669 September 2007. 671 [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless 672 Address Autoconfiguration", RFC 4862, September 2007. 674 [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy 675 Extensions for Stateless Address Autoconfiguration in 676 IPv6", RFC 4941, September 2007. 678 [RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. 679 Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, 680 February 2011. 682 9.2. Informative References 684 [RFC1948] Bellovin, S., "Defending Against Sequence Number Attacks", 685 RFC 1948, May 1996. 687 [RFC2464] Crawford, M., "Transmission of IPv6 Packets over Ethernet 688 Networks", RFC 2464, December 1998. 690 [RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W. 691 Stevens, "Basic Socket Interface Extensions for IPv6", 692 RFC 3493, February 2003. 694 [RFC3542] Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei, 695 "Advanced Sockets Application Program Interface (API) for 696 IPv6", RFC 3542, May 2003. 698 [I-D.ietf-opsec-ipv6-host-scanning] 699 Gont, F. and T. Chown, "Network Reconnaissance in IPv6 700 Networks", draft-ietf-opsec-ipv6-host-scanning-01 (work in 701 progress), April 2013. 703 [I-D.ietf-v6ops-ra-guard-implementation] 704 Gont, F., "Implementation Advice for IPv6 Router 705 Advertisement Guard (RA-Guard)", 706 draft-ietf-v6ops-ra-guard-implementation-07 (work in 707 progress), November 2012. 709 [HDMoore] HD Moore, "The Wild West", Louisville, Kentucky, U.S.A. 710 September 25-29, 2012, 711 . 713 [Gont-DEEPSEC2011] 714 Gont, "Results of a Security Assessment of the Internet 715 Protocol version 6 (IPv6)", DEEPSEC 2011 Conference, 716 Vienna, Austria, November 2011, . 720 [Gont-BRUCON2012] 721 Gont, "Recent Advances in IPv6 Security", BRUCON 2012 722 Conference, Ghent, Belgium, September 2012, . 726 [Broersma] 727 Broersma, R., "IPv6 Everywhere: Living with a Fully IPv6- 728 enabled environment", Australian IPv6 Summit 2010, 729 Melbourne, VIC Australia, October 2010, . 732 [IAB-PRIVACY] 733 IAB, "Privacy and IPv6 Addresses", July 2011, . 737 [CPNI-IPv6] 738 Gont, F., "Security Assessment of the Internet Protocol 739 version 6 (IPv6)", UK Centre for the Protection of 740 National Infrastructure, (available on request). 742 Appendix A. Possible sources for the Net_Iface parameter 744 The following subsections describe a number of possible sources for 745 the Net_Iface parameter employed by the F() function in Section 3. 746 The choice of a specific source for this value represents a number of 747 trade-offs, which may vary from one implementation to another. 749 A.1. Interface Index 751 The Interface Index [RFC3493] [RFC3542] of an interface uniquely 752 identifies an interface within a node. However, these identifiers 753 might or might not have the stability properties required for the 754 Net_Iface value employed by this method. For example, the Interface 755 Index might change upon removal or installation of a network 756 interface (typically one with a smaller value for the Interface 757 Index, when such a naming scheme is used), or when network interfaces 758 happen to be initialized in a different order. We note that some 759 implementations are known to provide configuration knobs to set the 760 Interface Index for a given interface. Such configuration knobs 761 could be employed to prevent the Interface Index from changing (e.g. 762 as a result of the removal of a network interface). 764 A.2. Interface Name 766 The Interface Name (e.g., "eth0", "em0", etc) tends to be more stable 767 than the underlying Interface Index, since such stability is 768 required/desired when interface names are employed in network 769 configuration (firewall rules, etc.). The stability properties of 770 Interface Names depend on implementation details, such as what is the 771 namespace used for Interface Names. For example, "generic" interface 772 names such as "eth0" or "wlan0" will generally be invariant with 773 respect to network interface card replacements. On the other hand, 774 vendor-dependent interface names such as "rtk0" or the like will 775 generally change when a network interface card is replaced with one 776 from a different vendor. 778 We note that Interface Names might still change when network 779 interfaces are added or removed once the system has been bootstrapped 780 (for example, consider Universal Serial Bus-based network interface 781 cards which might be added or removed once the system has been 782 bootstrapped). 784 A.3. Link-layer Addresses 786 Link-layer addresses typically provide for unique identifiers for 787 network interfaces; although, for obvious reasons, they generally 788 change when a network interface card is replaced. In scenarios where 789 neither Interface Indexes nor Interface Names have the stability 790 properties specified in Section 3 for Net_Iface, an implementation 791 might want to employ the link-layer address of the interface for the 792 Net_Iface parameter, albeit at the expense of making the 793 corresponding IPv6 addresses dependent on the underlying network 794 interface card (i.e., the corresponding IPv6 address would typically 795 change upon replacement of the underlying network interface card). 797 A.4. Logical Network Service Identity 799 Host operating systems with a conception of logical network service 800 identity, distinct from network interface identity or index, may keep 801 a Universally Unique Identifier (UUID) or similar number with the 802 stability properties appropriate for use as the Net_Iface parameter. 804 Appendix B. Privacy issues still present when temporary addresses are 805 employed 807 It is not unusual for people to assume or expect that all the 808 security/privacy implications of traditional SLAAC addresses are 809 mitigated when "temporary addresses" [RFC4941] are employed. 810 However, as noted in Section 1 of this document and [IAB-PRIVACY], 811 since temporary addresses are employed in addition to (rather than in 812 replacement of) traditional SLAAC addresses, many of the security/ 813 privacy implications of traditional SLAAC addresses are not mitigated 814 by the use of temporary addresses. 816 This section discusses a (non-exhaustive) number of scenarios in 817 which host security/privacy is still negatively affected as a result 818 of employing Interface Identifiers that are constant across networks 819 (e.g., those resulting from embedding IEEE identifiers), even when 820 temporary addresses [RFC4941] are employed. It aims to clarify the 821 motivation of employing the method specified in this document in 822 replacement of the traditional SLAAC addresses even when privacy/ 823 temporary addresses [RFC4941] are employed. 825 B.1. Host tracking 827 This section describes two attack scenarios which illustrate that 828 host-tracking may still be possible when privacy/temporary addresses 829 [RFC4941] are employed. These examples should remind us that one 830 should not disclose more than it is really needed for achieving a 831 specific goal (and an Interface Identifier that is constant across 832 different networks does exactly that: it discloses more information 833 than is needed for providing a stable address). 835 B.1.1. Tracking hosts across networks #1 837 A host configures its stable addresses with the constant Interface 838 Identifier, and runs any application that needs to perform a server- 839 like function (e.g. a peer-to-peer application). As a result of 840 that, an attacker/user participating in the same application (e.g., 841 P2P) would learn the constant Interface Identifier used by the host 842 for that network interface. 844 Some time later, the same host moves to a completely different 845 network, and employs the same P2P application. The attacker now 846 interacts with the same host again, and hence can learn its newly- 847 configured stable address. Since the Interface Identifier is the 848 same as the one used before, the attacker can infer that it is 849 communicating with the same device as before. 851 B.1.2. Tracking hosts across networks #2 853 Once an attacker learns the constant Interface Identifier employed by 854 the victim host for its stable address, the attacker is able to 855 "probe" a network for the presence of such host at any given network. 857 See Appendix B.1.1 for just one example of how an attacker could 858 learn such value. Other examples include being able to share the 859 same network segment at some point in time (e.g. a conference 860 network or any public network), etc. 862 For example, if an attacker learns that in one network the victim 863 used the Interface Identifier 1111:2222:3333:4444 for its stable 864 addresses, then he could subsequently probe for the presence of such 865 device in the network 2011:db8::/64 by sending a probe packet (ICMPv6 866 Echo Request, or any other probe packet) to the address 2001:db8:: 867 1111:2222:3333:4444. 869 B.1.3. Revealing the identity of devices performing server-like 870 functions 872 Some devices, such as storage devices, may typically perform server- 873 like functions and may be usually moved from one network to another. 874 Such devices are likely to simply disable (or not even implement) 875 privacy/temporary addresses [RFC4941]. If the aforementioned devices 876 employ Interface Identifiers that are constant across networks, it 877 would be trivial for an attacker to tell whether the same device is 878 being used across networks by simply looking at the Interface 879 Identifier. Clearly, performing server-like functions should not 880 imply that a device discloses its identity (i.e., that the attacker 881 can tell whether it is the same device providing some function in two 882 different networks, at two different points in time). 884 The scheme proposed in this document prevents such information 885 leakage by causing nodes to generate different Interface Identifiers 886 when moving from one network to another, thus mitigating this kind of 887 privacy attack. 889 B.2. Address-scanning attacks 891 While it is usually assumed that IPv6 address-scanning attacks are 892 unfeasible, an attacker can leverage address patterns in IPv6 893 addresses to greatly reduce the search space 894 [I-D.ietf-opsec-ipv6-host-scanning] [Gont-BRUCON2012]. Addresses 895 that embed IEEE identifiers result in one of such patterns that could 896 be leveraged to reduce the search space when other nodes employ the 897 same IEEE OUI (Organizationally Unique Identifier). 899 As noted earlier in this document, temporary addresses [RFC4941] do 900 not replace/eliminate the use of IPv6 addresses that embed IEEE 901 identifiers (they are employed in addition to those), and hence hosts 902 implementing [RFC4941] would still be vulnerable to address-scanning 903 attacks. The method specified in this document is meant as an 904 alternative to addresses that embed IEEE identifiers, and hence 905 eliminates such patterns (thus mitigating the aforementioned address- 906 scanning attacks). 908 B.3. Information Leakage 910 IPv6 addresses embedding IEEE identifiers leak information about the 911 device (Network Interface Card vendor, or even Operating System 912 and/or software type), which could be leveraged by an attacker with 913 device/software-specific vulnerabilities knowledge to quickly find 914 possible targets. Since temporary addresses do not replace the 915 traditional SLAAC addresses that typically embed IEEE identifiers, 916 employing temporary addresses does not eliminate this possible 917 information leakage. 919 Author's Address 921 Fernando Gont 922 SI6 Networks / UTN-FRH 923 Evaristo Carriego 2644 924 Haedo, Provincia de Buenos Aires 1706 925 Argentina 927 Phone: +54 11 4650 8472 928 Email: fgont@si6networks.com 929 URI: http://www.si6networks.com