--- 1/draft-ietf-6man-stable-privacy-addresses-14.txt 2013-11-26 01:14:27.066565877 -0800 +++ 2/draft-ietf-6man-stable-privacy-addresses-15.txt 2013-11-26 01:14:27.106566938 -0800 @@ -1,108 +1,108 @@ IPv6 maintenance Working Group (6man) F. Gont Internet-Draft SI6 Networks / UTN-FRH -Intended status: Standards Track October 11, 2013 -Expires: April 14, 2014 +Intended status: Standards Track November 26, 2013 +Expires: May 30, 2014 A Method for Generating Semantically Opaque Interface Identifiers with IPv6 Stateless Address Autoconfiguration (SLAAC) - draft-ietf-6man-stable-privacy-addresses-14 + draft-ietf-6man-stable-privacy-addresses-15 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. This method is meant to be an alternative to generating Interface Identifiers based on hardware addresses (e.g., IEEE LAN MAC addresses), such that the benefits of stable addresses can be achieved without sacrificing the privacy of users. The method specified in this document applies to all prefixes a host may be employing, including link-local, global, and unique- local addresses. -Status of this Memo +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 on April 14, 2014. + This Internet-Draft will expire on May 30, 2014. 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. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 - 3. Relationship to Other standards . . . . . . . . . . . . . . . 7 - 4. Design goals . . . . . . . . . . . . . . . . . . . . . . . . . 8 - 5. Algorithm specification . . . . . . . . . . . . . . . . . . . 10 - 6. Resolving Duplicate Address Detection (DAD) conflicts . . . . 15 - 7. Specified Constants . . . . . . . . . . . . . . . . . . . . . 16 - 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 - 9. Security Considerations . . . . . . . . . . . . . . . . . . . 18 - 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 20 - 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 21 - 11.1. Normative References . . . . . . . . . . . . . . . . . . 21 - 11.2. Informative References . . . . . . . . . . . . . . . . . 21 - Appendix A. Possible sources for the Net_Iface parameter . . . . 24 - A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 24 - A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . 24 - A.3. Link-layer Addresses . . . . . . . . . . . . . . . . . . 24 - A.4. Logical Network Service Identity . . . . . . . . . . . . 25 - Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 26 + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 + 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 + 3. Relationship to Other standards . . . . . . . . . . . . . . . 5 + 4. Design goals . . . . . . . . . . . . . . . . . . . . . . . . 5 + 5. Algorithm specification . . . . . . . . . . . . . . . . . . . 6 + 6. Resolving Duplicate Address Detection (DAD) conflicts . . . . 11 + 7. Specified Constants . . . . . . . . . . . . . . . . . . . . . 12 + 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 + 9. Security Considerations . . . . . . . . . . . . . . . . . . . 12 + 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14 + 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 + 11.1. Normative References . . . . . . . . . . . . . . . . . . 15 + 11.2. Informative References . . . . . . . . . . . . . . . . . 16 + Appendix A. Possible sources for the Net_Iface parameter . . . . 17 + A.1. Interface Index . . . . . . . . . . . . . . . . . . . . . 17 + A.2. Interface Name . . . . . . . . . . . . . . . . . . . . . 18 + A.3. Link-layer Addresses . . . . . . . . . . . . . . . . . . 18 + A.4. Logical Network Service Identity . . . . . . . . . . . . 18 + Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 19 1. Introduction [RFC4862] specifies Stateless 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., an IEEE LAN MAC address) [RFC4291]. Cryptographically 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, the 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 since the 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 (see - [I-D.cooper-6man-ipv6-address-generation-privacy] and + [I-D.ietf-6man-ipv6-address-generation-privacy] and [IAB-PRIVACY]). o since the resulting Interface Identifiers are constant across networks, the resulting IPv6 addresses can be leveraged to track and correlate the activity of a node across multiple networks (e.g. track and correlate the activities of a typical client connecting to the public Internet from different locations), thus negatively affecting the privacy of users. o since embedding the underlying link-layer address in the Interface @@ -117,21 +117,21 @@ o embedding the underlying hardware address in the Interface Identifier leaks device-specific information that could be leveraged to launch device-specific attacks. o embedding the underlying link-layer address in the Interface Identifier means that replacement of the underlying interface hardware will result in a change of the IPv6 address(es) assigned to that interface. - [I-D.cooper-6man-ipv6-address-generation-privacy] provides additional + [I-D.ietf-6man-ipv6-address-generation-privacy] provides additional details regarding how these vulnerabilities could be exploited, and the extent to which the method discussed in this document mitigates them. 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 (e.g., IPv6 addresses in web server logs or email headers, etc.) to correlate the activities of a node, and basically result in temporary (and random) Interface Identifiers. @@ -159,21 +159,21 @@ attacks, and that at the very least do not reveal the node's identity when roaming from one network to another -- without complicating the operation of the corresponding networks. However, even with "temporary addresses" in place, a number of issues remain to be mitigated. Namely, o since "temporary addresses" [RFC4941] do not eliminate the use of fixed identifiers for server-like functions, they only partially mitigate host-tracking and activity correlation across networks - (see [I-D.cooper-6man-ipv6-address-generation-privacy] for some + (see [I-D.ietf-6man-ipv6-address-generation-privacy] for some example attacks that are still possible with temporary addresses). o since "temporary addresses" [RFC4941] do not replace the traditional SLAAC addresses, an attacker can still leverage patterns in SLAAC addresses to greatly reduce the search space for "alive" nodes [Gont-DEEPSEC2011] [CPNI-IPv6] [I-D.ietf-opsec-ipv6-host-scanning]. Hence, there is a motivation to improve the properties of "stable" addresses regardless of whether temporary addresses are employed or @@ -296,107 +293,114 @@ 1. Compute a random (but stable) identifier with the expression: RID = F(Prefix, Net_Iface, Network_ID, DAD_Counter, secret_key) Where: RID: Random (but stable) Identifier F(): - A pseudorandom function (PRF) that MUST NOT be computable from - the outside (without knowledge of the secret key). F() MUST - also be difficult to reverse, such that it resists attempts to - obtain the secret_key, even when given samples of the output - of F() and knowledge or control of the other input parameters. - F() SHOULD produce an output of at least 64 bits. F() could - be implemented as a cryptographic hash of the concatenation of - each of the function parameters. + A pseudorandom function (PRF) that MUST NOT be computable + from the outside (without knowledge of the secret key). + F() MUST also be difficult to reverse, such that it resists + attempts to obtain the secret_key, even when given samples + of the output of F() and knowledge or control of the other + input parameters. F() SHOULD produce an output of at least + 64 bits. F() could be implemented as a cryptographic hash + of the concatenation of each of the function parameters. + MD5 [RFC1321] and SHA-1 [FIPS-SHS] are two possible options + for F(). Prefix: The prefix to be used for SLAAC, as learned from an ICMPv6 - Router Advertisement message, or the link-local IPv6 unicast - prefix [RFC4291]. + Router Advertisement message, or the link-local IPv6 + unicast prefix [RFC4291]. Net_Iface: - An implementation-dependent stable identifier associated with - the network interface for 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. + + An implementation-dependent stable identifier associated + with the network interface for 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. + 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 + 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, Net_Iface, Network_ID} tuple MUST initialize - DAD_Counter to the recorded value if such an entry exists in - non-volatile memory. See Section 6 for additional details. + DAD_Counter to the recorded value if such an entry exists + in non-volatile memory. See Section 6 for additional + details. secret_key: A secret key that is not known by the attacker. The secret key MUST be initialized to a pseudo-random number (see [RFC4086] for randomness requirements for security) at - operating system installation time or when the IPv6 protocol - stack is initialized for the first time. An implementation - MAY provide the means for the the system administrator to - change or display the secret key. + operating system installation time or when the IPv6 + protocol stack is initialized for the first time. An + implementation MAY provide the means for the the system + administrator to change or display the secret key. 2. The Interface Identifier is finally obtained by taking as many bits from the RID value (computed in the previous step) as necessary, starting from the least significant 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). + 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 those Interface 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 6). 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. + servers) and might possibly change over time. For informative + purposes, we note that MD5 [RFC1321] and SHA-1 [FIPS-SHS] are two + possible options for F(). 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. + 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 Interface Identifier to vary across each prefix (link-local, global, etc.) employed by the node and, as consequently, also across networks. This mitigates the correlation of activities of multi- homed nodes (since each of the corresponding addresses will employ a different Interface ID), host-tracking (since the network prefix will change as the node moves from one network to another), and any other attacks that benefit from predictable Interface Identifiers (such as IPv6 address scanning attacks). @@ -442,26 +446,26 @@ used by the victim node for a remote network (see Section 9 for further details). The DAD_Counter parameter provides the means to intentionally cause this algorithm to 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 6. Finally, we note that all of the bits in the resulting Interface IDs - are treated as "opaque" bits. For example, the universal/local bit - of Modified EUI-64 format identifiers is treated as any other bit of - such identifier. In theory, this might result in Duplicate Address - Detection (DAD) failures that would otherwise not be encountered. - However, this is not deemed as a real issue, because of the following - considerations: + are treated as "opaque" bits [I-D.ietf-6man-ug]. For example, the + universal/local bit of Modified EUI-64 format identifiers is treated + as any other bit of such identifier. In theory, this might result in + Duplicate Address Detection (DAD) failures that would otherwise not + be encountered. However, this is not deemed as a real issue, because + of the following considerations: o The interface IDs of all addresses (except those of addresses that that start with the binary value 000) are 64-bit long. Since the method specified in 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 LAN MAC addresses) might result in DAD failures, and hence @@ -541,21 +545,21 @@ (SLAAC), as an alternative to e.g. Interface Identifiers that embed hardware addresses (such as those specified in [RFC2464], [RFC2467], and [RFC2470]). 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 resulting Interface Identifier will also change (see - [I-D.cooper-6man-ipv6-address-generation-privacy]). + [I-D.ietf-6man-ipv6-address-generation-privacy]). o They mitigate address-scanning techniques which leverage predictable Interface Identifiers (e.g., known Organizationally 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 is replaced) if an appropriate source for Net_Iface (Section 5) is employed. @@ -612,21 +616,21 @@ 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 (since temporary 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 "temporary addresses", since it would mitigate host- tracking vectors still present when such addresses are used (see - [I-D.cooper-6man-ipv6-address-generation-privacy]), and would also + [I-D.ietf-6man-ipv6-address-generation-privacy]), and would also mitigate address-scanning techniques that leverage patterns in IPv6 addresses that embed IEEE LAN MAC addresses. Finally, we note that the method described in this document addresses some of the privacy concerns arising from the use of IPv6 addresses that embed IEEE LAN MAC addresses, 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. 10. Acknowledgements @@ -670,117 +674,129 @@ [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. [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally - Unique IDentifier (UUID) URN Namespace", RFC 4122, - July 2005. + Unique IDentifier (UUID) URN Namespace", RFC 4122, July + 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. + [I-D.ietf-6man-ug] + Carpenter, B. and S. Jiang, "Significance of IPv6 + Interface Identifiers", draft-ietf-6man-ug-05 (work in + progress), November 2013. + 11.2. Informative References + [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, + April 1992. + [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. [RFC2467] Crawford, M., "Transmission of IPv6 Packets over FDDI Networks", RFC 2467, December 1998. [RFC2470] Crawford, M., Narten, T., and S. Thomas, "Transmission of - IPv6 Packets over Token Ring Networks", RFC 2470, - December 1998. + IPv6 Packets over Token Ring Networks", RFC 2470, December + 1998. [RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W. - Stevens, "Basic Socket Interface Extensions for IPv6", - RFC 3493, February 2003. + 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. [RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, February 2011. [I-D.ietf-opsec-ipv6-host-scanning] Gont, F. and T. Chown, "Network Reconnaissance in IPv6 Networks", draft-ietf-opsec-ipv6-host-scanning-02 (work in progress), July 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. + Advertisement Guard (RA-Guard)", draft-ietf-v6ops-ra- + guard-implementation-07 (work in progress), November 2012. - [I-D.cooper-6man-ipv6-address-generation-privacy] + [I-D.ietf-6man-ipv6-address-generation-privacy] Cooper, A., Gont, F., and D. Thaler, "Privacy Considerations for IPv6 Address Generation Mechanisms", - draft-cooper-6man-ipv6-address-generation-privacy-00 (work - in progress), July 2013. + draft-ietf-6man-ipv6-address-generation-privacy-00 (work + in progress), October 2013. - [HDMoore] HD Moore, "The Wild West", Louisville, Kentucky, U.S.A. - September 25-29, 2012, - . + [HDMoore] HD Moore, , "The Wild West", Louisville, Kentucky, U.S.A, + September 2012, . [Gont-DEEPSEC2011] - Gont, "Results of a Security Assessment of the Internet + Gont, , "Results of a Security Assessment of the Internet Protocol version 6 (IPv6)", DEEPSEC 2011 Conference, Vienna, Austria, November 2011, . + www.si6networks.com/presentations/deepsec2011/fgont- + deepsec2011-ipv6-security.pdf>. [Broersma] - Broersma, R., "IPv6 Everywhere: Living with a Fully IPv6- - enabled environment", Australian IPv6 Summit 2010, + Broersma, R., "IPv6 Everywhere: Living with a Fully + IPv6-enabled environment", Australian IPv6 Summit 2010, Melbourne, VIC Australia, October 2010, . [IAB-PRIVACY] - IAB, "Privacy and IPv6 Addresses", July 2011, . + IAB, , "Privacy and IPv6 Addresses", July 2011, . [CPNI-IPv6] Gont, F., "Security Assessment of the Internet Protocol version 6 (IPv6)", UK Centre for the Protection of National Infrastructure, (available on request). + [FIPS-SHS] + FIPS, , "Secure Hash Standard (SHS)", Federal Information + Processing Standards Publication 180-4, March 2012, . + 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 5. 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 interfaces 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 @@ -783,30 +799,30 @@ Index, when such a naming scheme is used), or when network interfaces 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. + 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 identifiers for