RFC 8882
DNS-Based Service Discovery (DNS-SD) Privacy and Security Requirements
RFC 8882 ๐ DNS-Based Service Discovery (DNS-SD) Privacy and Security Requirements
okay bestie, this one is RFC 8882 ๐ It's an Informational doc (not a Standards Track spec, just published for info ๐), written by C. Huitema from Private Octopus Inc. and D. Kaiser from the University of Luxembourg. It's dated September 2020 and its ISSN is 2070-1721. The header doesn't list anything it obsoletes or updates, so it's kinda a standalone vibe โจ
Abstract
okay so DNS-SD (DNS-based Service Discovery) usually shares a lot of info about the devices that offer services and the ones looking for them ๐ That includes hostnames, network parameters, and maybe a description of the service instance. It gets really risky when phones and other mobile devices do DNS-SD on a public hotspot ๐ญ This doc looks at what a privacy-respecting discovery service would actually need ๐ซถ
Status of This Memo
this is not a standards-track thing, it's published for informational purposes ๐ง
this is an IETF product ๐ and it reflects the consensus of the IETF community. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG). Not every doc the IESG approves is up for any level of Internet Standard, so check Section 2 of RFC 7841 if you're curious ๐ธ
for the current status, any errata, or to send feedback, go to https://www.rfc-editor.org/info/rfc8882 ๐
Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the document authors. All rights reserved.
this doc is under BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they stood on the publication date. Read them carefully, bestie, they spell out your rights and restrictions for this doc ๐ If you pull Code Components out of this doc, they have to include the Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions. They come with no warranty, same as the Simplified BSD License says ๐ซถ
Table of Contents
1. Introduction
2. Threat Model
3. Threat Analysis
3.1. Service Discovery Scenarios
3.1.1. Private Client and Public Server
3.1.2. Private Client and Private Server
3.1.3. Wearable Client and Server
3.2. DNS-SD Privacy Considerations
3.2.1. Information Made Available Via DNS-SD Resource Records
3.2.2. Privacy Implication of Publishing Service Instance
Names
3.2.3. Privacy Implication of Publishing Node Names
3.2.4. Privacy Implication of Publishing Service Attributes
3.2.5. Device Fingerprinting
3.2.6. Privacy Implication of Discovering Services
3.3. Security Considerations
3.3.1. Authenticity, Integrity, and Freshness
3.3.2. Confidentiality
3.3.3. Resistance to Dictionary Attacks
3.3.4. Resistance to Denial-of-Service Attacks
3.3.5. Resistance to Sender Impersonation
3.3.6. Sender Deniability
3.4. Operational Considerations
3.4.1. Power Management
3.4.2. Protocol Efficiency
3.4.3. Secure Initialization and Trust Models
3.4.4. External Dependencies
4. Requirements for a DNS-SD Privacy Extension
4.1. Private Client Requirements
4.2. Private Server Requirements
4.3. Security and Operation
5. IANA Considerations
6. References
6.1. Normative References
6.2. Informative References
Acknowledgments
Authors' Addresses
1. Introduction โจ
okay so DNS-SD [RFC6763] running over Multicast DNS (mDNS) [RFC6762] gives you zero-configuration service discovery on local networks ๐ฆ It's super convenient, but it means you have to publicly expose both the offering and requesting identities, plus info about the services being offered and requested ๐ฌ Some of that published info can seriously breach someone's privacy. These issues and possible fixes get covered in [KW14a], [KW14b], and [K17]. The multicast part of mDNS makes the risks super obvious, but honestly most of the risk comes from transactions being observable ๐ Server-based versions of DNS-SD need these risks handled too ๐
there are times when devices on a network want to offer or use services without showing their identities to everyone else on that same network ๐งณ Imagine a traveler uploading pictures from their phone to a laptop while both are on an Internet cafe's Wi-Fi, or two travelers sharing files between laptops while waiting for their flight in an airport lounge โ๏ธ
we expect these exchanges to kick off with a DNS-SD discovery over mDNS ๐ One device announces that a service is available, like a picture library or a file store in our examples. The user on the other device finds that service and then connects to it ๐ซถ
when we look at these scenarios in Section 3.1, we notice that DNS-SD messages leak identifying stuff, like the Service Instance Name, the hostname, or service properties ๐ Here are the definitions we're using:
- Identity: in this doc, "identity" means the identity of the entity (legal person) operating a device.
- Disclosing an Identity: in this doc, "disclosing an identity" means showing the identity of operating entities to devices outside the discovery process, like devices on the same network link that are listening to traffic but aren't actually part of the discovery. This doc focuses on identity disclosure through data sent in messages at the service discovery protocol layer. Identity leaks at deeper layers, like the IP layer, get mentioned too ๐ง
- Disclosing Information: in this doc, "disclosing information" also focuses on data sent in service discovery protocol messages. That covers both identity-revealing info and other data that could still be sensitive ๐
2. Threat Model ๐
this doc looks at the following attacker types, sorted from least to most powerful ๐ฅ Every one of them can be passive (they just listen to network traffic they can access) or active (they can also craft and send malicious packets) ๐ต๏ธโโ๏ธ
- external: an external attacker is not on the same network link as the victim devices doing service discovery. So they're in a different multicast domain ๐
- on-link: an on-link attacker is on the same network link as the victim devices doing service discovery. So they're in the same multicast domain. They can also pull off every attack an external attacker can ๐
- MITM: a Man-in-the-Middle (MITM) attacker either controls (parts of) a network link or can trick two parties into sending traffic through the attacker. So they can see unicast traffic between devices doing service discovery. They can also do everything an on-link attacker can ๐ญ
3. Threat Analysis ๐
in this section we dig into how the attackers from the last section could threaten the privacy of the people operating devices that take part in service discovery ๐ We focus on attacks that use data sent in service discovery protocol messages โจ
3.1. Service Discovery Scenarios ๐
in this section we go over common service discovery scenarios and talk about the privacy threats and privacy requirements that come with them. In all three of these common scenarios, the attacker is passive on-link ๐ซฃ
3.1.1. Private Client and Public Server ๐งณ
okay this is probably the simplest private discovery scenario: one client connects to a public server over a public network ๐จ๏ธ A classic example is a traveler using a publicly available printer in a business center, a hotel, or an airport.
( Taking notes:
( David is printing
( a document.
~~~~~~~~~~~
o
___ o ___
/ \ _|___|_
| | client server |* *|
\_/ __ \_/
| / / Discovery +----------+ |
/|\ /_/ <-----------> | +----+ | /|\
/ | \__/ +--| |--+ / | \
/ | |____/ / | \
/ | / | \
/ \ / \
/ \ / \
/ \ / \
/ \ / \
/ \ / \
David Adversary
in this scenario the server is public and wants to be found, but the client is private ๐ฅบ The adversary is listening to the network traffic, trying to figure out who the visitors are and what they're up to ๐ Identifying devices leads to identifying people, whether that's for keeping tabs on them in the real world or as a first step toward a targeted cyber attack ๐
so the requirement here is that the discovery activity should not disclose the identity of the client ๐ซถ
3.1.2. Private Client and Private Server
okay so the second private discovery scenario is giving two people vibing on a collab app ๐ซถ like in an airport lounge, which is literally the most public place ever ๐งณ. one device acts as the server and the other acts as the client. the server wants to be found by the client but absolutely does NOT want to be found by anyone else ๐
( Taking notes:
( David is meeting
( with Stuart.
~~~~~~~~~~~
o
___ ___ o ___
/ \ / \ _|___|_
| | server client | | |* *|
\_/ __ __ \_/ \_/
| / / Discovery \ \ | |
/|\ /_/ <-----------> \_\ /|\ /|\
/ | \__/ \__/ | \ / | \
/ | | \ / | \
/ | | \ / | \
/ \ / \ / \
/ \ / \ / \
/ \ / \ / \
/ \ / \ / \
/ \ / \ / \
David Stuart Adversary
the adversary is lurking and listening to network traffic ๐ trying to figure out who the devices belong to, same as in the first scenario, but also trying to see the patterns of traffic. ngl that's the scary part, because those patterns reveal the business and social interactions between the owners of the devices ๐
so the requirement here is that the discovery activity should not disclose the identity of either the client or the server, and it also should not reveal the business and social interactions between the owners of the devices ๐โจ
3.1.3. Wearable Client and Server
now the third one is all about wearables โ๐ think the smartwatch on someone's wrist chatting with the phone in their pocket. super normal, super relatable, and also super leaky if nobody's paying attention ๐
( Taking notes:
( David is here. His watch is
( talking to his phone.
~~~~~~~~~~~
o
___ o ___
/ \ _|___|_
| | client |* *|
\_/ \_/
| _/ |
/|\ // /|\
/ | \__/ ^ / | \
/ |__ | Discovery / | \
/ |\ \ v / | \
/ \\_\ / \
/ \ server / \
/ \ / \
/ \ / \
/ \ / \
David Adversary
this scenario is kinda like the second one, honestly ๐ฆ there are two devices, one is the server and one is the client, and the requirement is the same: the discovery traffic must not disclose the identity of either the client or the server. the big difference is that one single owner manages both devices, which opens up different ways to set up secure relations between them. there's also extra emphasis on hiding what type of devices the person wears ๐คซ
the adversary isn't just tracking who the owner is either. they're also interested in the characteristics of the devices, like type, brand, and model ๐ knowing the device type can lead to further attacks, from theft all the way to device-specific hacking ๐ฑ and when you combine all the devices one person wears, you get a "fingerprint" of that person, which risks identifying them ๐ซฃ
this scenario also stands in for the general case of bringing private Internet-of-Things (IoT) devices into public places ๐ธ a wearable IoT device might act as a DNS-SD/mDNS client, and that lets attackers infer information about the devices' owners. the attacker might be a single person like in the example figure, but this could also be abused for large-scale data collection, with stationary IoT-device-tracking servers installed in frequented public places ๐ช yikes.
the issues described in Section 3.1.1, like identifying people or using the information for targeted attacks, apply here too ๐
3.2. DNS-SD Privacy Considerations
okay so the discovery process in the scenarios from Section 3.1 would most likely be based on [RFC6762] for making service information available ๐ง but this document looks at all kinds of ways to make DNS-SD resource records available, not just that one. these means comprise of but are not limited to mDNS [RFC6762], DNS servers ([RFC1033], [RFC1034], and [RFC1035]), the use of Service Registration Protocol (SRP) [SRP], and multi-link [RFC7558] networks ๐
the discovery scenarios in Section 3.1 show three separate abstract privacy requirements, and which one you need depends on the use case. and these aren't limited to mDNS either ๐
- Client identity privacy: Client identities are not leaked during service discovery or use.
- Multi-entity, mutual client and server identity privacy: Neither client nor server identities are leaked during service discovery or use.
- Single-entity, mutual client and server identity privacy: Identities of clients and servers owned and managed by the same legal person are not leaked during service discovery or use.
in this section we're going to walk through aspects of DNS-SD that make these requirements really hard to achieve in practice ๐ค we're trying to be thorough, but it's not possible to be exhaustive, so bear with us ๐ซถ
client identity privacy can be thwarted by a passive attacker (see Section 2) if it isn't handled properly ๐ป which kind of passive attacker you're dealing with depends on how the service information is made available. information sent via multicast messages can be obtained by an on-link attacker. unicast messages are harder to access, but if the transmission isn't encrypted, they could still be accessed by an attacker with access to network routers or bridges. and if you're using multi-link service discovery solutions [RFC7558], external attackers have to be taken into consideration too, for example when multicast messages get relayed to other links ๐
server identity privacy can be thwarted by a passive attacker in the same way as client identity privacy ๐ on top of that, active attackers who are querying for information also have to be taken into consideration. this is mainly relevant for unicast-based discovery, where listening to discovery traffic requires a MITM attacker. however, an external active attacker might be able to learn the server identity just by querying for service information, for example via DNS ๐ฌ
3.2.1. Information Made Available Via DNS-SD Resource Records
okay so DNS-Based Service Discovery (DNS-SD) is defined in [RFC6763] ๐ it lets nodes publish the availability of an instance of a service by inserting specific records in the DNS ([RFC1033], [RFC1034], and [RFC1035]) or by publishing those records locally using multicast DNS (mDNS) [RFC6762] ๐ก available services are described using three types of records:
- PTR Record: Associates a service type in the domain with an "instance" name of this service type.
- SRV Record: Provides the node name, port number, priority and weight associated with the service instance, in conformance with [RFC2782].
- TXT Record: Provides a set of attribute-value pairs describing specific properties of the service instance.
3.2.2. Privacy Implication of Publishing Service Instance Names
so in the first phase of discovery, clients grab all the PTR records associated with a service type in a given naming domain ๐ each PTR record contains a Service Instance Name, which is defined in Section 4 of [RFC6763]:
Service Instance Name = <Instance> . <Service> . <Domain>
the <Instance> part is supposed to give users of discovery clients enough info to easily pick the service instance they want ๐ nodes that use DNS-SD over mDNS [RFC6762] in a mobile environment rely on how specific the instance name is to find the right service. so picture Alice wanting to upload pics to a laptop at an Internet cafe โ๐ธ the list of available service instances might look something like this:
Alice's Images . _imageStore._tcp . local
Alice's Mobile Phone . _presence._tcp . local
Alice's Notebook . _presence._tcp . local
Bob's Notebook . _presence._tcp . local
Carol's Notebook . _presence._tcp . local
Alice sees the list on her phone and instantly knows to pick the first item โจ the discovery just works, bestie ๐ฅฐ (quick note: our service name examples follow the spec in Section 4.1 of [RFC6763], but they may need some character escaping when you enter them in regular DNS software ๐ ๏ธ)
BUT ๐ญ DNS-SD/mDNS will reveal to literally anybody that Alice is currently at the Internet cafe ๐ซฃ it also spills that she has two devices, shares an image store, and uses a chat app that supports the _presence protocol on both of them. she might be chatting with Bob or Carol right now too, since they're also using a _presence-supporting chat app ๐ and this info isn't only available to devices actively browsing for and offering services. anybody passively listening to the network traffic can see it too, which is a passive on-link attacker ๐
and there's no authentication requirement to claim a particular instance name, so an active attacker can offer resources that claim to be Alice's when they totally aren't ๐๐ฉ
3.2.3. Privacy Implication of Publishing Node Names
the SRV records contain the DNS name of the node publishing the service ๐ฅ๏ธ typical implementations build this DNS name by sticking the node's "hostname" onto the name of the local domain. the privacy implications of this practice are reviewed in [RFC8117] ๐ depending on naming practices, the hostname is either a strong identifier of the device or, at the very least, a partial identifier ๐ซ and that means it can enable tracking of both the device and, by extension, the device's owner ๐ต๏ธโโ๏ธ๐
Okay bestie, picking right back up with the privacy stuff ๐ฆ
3.2.4. Privacy Implication of Publishing Service Attributes โจ
The TXT record's attribute-value pairs hold info about the characteristics of the service instance, and ngl that tells people a lot about the devices publishing those services ๐ The amount of info totally varies depending on the service and how it's implemented:
- Some attributes, like the paper size a printer supports, are the same across tons of devices, so they only give a tracker a little bit of info ๐จ๏ธ
- Attributes with free-form values, like the name of a directory, can reveal way more ๐ฌ
Combos of attributes are even more powerful than single ones, and they can be used for "fingerprinting" a specific device ๐ต๏ธโโ๏ธ It's giving detective energy, and not in a cute way.
Okay, and this part is so important: TXT records don't just make devices trackable, they can literally contain private info about the user ๐ For example, the _presence service shows the "chat status" to everyone on the same network. Users might have no idea that's happening ๐
Also, TXT records often include version info about services, which hands potential attackers a list of devices running exploit-prone versions of a service ๐ฑ Not the vibe at all.
3.2.5. Device Fingerprinting ๐
Putting together everything published over DNS-SD can create a "fingerprint" of a specific device ๐ The stuff that goes into that includes:
- A list of the services the device publishes, which anyone can retrieve because the SRV records all point to the same hostname ๐
- Specific attributes describing those services ๐ท๏ธ
- Port numbers used by the services ๐
- Priority and weight attributes in the SRV records โ๏ธ
That combo will often be enough to figure out the version of software running on a device ๐ป And if a device publishes a bunch of services with lots of detailed attributes, the combo might be enough to pin down the exact device and track its owner ๐ญ
Sometimes people argue that you can just spot devices offering services by watching local traffic, so trying to hide the service is pointless. BUT there are good reasons for the discovery layer to avoid unnecessary exposure anyway, bestie:
- Privacy at the discovery layer is super important for automatically configured privacy-preserving network apps ๐ซถ Application protocols aren't forced to use that privacy, but if device tracking isn't stopped at the deeper layers, including the service discovery layer, then hiding a service's protocol at the application layer is futile ๐
- Also, with mDNS-based discovery, even if the application layer doesn't protect privacy, services are usually offered via unicast, which takes a MITM attacker. Meanwhile, spotting services from multicast discovery messages only takes an on-link attacker ๐ Way easier to pull off, so the bar is lower.
The same logic goes further: the pattern of services a device offers could also help fingerprint it. That may or may not be true, since services can be designed or updated to avoid leaking fingerprints โจ Either way, the discovery service design should avoid making a bad situation worse and should, as much as possible, avoid giving new fingerprinting info ๐ธ
3.2.6. Privacy Implication of Discovering Services ๐ง
Consumers of services do discovery too, and in doing so they reveal some info, like which services they're interested in and which domains they're searching in ๐ When clients pick specific service instances, they also reveal their preference for those instances. For super common service types that's basically harmless ๐ but for sensitive services, like some private messaging ones, it could be way more problematic ๐ฌ
One way to protect clients would be to somehow encrypt the requested service types. BUT, just like we noted in Section 3.2.5, traffic analysis can often still reveal the service ๐
3.3. Security Considerations ๐
For each of the operations described above, we also have to think about the security threats we're worried about ๐
3.3.1. Authenticity, Integrity, and Freshness ๐
Can devices (both servers and clients) trust the info they receive? Was it modified in flight by an adversary? Can devices trust where the info came from? Is the info fresh, meaning not replayed? ๐ณ Freshness may or may not be required, depending on whether the discovery process is meant to be online. In some cases, publishing discovery info to a shared directory or registry, instead of to each online recipient through a broadcast channel, may be enough โจ
3.3.2. Confidentiality ๐คซ
Confidentiality is all about restricting info access to only authorized individuals ๐ Ideally that should only be the appropriate trusted parties, though it can be tricky to define who "the appropriate trusted parties" even are. In some use cases, it may mean that only mutually authenticated and trusting clients and servers can read messages sent to one another ๐ซถ The discovery process in particular is often used to find new entities the device didn't know about before, so it can be tricky to figure out how a device can have an established trust relationship with a brand-new entity it's never talked to ๐ตโ๐ซ
3.3.3. Resistance to Dictionary Attacks ๐
It can be super tempting to use (publicly computable) hash functions to hide sensitive identifiers ๐ This turns a sensitive unique identifier, like an email address, into a "scrambled" but still unique identifier. Unfortunately, simple solutions may be vulnerable to offline dictionary attacks ๐
3.3.4. Resistance to Denial-of-Service Attacks ๐ก๏ธ
In any protocol where the receiver of messages has to do cryptographic operations on those messages, there's a risk of a brute-force flooding attack making the receiver burn through excessive CPU time and, where it applies, battery power just processing and discarding those messages ๐๐ฉ
Amplification attacks also have to be taken into consideration ๐ข Messages with larger payloads should only be sent as an answer to a query sent by a verified client.
3.3.5. Resistance to Sender Impersonation ๐ญ
Sender impersonation is an attack where messages, like service offers, get forged by entities that don't have the corresponding secret key material ๐ต๏ธ These attacks may be used to learn the identity of a communicating party, actively or passively ๐
3.3.6. Sender Deniability ๐ซฅ
Being able to deny you sent something, like broadcasting a discovery request, may be desirable or even necessary in some use cases ๐ฆ This property makes sure eavesdroppers can't prove senders issued a specific message meant for one or more peers โจ
3.4. Operational Considerations โ๏ธ
3.4.1. Power Management ๐
Lots of modern devices, especially battery-powered ones, use power management techniques to save energy ๐ก One such technique is for a device to transfer info about itself to a proxy, which acts on the device's behalf for some functions while the device itself goes to sleep to cut down on power use ๐ด When the proxy decides some action is needed that only the device itself can perform, the proxy may have some way to wake the device, as described for example in [SLEEP-PROXY] โฐ
In many cases, the device may not trust the network proxy enough to share all its confidential key material with it ๐ฅบ That makes it tough to combine private discovery, which relies on per-query cryptographic operations, with energy-saving techniques that have (somewhat untrusted) network proxies answer queries for sleeping devices ๐ญ
3.4.2. Protocol Efficiency ๐โโ๏ธ
Designing a discovery protocol with the security properties we want can end up being inefficient ๐ฎโ๐จ To do the necessary operations, the protocol may need to send and receive a large number of network packets, or need an inordinate number of multicast transmissions. That can eat an unreasonable amount of network capacity, which is especially rough when it's shared wireless spectrum ๐ถ It may also cause unnecessary power consumption, which is particularly bad for battery devices and can make discovery slow ๐
Designing a discovery protocol that hides what it's doing from unauthorized observers and still performs efficiently is a genuinely hard challenge ๐ง โจ
3.4.3. Secure Initialization and Trust Models ๐ค
One challenge hiding in all the stuff above: whenever we talk about "trusted entities" versus "untrusted entities," there has to be some way to initially establish trust that converts an "untrusted entity" into a "trusted entity" ๐
This document doesn't define the specific way trust gets established ๐ โโ๏ธ Protocol designers can rely on a bunch of existing tech, including PKI, Trust On First Use (TOFU), or using a short passphrase or PIN with cryptographic algorithms, like Secure Remote Password (SRP) [RFC5054], or a Password-Authenticated Key Exchange like J-PAKE [RFC8236] using a Schnorr Non-interactive Zero-Knowledge Proof [RFC8235] ๐งฉ
Designers should also watch out for a specific usability pitfall when trust is established right before discovery is performed ๐ฌ Users have a tendency to "click OK" just to get their task done ๐ฑ๏ธ That implicit vulnerability is avoided if trust establishment requires more significant user participation, like entering a password or PIN ๐
3.4.4. External Dependencies ๐
Trust establishment may depend on external parties ๐ซฃ Optionally, this might involve synchronous communication. Systems with that kind of dependency may be attacked by interfering with communication to the external dependencies ๐ฅ Where possible, those dependencies should be minimized. Local trust models are best for secure initialization in the presence of active attackers ๐ก๐
4. Requirements for a DNS-SD Privacy Extension โจ
Okay bestie, now that we've covered all the spicy threats ๐ธ, it's time for the requirements! These are the things a privacy-preserving DNS-SD has to actually do. ๐
If we build to these requirements, the goal is a solution that never sends privacy-violating DNS-SD messages and doesn't accidentally open new doors for attackers to mess with how DNS-SD works. ๐
This doc also gives advice on which privacy-protecting mechanisms should be used on deeper-layer network protocols, and on how to actually connect to services in a privacy-preserving way. Writing requirements for those is out of scope though ๐. To mitigate privacy attacks on lower layers, both servers and clients must use privacy options available at lower layers and, for example, avoid publishing static IPv4 or IPv6 addresses or static IEEE 802 Media Access Control (MAC) addresses. For services advertised on a single network link, link-local IP addresses should be used; see [RFC3927] and [RFC4291] for IPv4 and IPv6, respectively. Static servers advertising services globally via DNS can hide their IP addresses from unauthorized clients using the split mode topology shown in Encrypted Server Name Indication [ESNI]. Hiding static MAC addresses can be achieved via MAC address randomization (see [RFC7844]). ๐ซถ
4.1. Private Client Requirements ๐
For all three scenarios described in Section 3.1, client privacy requires DNS-SD messages to:
- Avoid disclosure of the client's identity, either directly or via inference, to nodes other than select servers.
- Avoid exposure of linkable identifiers that allow tracing client devices.
- Avoid disclosure of the client's interest in specific service instances or service types to nodes other than select servers.
When listing and resolving services via current DNS-SD deployments, clients typically disclose their interest in specific service types and specific instances of these types, respectively. It's giving overshare ๐ญ.
In addition to the exposure and disclosure risks noted above, protocols and implementations will have to consider fingerprinting attacks (see Section 3.2.5) that could retrieve similar information. ๐ต๏ธโโ๏ธ
4.2. Private Server Requirements ๐
Servers like the "printer" discussed in Section 3.1.1 are public, but the servers discussed in Sections 3.1.2 and 3.1.3 are, by essence, private. Server privacy requires DNS-SD messages to:
- Avoid disclosure of the server's identity, either directly or via inference, to nodes other than authorized clients. In particular, servers must avoid publishing static identifiers, such as hostnames or service names. When those fields are required by the protocol, servers should publish randomized values. (See [RFC8117] for a discussion of hostnames.)
- Avoid exposure of linkable identifiers that allow tracing servers.
- Avoid disclosure to unauthorized clients of Service Instance Names or service types of offered services.
- Avoid disclosure to unauthorized clients of information about the services they offer.
- Avoid disclosure of static IPv4 or IPv6 addresses.
When offering services via current DNS-SD deployments, servers typically disclose their hostnames (SRV, A/AAAA), instance names of offered services (PTR, SRV), and information about services (TXT). Heeding these requirements protects a server's privacy on the DNS-SD level. ๐ฆ
The current DNS-SD user interfaces present the list of discovered service names to the users and let them pick a service from the list. Using random identifiers for service names renders that UI flow unusable. ๐ Privacy-respecting discovery protocols will have to solve this issue, for example, by presenting authenticated or decrypted service names instead of the randomized values. โจ
4.3. Security and Operation ๐ฅ
In order to be secure and feasible, a DNS-SD privacy extension needs to consider security and operational requirements including:
- Avoiding significant CPU overhead on nodes or significantly higher network load. Such overhead or load would make nodes vulnerable to denial-of-service attacks. Further, it would increase power consumption, which is damaging for IoT devices. ๐
- Avoiding designs in which a small message can trigger a large amount of traffic towards an unverified address, as this could be exploited in amplification attacks. ๐จ
5. IANA Considerations ๐
Nothing for IANA this time! ๐ This document has no IANA actions.
6. References ๐
6.1. Normative References
[RFC6762]Cheshire, S. and M. Krochmal, "Multicast DNS", RFC 6762, DOI 10.17487/RFC6762, February 2013,<https://www.rfc-editor.org/info/rfc6762>.[RFC6763]Cheshire, S. and M. Krochmal, "DNS-Based Service Discovery", RFC 6763, DOI 10.17487/RFC6763, February 2013,<https://www.rfc-editor.org/info/rfc6763>.
6.2. Informative References
[ESNI]Rescorla, E., Oku, K., Sullivan, N., and C. A. Wood, "TLS Encrypted Client Hello", Work in Progress, Internet-Draft, draft-ietf-tls-esni-07, June 1, 2020,<https://tools.ietf.org/html/draft-ietf-tls-esni-07>.[K17]Kaiser, D., "Efficient Privacy-Preserving Configurationless Service Discovery Supporting Multi-Link Networks", August 2017,<https://nbn-resolving.de/urn:nbn:de:bsz:352-0-422757>.[KW14a]Kaiser, D. and M. Waldvogel, "Adding Privacy to Multicast DNS Service Discovery", DOI 10.1109/TrustCom.2014.107, September 2014,<https://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=7011331>.[KW14b]Kaiser, D. and M. Waldvogel, "Efficient Privacy Preserving Multicast DNS Service Discovery", DOI 10.1109/HPCC.2014.141, August 2014,<https://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=7056899>.[RFC1033]Lottor, M., "Domain Administrators Operations Guide", RFC 1033, DOI 10.17487/RFC1033, November 1987,<https://www.rfc-editor.org/info/rfc1033>.[RFC1034]Mockapetris, P., "Domain names - concepts and facilities", STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987,<https://www.rfc-editor.org/info/rfc1034>.[RFC1035]Mockapetris, P., "Domain names - implementation and specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, November 1987,<https://www.rfc-editor.org/info/rfc1035>.[RFC2782]Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for specifying the location of services (DNS SRV)", RFC 2782, DOI 10.17487/RFC2782, February 2000,<https://www.rfc-editor.org/info/rfc2782>.[RFC3927]Cheshire, S., Aboba, B., and E. Guttman, "Dynamic Configuration of IPv4 Link-Local Addresses", RFC 3927, DOI 10.17487/RFC3927, May 2005,<https://www.rfc-editor.org/info/rfc3927>.[RFC4291]Hinden, R. and S. Deering, "IP Version 6 Addressing Architecture", RFC 4291, DOI 10.17487/RFC4291, February 2006,<https://www.rfc-editor.org/info/rfc4291>.[RFC5054]Taylor, D., Wu, T., Mavrogiannopoulos, N., and T. Perrin, "Using the Secure Remote Password (SRP) Protocol for TLS Authentication", RFC 5054, DOI 10.17487/RFC5054, November 2007,<https://www.rfc-editor.org/info/rfc5054>.[RFC7558]Lynn, K., Cheshire, S., Blanchet, M., and D. Migault, "Requirements for Scalable DNS-Based Service Discovery (DNS-SD) / Multicast DNS (mDNS) Extensions", RFC 7558, DOI 10.17487/RFC7558, July 2015,<https://www.rfc-editor.org/info/rfc7558>.[RFC7844]Huitema, C., Mrugalski, T., and S. Krishnan, "Anonymity Profiles for DHCP Clients", RFC 7844, DOI 10.17487/RFC7844, May 2016,<https://www.rfc-editor.org/info/rfc7844>.[RFC8117]Huitema, C., Thaler, D., and R. Winter, "Current Hostname Practice Considered Harmful", RFC 8117, DOI 10.17487/RFC8117, March 2017,<https://www.rfc-editor.org/info/rfc8117>.[RFC8235]Hao, F., Ed., "Schnorr Non-interactive Zero-Knowledge Proof", RFC 8235, DOI 10.17487/RFC8235, September 2017,<https://www.rfc-editor.org/info/rfc8235>.[RFC8236]Hao, F., Ed., "J-PAKE: Password-Authenticated Key Exchange by Juggling", RFC 8236, DOI 10.17487/RFC8236, September 2017,<https://www.rfc-editor.org/info/rfc8236>.[SLEEP-PROXY]Cheshire, S., "Understanding Sleep Proxy Service", December 2009,<http://stuartcheshire.org/SleepProxy/index.html>.[SRP]Lemon, T. and S. Cheshire, "Service Registration Protocol for DNS-Based Service Discovery", Work in Progress, Internet-Draft, draft-ietf-dnssd-srp-04, July 13, 2020,<https://tools.ietf.org/html/draft-ietf-dnssd-srp-04>.
Acknowledgments ๐ซถ
This document is packed with contributions from Stuart Cheshire and Chris Wood, so big thanks to them! ๐ Thanks also to Florian Adamsky for an extensive review and suggestions on how the threat model is organized, to Barry Leiba for an extensive review, and to Roman Danyliw, Ben Kaduk, Adam Roach, and Alissa Cooper for their comments during IESG review. ๐
Authors' Addresses ๐
Christian Huitema
Private Octopus Inc.
Friday Harbor, WA 98250
United States of America
Email: huitema@huitema.net
URI: http://privateoctopus.com/
Daniel Kaiser
University of Luxembourg
6, avenue de la Fonte
L-4364 Esch-sur-Alzette
Luxembourg
Email: daniel.kaiser@uni.lu
URI: https://secan-lab.uni.lu/
๐ฆ where this page comes from
- ietf: rfc8882 2020-09
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms