idnits 2.17.1 draft-ietf-6man-stable-privacy-addresses-07.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 19, 2013) is 3966 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 19, 2013 5 Expires: November 20, 2013 7 A method for Generating Stable Privacy-Enhanced Addresses with IPv6 8 Stateless Address Autoconfiguration (SLAAC) 9 draft-ietf-6man-stable-privacy-addresses-07 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 IEEE 19 identifiers, such that the benefits of stable addresses can be 20 achieved without sacrificing the privacy of users. 22 Status of this Memo 24 This Internet-Draft is submitted in full conformance with the 25 provisions of BCP 78 and BCP 79. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF). Note that other groups may also distribute 29 working documents as Internet-Drafts. The list of current Internet- 30 Drafts is at http://datatracker.ietf.org/drafts/current/. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 This Internet-Draft will expire on November 20, 2013. 39 Copyright Notice 41 Copyright (c) 2013 IETF Trust and the persons identified as the 42 document authors. All rights reserved. 44 This document is subject to BCP 78 and the IETF Trust's Legal 45 Provisions Relating to IETF Documents 46 (http://trustee.ietf.org/license-info) in effect on the date of 47 publication of this document. Please review these documents 48 carefully, as they describe your rights and restrictions with respect 49 to this document. Code Components extracted from this document must 50 include Simplified BSD License text as described in Section 4.e of 51 the Trust Legal Provisions and are provided without warranty as 52 described in the Simplified BSD License. 54 Table of Contents 56 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 57 2. Design goals . . . . . . . . . . . . . . . . . . . . . . . . . 6 58 3. Algorithm specification . . . . . . . . . . . . . . . . . . . 7 59 4. Resolving Duplicate Address Detection (DAD) conflicts . . . . 12 60 5. Specified Constants . . . . . . . . . . . . . . . . . . . . . 13 61 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 62 7. Security Considerations . . . . . . . . . . . . . . . . . . . 15 63 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 17 64 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 18 65 9.1. Normative References . . . . . . . . . . . . . . . . . . . 18 66 9.2. Informative References . . . . . . . . . . . . . . . . . . 18 67 Appendix A. Possible sources for the Net_Iface parameter . . . . 21 68 A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 21 69 A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . . 21 70 A.3. Link-layer Addresses . . . . . . . . . . . . . . . . . . . 21 71 Appendix B. Privacy issues still present when temporary 72 addresses are employed . . . . . . . . . . . . . . . 23 73 B.1. Host tracking . . . . . . . . . . . . . . . . . . . . . . 23 74 B.1.1. Tracking hosts across networks #1 . . . . . . . . . . 23 75 B.1.2. Tracking hosts across networks #2 . . . . . . . . . . 24 76 B.1.3. Revealing the identity of devices performing 77 server-like functions . . . . . . . . . . . . . . . . 24 78 B.2. Address-scanning attacks . . . . . . . . . . . . . . . . . 24 79 B.3. Information Leakage . . . . . . . . . . . . . . . . . . . 25 80 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 26 82 1. Introduction 84 [RFC4862] specifies Stateless Address Autoconfiguration (SLAAC) for 85 IPv6 [RFC2460], which typically results in hosts configuring one or 86 more "stable" addresses composed of a network prefix advertised by a 87 local router, and an Interface Identifier (IID) that typically embeds 88 a hardware address (e.g., using IEEE identifiers) [RFC4291]. 90 Cryptograhically Generated Addresses (CGAs) [RFC3972] are yet 91 another method for generating Interface Identifiers, which bind a 92 public signature key to an IPv6 address in the SEcure Neighbor 93 Discovery (SEND) [RFC3971] protocol. 95 Generally, the traditional SLAAC addresses are thought to simplify 96 network management, since they simplify Access Control Lists (ACLs) 97 and logging. However, they have a number of drawbacks: 99 o since the resulting Interface Identifiers do not vary over time, 100 they allow correlation of node activities within the same network, 101 thus negatively affecting the privacy of users. 103 o since the resulting Interface Identifiers are constant across 104 networks, the resulting IPv6 addresses can be leveraged to track 105 and correlate the activity of a node across multiple networks 106 (e.g. track and correlate the activities of a typical client 107 connecting to the public Internet from different locations), thus 108 negatively affecting the privacy of users. 110 o since embedding the underlying link-layer address in the Interface 111 Identifier results in specific address patterns, such patterns may 112 be leveraged by attackers to reduce the search space when 113 performing address scanning attacks. 115 o embedding the underlying link-layer address in the Interface 116 Identifier means that changing the interface hardware results in a 117 different Interface Identifier (and hence different IPv6 address). 119 The "Privacy Extensions for Stateless Address Autoconfiguration in 120 IPv6" [RFC4941] (henceforth referred to as "temporary addresses") 121 were introduced to complicate the task of eavesdroppers and other 122 information collectors to correlate the activities of a node, and 123 basically result in temporary (and random) Interface Identifiers. 124 These temporary addresses are generated *in addition* to the 125 traditional IPv6 addresses based on IEEE identifiers, with the 126 "temporary addresses" being employed for "outgoing communications", 127 and the traditional SLAAC addresses being employed for "server" 128 functions (i.e., receiving incoming connections). 130 However, even with "temporary addresses" in place, a number of issues 131 remain to be mitigated. Namely, 133 o since "temporary addresses" [RFC4941] do not eliminate the use of 134 fixed identifiers for server-like functions, they only *partially* 135 mitigate host-tracking and activity correlation across networks 136 (see Appendix B.1 for some example attacks that are still possible 137 with temporary addresses). 139 o since "temporary addresses" [RFC4941] do not replace the 140 traditional SLAAC addresses, an attacker can still leverage 141 patterns in those addresses to greatly reduce the search space for 142 "alive" nodes [Gont-DEEPSEC2011] [CPNI-IPv6] 143 [I-D.ietf-opsec-ipv6-host-scanning]. 145 Hence, there is a motivation to improve the properties of "stable" 146 addresses regardless of whether temporary addresses are employed or 147 not. 149 Additionally, it should be noted that temporary addresses can be 150 challenging in a number of areas. For example, from a network- 151 management point of view, they tend to increase the complexity of 152 event logging, trouble-shooting, enforcement of access controls and 153 quality of service, etc. As a result, some organizations disable the 154 use of temporary addresses even at the expense of reduced privacy 155 [Broersma]. Temporary addresses may also result in increased 156 implementation complexity, which might not be possible or desirable 157 in some implementations (e.g., some embedded devices). 159 In scenarios in which temporary addresses are deliberately not used 160 (possibly for any of the aforementioned reasons), all a host is left 161 with is the stable addresses that have been generated using e.g. 162 IEEE identifiers. In such scenarios, it may still be desirable to 163 have addresses that mitigate address scanning attacks, and that at 164 the very least do not reveal the node's identity when roaming from 165 one network to another -- without complicating the operation of the 166 corresponding networks. 168 However, even with temporary addresses [RFC4941] in place, 169 preventing correlation of activities of a node within a network 170 may be difficult (if at all possible) to achieve. As a trivial 171 example, consider a scenario where there is a single node (or a 172 reduced number of nodes) connected to a specific network. An 173 attacker could detect new addresses in use at that network, an 174 infer which addresses are being employed by which hosts. This 175 task is made particularly easier by the fact that use of 176 "temporary addresses" can be easily inferred (since the follow 177 different patterns from that of traditional SLAAC addresses), and 178 since they are re-generated periodically (i.e., after a specific 179 amount of time has elapsed). 181 This document specifies a method to generate Interface Identifiers 182 that are stable/constant for each network interface within each 183 subnet, but that change as hosts move from one network to another, 184 thus keeping the "stability" properties of the Interface Identifiers 185 specified in [RFC4291], while still mitigating address-scanning 186 attacks and preventing correlation of the activities of a node as it 187 moves from one network to another. 189 For nodes that currently disable "temporary addresses" [RFC4941] for 190 some of the reasons stated above, this mechanism provides stable 191 privacy-enhanced addresses which address some of the concerns related 192 to addresses that embed IEEE identifiers [RFC4291]. On the other 193 hand, in scenarios in which "temporary addresses" are employed 194 together with stable addresses such as those based on IEEE 195 identifiers, implementation of the mechanism described in this 196 document would mitigate address-scanning attacks and also mitigate 197 some vectors for correlating host activities that are not mitigated 198 by the use of temporary addresses. 200 We note that this method is incrementally deployable, since it does 201 not pose any interoperability implications when deployed on networks 202 where other nodes do not implement or employ it. Additionally, we 203 note that this document does not update or modify IPv6 StateLess 204 Address Auto-Configuration (SLAAC) [RFC4862] itself, but rather only 205 specifies an alternative algorithm to generate Interface Identifiers. 206 Therefore, the usual address lifetime properties (as specified in the 207 corresponding Prefix Information Options) apply when IPv6 addresses 208 are generated as a result of employing the algorithm specified in 209 this document with SLAAC [RFC4862]. Additionally, from the point of 210 view of renumbering, we note that these addresses behave like the 211 traditional IPv6 addresses (that embed a hardware address) resulting 212 from SLAAC [RFC4862]. 214 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 215 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 216 document are to be interpreted as described in RFC 2119 [RFC2119]. 218 2. Design goals 220 This document specifies a method for selecting Interface Identifiers 221 to be used with IPv6 SLAAC, with the following goals: 223 o The resulting Interface Identifiers remain constant/stable for 224 each prefix used with SLAAC within each subnet. That is, the 225 algorithm generates the same Interface Identifier when configuring 226 an address (for the same interface) belonging to the same prefix 227 within the same subnet. 229 o The resulting Interface Identifiers do change when addresses are 230 configured for different prefixes. That is, if different 231 autoconfiguration prefixes are used to configure addresses for the 232 same network interface card, the resulting Interface Identifiers 233 must be (statistically) different. 235 o It must be difficult for an outsider to predict the Interface 236 Identifiers that will be generated by the algorithm, even with 237 knowledge of the Interface Identifiers generated for configuring 238 other addresses. 240 o Depending on the specific implementation approach (see Section 3 241 and Appendix A), the resulting Interface Identifiers may be 242 independent of the underlying hardware (e.g. link-layer address). 243 This means that e.g. replacing a Network Interface Card (NIC) will 244 not have the (generally undesirable) effect of changing the IPv6 245 addresses used for that network interface. 247 o The aforementioned Interface Identifiers are meant to be an 248 alternative to those based on e.g. IEEE identifiers, such as 249 those specified in [RFC2464]. 251 We note that of use of the algorithm specified in this document is 252 (to a large extent) orthogonal to the use of "temporary addresses" 253 [RFC4941]. Hosts that do not implement/use "temporary addresses" 254 would have the benefit that they would not be subject to the host- 255 tracking and address scanning issues discussed in the previous 256 section. On the other hand, in the case of hosts employing 257 "temporary addresses", the method specified in this document would 258 mitigate address-scanning attacks and correlation of node activities 259 across networks (see Appendix B and [IAB-PRIVACY]). 261 3. Algorithm specification 263 IPv6 implementations conforming to this specification MUST generate 264 Interface Identifiers using the algorithm specified in this section 265 in replacement of any other algorithms used for generating "stable" 266 addresses (such as that specified in [RFC2464]). The aforementioned 267 algorithm MUST be employed for generating the Interface Identifiers 268 for all of the IPv6 addresses configured with SLAAC for a given 269 interface, including IPv6 link-local addresses. 271 This means that this document does not formally obsolete or 272 deprecate any of the existing algorithms to generate Interface 273 Identifiers (e.g. such as that specified in [RFC2464]). However, 274 those IPv6 implementations that employ this specification MUST 275 generate all of their "stable" addresses as specified in this 276 document. 278 Implementations conforming to this specification SHOULD provide the 279 means for a system administrator to enable or disable the use of this 280 algorithm for generating Interface Identifiers. Implementations 281 conforming to this specification MAY employ the algorithm specified 282 in [RFC4941] to generate temporary addresses in addition to the 283 addresses generated with the algorithm specified in this document. 285 Unless otherwise noted, all of the parameters included in the 286 expression below MUST be included when generating an Interface 287 Identifier. 289 1. Compute a random (but stable) identifier with the expression: 291 RID = F(Prefix, Net_Iface, Network_ID, DAD_Counter, secret_key) 293 Where: 295 RID: 296 Random (but stable) Interface Identifier 298 F(): 299 A pseudorandom function (PRF) that is not computable from the 300 outside (without knowledge of the secret key), which 301 shouldproduce an output of at least 64 bits.The PRF could be 302 implemented as a cryptographic hash of the concatenation of 303 each of the function parameters. 305 Prefix: 306 The prefix to be used for SLAAC, as learned from an ICMPv6 307 Router Advertisement message. 309 Net_Iface: 310 An implementation-dependent stable identifier associated with 311 the network interface for which the RID is being generated. 312 An implementation MAY provide a configuration option to select 313 the source of the identifier to be used for the Net_Iface 314 parameter. A discussion of possible sources for this value 315 (along with the corresponding trade-offs) can be found in 316 Appendix A. 318 Network_ID: 319 Some network specific data that identifies the subnet to which 320 this interface is attached. For example the IEEE 802.11 321 Service Set Identifier (SSID) corresponding to the network to 322 which this interface is associated. This parameter is 323 OPTIONAL. 325 DAD_Counter: 326 A counter that is employed to resolve Duplicate Address 327 Detection (DAD) conflicts. It MUST be initialized to 0, and 328 incremented by 1 for each new tentative address that is 329 configured as a result of a DAD conflict. Implementations 330 that record DAD_Counter in non-volatile memory for each 331 {Prefix, Net_Iface, Network_ID} tuple MUST initialize 332 DAD_Counter to the recorded value if such an entry exists in 333 non-volatile memory). See Section 4 for additional details. 335 secret_key: 336 A secret key that is not known by the attacker. The secret 337 key MUST be initialized at operating system installation time 338 to a pseudo-random number (see [RFC4086] for randomness 339 requirements for security). An implementation MAY provide the 340 means for the the system administrator to change or display 341 the secret key. 343 2. The Interface Identifier is finally obtained by taking as many 344 bits from the RID value (computed in the previous step) as 345 necessary, starting from the rightmost bit. 347 We note that [RFC4291] requires that, the Interface IDs of all 348 unicast addresses (except those that start with the binary 349 value 000) be 64-bit long. However, the method discussed in 350 this document could be employed for generating Interface IDs 351 of any arbitrary length, albeit at the expense of reduced 352 entropy (when employing Interface IDs smaller than 64 bits). 354 The resulting Interface Identifier should be compared against the 355 Subnet-Router Anycast [RFC4291] and the Reserved Subnet Anycast 356 Addresses [RFC2526], and against those Interface Identifiers 357 already employed in an address of the same network interface and 358 the same network prefix. In the event that an unacceptable 359 identifier has been generated, this situation should be handled 360 in the same way as the case of duplicate addresses (see 361 Section 4). 363 This document does not require the use of any specific PRF for the 364 function F() above, since the choice of such PRF is usually a trade- 365 off between a number of properties (processing requirements, ease of 366 implementation, possible intellectual property rights, etc.), and 367 since the best possible choice for F() might be different for 368 different types of devices (e.g. embedded systems vs. regular 369 servers) and might possibly change over time. 371 Note that the result of F() in the algorithm above is no more secure 372 than the secret key. If an attacker is aware of the PRF that is 373 being used by the victim (which we should expect), and the attacker 374 can obtain enough material (i.e. addresses configured by the victim), 375 the attacker may simply search the entire secret-key space to find 376 matches. To protect against this, the secret key should be of a 377 reasonable length. Key lengths of at least 128 bits should be 378 adequate. The secret key is initialized at system installation time 379 to a pseudo-random number, thus allowing this mechanism to be 380 enabled/used automatically, without user intervention. 382 Including the SLAAC prefix in the PRF computation causes the 383 Interface Identifier to vary across networks that employ different 384 prefixes, thus mitigating host-tracking attacks and any other attacks 385 that benefit from predictable Interface Identifiers (such as address 386 scanning attacks). 388 The Net_Iface is a value that identifies the network interface for 389 which an IPv6 address is being generated. The following properties 390 are desirable for the Net_Iface: 392 o it MUST be constant across system bootstrap sequences and other 393 network events (e.g., bringing another interface up or down) 395 o it MUST be different for each network interface 397 Since the stability of the addresses generated with this method 398 relies on the stability of all arguments of F(), it is key that the 399 Net_Iface be constant across system bootstrap sequences and other 400 network events. Additionally, the Net_Iface must uniquely identify 401 an interface within the node, such that two interfaces connecting to 402 the same network do not result in duplicate addresses. Different 403 types of operating systems might benefit from different stability 404 properties of the Net_Iface parameter. For example, a client- 405 oriented operating system might want to employ Net_Iface identifiers 406 that are attached to the underlying network interface card (NIC), 407 such that a removable NIC always gets the same IPv6 address, 408 irrespective of the system communications port to which it is 409 attached. On the other hand, a server-oriented operating system 410 might prefer Net_Iface identifers that are attached to system slots/ 411 ports, such that replacement of a network interface card does not 412 result in an IPv6 address change. Appendix A discusses possible 413 sources for the Net_Iface, along with their pros and cons. 415 Including the optional Network_ID parameter when computing the RID 416 value above would cause the algorithm to produce a different 417 Interface Identifier when connecting to different networks, even when 418 configuring addresses belonging to the same prefix. This means that 419 a host would employ a different Interface Identifier as it moves from 420 one network to another even for IPv6 link-local addresses or Unique 421 Local Addresses (ULAs). In those scenarios where the Network_ID is 422 unknown to the attacker, including this parameter might help mitigate 423 attacks where a victim node connects to the same subnet as the 424 attacker, and the attacker tries to learn the Interface Identifier 425 used by the victim node for a remote network (see Section 7 for 426 further details). 428 The DAD_Counter parameter provides the means to intentionally cause 429 this algorithm produce a different IPv6 addresses (all other 430 parameters being the same). This could be necessary to resolve 431 Duplicate Address Detection (DAD) conflicts, as discussed in detail 432 in Section 4. 434 Finally, we note that all of the bits in the resulting Interface IDs 435 are treated as "opaque" bits. For example, the universal/local bit 436 of Modified EUI-64 format identifiers is treated as any other bit of 437 such identifier. In theory, this might result in Duplicate Address 438 Detection (DAD) failures that would otherwise not be encountered. 439 However, this is not deemed as a real issue, because of the following 440 considerations: 442 o The interface IDs of all addresses (except those of addresses that 443 that start with the binary value 000) are 64-bit long. Since the 444 method specified in this document results in random Interface IDs, 445 the probability of DAD failures is very small. 447 o Real world data indicates that MAC address reuse is far more 448 common than assumed [HDMoore]. This means that even IPv6 449 addresses that employ (allegedly) unique identifiers (such as IEEE 450 identifiers) might result in DAD failures, and hence 451 implementations should be prepared to gracefully handle such 452 occurrences. 454 Finally, we note that some popular and widely-deployed operating 455 systems (such as Microsoft Windows) do not employ unique identifiers 456 for the Interface IDs of their stable addresses. Therefore, such 457 implementations would not be affected by the method specified in this 458 document. 460 4. Resolving Duplicate Address Detection (DAD) conflicts 462 If as a result of performing Duplicate Address Detection (DAD) 463 [RFC4862] a host finds that the tentative address generated with the 464 algorithm specified in Section 3 is a duplicate address, it SHOULD 465 resolve the address conflict by trying a new tentative address as 466 follows: 468 o DAD_Counter is incremented by 1. 470 o A new Interface Identifier is generated with the algorithm 471 specified in Section 3, using the incremented DAD_Counter value. 473 This procedure may be repeated a number of times until the address 474 conflict is resolved. Hosts SHOULD try at least IDGEN_RETRIES (see 475 Section 5) tentative addresses if DAD fails for successive generated 476 addresses, in the hopes of resolving the address conflict. We also 477 note that hosts MUST limit the number of tentative addresses that are 478 tried (rather than indefinitely try a new tentative address until the 479 conflict is resolved). 481 In those (unlikely) scenarios in which duplicate addresses are 482 detected and in which the order in which the conflicting nodes 483 configure their addresses may vary (e.g., because they may be 484 bootstrapped in different order), the algorithm specified in this 485 section for resolving DAD conflicts could lead to addresses that are 486 not stable within the same subnet. In order to mitigate this 487 potential problem, nodes MAY record the DAD_Counter value employed 488 for a specific {Prefix, Net_Iface, Network_ID} tuple in non-volatile 489 memory, such that the same DAD_Counter value is employed when 490 configuring an address for the same Prefix and subnet at any other 491 point in time. 493 In the event that a DAD conflict cannot be solved (possibly after 494 trying a number of different addresses), address configuration would 495 fail. In those scenarios, nodes MUST NOT automatically fall back to 496 employing other algorithms for generating Interface Identifiers. 498 5. Specified Constants 500 This document specifies the following constant: 502 IDGEN_RETRIES: 503 defaults to 3. 505 6. IANA Considerations 507 There are no IANA registries within this document. The RFC-Editor 508 can remove this section before publication of this document as an 509 RFC. 511 7. Security Considerations 513 This document specifies an algorithm for generating Interface 514 Identifiers to be used with IPv6 Stateless Address Autoconfiguration 515 (SLAAC), as an alternative to e.g. Interface Identifiers that embed 516 IEEE identifiers (such as those specified in [RFC2464]). When 517 compared to such identifiers, the identifiers specified in this 518 document have a number of advantages: 520 o They prevent trivial host-tracking, since when a host moves from 521 one network to another the network prefix used for 522 autoconfiguration and/or the Network ID (e.g., IEEE 802.11 SSID) 523 will typically change, and hence the resulting Interface 524 Identifier will also change (see Appendix B.1). 526 o They mitigate address-scanning techniques which leverage 527 predictable Interface Identifiers (e.g., known Organizationally 528 Unique Identifiers) [I-D.ietf-opsec-ipv6-host-scanning]. 530 o They may result in IPv6 addresses that are independent of the 531 underlying hardware (i.e. the resulting IPv6 addresses do not 532 change if a network interface card is replaced) if an appropriate 533 source for Net_Iface (Section 3) is employed. 535 In scenarios in which an attacker can connect to the same subnet as a 536 victim node, the attacker might be able to learn the Interface 537 Identifier employed by the victim node for an arbitrary prefix, by 538 simply sending a forged Router Advertisement [RFC4861] for that 539 prefix, and subsequently learning the corresponding address 540 configured by the victim node (either listening to the Duplicate 541 Address Detection packets, or to any other traffic that employs the 542 newly configued address). We note that a number of factors might 543 limit the ability of an attaker from successfully performing such 544 attack: 546 o First-Hop security mechanisms such as RA-Guard [RFC6105] 547 [I-D.ietf-v6ops-ra-guard-implementation] could prevent the forged 548 Router Advertisement from reaching the victim node 550 o If the victim implementation includes the (optional) Network_ID 551 parameter for computing F() (see Section 3), and the Network_ID 552 employed by the victim for a remote network is unknown to the 553 attacker, the Interface Identifier learned by the attacker would 554 differ from the one used by the victim when connecting to the 555 legitimate network. 557 In any case, we note that at the point in which this kind of attack 558 becomes a concern, a host should consider employing Secure Neighbor 559 Discovery (SEND) [RFC3971] to prevent an attacker from illegitimately 560 claiming authority for a network prefix. 562 We note that this algorithm is meant to be an alternative to 563 Interface Identifiers such as those specified in [RFC2464], but is 564 not meant as an alternative to temporary Interface Identifiers (such 565 as those specified in [RFC4941]). Clearly, temporary addresses may 566 help to mitigate the correlation of activities of a node within the 567 same network, and may also reduce the attack exposure window (since 568 temporary addresses are short-lived when compared to the addresses 569 generated with the method specified in this document). We note that 570 implementation of this algorithm would still benefit those hosts 571 employing "temporary addresses", since it would mitigate host- 572 tracking vectors still present when such addresses are used (see 573 Appendix B.1), and would also mitigate address-scanning techniques 574 that leverage patterns in IPv6 addresses that embed IEEE identifiers. 576 Finally, we note that the method described in this document addresses 577 some of the privacy concerns arising from the use of IPv6 addresses 578 that embed IEEE identifiers, without the use of temporary addresses, 579 thus possibly offering an interesting trade-off for those scenarios 580 in which the use of temporary addresses is not feasible. 582 8. Acknowledgements 584 The algorithm specified in this document has been inspired by Steven 585 Bellovin's work ([RFC1948]) in the area of TCP sequence numbers. 587 The author would like to thank (in alphabetical order) Ran Atkinson, 588 Karl Auer, Steven Bellovin, Matthias Bethke, Ben Campbell, Brian 589 Carpenter, Tassos Chatzithomaoglou, Alissa Cooper, Dominik Elsbroek, 590 Brian Haberman, Bob Hinden, Christian Huitema, Ray Hunter, Jouni 591 Korhonen, Eliot Lear, Jong-Hyouk Lee, Andrew McGregor, Tom Petch, 592 Michael Richardson, Mark Smith, Ole Troan, and He Xuan, for providing 593 valuable comments on earlier versions of this document. 595 This document is based on the technical report "Security Assessment 596 of the Internet Protocol version 6 (IPv6)" [CPNI-IPv6] authored by 597 Fernando Gont on behalf of the UK Centre for the Protection of 598 National Infrastructure (CPNI). 600 Fernando Gont would like to thank CPNI (http://www.cpni.gov.uk) for 601 their continued support. 603 9. References 605 9.1. Normative References 607 [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 608 (IPv6) Specification", RFC 2460, December 1998. 610 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 611 Requirement Levels", BCP 14, RFC 2119, March 1997. 613 [RFC2526] Johnson, D. and S. Deering, "Reserved IPv6 Subnet Anycast 614 Addresses", RFC 2526, March 1999. 616 [RFC3971] Arkko, J., Kempf, J., Zill, B., and P. Nikander, "SEcure 617 Neighbor Discovery (SEND)", RFC 3971, March 2005. 619 [RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)", 620 RFC 3972, March 2005. 622 [RFC4086] Eastlake, D., Schiller, J., and S. Crocker, "Randomness 623 Requirements for Security", BCP 106, RFC 4086, June 2005. 625 [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing 626 Architecture", RFC 4291, February 2006. 628 [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, 629 "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, 630 September 2007. 632 [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless 633 Address Autoconfiguration", RFC 4862, September 2007. 635 [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy 636 Extensions for Stateless Address Autoconfiguration in 637 IPv6", RFC 4941, September 2007. 639 [RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. 640 Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, 641 February 2011. 643 9.2. Informative References 645 [RFC1948] Bellovin, S., "Defending Against Sequence Number Attacks", 646 RFC 1948, May 1996. 648 [RFC2464] Crawford, M., "Transmission of IPv6 Packets over Ethernet 649 Networks", RFC 2464, December 1998. 651 [RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W. 652 Stevens, "Basic Socket Interface Extensions for IPv6", 653 RFC 3493, February 2003. 655 [RFC3542] Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei, 656 "Advanced Sockets Application Program Interface (API) for 657 IPv6", RFC 3542, May 2003. 659 [I-D.ietf-opsec-ipv6-host-scanning] 660 Gont, F. and T. Chown, "Network Reconnaissance in IPv6 661 Networks", draft-ietf-opsec-ipv6-host-scanning-01 (work in 662 progress), April 2013. 664 [I-D.ietf-v6ops-ra-guard-implementation] 665 Gont, F., "Implementation Advice for IPv6 Router 666 Advertisement Guard (RA-Guard)", 667 draft-ietf-v6ops-ra-guard-implementation-07 (work in 668 progress), November 2012. 670 [HDMoore] HD Moore, "The Wild West", Louisville, Kentucky, U.S.A. 671 September 25-29, 2012., September 2012, 672 . 674 [Gont-DEEPSEC2011] 675 Gont, "Results of a Security Assessment of the Internet 676 Protocol version 6 (IPv6)", DEEPSEC 2011 Conference, 677 Vienna, Austria, November 2011, . 681 [Gont-BRUCON2012] 682 Gont, "Recent Advances in IPv6 Security", BRUCON 2012 683 Conference, Ghent, Belgium, September 2012, . 687 [Broersma] 688 Broersma, R., "IPv6 Everywhere: Living with a Fully IPv6- 689 enabled environment", Australian IPv6 Summit 2010, 690 Melbourne, VIC Australia, October 2010, . 693 [IAB-PRIVACY] 694 IAB, "Privacy and IPv6 Addresses", July 2011, . 698 [CPNI-IPv6] 699 Gont, F., "Security Assessment of the Internet Protocol 700 version 6 (IPv6)", UK Centre for the Protection of 701 National Infrastructure, (available on request). 703 Appendix A. Possible sources for the Net_Iface parameter 705 The following subsections describe a number of possible sources for 706 the Net_Iface parameter employed by the F() function in Section 3. 707 The choice of a specific source for this value represents a number of 708 trade-offs, which may vary from one implementation to another. 710 A.1. Interface Index 712 The Interface Index [RFC3493] [RFC3542] of an interface uniquely 713 identifies an interface within a node. However, these identifiers 714 might or might not have the stability properties required for the 715 Net_Iface value employed by this method. For example, the Interface 716 Index might change upon removal or installation of a network 717 interface (typically one with a smaller value for the Interface 718 Index, when such a naming scheme is used), or when network interface 719 happen to be initialized in a different order. We note that some 720 implementations are known to provide configuration knobs to set the 721 Interface Index for a given interface. Such configuration knobs 722 could be employed to prevent the Interface Index from changing (e.g. 723 as a result of the removal of a network interface). 725 A.2. Interface Name 727 The Interface Name (e.g., "eth0", "em0", etc) tends to be more stable 728 than the underlying Interface Index, since such stability is 729 required/desired when interface names are employed in network 730 configuration (firewall rules, etc.). The stability properties of 731 Interface Names depend on implementation details, such as what is the 732 namespace used for Interface Names. For example, "generic" interface 733 names such as "eth0" or "wlan0" will generally be invariant with 734 respect to network interface card replacements. On the other hand, 735 vendor-dependent interface names such as "rtk0" or the like will 736 generally change when a network interface card is replaced with one 737 from a different vendor. 739 We note that Interface Names might still change when network 740 interfaces are added or removed once the system has been bootstrapped 741 (for example, consider Universal Serial Bus-based network interface 742 cards which might be added or removed once the system has been 743 bootstrapped). 745 A.3. Link-layer Addresses 747 Link-layer addresses typically provide for unique identfiers for 748 network interfaces; although, for obvious reasons, they generally 749 change when a network interface card is replaced. In scenarios where 750 neither Interface Indexes nor Interface Names have the stability 751 properties specified in Section 3 for Net_Iface, an implementation 752 might want to employ the link-layer address of the interface for the 753 Net_Iface parameter, albeit at the expense of making the 754 corresponding IPv6 addresses dependent on the underlying network 755 interface card (i.e., the corresponding IPv6 address would typically 756 change upon replacement of the underlying network interface card). 758 Appendix B. Privacy issues still present when temporary addresses are 759 employed 761 It is not unusual for people to assume or expect that all the 762 security/privacy implications of traditional SLAAC addresses to me 763 mitigated when "temporary addresses" [RFC4941] are employed. 764 However, as noted in Section 1 of this document and [IAB-PRIVACY], 765 since temporary addresses are employed in addition to (rather than in 766 replacement of) traditional SLAAC addresses, many of the security/ 767 privacy implications of traditional SLAAC addresses are not mitigated 768 by the use of temporary addresses. 770 This section discusses a (non-exhaustive) number of scenarios in 771 which host security/privacy is still negatively affected as a result 772 of employing Interface Identifiers that are constant across networks 773 (e.g., those resulting from embedding IEEE identifiers), even when 774 temporary addresses [RFC4941] are employed. It aims to clarify the 775 motivation of employing the method specified in this document in 776 replacement of the traditional SLAAC addresses even when privacy/ 777 temporary addresses [RFC4941] are employed. 779 B.1. Host tracking 781 This section describes one possible attack scenario that illustrates 782 that host-tracking may still be possible when privacy/temporary 783 addresses [RFC4941] are employed. 785 B.1.1. Tracking hosts across networks #1 787 A host configures its stable addresses with the constant Interface 788 Identifier, and runs any application that needs to perform a server- 789 like function (e.g. a peer-to-peer application). As a result of 790 that, an attacker/user participating in the same application (e.g., 791 P2P) would learn the constant Interface Identifier used by the host 792 for that network interface. 794 Some time later, the same host moves to a completely different 795 network, and employs the same P2P application, probably even with a 796 different username. The attacker now interacts with the same host 797 again, and hence can learn its newly-configured stable address. 798 Since the Interface Identifier is the same as the one used before, 799 the attacker can infer that it is communicating with the same device 800 as before. 802 This is just *one* possible attack scenario, which should remind us 803 that one should not disclose more than it is really needed for 804 achieving a specific goal (and an Interface Identifier that is 805 constant across different networks does exactly that: it discloses 806 more information than is needed for providing a stable address). 808 B.1.2. Tracking hosts across networks #2 810 Once an attacker learns the constant Interface Identifier employed by 811 the victim host for its stable address, the attacker is able to 812 "probe" a network for the presence of such host at any given network. 814 See Appendix B.1.1 for just one example of how an attacker could 815 learn such value. Other examples include being able to share the 816 same network segment at some point in time (e.g. a conference 817 network or any public network), etc. 819 For example, if an attacker learns that in one network the victim 820 used the Interface Identifier 1111:2222:3333:4444 for its stable 821 addresses, then he could subsequently probe for the presence of such 822 device in the network 2011:db8::/64 by sending a probe packet (ICMPv6 823 Echo Request, or any other probe packet) to the address 2001:db8:: 824 1111:2222:3333:4444. 826 B.1.3. Revealing the identity of devices performing server-like 827 functions 829 Some devices, such as storage devices, may typically perform server- 830 like functions and may be usually moved from one network to another. 831 Such devices are likely to simply disable (or not even implement) 832 privacy/temporary addresses [RFC4941]. If the aforementioned devices 833 employ Interface Identifiers that are constant across networks, it 834 would be trivial for an attacker to tell whether the same device is 835 being used across networks by simply looking at the Interface 836 Identifier. Clearly, performing server-like functions should not 837 imply that a device discloses its identity (i.e., that the attacker 838 can tell whether it is the same device providing some function in two 839 different networks, at two different points in time). 841 The scheme proposed in this document prevents such information 842 leakage by causing nodes to generate different Interface Identifiers 843 when moving from one network to another, thus mitigating this kind of 844 privacy attack. 846 B.2. Address-scanning attacks 848 While it is usually assumed that IPv6 address-scanning attacks are 849 unfeasible, an attacker can leverage address patterns in IPv6 850 addresses to greatly reduce the search space 851 [I-D.ietf-opsec-ipv6-host-scanning] [Gont-BRUCON2012]. Addresses 852 that embed IEEE identifiers result in one of such patterns that could 853 be leveraged to reduce the search space when other nodes employ the 854 same IEEE OUI (Organizationally Unique Identifier). 856 As noted earlier in this document, temporary addresses [RFC4941] do 857 not replace/eliminate the use of IPv6 addresses that embed IEEE 858 identifiers (they are employed *in addition* to those), and hence 859 hosts implementing [RFC4941] would still be vulnerable to address- 860 scanning attacks. The method specified in this document is meant as 861 an alternative to addresses that embed IEEE identifiers, and hence 862 eliminates such patterns (thus mitigating the aforementioned address- 863 scanning attacks). 865 B.3. Information Leakage 867 IPv6 addresses embedding IEEE identifiers leak information about the 868 device (Network Interface Card vendor, or even Operating System 869 and/or software type), which could be leveraged by an attacker with 870 device/software-specific vulnerabilities knowledge to quickly find 871 possible targets. Since temporary addresses do not replace the 872 traditional SLAAC addresses that typically embedd IEEE identifiers, 873 employing temporary addresses does not eliminate this possible 874 information leakage. 876 Author's Address 878 Fernando Gont 879 SI6 Networks / UTN-FRH 880 Evaristo Carriego 2644 881 Haedo, Provincia de Buenos Aires 1706 882 Argentina 884 Phone: +54 11 4650 8472 885 Email: fgont@si6networks.com 886 URI: http://www.si6networks.com