idnits 2.17.1 draft-ietf-6man-stable-privacy-addresses-06.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 (April 12, 2013) is 4032 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) -- 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-00 Summary: 2 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 April 12, 2013 5 Expires: October 14, 2013 7 A method for Generating Stable Privacy-Enhanced Addresses with IPv6 8 Stateless Address Autoconfiguration (SLAAC) 9 draft-ietf-6man-stable-privacy-addresses-06 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. The aforementioned method is meant 18 to be an alternative to generating Interface Identifiers based on 19 IEEE 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 October 14, 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 . . . . 10 60 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 61 6. Security Considerations . . . . . . . . . . . . . . . . . . . 12 62 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 13 63 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 14 64 8.1. Normative References . . . . . . . . . . . . . . . . . . . 14 65 8.2. Informative References . . . . . . . . . . . . . . . . . . 14 66 Appendix A. Privacy issues still present with RFC 4941 . . . . . 16 67 A.1. Host tracking . . . . . . . . . . . . . . . . . . . . . . 16 68 A.1.1. Tracking hosts across networks #1 . . . . . . . . . . 16 69 A.1.2. Tracking hosts across networks #2 . . . . . . . . . . 16 70 A.1.3. Revealing the identity of devices performing 71 server-like functions . . . . . . . . . . . . . . . . 17 72 A.2. Address scanning attacks . . . . . . . . . . . . . . . . . 17 73 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 18 75 1. Introduction 77 [RFC4862] specifies the Stateless Address Autoconfiguration (SLAAC) 78 for IPv6 [RFC2460], which typically results in hosts configuring one 79 or more "stable" addresses composed of a network prefix advertised by 80 a local router, and an Interface Identifier (IID) that typically 81 embeds a hardware address (e.g., using IEEE identifiers) [RFC4291]. 83 Generally, stable addresses are thought to simplify network 84 management, since they simplify Access Control Lists (ACLs) and 85 logging. However, since IEEE identifiers are typically globally 86 unique, the resulting IPv6 addresses can be leveraged to track and 87 correlate the activity of a node over time and across multiple 88 subnets and networks, thus negatively affecting the privacy of users. 90 The "Privacy Extensions for Stateless Address Autoconfiguration in 91 IPv6" [RFC4941] were introduced to complicate the task of 92 eavesdroppers and other information collectors to correlate the 93 activities of a node, and basically result in temporary (and random) 94 Interface Identifiers that are typically more difficult to leverage 95 than those based on IEEE identifiers. When privacy extensions are 96 enabled, "privacy addresses" are employed for "outgoing 97 communications", while the traditional IPv6 addresses based on IEEE 98 identifiers are still used for "server" functions (i.e., receiving 99 incoming connections). 101 As noted in [RFC4941], "anytime a fixed identifier is used in 102 multiple contexts, it becomes possible to correlate seemingly 103 unrelated activity using this identifier". Therefore, since 104 "privacy addresses" [RFC4941] do not eliminate the use of fixed 105 identifiers for server-like functions, they only *partially* 106 mitigate the correlation of host activities (see Appendix A for 107 some example attacks that are still possible with privacy 108 addresses). Therefore, it is vital that the privacy 109 characteristics of "stable" addresses are improved such that the 110 ability of an attacker correlating host activities across networks 111 is reduced. 113 Another important aspect not mitigated by "Privacy Addresses" 114 [RFC4941] is that of IPv6 address scanning. Since IPv6 addresses 115 that embed IEEE identifiers have specific patterns, an attacker 116 could leverage such patterns to greatly reduce the search space 117 for "live" hosts. Since "privacy addresses" do not eliminate the 118 use of IPv6 addresses that embed IEEE identifiers, address 119 scanning attacks are still feasible even if "privacy extensions" 120 are employed [Gont-DEEPSEC2011] [CPNI-IPv6]. This is yet another 121 motivation to improve the privacy characteristics of "stable" 122 addresses (currently embedding IEEE identifiers). 124 Privacy/temporary addresses can be challenging in a number of areas. 125 For example, from a network-management point of view, they tend to 126 increase the complexity of event logging, trouble-shooting, and 127 enforcing access controls and quality of service, etc. As a result, 128 some organizations disable the use of privacy addresses even at the 129 expense of reduced privacy [Broersma]. Also, they result in 130 increased complexity, which might not be possible or desirable in 131 some implementations (e.g., some embedded devices). 133 In scenarios in which "Privacy Extensions" are deliberately not used 134 (possibly for any of the aforementioned reasons), all a host is left 135 with is the addresses that have been generated using e.g. IEEE 136 identifiers, and this is yet another case in which it is also vital 137 that the privacy characteristics of these stable addresses are 138 improved. 140 We note that in most (if not all) of those scenarios in which 141 "Privacy Extensions" are disabled, there is usually no actual desire 142 to negatively affect user privacy, but rather a desire to simplify 143 operation of the network (simplify the use of ACLs, logging, etc.). 145 This document specifies a method to generate interface identifiers 146 that are stable/constant for each network interface within each 147 subnet, but that change as hosts move from one network to another, 148 thus keeping the "stability" properties of the interface identifiers 149 specified in [RFC4291], while still mitigating address-scanning 150 attacks and preventing correlation of the activities of a node as it 151 moves from one network to another. 153 We note that this method is incrementally deployable, since it does 154 not pose any interoperability implications when deployed on networks 155 where other nodes do not implement or employ it. 157 This document does not update or modify IPv6 StateLess Address Auto- 158 Configuration (SLAAC) [RFC4862] itself, but rather only specifies an 159 alternative algorithm to generate Interface IDs. Therefore, the 160 usual address lifetime properties (as specified in the corresponding 161 Prefix Information Options) apply when IPv6 addresses are generated 162 as a result of employing the algorithm specified in this document 163 with SLAAC [RFC4862]. Additionally, from the point of view of 164 renumbering, we note that these addresses behave like the traditional 165 IPv6 addresses (that embed a hardware address) resulting from SLAAC 166 [RFC4862]. 168 For nodes that currently disable "Privacy extensions" [RFC4941] for 169 some of the reasons stated above, this mechanism provides stable 170 privacy-enhanced addresses which may already address most of the 171 privacy concerns related to addresses that embed IEEE identifiers 173 [RFC4291]. On the other hand, in scenarios in which "Privacy 174 Extensions" are employed, implementation of the mechanism described 175 in this document would mitigate host-scanning attacks and also 176 mitigate correlation of host activities. 178 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 179 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 180 document are to be interpreted as described in RFC 2119 [RFC2119]. 182 2. Design goals 184 This document specifies a method for selecting interface identifiers 185 to be used with IPv6 SLAAC, with the following goals: 187 o The resulting interface identifiers remain constant/stable for 188 each prefix used with SLAAC within each subnet. That is, the 189 algorithm generates the same interface identifier when configuring 190 an address belonging to the same prefix within the same subnet. 192 o The resulting interface identifiers do not depend on the 193 underlying hardware (e.g. link-layer address). This means that 194 e.g. replacing a Network Interface Card (NIC) will not have the 195 (generally undesirable) effect of changing the IPv6 addresses used 196 for that network interface. 198 o The resulting interface identifiers do change when addresses are 199 configured for different prefixes. That is, if different 200 autoconfiguration prefixes are used to configure addresses for the 201 same network interface card, the resulting interface identifiers 202 must be (statistically) different. 204 o It must be difficult for an outsider to predict the interface 205 identifiers that will be generated by the algorithm, even with 206 knowledge of the interface identifiers generated for configuring 207 other addresses. 209 o The aforementioned interface identifiers are meant to be an 210 alternative to those based on e.g. IEEE identifiers, such as 211 those specified in [RFC2464]. 213 We note that of use of the algorithm specified in this document is 214 (to a large extent) orthogonal to the use of "Privacy Extensions" 215 [RFC4941]. Hosts that do not implement/use "Privacy Extensions" 216 would have the benefit that they would not be subject to the host- 217 tracking and address scanning issues discussed in the previous 218 section. On the other hand, in the case of hosts employing "Privacy 219 Extensions", the method specified in this document would prevent 220 address scanning attacks and correlation of node activities across 221 networks (see Appendix A). 223 3. Algorithm specification 225 IPv6 implementations conforming to this specification MUST generate 226 interface identifiers using the algorithm specified in this section 227 in replacement of any other algorithms used for generating "stable" 228 addresses (such as that specified in [RFC2464]). The aforementioned 229 algorithm MUST be employed for generating the interface identifiers 230 for all of the IPv6 addresses configured with SLAAC for a given 231 interface, including IPv6 link-local addresses. 233 This means that this document does not formally obsolete or 234 deprecate any of the existing algorithms to generate Interface IDs 235 (e.g. such as that specified in [RFC2464]). However, those IPv6 236 implementations that employ this specification must generate all 237 of their "stable" addresses as specified in this document. 239 Implementations conforming to this specification SHOULD provide the 240 means for a system administrator to enable or disable the use of this 241 algorithm for generating Interface Identifiers. Implementations 242 conforming to this specification MAY employ the algorithm specified 243 in [RFC4941] to generate temporary addresses in addition to the 244 addresses generated with the algorithm specified in this document. 246 Unless otherwise noted, all of the parameters included in the 247 expression below MUST be included when generating an Interface ID. 249 1. Compute a random (but stable) identifier with the expression: 251 RID = F(Prefix, Interface_Index, Network_ID, DAD_Counter, 252 secret_key) 254 Where: 256 RID: 257 Random (but stable) Interface Identifier 259 F(): 260 A pseudorandom function (PRF) that is not computable from the 261 outside (without knowledge of the secret key). The PRF could 262 be implemented as a cryptographic hash of the concatenation of 263 each of the function parameters. 265 Prefix: 266 The prefix to be used for SLAAC, as learned from an ICMPv6 267 Router Advertisement message. 269 Interface_Index: 270 The interface index [RFC3493] [RFC3542] corresponding to this 271 network interface. 273 Network_ID: 274 Some network specific data that identifies the subnet to which 275 this interface is attached. For example the IEEE 802.11 276 Service Set Identifier (SSID) corresponding to the network to 277 which this interface is associated. This parameter is 278 OPTIONAL. 280 DAD_Counter: 281 A counter that is employed to resolve Duplicate Address 282 Detection (DAD) conflicts. It MUST be initialized to 0, and 283 incremented by 1 for each new tentative address that is 284 configured as a result of a DAD conflict. Implementations 285 that record DAD_Counter in non-volatile memory for each 286 {Prefix, Interface_Index, Network_ID} tuple MUST initialize 287 DAD_Counter to the recorded value if such an entry exists in 288 non-volatile memory). See Section 4 for additional details. 290 secret_key: 291 A secret key that is not known by the attacker. The secret 292 key MUST be initialized at system installation time to a 293 pseudo-random number (see [RFC4086] for randomness 294 requirements for security). An implementation MAY provide the 295 means for the user to change the secret key. 297 2. The Interface Identifier is finally obtained by taking the 298 leftmost 64 bits of the RID value computed in the previous step. 299 The resulting Interface Identifier should be compared against the 300 Subnet-Router Anycast [RFC4291] and the Reserved Subnet Anycast 301 Addresses [RFC2526], and against those interface identifiers 302 already employed in an address of the same network interface and 303 the same network prefix. In the event that an unacceptable 304 identifier has been generated, this situation should be handled 305 in the same way as the case of duplicate addresses (see 306 Section 4). 308 This document does not require the use of any specific PRF for the 309 function F() above, since the choice of such PRF is usually a trade- 310 off between a number of properties (processing requirements, ease of 311 implementation, possible intellectual property rights, etc.), and 312 since the best possible choice for F() might be different for 313 different types of devices (e.g. embedded systems vs. regular 314 servers) and might possibly change over time. 316 Note that the result of F() in the algorithm above is no more secure 317 than the secret key. If an attacker is aware of the PRF that is 318 being used by the victim (which we should expect), and the attacker 319 can obtain enough material (i.e. addresses configured by the victim), 320 the attacker may simply search the entire secret-key space to find 321 matches. To protect against this, the secret key should be of a 322 reasonable length. Key lengths of at least 128 bits should be 323 adequate. The secret key is initialized at system installation time 324 to a pseudo-random number, thus allowing this mechanism to be 325 enabled/used automatically, without user intervention. 327 Including the SLAAC prefix in the PRF computation causes the 328 Interface ID to vary across networks that employ different prefixes, 329 thus mitigating host-tracking attacks and any other attacks that 330 benefit from predictable Interface IDs (such as address scanning). 332 The Interface Index is expected to remain constant across system 333 reboots and other events. However, we note that it might change upon 334 removal or installation of a network interface (typically one with a 335 smaller value for the Interface Index, when such a naming scheme is 336 used). When such change occurs, the IPv6 addresses resulting from 337 this algorithm for the corresponding interface will change, thus 338 affecting the stability property of this method. We note that we 339 expect these scenarios to be unusual. Some implementations are known 340 to provide configuration knobs to set the Interface Index for a given 341 interface. Such configuration knobs could be employed to prevent the 342 Interface Index from changing (e.g. as a result of the removal of a 343 network interface). 345 Including the optional Network_ID parameter when computing the RID 346 value above would cause the algorithm to produce a different 347 Interface Identifier when connecting to different networks, even when 348 configuring addresses belonging to the same prefix. This means that 349 a host would employ a different Interface ID as it moves from one 350 network to another even for IPv6 link-local addresses or Unique Local 351 Addresses (ULAs). 353 The DAD_Counter parameter provides the means to intentionally cause 354 this algorithm produce a different IPv6 addresses (all other 355 parameters being the same). This could be necessary to resolve 356 Duplicate Address Detection (DAD) conflicts, as discussed in detail 357 in Section 4. 359 4. Resolving Duplicate Address Detection (DAD) conflicts 361 If as a result of performing Duplicate Address Detection (DAD) 362 [RFC4862] a host finds that the tentative address generated with the 363 algorithm specified in Section 3 is a duplicate address, it SHOULD 364 resolve the address conflict by trying a new tentative address as 365 follows: 367 o DAD_Counter is incremented by 1. 369 o A new Interface ID is generated with the algorithm specified in 370 Section 3, using the incremented DAD_Counter value. 372 This procedure may be repeated a number of times until the address 373 conflict is resolved. We RECOMMEND hosts to try at least 374 IDGEN_RETRIES (hereby specified as "3") tentative addresses if DAD 375 fails for successive generated addresses, in the hopes of resolving 376 the address conflict. We also note that hosts MUST limit the number 377 of tentative addresses that are tried (rather than indefinitely try a 378 new tentative address until the conflict is resolved). 380 In those (unlikely) scenarios in which duplicate addresses are 381 detected and in which the order in which the conflicting nodes 382 configure their addresses may vary (e.g., because they may be 383 bootstrapped in different order), the algorithm specified in this 384 section for resolving DAD conflicts could lead to addresses that are 385 not stable within the same subnet. In order to mitigate this 386 potential problem, nodes MAY record the DAD_Counter value employed 387 for a specific {Prefix, Interface_Index, Network_ID} tuple in non- 388 volatile memory, such that the same DAD_Counter value is employed 389 when configuring an address for the same Prefix and subnet at any 390 other point in time. 392 In the event that a DAD conflict cannot be solved (possibly after 393 trying a number of different addresses), address configuration would 394 fail. In those scenarios, nodes MUST NOT automatically fall back to 395 employing other algorithms for generating interface identifiers. 397 5. IANA Considerations 399 There are no IANA registries within this document. The RFC-Editor 400 can remove this section before publication of this document as an 401 RFC. 403 6. Security Considerations 405 This document specifies an algorithm for generating interface 406 identifiers to be used with IPv6 Stateless Address Autoconfiguration 407 (SLAAC), as an alternative to e.g. interface identifiers that embed 408 IEEE identifiers (such as those specified in [RFC2464]). When 409 compared to such identifiers, the identifiers specified in this 410 document have a number of advantages: 412 o They prevent trivial host-tracking, since when a host moves from 413 one network to another the network prefix used for 414 autoconfiguration and/or the Network ID (e.g., IEEE 802.11 SSID) 415 will typically change, and hence the resulting interface 416 identifier will also change (see Appendix A. 418 o They mitigate address-scanning techniques which leverage 419 predictable interface identifiers (e.g., known Organizational 420 Unique Identifiers) [I-D.ietf-opsec-ipv6-host-scanning]. 422 o They result in IPv6 addresses that are independent of the 423 underlying hardware (i.e. the resulting IPv6 addresses do not 424 change if a network interface card is replaced). 426 We note that this algorithm is meant to be an alternative to 427 interface identifiers such as those specified in [RFC2464], but is 428 not meant as an alternative to temporary Interface IDs (such as those 429 specified in [RFC4941]). Clearly, temporary addresses may help to 430 mitigate the correlation of activities of a node within the same 431 network, and may also reduce the attack exposure window (since 432 privacy/temporary addresses are short-lived when compared to the 433 addresses generated with the method specified in this document). We 434 note that implementation of this algorithm would still benefit those 435 hosts employing "Privacy Addresses", since it would mitigate host- 436 tracking vectors still present when privacy addresses are used (see 437 Appendix A), and would also mitigate host-scanning techniques that 438 leverage patterns in IPv6 addresses that embed IEEE identifiers. 440 Finally, we note that the method described in this document may 441 mitigate most of the privacy concerns arising from the use of IPv6 442 addresses that embed IEEE identifiers, without the use of temporary 443 addresses, thus possibly offering an interesting trade-off for those 444 scenarios in which the use of temporary addresses is not feasible. 446 7. Acknowledgements 448 The algorithm specified in this document has been inspired by Steven 449 Bellovin's work ([RFC1948]) in the area of TCP sequence numbers. 451 The author would like to thank (in alphabetical order) Karl Auer, 452 Steven Bellovin, Matthias Bethke, Brian Carpenter, Tassos 453 Chatzithomaoglou, Dominik Elsbroek, Brian Haberman, Bob Hinden, 454 Christian Huitema, Ray Hunter, Jong-Hyouk Lee, Michael Richardson, 455 Mark Smith, and Ole Troan, for providing valuable comments on earlier 456 versions of this document. 458 This document is based on the technical report "Security Assessment 459 of the Internet Protocol version 6 (IPv6)" [CPNI-IPv6] authored by 460 Fernando Gont on behalf of the UK Centre for the Protection of 461 National Infrastructure (CPNI). 463 Fernando Gont would like to thank CPNI (http://www.cpni.gov.uk) for 464 their continued support. 466 8. References 468 8.1. Normative References 470 [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 471 (IPv6) Specification", RFC 2460, December 1998. 473 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 474 Requirement Levels", BCP 14, RFC 2119, March 1997. 476 [RFC2526] Johnson, D. and S. Deering, "Reserved IPv6 Subnet Anycast 477 Addresses", RFC 2526, March 1999. 479 [RFC4086] Eastlake, D., Schiller, J., and S. Crocker, "Randomness 480 Requirements for Security", BCP 106, RFC 4086, June 2005. 482 [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing 483 Architecture", RFC 4291, February 2006. 485 [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless 486 Address Autoconfiguration", RFC 4862, September 2007. 488 [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy 489 Extensions for Stateless Address Autoconfiguration in 490 IPv6", RFC 4941, September 2007. 492 8.2. Informative References 494 [RFC1948] Bellovin, S., "Defending Against Sequence Number Attacks", 495 RFC 1948, May 1996. 497 [RFC2464] Crawford, M., "Transmission of IPv6 Packets over Ethernet 498 Networks", RFC 2464, December 1998. 500 [RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W. 501 Stevens, "Basic Socket Interface Extensions for IPv6", 502 RFC 3493, February 2003. 504 [RFC3542] Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei, 505 "Advanced Sockets Application Program Interface (API) for 506 IPv6", RFC 3542, May 2003. 508 [I-D.ietf-opsec-ipv6-host-scanning] 509 Gont, F. and T. Chown, "Network Reconnaissance in IPv6 510 Networks", draft-ietf-opsec-ipv6-host-scanning-00 (work in 511 progress), December 2012. 513 [Gont-DEEPSEC2011] 514 Gont, "Results of a Security Assessment of the Internet 515 Protocol version 6 (IPv6)", DEEPSEC 2011 Conference, 516 Vienna, Austria, November 2011, . 520 [Gont-BRUCON2012] 521 Gont, "Recent Advances in IPv6 Security", BRUCON 2012 522 Conference, Ghent, Belgium, September 2012, . 526 [Broersma] 527 Broersma, R., "IPv6 Everywhere: Living with a Fully IPv6- 528 enabled environment", Australian IPv6 Summit 2010, 529 Melbourne, VIC Australia, October 2010, 530 . 532 [CPNI-IPv6] 533 Gont, F., "Security Assessment of the Internet Protocol 534 version 6 (IPv6)", UK Centre for the Protection of 535 National Infrastructure, (available on request). 537 Appendix A. Privacy issues still present with RFC 4941 539 This section aims to clarify the motivation of using the method 540 specified in this document even when privacy/temporary addresses 541 [RFC4941] are employed. It discusses a (non-exaustive) number of 542 scenarios in which host privacy is still sacrificed even when 543 privacy/temporary addresses [RFC4941] are employed, as a result of 544 employing interface identifiers that are constant across networks 545 (e.g., those resulting from embedding IEEE identifiers). 547 A.1. Host tracking 549 This section describes one possible attack scenario that illustrates 550 that host-tracking may still be possible when privacy/temporary 551 addresses [RFC4941] are employed. 553 A.1.1. Tracking hosts across networks #1 555 A host configures its stable addresses with the constant 556 Interface-ID, and runs any application that needs to perform a 557 server-like function (e.g. a peer-to-peer application). As a result 558 of that, an attacker/user participating in the same application 559 (e.g., P2P) would learn the constant Interface-ID used by the host 560 for that network interface. 562 Some time later, the same host moves to a completely different 563 network, and employs the same P2P application, probably even with a 564 different username. The attacker now interacts with the same host 565 again, and hence can learn its newly-configured stable address. 566 Since the interface ID is the same as the one used before, the 567 attacker can infer that it is communicating with the same device as 568 before. 570 This is just *one* possible attack scenario, which should remind us 571 that one should not disclose more than it is really needed for 572 achieving a specific goal (and an Interface-ID that is constant 573 across different networks does exactly that: it discloses more 574 information than is needed for providing a stable address). 576 A.1.2. Tracking hosts across networks #2 578 Once an attacker learns the constant Interface-ID employed by the 579 victim host for its stable address, the attacker is able to "probe" a 580 network for the presence of such host at any given network. 582 See Appendix A.1.1 for just one example of how an attacker could 583 learn such value. Other examples include being able to share the 584 same network segment at some point in time (e.g. a conference 585 network or any public network), etc. 587 For example, if an attacker learns that in one network the victim 588 used the Interface-ID 1111:2222:3333:4444 for its stable addresses, 589 then he could subsequently probe for the presence of such device in 590 the network 2011:db8::/64 by sending a probe packet (ICMPv6 Echo 591 Request, or any other probe packet) to the address 2001:db8::1111: 592 2222:3333:4444. 594 A.1.3. Revealing the identity of devices performing server-like 595 functions 597 Some devices, such as storage devices or printers, may typically 598 perform server-like functions and may be usually moved from one 599 network to another. Such devices are likely to simply disable (or 600 not even implement) privacy/temporary addresses [RFC4941]. If the 601 aforementioned devices employ Interface-IDs that are constant across 602 networks, it would be trivial for an attacker to tell whether the 603 same device is being used across networks by simply looking at the 604 Interface ID. Clearly, performing server-like functions should not 605 imply that a device discloses its identity (i.e., that the attacker 606 can tell whether it is the same device providing some function in two 607 different networks, at two different points in time). 609 The scheme proposed in this document prevents such information 610 leakage by causing nodes to generate different Interface-IDs when 611 moving to one network to another, thus mitigating this kind of 612 privacy attack. 614 A.2. Address scanning attacks 616 While it is usually assumed that IPv6 address-scanning attacks are 617 unfeasible, an attacker could leverage patterns in IPv6 addresses to 618 greatly reduce the search space [I-D.ietf-opsec-ipv6-host-scanning] 619 [Gont-BRUCON2012]. 621 As noted earlier in this document, privacy/temporary addresses do not 622 eliminate the use of IPv6 addresses that embed IEEE identifiers, and 623 hence such hosts would still be vulnerable to address-scanning 624 attacks. The method specified in this document eliminates such 625 patterns and would thus mitigate the aforementioned address-scanning 626 attacks. 628 Author's Address 630 Fernando Gont 631 SI6 Networks / UTN-FRH 632 Evaristo Carriego 2644 633 Haedo, Provincia de Buenos Aires 1706 634 Argentina 636 Phone: +54 11 4650 8472 637 Email: fgont@si6networks.com 638 URI: http://www.si6networks.com