IPv6 maintenance Working Group (6man) F. Gont Internet-Draft SI6 Networks / UTN-FRH Intended status: Standards TrackApril 12,May 19, 2013 Expires:October 14,November 20, 2013 A method for Generating Stable Privacy-Enhanced Addresses with IPv6 Stateless Address Autoconfiguration (SLAAC)draft-ietf-6man-stable-privacy-addresses-06draft-ietf-6man-stable-privacy-addresses-07 Abstract This document specifies a method for generating IPv6 Interface Identifiers to be used with IPv6 Stateless Address Autoconfiguration (SLAAC), such that addresses configured using this method are stable within each subnet, but the Interface Identifier changes when hosts move from one network to another.The aforementionedThis method is meant to be an alternative to generating Interface Identifiers based on IEEE identifiers, such that the benefits of stable addresses can be achieved without sacrificing the privacy of users. Status of this Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire onOctober 14,November 20, 2013. Copyright Notice Copyright (c) 2013 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Design goals . . . . . . . . . . . . . . . . . . . . . . . . . 6 3. Algorithm specification . . . . . . . . . . . . . . . . . . . 7 4. Resolving Duplicate Address Detection (DAD) conflicts . . . .1012 5. Specified Constants . . . . . . . . . . . . . . . . . . . . . 13 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . .11 6.14 7. Security Considerations . . . . . . . . . . . . . . . . . . .12 7.15 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .13 8.17 9. References . . . . . . . . . . . . . . . . . . . . . . . . . .14 8.1.18 9.1. Normative References . . . . . . . . . . . . . . . . . . .14 8.2.18 9.2. Informative References . . . . . . . . . . . . . . . . . .1418 Appendix A. Possible sources for the Net_Iface parameter . . . . 21 A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 21 A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . . 21 A.3. Link-layer Addresses . . . . . . . . . . . . . . . . . . . 21 Appendix B. Privacy issues still presentwith RFC 4941when temporary addresses are employed . . . . .16 A.1.. . . . . . . . . . 23 B.1. Host tracking . . . . . . . . . . . . . . . . . . . . . .16 A.1.1.23 B.1.1. Tracking hosts across networks #1 . . . . . . . . . .16 A.1.2.23 B.1.2. Tracking hosts across networks #2 . . . . . . . . . .16 A.1.3.24 B.1.3. Revealing the identity of devices performing server-like functions . . . . . . . . . . . . . . . .17 A.2. Address scanning24 B.2. Address-scanning attacks . . . . . . . . . . . . . . . . .1724 B.3. Information Leakage . . . . . . . . . . . . . . . . . . . 25 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . .1826 1. Introduction [RFC4862] specifiestheStateless Address Autoconfiguration (SLAAC) for IPv6 [RFC2460], which typically results in hosts configuring one or more "stable" addresses composed of a network prefix advertised by a local router, and an Interface Identifier (IID) that typically embeds a hardware address (e.g., using IEEE identifiers) [RFC4291]. Cryptograhically Generated Addresses (CGAs) [RFC3972] are yet another method for generating Interface Identifiers, which bind a public signature key to an IPv6 address in the SEcure Neighbor Discovery (SEND) [RFC3971] protocol. Generally,stablethe traditional SLAAC addresses are thought to simplify network management, since they simplify Access Control Lists (ACLs) and logging. However, they have a number of drawbacks: o sinceIEEE identifiersthe resulting Interface Identifiers do not vary over time, they allow correlation of node activities within the same network, thus negatively affecting the privacy of users. o since the resulting Interface Identifiers aretypically globally unique,constant across networks, the resulting IPv6 addresses can be leveraged to track and correlate the activity of a nodeover time andacross multiplesubnetsnetworks (e.g. track andnetworks,correlate the activities of a typical client connecting to the public Internet from different locations), thus negatively affecting the privacy of users.The "Privacyo since embedding the underlying link-layer address in the Interface Identifier results in specific address patterns, such patterns may be leveraged by attackers to reduce the search space when performing address scanning attacks. o embedding the underlying link-layer address in the Interface Identifier means that changing the interface hardware results in a different Interface Identifier (and hence different IPv6 address). The "Privacy Extensions for Stateless Address Autoconfiguration in IPv6" [RFC4941] (henceforth referred to as "temporary addresses") were introduced to complicate the task of eavesdroppers and other information collectors to correlate the activities of a node, and basically result in temporary (and random) InterfaceIdentifiers thatIdentifiers. These temporary addresses aretypically more difficultgenerated *in addition* toleverage than thosethe traditional IPv6 addresses based on IEEEidentifiers. When privacy extensions are enabled, "privacyidentifiers, with the "temporary addresses"arebeing employed for "outgoing communications",whileand the traditionalIPv6SLAAC addressesbased on IEEE identifiers are still usedbeing employed for "server" functions (i.e., receiving incoming connections).As notedHowever, even with "temporary addresses" in[RFC4941], "anytimeplace, afixed identifier is used in multiple contexts, it becomes possiblenumber of issues remain tocorrelate seemingly unrelated activity using this identifier". Therefore,be mitigated. Namely, o since"privacy"temporary addresses" [RFC4941] do not eliminate the use of fixed identifiers for server-like functions, they only *partially* mitigatethehost-tracking and activity correlationof host activitiesacross networks (see AppendixAB.1 for some example attacks that are still possible withprivacytemporary addresses).Therefore, it is vital that the privacy characteristics of "stable" addresses are improved such that the ability of an attacker correlating host activities across networks is reduced. Another important aspect not mitigated by "Privacy Addresses"o since "temporary addresses" [RFC4941]is that of IPv6 address scanning. Since IPv6 addresses that embed IEEE identifiers have specific patterns,do not replace the traditional SLAAC addresses, an attackercouldcan still leveragesuchpatterns in those addresses to greatly reduce the search space for"live" hosts. Since "privacy addresses" do not eliminate the use of IPv6 addresses that embed IEEE identifiers, address scanning attacks are still feasible even if "privacy extensions" are employed"alive" nodes [Gont-DEEPSEC2011][CPNI-IPv6]. This[CPNI-IPv6] [I-D.ietf-opsec-ipv6-host-scanning]. Hence, there isyet anothera motivation to improve theprivacy characteristicsproperties of "stable" addresses(currently embedding IEEE identifiers). Privacy/temporaryregardless of whether temporary addresses are employed or not. Additionally, it should be noted that temporary addresses can be challenging in a number of areas. For example, from anetwork-managementnetwork- management point of view, they tend to increase the complexity of event logging, trouble-shooting,and enforcingenforcement of access controls and quality of service, etc. As a result, some organizations disable the use ofprivacytemporary addresses even at the expense of reduced privacy [Broersma].Also, theyTemporary addresses may also result in increased implementation complexity, which might not be possible or desirable in some implementations (e.g., some embedded devices). In scenarios in which"Privacy Extensions"temporary addresses are deliberately not used (possibly for any of the aforementioned reasons), all a host is left with is the stable addresses that have been generated using e.g. IEEEidentifiers, and this is yet another case in whichidentifiers. In such scenarios, itis also vitalmay still be desirable to have addresses that mitigate address scanning attacks, and that at theprivacy characteristicsvery least do not reveal the node's identity when roaming from one network to another -- without complicating the operation ofthese stablethe corresponding networks. However, even with temporary addressesare improved. We note that[RFC4941] inmostplace, preventing correlation of activities of a node within a network may be difficult (ifnot all)at all possible) to achieve. As a trivial example, consider a scenario where there is a single node (or a reduced number ofthose scenariosnodes) connected to a specific network. An attacker could detect new addresses in use at that network, an infer which"Privacy Extensions"addresses aredisabled, therebeing employed by which hosts. This task isusually no actual desire to negatively affect user privacy, but rather a desire to simplify operation of the network (simplifymade particularly easier by the fact that use ofACLs, logging, etc.)."temporary addresses" can be easily inferred (since the follow different patterns from that of traditional SLAAC addresses), and since they are re-generated periodically (i.e., after a specific amount of time has elapsed). This document specifies a method to generateinterface identifiersInterface Identifiers that are stable/constant for each network interface within each subnet, but that change as hosts move from one network to another, thus keeping the "stability" properties of theinterface identifiersInterface Identifiers specified in [RFC4291], while still mitigating address-scanning attacks and preventing correlation of the activities of a node as it moves from one network to another. For nodes that currently disable "temporary addresses" [RFC4941] for some of the reasons stated above, this mechanism provides stable privacy-enhanced addresses which address some of the concerns related to addresses that embed IEEE identifiers [RFC4291]. On the other hand, in scenarios in which "temporary addresses" are employed together with stable addresses such as those based on IEEE identifiers, implementation of the mechanism described in this document would mitigate address-scanning attacks and also mitigate some vectors for correlating host activities that are not mitigated by the use of temporary addresses. We note that this method is incrementally deployable, since it does not pose any interoperability implications when deployed on networks where other nodes do not implement or employ it.ThisAdditionally, we note that this document does not update or modify IPv6 StateLess AddressAuto- ConfigurationAuto-Configuration (SLAAC) [RFC4862] itself, but rather only specifies an alternative algorithm to generate InterfaceIDs.Identifiers. Therefore, the usual address lifetime properties (as specified in the corresponding Prefix Information Options) apply when IPv6 addresses are generated as a result of employing the algorithm specified in this document with SLAAC [RFC4862]. Additionally, from the point of view of renumbering, we note that these addresses behave like the traditional IPv6 addresses (that embed a hardware address) resulting from SLAAC [RFC4862].For nodes that currently disable "Privacy extensions" [RFC4941] for some of the reasons stated above, this mechanism provides stable privacy-enhanced addresses which may already address most of the privacy concerns related to addresses that embed IEEE identifiers [RFC4291]. On the other hand, in scenarios in which "Privacy Extensions" are employed, implementation of the mechanism described in this document would mitigate host-scanning attacks and also mitigate correlation of host activities.The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. 2. Design goals This document specifies a method for selectinginterface identifiersInterface Identifiers to be used with IPv6 SLAAC, with the following goals: o The resultinginterface identifiersInterface Identifiers remain constant/stable for each prefix used with SLAAC within each subnet. That is, the algorithm generates the sameinterface identifierInterface Identifier when configuring an address (for the same interface) belonging to the same prefix within the same subnet. o The resultinginterface identifiers do not depend on the underlying hardware (e.g. link-layer address). This means that e.g. replacing a NetworkInterfaceCard (NIC) will not have the (generally undesirable) effect of changing the IPv6 addresses used for that network interface. o The resulting interface identifiersIdentifiers do change when addresses are configured for different prefixes. That is, if different autoconfiguration prefixes are used to configure addresses for the same network interface card, the resultinginterface identifiersInterface Identifiers must be (statistically) different. o It must be difficult for an outsider to predict theinterface identifiersInterface Identifiers that will be generated by the algorithm, even with knowledge of theinterface identifiersInterface Identifiers generated for configuring other addresses. o Depending on the specific implementation approach (see Section 3 and Appendix A), the resulting Interface Identifiers may be independent of the underlying hardware (e.g. link-layer address). This means that e.g. replacing a Network Interface Card (NIC) will not have the (generally undesirable) effect of changing the IPv6 addresses used for that network interface. o The aforementionedinterface identifiersInterface Identifiers are meant to be an alternative to those based on e.g. IEEE identifiers, such as those specified in [RFC2464]. We note that of use of the algorithm specified in this document is (to a large extent) orthogonal to the use of"Privacy Extensions""temporary addresses" [RFC4941]. Hosts that do not implement/use"Privacy Extensions""temporary addresses" would have the benefit that they would not be subject to the host- tracking and address scanning issues discussed in the previous section. On the other hand, in the case of hosts employing"Privacy Extensions","temporary addresses", the method specified in this document wouldprevent address scanningmitigate address-scanning attacks and correlation of node activities across networks (see AppendixA).B and [IAB-PRIVACY]). 3. Algorithm specification IPv6 implementations conforming to this specification MUST generateinterface identifiersInterface Identifiers using the algorithm specified in this section in replacement of any other algorithms used for generating "stable" addresses (such as that specified in [RFC2464]). The aforementioned algorithm MUST be employed for generating theinterface identifiersInterface Identifiers for all of the IPv6 addresses configured with SLAAC for a given interface, including IPv6 link-local addresses. This means that this document does not formally obsolete or deprecate any of the existing algorithms to generate InterfaceIDsIdentifiers (e.g. such as that specified in [RFC2464]). However, those IPv6 implementations that employ this specificationmustMUST generate all of their "stable" addresses as specified in this document. Implementations conforming to this specification SHOULD provide the means for a system administrator to enable or disable the use of this algorithm for generating Interface Identifiers. Implementations conforming to this specification MAY employ the algorithm specified in [RFC4941] to generate temporary addresses in addition to the addresses generated with the algorithm specified in this document. Unless otherwise noted, all of the parameters included in the expression below MUST be included when generating an InterfaceID.Identifier. 1. Compute a random (but stable) identifier with the expression: RID = F(Prefix,Interface_Index,Net_Iface, Network_ID, DAD_Counter, secret_key) Where: RID: Random (but stable) Interface Identifier F(): A pseudorandom function (PRF) that is not computable from the outside (without knowledge of the secretkey). Thekey), which shouldproduce an output of at least 64 bits.The PRF could be implemented as a cryptographic hash of the concatenation of each of the function parameters. Prefix: The prefix to be used for SLAAC, as learned from an ICMPv6 Router Advertisement message.Interface_Index: The interface index [RFC3493] [RFC3542] corresponding to this network interface. Network_ID: Some network specific data that identifiesNet_Iface: An implementation-dependent stable identifier associated with thesubnet to which thisnetwork interfaceis attached. For examplefor which the RID is being generated. An implementation MAY provide a configuration option to select the source of the identifier to be used for the Net_Iface parameter. A discussion of possible sources for this value (along with the corresponding trade-offs) can be found in Appendix A. Network_ID: Some network specific data that identifies the subnet to which this interface is attached. For example the IEEE 802.11 Service Set Identifier (SSID) corresponding to the network to which this interface is associated. This parameter is OPTIONAL. DAD_Counter: A counter that is employed to resolve Duplicate Address Detection (DAD) conflicts. It MUST be initialized to 0, and incremented by 1 for each new tentative address that is configured as a result of a DAD conflict. Implementations that record DAD_Counter in non-volatile memory for each {Prefix,Interface_Index,Net_Iface, Network_ID} tuple MUST initialize DAD_Counter to the recorded value if such an entry exists in non-volatile memory). See Section 4 for additional details. secret_key: A secret key that is not known by the attacker. The secret key MUST be initialized at operating system installation time to a pseudo-random number (see [RFC4086] for randomness requirements for security). An implementation MAY provide the means for theuserthe system administrator to change or display the secret key. 2. The Interface Identifier is finally obtained by takingthe leftmost 64as many bitsoffrom the RID valuecomputed(computed in the previousstep.step) as necessary, starting from the rightmost bit. We note that [RFC4291] requires that, the Interface IDs of all unicast addresses (except those that start with the binary value 000) be 64-bit long. However, the method discussed in this document could be employed for generating Interface IDs of any arbitrary length, albeit at the expense of reduced entropy (when employing Interface IDs smaller than 64 bits). The resulting Interface Identifier should be compared against the Subnet-Router Anycast [RFC4291] and the Reserved Subnet Anycast Addresses [RFC2526], and against thoseinterface identifiersInterface Identifiers already employed in an address of the same network interface and the same network prefix. In the event that an unacceptable identifier has been generated, this situation should be handled in the same way as the case of duplicate addresses (see Section 4). This document does not require the use of any specific PRF for the function F() above, since the choice of such PRF is usually a trade- off between a number of properties (processing requirements, ease of implementation, possible intellectual property rights, etc.), and since the best possible choice for F() might be different for different types of devices (e.g. embedded systems vs. regular servers) and might possibly change over time. Note that the result of F() in the algorithm above is no more secure than the secret key. If an attacker is aware of the PRF that is being used by the victim (which we should expect), and the attacker can obtain enough material (i.e. addresses configured by the victim), the attacker may simply search the entire secret-key space to find matches. To protect against this, the secret key should be of a reasonable length. Key lengths of at least 128 bits should be adequate. The secret key is initialized at system installation time to a pseudo-random number, thus allowing this mechanism to be enabled/used automatically, without user intervention. Including the SLAAC prefix in the PRF computation causes the InterfaceIDIdentifier to vary across networks that employ different prefixes, thus mitigating host-tracking attacks and any other attacks that benefit from predictable InterfaceIDsIdentifiers (such as addressscanning).scanning attacks). TheInterface IndexNet_Iface isexpected to remaina value that identifies the network interface for which an IPv6 address is being generated. The following properties are desirable for the Net_Iface: o it MUST be constant across systemrebootsbootstrap sequences and otherevents. However, we note that it might change upon removal or installation of anetwork events (e.g., bringing another interface(typically one with a smaller valueup or down) o it MUST be different for each network interface Since theInterface Index, when such a naming scheme is used). When such change occurs,stability of theIPv6addressesresulting fromgenerated with thisalgorithm for the corresponding interface will change, thus affectingmethod relies on the stabilitypropertyofthis method. We noteall arguments of F(), it is key thatwe expect these scenarios to be unusual. Some implementations are known to provide configuration knobs to settheInterface Index for a given interface. Such configuration knobs couldNet_Iface beemployed to preventconstant across system bootstrap sequences and other network events. Additionally, theInterface IndexNet_Iface must uniquely identify an interface within the node, such that two interfaces connecting to the same network do not result in duplicate addresses. Different types of operating systems might benefit fromchanging (e.g. asdifferent stability properties of the Net_Iface parameter. For example, aresultclient- oriented operating system might want to employ Net_Iface identifiers that are attached to the underlying network interface card (NIC), such that a removable NIC always gets the same IPv6 address, irrespective of theremovalsystem communications port to which it is attached. On the other hand, a server-oriented operating system might prefer Net_Iface identifers that are attached to system slots/ ports, such that replacement of a networkinterface).interface card does not result in an IPv6 address change. Appendix A discusses possible sources for the Net_Iface, along with their pros and cons. Including the optional Network_ID parameter when computing the RID value above would cause the algorithm to produce a different Interface Identifier when connecting to different networks, even when configuring addresses belonging to the same prefix. This means that a host would employ a different InterfaceIDIdentifier as it moves from one network to another even for IPv6 link-local addresses or Unique Local Addresses (ULAs). In those scenarios where the Network_ID is unknown to the attacker, including this parameter might help mitigate attacks where a victim node connects to the same subnet as the attacker, and the attacker tries to learn the Interface Identifier used by the victim node for a remote network (see Section 7 for further details). The DAD_Counter parameter provides the means to intentionally cause this algorithm produce a different IPv6 addresses (all other parameters being the same). This could be necessary to resolve Duplicate Address Detection (DAD) conflicts, as discussed in detail in Section 4.4. Resolving Duplicate Address Detection (DAD) conflicts IfFinally, we note that all of the bits in the resulting Interface IDs are treated asa result"opaque" bits. For example, the universal/local bit ofperformingModified EUI-64 format identifiers is treated as any other bit of such identifier. In theory, this might result in Duplicate Address Detection (DAD)[RFC4862] a host findsfailures thatthe tentative address generated with the algorithm specified in Section 3would otherwise not be encountered. However, this is not deemed as aduplicate address, it SHOULD resolvereal issue, because of theaddress conflict by trying a new tentative address as follows: o DAD_Counter is incremented by 1.following considerations: oA new Interface ID is generatedThe interface IDs of all addresses (except those of addresses that that start with thealgorithmbinary value 000) are 64-bit long. Since the method specified inSection 3,this document results in random Interface IDs, the probability of DAD failures is very small. o Real world data indicates that MAC address reuse is far more common than assumed [HDMoore]. This means that even IPv6 addresses that employ (allegedly) unique identifiers (such as IEEE identifiers) might result in DAD failures, and hence implementations should be prepared to gracefully handle such occurrences. Finally, we note that some popular and widely-deployed operating systems (such as Microsoft Windows) do not employ unique identifiers for the Interface IDs of their stable addresses. Therefore, such implementations would not be affected by the method specified in this document. 4. Resolving Duplicate Address Detection (DAD) conflicts If as a result of performing Duplicate Address Detection (DAD) [RFC4862] a host finds that the tentative address generated with the algorithm specified in Section 3 is a duplicate address, it SHOULD resolve the address conflict by trying a new tentative address as follows: o DAD_Counter is incremented by 1. o A new Interface Identifier is generated with the algorithm specified in Section 3, using the incremented DAD_Counter value. This procedure may be repeated a number of times until the address conflict is resolved.We RECOMMEND hosts toHosts SHOULD try at least IDGEN_RETRIES(hereby specified as "3")(see Section 5) tentative addresses if DAD fails for successive generated addresses, in the hopes of resolving the address conflict. We also note that hosts MUST limit the number of tentative addresses that are tried (rather than indefinitely try a new tentative address until the conflict is resolved). In those (unlikely) scenarios in which duplicate addresses are detected and in which the order in which the conflicting nodes configure their addresses may vary (e.g., because they may be bootstrapped in different order), the algorithm specified in this section for resolving DAD conflicts could lead to addresses that are not stable within the same subnet. In order to mitigate this potential problem, nodes MAY record the DAD_Counter value employed for a specific {Prefix,Interface_Index,Net_Iface, Network_ID} tuple innon- volatilenon-volatile memory, such that the same DAD_Counter value is employed when configuring an address for the same Prefix and subnet at any other point in time. In the event that a DAD conflict cannot be solved (possibly after trying a number of different addresses), address configuration would fail. In those scenarios, nodes MUST NOT automatically fall back to employing other algorithms for generatinginterface identifiers.Interface Identifiers. 5. Specified Constants This document specifies the following constant: IDGEN_RETRIES: defaults to 3. 6. IANA Considerations There are no IANA registries within this document. The RFC-Editor can remove this section before publication of this document as an RFC.6.7. Security Considerations This document specifies an algorithm for generatinginterface identifiersInterface Identifiers to be used with IPv6 Stateless Address Autoconfiguration (SLAAC), as an alternative to e.g.interface identifiersInterface Identifiers that embed IEEE identifiers (such as those specified in [RFC2464]). When compared to such identifiers, the identifiers specified in this document have a number of advantages: o They prevent trivial host-tracking, since when a host moves from one network to another the network prefix used for autoconfiguration and/or the Network ID (e.g., IEEE 802.11 SSID) will typically change, and hence the resultinginterface identifierInterface Identifier will also change (see AppendixA.B.1). o They mitigate address-scanning techniques which leverage predictableinterface identifiersInterface Identifiers (e.g., knownOrganizationalOrganizationally Unique Identifiers) [I-D.ietf-opsec-ipv6-host-scanning]. o They may result in IPv6 addresses that are independent of the underlying hardware (i.e. the resulting IPv6 addresses do not change if a network interface card isreplaced). We note that this algorithm is meant to bereplaced) if analternative to interface identifiers such as those specified in [RFC2464], butappropriate source for Net_Iface (Section 3) isnot meant as an alternative to temporary Interface IDs (such as those specifiedemployed. In scenarios in[RFC4941]). Clearly, temporary addresses may helpwhich an attacker can connect tomitigate the correlation of activities of a node withinthe samenetwork, and may also reducesubnet as a victim node, the attacker might be able to learn the Interface Identifier employed by the victim node for an arbitrary prefix, by simply sending a forged Router Advertisement [RFC4861] for that prefix, and subsequently learning the corresponding address configured by the victim node (either listening to the Duplicate Address Detection packets, or to any other traffic that employs the newly configued address). We note that a number of factors might limit the ability of an attaker from successfully performing such attack: o First-Hop security mechanisms such as RA-Guard [RFC6105] [I-D.ietf-v6ops-ra-guard-implementation] could prevent the forged Router Advertisement from reaching the victim node o If the victim implementation includes the (optional) Network_ID parameter for computing F() (see Section 3), and the Network_ID employed by the victim for a remote network is unknown to the attacker, the Interface Identifier learned by the attacker would differ from the one used by the victim when connecting to the legitimate network. In any case, we note that at the point in which this kind of attack becomes a concern, a host should consider employing Secure Neighbor Discovery (SEND) [RFC3971] to prevent an attacker from illegitimately claiming authority for a network prefix. We note that this algorithm is meant to be an alternative to Interface Identifiers such as those specified in [RFC2464], but is not meant as an alternative to temporary Interface Identifiers (such as those specified in [RFC4941]). Clearly, temporary addresses may help to mitigate the correlation of activities of a node within the same network, and may also reduce the attack exposure window (sinceprivacy/temporarytemporary addresses are short-lived when compared to the addresses generated with the method specified in this document). We note that implementation of this algorithm would still benefit those hosts employing"Privacy Addresses","temporary addresses", since it would mitigate host- tracking vectors still present whenprivacysuch addresses are used (see AppendixA),B.1), and would also mitigatehost-scanningaddress-scanning techniques that leverage patterns in IPv6 addresses that embed IEEE identifiers. Finally, we note that the method described in this documentmay mitigate mostaddresses some of the privacy concerns arising from the use of IPv6 addresses that embed IEEE identifiers, without the use of temporary addresses, thus possibly offering an interesting trade-off for those scenarios in which the use of temporary addresses is not feasible.7.8. Acknowledgements The algorithm specified in this document has been inspired by Steven Bellovin's work ([RFC1948]) in the area of TCP sequence numbers. The author would like to thank (in alphabetical order) Ran Atkinson, Karl Auer, Steven Bellovin, Matthias Bethke, Ben Campbell, Brian Carpenter, Tassos Chatzithomaoglou, Alissa Cooper, Dominik Elsbroek, Brian Haberman, Bob Hinden, Christian Huitema, Ray Hunter, Jouni Korhonen, Eliot Lear, Jong-Hyouk Lee, Andrew McGregor, Tom Petch, Michael Richardson, Mark Smith,andOle Troan, and He Xuan, for providing valuable comments on earlier versions of this document. This document is based on the technical report "Security Assessment of the Internet Protocol version 6 (IPv6)" [CPNI-IPv6] authored by Fernando Gont on behalf of the UK Centre for the Protection of National Infrastructure (CPNI). Fernando Gont would like to thank CPNI (http://www.cpni.gov.uk) for their continued support.8.9. References8.1.9.1. Normative References [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC2526] Johnson, D. and S. Deering, "Reserved IPv6 Subnet Anycast Addresses", RFC 2526, March 1999. [RFC3971] Arkko, J., Kempf, J., Zill, B., and P. Nikander, "SEcure Neighbor Discovery (SEND)", RFC 3971, March 2005. [RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)", RFC 3972, March 2005. [RFC4086] Eastlake, D., Schiller, J., and S. Crocker, "Randomness Requirements for Security", BCP 106, RFC 4086, June 2005. [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing Architecture", RFC 4291, February 2006. [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, September 2007. [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless Address Autoconfiguration", RFC 4862, September 2007. [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy Extensions for Stateless Address Autoconfiguration in IPv6", RFC 4941, September 2007.8.2. Informative References [RFC1948] Bellovin, S., "Defending[RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, February 2011. 9.2. Informative References [RFC1948] Bellovin, S., "Defending Against Sequence Number Attacks", RFC 1948, May 1996. [RFC2464] Crawford, M., "Transmission of IPv6 Packets over Ethernet Networks", RFC 2464, December 1998. [RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W. Stevens, "Basic Socket Interface Extensions for IPv6", RFC 3493, February 2003. [RFC3542] Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei, "Advanced Sockets Application Program Interface (API) for IPv6", RFC 3542, May 2003. [I-D.ietf-opsec-ipv6-host-scanning] Gont, F. and T. Chown, "Network Reconnaissance in IPv6 Networks",draft-ietf-opsec-ipv6-host-scanning-00draft-ietf-opsec-ipv6-host-scanning-01 (work in progress),DecemberApril 2013. [I-D.ietf-v6ops-ra-guard-implementation] Gont, F., "Implementation Advice for IPv6 Router Advertisement Guard (RA-Guard)", draft-ietf-v6ops-ra-guard-implementation-07 (work in progress), November 2012. [HDMoore] HD Moore, "The Wild West", Louisville, Kentucky, U.S.A. September 25-29, 2012., September 2012, <https://speakerdeck.com/hdm/derbycon-2012-the-wild-west>. [Gont-DEEPSEC2011] Gont, "Results of a Security Assessment of the Internet Protocol version 6 (IPv6)", DEEPSEC 2011 Conference, Vienna, Austria, November 2011, <http:// www.si6networks.com/presentations/deepsec2011/ fgont-deepsec2011-ipv6-security.pdf>. [Gont-BRUCON2012] Gont, "Recent Advances in IPv6 Security", BRUCON 2012 Conference, Ghent, Belgium, September 2012, <http:// www.si6networks.com/presentations/brucon2012/ fgont-brucon2012-recent-advances-in-ipv6-security.pdf>. [Broersma] Broersma, R., "IPv6 Everywhere: Living with a Fully IPv6- enabled environment", Australian IPv6 Summit 2010, Melbourne, VIC Australia, October 2010,<http://www.ipv6.org.au/summit/talks/Ron_Broersma.pdf>.<http:// www.ipv6.org.au/10ipv6summit/talks/Ron_Broersma.pdf>. [IAB-PRIVACY] IAB, "Privacy and IPv6 Addresses", July 2011, <http:// www.iab.org/wp-content/IAB-uploads/2011/07/ IPv6-addresses-privacy-review.txt>. [CPNI-IPv6] Gont, F., "Security Assessment of the Internet Protocol version 6 (IPv6)", UK Centre for the Protection of National Infrastructure, (available on request). Appendix A. Possible sources for the Net_Iface parameter The following subsections describe a number of possible sources for the Net_Iface parameter employed by the F() function in Section 3. The choice of a specific source for this value represents a number of trade-offs, which may vary from one implementation to another. A.1. Interface Index The Interface Index [RFC3493] [RFC3542] of an interface uniquely identifies an interface within a node. However, these identifiers might or might not have the stability properties required for the Net_Iface value employed by this method. For example, the Interface Index might change upon removal or installation of a network interface (typically one with a smaller value for the Interface Index, when such a naming scheme is used), or when network interface happen to be initialized in a different order. We note that some implementations are known to provide configuration knobs to set the Interface Index for a given interface. Such configuration knobs could be employed to prevent the Interface Index from changing (e.g. as a result of the removal of a network interface). A.2. Interface Name The Interface Name (e.g., "eth0", "em0", etc) tends to be more stable than the underlying Interface Index, since such stability is required/desired when interface names are employed in network configuration (firewall rules, etc.). The stability properties of Interface Names depend on implementation details, such as what is the namespace used for Interface Names. For example, "generic" interface names such as "eth0" or "wlan0" will generally be invariant with respect to network interface card replacements. On the other hand, vendor-dependent interface names such as "rtk0" or the like will generally change when a network interface card is replaced with one from a different vendor. We note that Interface Names might still change when network interfaces are added or removed once the system has been bootstrapped (for example, consider Universal Serial Bus-based network interface cards which might be added or removed once the system has been bootstrapped). A.3. Link-layer Addresses Link-layer addresses typically provide for unique identfiers for network interfaces; although, for obvious reasons, they generally change when a network interface card is replaced. In scenarios where neither Interface Indexes nor Interface Names have the stability properties specified in Section 3 for Net_Iface, an implementation might want to employ the link-layer address of the interface for the Net_Iface parameter, albeit at the expense of making the corresponding IPv6 addresses dependent on the underlying network interface card (i.e., the corresponding IPv6 address would typically change upon replacement of the underlying network interface card). Appendix B. Privacy issues still presentwith RFC 4941 This section aimswhen temporary addresses are employed It is not unusual for people toclarifyassume or expect that all themotivationsecurity/privacy implications ofusing the method specifiedtraditional SLAAC addresses to me mitigated when "temporary addresses" [RFC4941] are employed. However, as noted in Section 1 of this documenteven when privacy/temporaryand [IAB-PRIVACY], since temporary addresses[RFC4941]areemployed. Itemployed in addition to (rather than in replacement of) traditional SLAAC addresses, many of the security/ privacy implications of traditional SLAAC addresses are not mitigated by the use of temporary addresses. This section discusses a(non-exaustive)(non-exhaustive) number of scenarios in which hostprivacysecurity/privacy is stillsacrificed even when privacy/temporary addresses [RFC4941] are employed,negatively affected as a result of employinginterface identifiersInterface Identifiers that are constant across networks (e.g., those resulting from embedding IEEEidentifiers). A.1.identifiers), even when temporary addresses [RFC4941] are employed. It aims to clarify the motivation of employing the method specified in this document in replacement of the traditional SLAAC addresses even when privacy/ temporary addresses [RFC4941] are employed. B.1. Host tracking This section describes one possible attack scenario that illustrates that host-tracking may still be possible when privacy/temporary addresses [RFC4941] are employed.A.1.1.B.1.1. Tracking hosts across networks #1 A host configures its stable addresses with the constantInterface-ID,Interface Identifier, and runs any application that needs to perform aserver-likeserver- like function (e.g. a peer-to-peer application). As a result of that, an attacker/user participating in the same application (e.g., P2P) would learn the constantInterface-IDInterface Identifier used by the host for that network interface. Some time later, the same host moves to a completely different network, and employs the same P2P application, probably even with a different username. The attacker now interacts with the same host again, and hence can learn its newly-configured stable address. Since theinterface IDInterface Identifier is the same as the one used before, the attacker can infer that it is communicating with the same device as before. This is just *one* possible attack scenario, which should remind us that one should not disclose more than it is really needed for achieving a specific goal (and anInterface-IDInterface Identifier that is constant across different networks does exactly that: it discloses more information than is needed for providing a stable address).A.1.2.B.1.2. Tracking hosts across networks #2 Once an attacker learns the constantInterface-IDInterface Identifier employed by the victim host for its stable address, the attacker is able to "probe" a network for the presence of such host at any given network. See AppendixA.1.1B.1.1 for just one example of how an attacker could learn such value. Other examples include being able to share the same network segment at some point in time (e.g. a conference network or any public network), etc. For example, if an attacker learns that in one network the victim used theInterface-IDInterface Identifier 1111:2222:3333:4444 for its stable addresses, then he could subsequently probe for the presence of such device in the network 2011:db8::/64 by sending a probe packet (ICMPv6 Echo Request, or any other probe packet) to the address2001:db8::1111: 2222:3333:4444. A.1.3.2001:db8:: 1111:2222:3333:4444. B.1.3. Revealing the identity of devices performing server-like functions Some devices, such as storagedevices or printers,devices, may typically performserver-likeserver- like functions and may be usually moved from one network to another. Such devices are likely to simply disable (or not even implement) privacy/temporary addresses [RFC4941]. If the aforementioned devices employInterface-IDsInterface Identifiers that are constant across networks, it would be trivial for an attacker to tell whether the same device is being used across networks by simply looking at the InterfaceID.Identifier. Clearly, performing server-like functions should not imply that a device discloses its identity (i.e., that the attacker can tell whether it is the same device providing some function in two different networks, at two different points in time). The scheme proposed in this document prevents such information leakage by causing nodes to generate differentInterface-IDsInterface Identifiers when movingtofrom one network to another, thus mitigating this kind of privacy attack.A.2. Address scanningB.2. Address-scanning attacks While it is usually assumed that IPv6 address-scanning attacks are unfeasible, an attackercouldcan leverage address patterns in IPv6 addresses to greatly reduce the search space [I-D.ietf-opsec-ipv6-host-scanning] [Gont-BRUCON2012]. Addresses that embed IEEE identifiers result in one of such patterns that could be leveraged to reduce the search space when other nodes employ the same IEEE OUI (Organizationally Unique Identifier). As noted earlier in this document,privacy/temporarytemporary addresses [RFC4941] do noteliminatereplace/eliminate the use of IPv6 addresses that embed IEEEidentifiers,identifiers (they are employed *in addition* to those), and hencesuchhosts implementing [RFC4941] would still be vulnerable toaddress-scanningaddress- scanning attacks. The method specified in this document is meant as an alternative to addresses that embed IEEE identifiers, and hence eliminates such patternsand would thus mitigate(thus mitigating the aforementionedaddress-scanning attacks.address- scanning attacks). B.3. Information Leakage IPv6 addresses embedding IEEE identifiers leak information about the device (Network Interface Card vendor, or even Operating System and/or software type), which could be leveraged by an attacker with device/software-specific vulnerabilities knowledge to quickly find possible targets. Since temporary addresses do not replace the traditional SLAAC addresses that typically embedd IEEE identifiers, employing temporary addresses does not eliminate this possible information leakage. Author's Address Fernando Gont SI6 Networks / UTN-FRH Evaristo Carriego 2644 Haedo, Provincia de Buenos Aires 1706 Argentina Phone: +54 11 4650 8472 Email: fgont@si6networks.com URI: http://www.si6networks.com