| rfc8882xml2.original.xml | rfc8882.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | ||||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
| <!ENTITY rfc1033 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1033.xml'> | ||||
| <!ENTITY rfc1034 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1034.xml'> | ||||
| <!ENTITY rfc1035 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml'> | ||||
| <!ENTITY rfc2045 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2045.xml'> | ||||
| <!ENTITY rfc2119 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml'> | ||||
| <!ENTITY rfc2782 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2782.xml'> | ||||
| <!ENTITY rfc3927 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3927.xml'> | ||||
| <!ENTITY rfc4055 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4055.xml'> | ||||
| <!ENTITY rfc4075 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4075.xml'> | ||||
| <!ENTITY rfc4279 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4279.xml'> | ||||
| <!ENTITY rfc4291 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4291.xml'> | ||||
| <!ENTITY rfc4648 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml'> | ||||
| <!ENTITY rfc5054 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5054.xml'> | ||||
| <!ENTITY rfc5246 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5246.xml'> | ||||
| <!ENTITY rfc6762 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6762.xml'> | ||||
| <!ENTITY rfc6763 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6763.xml'> | ||||
| <!ENTITY rfc7558 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7558.xml'> | ||||
| <!ENTITY rfc7626 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7626.xml'> | ||||
| <!ENTITY rfc7844 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7844.xml'> | ||||
| <!ENTITY rfc7858 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7858.xml'> | ||||
| <!ENTITY rfc8117 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8117.xml'> | ||||
| <!ENTITY rfc8094 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8094.xml'> | ||||
| <!ENTITY rfc8235 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8235.xml'> | ||||
| <!ENTITY rfc8236 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8236.xml'> | ||||
| <!ENTITY rfc8446 PUBLIC '' | ||||
| 'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml'> | ||||
| <!ENTITY I-D.ietf-dnssd-push PUBLIC '' | ||||
| "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-dnssd-push"> | ||||
| <!ENTITY I-D.ietf-dnssd-srp PUBLIC '' | ||||
| "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-dnssd-srp"> | ||||
| <!ENTITY I-D.ietf-tls-esni PUBLIC '' | ||||
| "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-esni"> | ||||
| <!ENTITY kw14a PUBLIC '' | ||||
| "references/reference.kw14a.xml"> | ||||
| <!ENTITY kw14b PUBLIC '' | ||||
| "references/reference.kw14b.xml"> | ||||
| ]> | ||||
| <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
| <?rfc compact="yes"?> | ||||
| <?rfc toc="yes"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <?rfc sortrefs="yes"?> | ||||
| <!-- Expand crefs and put them inline --> | ||||
| <?rfc comments='yes' ?> | ||||
| <?rfc inline='yes' ?> | ||||
| <rfc category="info" | ||||
| docName="draft-ietf-dnssd-prireq-08" | ||||
| ipr="trust200902"> | ||||
| <front> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" | |||
| docName="draft-ietf-dnssd-prireq-08" ipr="trust200902" obsoletes="" | ||||
| updates="" submissionType="IETF" xml:lang="en" tocInclude="true" | ||||
| symRefs="true" sortRefs="true" version="3" number="8882" consensus="true"> | ||||
| <!-- xml2rfc v2v3 conversion 2.42.0 --> | ||||
| <front> | ||||
| <title abbrev="DNS-SD Privacy Requirements"> | <title abbrev="DNS-SD Privacy Requirements"> | |||
| DNS-SD Privacy and Security Requirements | DNS-Based Service Discovery (DNS-SD) Privacy and Security Requirements | |||
| </title> | </title> | |||
| <author fullname="Christian Huitema" initials="C." surname="Huitema"> | <seriesInfo name="RFC" value="8882"/> | |||
| <author fullname="Christian Huitema" initials="C." surname="Huitema"> | ||||
| <organization>Private Octopus Inc.</organization> | <organization>Private Octopus Inc.</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street></street> | <street/> | |||
| <city>Friday Harbor</city> | <city>Friday Harbor</city> | |||
| <code>98250</code> | <code>98250</code> | |||
| <region>WA</region> | <region>WA</region> | |||
| <country>U.S.A.</country> | <country>United States of America</country> | |||
| </postal> | </postal> | |||
| <email>huitema@huitema.net</email> | <email>huitema@huitema.net</email> | |||
| <uri>http://privateoctopus.com/</uri> | <uri>http://privateoctopus.com/</uri> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Daniel Kaiser" initials="D." surname="Kaiser"> | ||||
| <author fullname="Daniel Kaiser" initials="D." surname="Kaiser"> | ||||
| <organization>University of Luxembourg</organization> | <organization>University of Luxembourg</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>6, avenue de la Fonte</street> | <street>6, avenue de la Fonte</street> | |||
| <city>Esch-sur-Alzette</city> | <city>Esch-sur-Alzette</city> | |||
| <code>4364</code> | <code>4364</code> | |||
| <region></region> | <region/> | |||
| <country>Luxembourg</country> | <country>Luxembourg</country> | |||
| </postal> | </postal> | |||
| <email>daniel.kaiser@uni.lu</email> | <email>daniel.kaiser@uni.lu</email> | |||
| <uri>https://secan-lab.uni.lu/</uri> | <uri>https://secan-lab.uni.lu/</uri> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="September" year="2020"/> | ||||
| <date year="2020" /> | <keyword>Multicast DNS</keyword> | |||
| <keyword>mDNS</keyword> | ||||
| <abstract> | <abstract> | |||
| <t> | <t>DNS-SD (DNS-based Service Discovery) normally discloses information abo | |||
| DNS-SD (DNS Service Discovery) normally discloses information about devices offe | ut | |||
| ring and | devices offering and requesting services. This information includes | |||
| requesting services. This information includes host names, network parameters, a | hostnames, network parameters, and possibly a further description of the | |||
| nd possibly | corresponding service instance. Especially when mobile devices engage in | |||
| a further description of the corresponding service instance. Especially when mob | DNS-based Service Discovery at a public hotspot, serious privacy problems | |||
| ile devices | arise. We analyze the requirements of a privacy-respecting discovery | |||
| engage in DNS Service Discovery at a public hotspot, serious privacy | service.</t> | |||
| problems arise. We analyze the requirements of a privacy-respecting discovery se | ||||
| rvice. | ||||
| </t> | ||||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | ||||
| <middle> | <section numbered="true" toc="default"> | |||
| <section title="Introduction"> | <name>Introduction</name> | |||
| <t> | <t>DNS-Based Service Discovery (DNS-SD) <xref target="RFC6763" | |||
| DNS Service Discovery (DNS-SD) <xref target="RFC6763" /> over Multicast DNS | format="default"/> over Multicast DNS (mDNS) <xref target="RFC6762" | |||
| (mDNS) <xref target="RFC6762" /> enables zero-configuration | format="default"/> enables zero-configuration service discovery in local | |||
| service discovery in local networks. It is very convenient for users, but it req | networks. It is very convenient for users, but it requires the public | |||
| uires the | exposure of the offering and requesting identities along with | |||
| public exposure of the offering and requesting identities along with information | information about the offered and requested services. Parts of the | |||
| about the | published information can seriously breach the user's privacy. These | |||
| offered and requested services. Parts of the published information can seriously | privacy issues and potential solutions are discussed in <xref | |||
| breach the | target="KW14a" format="default"/>, <xref target="KW14b" | |||
| user's privacy. These privacy issues and potential solutions are | format="default"/>, and <xref target="K17" format="default"/>. While the | |||
| discussed in <xref target="KW14a" />, <xref target="KW14b" /> and <xref target=" | multicast nature of mDNS makes these risks obvious, most risks derive | |||
| K17" />. | from the observability of transactions. These risks also need to be | |||
| While the multicast nature of mDNS makes these risks obvious, most risks derive | mitigated when using server-based variants of DNS-SD.</t> | |||
| from the | <t>There are cases when nodes connected to a network want to provide or | |||
| observability of transactions. | consume services without exposing their identities to the other parties | |||
| These risks also need to be mitigated when using server-based variants of DNS-SD | connected to the same network. Consider, for example, a traveler wanting | |||
| . | to upload pictures from a phone to a laptop when both are connected to | |||
| </t> | the Wi-Fi network of an Internet cafe, or two travelers who want to | |||
| <t> | share files between their laptops when waiting for their plane in an | |||
| There are cases when nodes connected to a network want to provide | airport lounge.</t> | |||
| or consume services without exposing their identities to the other | <t>We expect that these exchanges will start with a discovery procedure | |||
| parties connected to the same network. Consider, for example, a | using DNS-SD over mDNS. One of the devices will publish the availability | |||
| traveler wanting to upload pictures from a phone to a laptop | of a service, such as a picture library or a file store in our | |||
| when both are connected to the Wi-Fi network of an Internet cafe, or | examples. The user of the other device will discover this service and | |||
| two travelers who want to share files between their laptops | then connect to it.</t> | |||
| when waiting for their plane in an airport lounge. | <t>When analyzing these scenarios in <xref target="scenarios" | |||
| </t> | format="default"/>, we find that the DNS-SD messages leak identifying | |||
| <t> | information, such as the Service Instance Name, the hostname, or service | |||
| We expect that these exchanges will start with a discovery procedure using DNS-S | properties. We use the following definitions:</t> | |||
| D over mDNS. | <dl newline="true" spacing="normal"> | |||
| One of the devices will publish the availability of a service, such as a picture | <dt>Identity</dt> | |||
| library | <dd>In this document, the term "identity" refers to the identity of | |||
| or a file store in our examples. The user of the other device will | the entity (legal person) operating a device.</dd> | |||
| discover this service, and then connect to it. | <dt>Disclosing an Identity</dt> | |||
| </t> | <dd>In this document, "disclosing an identity" means showing the | |||
| <t> | identity of operating entities to devices external to the discovery | |||
| When analyzing these scenarios in <xref target="scenarios"/>, we find that | process, e.g., devices on the same network link that are listening to | |||
| the DNS-SD messages leak identifying information such as the service instance na | the network traffic but are not actually involved in the discovery | |||
| me, | process. This document focuses on identity disclosure by data conveyed | |||
| the host name, or service properties. We use the following definitions: | via messages on the service discovery protocol layer. Still, identity | |||
| <list style="hanging"> | leaks on deeper layers, e.g., the IP layer, are mentioned.</dd> | |||
| <t hangText="Identity"> | <dt>Disclosing Information</dt> | |||
| In this document, the term "identity" refers to the identity of the entity (le | <dd>In this document, "disclosing information" is also focused on | |||
| gal person) | disclosure of data conveyed via messages on the service discovery | |||
| operating a device. | protocol layer, including both identity-revealing information and | |||
| </t> | other still potentially sensitive data.</dd> | |||
| <t hangText="Disclosing an Identity"> | </dl> | |||
| In this document "disclosing an identity" means showing the identity of operat | </section> | |||
| ing entities | <section anchor="threatmodel" numbered="true" toc="default"> | |||
| to devices external to the discovery process; e.g., devices on the same networ | <name>Threat Model</name> | |||
| k link that are listening to the | <t>This document considers the following attacker types sorted by | |||
| network traffic but are not actually involved in the discovery process. | increasing power. All these attackers can either be passive (they just | |||
| This document focuses on identity disclosure by data conveyed via messages on | listen to network traffic they have access to) or active (they | |||
| the service discovery protocol layer. | additionally can craft and send malicious packets).</t> | |||
| Still, identity leaks on deeper layers, e.g., the IP layer, are mentioned. | <dl newline="true" spacing="normal"> | |||
| </t> | <dt>external</dt> | |||
| <t hangText="Disclosing Information"> | <dd>An external attacker is not on the same network link as victim | |||
| In this document "disclosing information" is also focused | devices engaging in service discovery; thus, the external attacker is | |||
| on disclosure of data conveyed via messages on the service discovery protocol | in a different multicast domain.</dd> | |||
| layer, | <dt>on-link</dt> | |||
| such as generic non-identity but still potentially sensitive data. | <dd>An on-link attacker is on the same network link as victim devices | |||
| </t> | engaging in service discovery; thus, the on-link attacker is in the | |||
| </list> | same multicast domain. This attacker can also mount all attacks an | |||
| </t> | external attacker can mount.</dd> | |||
| <dt>MITM</dt> | ||||
| </section> | <dd>A Man-in-the-Middle (MITM) attacker either controls (parts of) a | |||
| network link or can trick two parties to send traffic via the | ||||
| <section title="Threat Model" anchor="threatmodel"> | attacker; thus, the MITM attacker has access to unicast traffic | |||
| between devices engaging in service discovery. This attacker can also | ||||
| <t> | mount all attacks an on-link attacker can mount.</dd> | |||
| This document considers the following attacker types sorted by increasing powe | </dl> | |||
| r. | </section> | |||
| All these attackers can either be passive (they | <section anchor="threatanalysis" numbered="true" toc="default"> | |||
| just listen to network traffic they have access to) or active | <name>Threat Analysis</name> | |||
| (they additionally can craft and send malicious packets). | <t>In this section, we analyze how the attackers described in the | |||
| </t> | previous section might threaten the privacy of entities operating | |||
| devices engaging in service discovery. We focus on attacks leveraging | ||||
| <t> | data transmitted in service discovery protocol messages.</t> | |||
| <list style="hanging"> | <section anchor="scenarios" numbered="true" toc="default"> | |||
| <t hangText="external"> | <name>Service Discovery Scenarios</name> | |||
| An external attacker is not on the same network link as victim devices engagin | <t>In this section, we review common service discovery scenarios and | |||
| g in service discovery; | discuss privacy threats and their privacy requirements. In all three | |||
| thus, the external attacker is in a different multicast domain. | of these common scenarios, the attacker is of the type passive | |||
| </t> | on-link.</t> | |||
| <t hangText="on-link"> | <section anchor="privclipubserv" numbered="true" toc="default"> | |||
| An on-link attacker is on the same network link as victim devices engaging in | <name>Private Client and Public Server</name> | |||
| service discovery; | <t>Perhaps the simplest private discovery scenario involves a single | |||
| thus, the on-link attacker is in the same multicast domain. | client connecting to a public server through a public network. A | |||
| This attacker can also mount all attacks an external attacker can mount. | common example would be a traveler using a publicly available | |||
| </t> | printer in a business center, in a hotel, or at an airport.</t> | |||
| <t hangText="MITM"> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| A Man in the Middle (MITM) attacker either controls (parts of) a network link | ||||
| or can trick two parties to send traffic via the attacker; | ||||
| thus, the MITM attacker has access to unicast traffic between devices engaging | ||||
| in service discovery. | ||||
| This attacker can also mount all attacks an on-link attacker can mount. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <section title="Threat Analysis" anchor="threatanalysis"> | ||||
| <t> | ||||
| In this section we analyse how the attackers described in the previous section | ||||
| might threaten the privacy of entities operating devices engaging in service d | ||||
| iscovery. | ||||
| We focus on attacks leveraging data transmitted in service discovery protocol | ||||
| messages. | ||||
| </t> | ||||
| <section title="Service Discovery Scenarios" anchor="scenarios"> | ||||
| <t>In this section, we review common service discovery scenarios | ||||
| and discuss privacy threats and their privacy requirements. | ||||
| In all three of these common scenarios the attacker is of the type passive on- | ||||
| link.</t> | ||||
| <section title="Private Client and Public Server" anchor="privclipubserv" > | ||||
| <t> | ||||
| Perhaps the simplest private discovery scenario involves a single client connect | ||||
| ing | ||||
| to a public server through a public network. A common example would be | ||||
| a traveler using a publicly available printer in a business center, | ||||
| in an hotel, or at an airport. | ||||
| </t> | ||||
| <t> | ||||
| <figure> | ||||
| <artwork> | ||||
| ( Taking notes: | ( Taking notes: | |||
| ( David is printing | ( David is printing | |||
| ( a document | ( a document. | |||
| ~~~~~~~~~~~ | ~~~~~~~~~~~ | |||
| o | o | |||
| ___ o ___ | ___ o ___ | |||
| / \ _|___|_ | / \ _|___|_ | |||
| | | client server |* *| | | | client server |* *| | |||
| \_/ __ \_/ | \_/ __ \_/ | |||
| | / / Discovery +----------+ | | | / / Discovery +----------+ | | |||
| /|\ /_/ <-----------> | +----+ | /|\ | /|\ /_/ <-----------> | +----+ | /|\ | |||
| / | \__/ +--| |--+ / | \ | / | \__/ +--| |--+ / | \ | |||
| / | |____/ / | \ | / | |____/ / | \ | |||
| / | / | \ | / | / | \ | |||
| / \ / \ | / \ / \ | |||
| / \ / \ | / \ / \ | |||
| / \ / \ | / \ / \ | |||
| / \ / \ | / \ / \ | |||
| / \ / \ | / \ / \ | |||
| David adversary | David Adversary | |||
| </artwork> | ]]></artwork> | |||
| </figure> | <t>In that scenario, the server is public and wants to be | |||
| </t> | discovered, but the client is private. The adversary will be | |||
| <t> | listening to the network traffic, trying to identify the visitors' | |||
| In that scenario, the server is public and wants to be discovered, but | devices and their activity. Identifying devices leads to identifying | |||
| the client is private. The adversary will be listening to the network | people, either for surveillance of these individuals in the physical | |||
| traffic, trying to identify the visitors' devices and their activity. | world or as a preliminary step for a targeted cyber attack.</t> | |||
| Identifying devices leads to identifying people, either for surveillance of | <t>The requirement in that scenario is that the discovery activity | |||
| these individuals in the physical world or as a preliminary step for a targeted | should not disclose the identity of the client.</t> | |||
| cyber attack. | </section> | |||
| </t> | <section anchor="privcliprivserv" numbered="true" toc="default"> | |||
| <t> | <name>Private Client and Private Server</name> | |||
| The requirement in that scenario is that the discovery activity | <t>The second private discovery scenario involves a private client | |||
| should not disclose the identity of the client. | connecting to a private server. A common example would be two people | |||
| </t> | engaging in a collaborative application in a public place, such as | |||
| </section> | an airport's lounge.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <section title="Private Client and Private Server" anchor="privcliprivserv" > | ||||
| <t> | ||||
| The second private discovery scenario involves a private client connecting | ||||
| to a private server. A common example would be two people engaging | ||||
| in a collaborative application in a public place, such as an airport's lounge. | ||||
| </t> | ||||
| <t> | ||||
| <figure> | ||||
| <artwork> | ||||
| ( Taking notes: | ( Taking notes: | |||
| ( David is meeting | ( David is meeting | |||
| ( with Stuart | ( with Stuart. | |||
| ~~~~~~~~~~~ | ~~~~~~~~~~~ | |||
| o | o | |||
| ___ ___ o ___ | ___ ___ o ___ | |||
| / \ / \ _|___|_ | / \ / \ _|___|_ | |||
| | | server client | | |* *| | | | server client | | |* *| | |||
| \_/ __ __ \_/ \_/ | \_/ __ __ \_/ \_/ | |||
| | / / Discovery \ \ | | | | / / Discovery \ \ | | | |||
| /|\ /_/ <-----------> \_\ /|\ /|\ | /|\ /_/ <-----------> \_\ /|\ /|\ | |||
| / | \__/ \__/ | \ / | \ | / | \__/ \__/ | \ / | \ | |||
| / | | \ / | \ | / | | \ / | \ | |||
| / | | \ / | \ | / | | \ / | \ | |||
| / \ / \ / \ | / \ / \ / \ | |||
| / \ / \ / \ | / \ / \ / \ | |||
| / \ / \ / \ | / \ / \ / \ | |||
| / \ / \ / \ | / \ / \ / \ | |||
| / \ / \ / \ | / \ / \ / \ | |||
| David Stuart Adversary | David Stuart Adversary | |||
| </artwork> | ]]></artwork> | |||
| </figure> | <t>In that scenario, the collaborative application on one of the | |||
| </t> | devices will act as a server, and the application on the other | |||
| <t> | device will act as a client. The server wants to be discovered by | |||
| In that scenario, the collaborative application on one of the devices will | the client but has no desire to be discovered by anyone else. The | |||
| act as a server, and the application on the other device will act as a client. | adversary will be listening to network traffic, attempting to | |||
| The server wants to be discovered by the client, but has no desire to | discover the identity of devices as in the first scenario and also | |||
| be discovered by anyone else. The adversary will be listening to | attempting to discover the patterns of traffic, as these patterns | |||
| network traffic, attempting to discover the identity of devices as in | reveal the business and social interactions between the owners of | |||
| the first scenario, and also attempting to discover the patterns of traffic, | the devices.</t> | |||
| as these patterns reveal the business and social interactions between | <t>The requirement in that scenario is that the discovery activity | |||
| the owners of the devices. | should not disclose the identity of either the client or the server | |||
| </t> | nor reveal the business and social interactions between the owners | |||
| <t> | of the devices.</t> | |||
| The requirement in that scenario is that the discovery activity | </section> | |||
| should not disclose the identity of either the client or the server, | <section anchor="wearcliserv" numbered="true" toc="default"> | |||
| nor reveal the business and social interactions between the owners of | <name>Wearable Client and Server</name> | |||
| the devices. | <t>The third private discovery scenario involves wearable devices. A | |||
| </t> | typical example would be the watch on someone's wrist connecting to | |||
| </section> | the phone in their pocket.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <section title="Wearable Client and Server" anchor="wearcliserv" > | ||||
| <t> | ||||
| The third private discovery scenario involves wearable devices. | ||||
| A typical example would be the watch on someone's wrist connecting | ||||
| to the phone in their pocket. | ||||
| </t> | ||||
| <t> | ||||
| <figure> | ||||
| <artwork> | ||||
| ( Taking notes: | ( Taking notes: | |||
| ( David is here. His watch is | ( David is here. His watch is | |||
| ( talking to his phone | ( talking to his phone. | |||
| ~~~~~~~~~~~ | ~~~~~~~~~~~ | |||
| o | o | |||
| ___ o ___ | ___ o ___ | |||
| / \ _|___|_ | / \ _|___|_ | |||
| | | client |* *| | | | client |* *| | |||
| \_/ \_/ | \_/ \_/ | |||
| | _/ | | | _/ | | |||
| /|\ // /|\ | /|\ // /|\ | |||
| / | \__/ ^ / | \ | / | \__/ ^ / | \ | |||
| / |__ | Discovery / | \ | / |__ | Discovery / | \ | |||
| / |\ \ v / | \ | / |\ \ v / | \ | |||
| / \\_\ / \ | / \\_\ / \ | |||
| / \ server / \ | / \ server / \ | |||
| / \ / \ | / \ / \ | |||
| / \ / \ | / \ / \ | |||
| / \ / \ | / \ / \ | |||
| David Adversary | David Adversary | |||
| </artwork> | ]]></artwork> | |||
| </figure> | <t>This third scenario is in many ways similar to the second | |||
| </t> | scenario. It involves two devices, one acting as server and the | |||
| <t> | other acting as client, and it leads to the same requirement of the | |||
| This third scenario is in many ways similar to the second scenario. It involves | discovery traffic not disclosing the identity of either the client | |||
| two devices, one acting as server and the other acting as client, and it | or the server. The main difference is that the devices are managed | |||
| leads to the same requirement of the discovery traffic not disclosing the | by a single owner, which can lead to different methods for | |||
| identity of either the client or the server. The main difference is that | establishing secure relations between the devices. There is also an | |||
| the devices are managed by a single owner, which can lead to different | added emphasis on hiding the type of devices that the person | |||
| methods for establishing secure relations between the devices. There is | wears.</t> | |||
| also an added emphasis on hiding the type of devices that the person | <t>In addition to tracking the identity of the owner of the devices, | |||
| wears. | the adversary is interested in the characteristics of the devices, | |||
| </t> | such as type, brand, and model. Identifying the type of device can | |||
| lead to further attacks, from theft to device-specific hacking. The | ||||
| <t> | combination of devices worn by the same person will also provide a | |||
| In addition to tracking the identity of the owner of the devices, the adversary | "fingerprint" of the person, risking identification.</t> | |||
| is interested in the characteristics of the devices, such as type, brand, and mo | <t>This scenario also represents the general case of bringing | |||
| del. | private Internet-of-Things (IoT) devices into public places. A | |||
| Identifying the type of device can lead to further attacks, from theft to | wearable IoT device might | |||
| device-specific hacking. The combination of devices worn by the same person | act as a DNS-SD/mDNS client, which allows attackers to infer | |||
| will also provide a "fingerprint" of the person, risking identification. | information about devices' owners. While the attacker might be a | |||
| </t> | person, as in the example figure, this could also be abused for | |||
| large-scale data collection installing stationary | ||||
| <t> | IoT-device-tracking | |||
| This scenario also represents the general case of bringing private IoT devices i | servers in frequented public places.</t> | |||
| nto public places. | <t>The issues described in <xref target="privclipubserv" | |||
| A wearable IoT device might act as a DNS-SD/mDNS client which allows attackers t | format="default"/>, such as identifying people or using the | |||
| o infer information about devices' owners. | information for targeted attacks, apply here too.</t> | |||
| While the attacker might be a person as in the example figure, | </section> | |||
| this could also be abused for large scale data collection installing stationary | </section> | |||
| IoT-device-tracking servers in frequented public places. | <section anchor="analysis" numbered="true" toc="default"> | |||
| </t> | <name>DNS-SD Privacy Considerations</name> | |||
| <t>While the discovery process illustrated in the scenarios in <xref | ||||
| <t> | target="scenarios" format="default"/> most likely would be based on | |||
| The issues described in <xref target="privclipubserv" /> such as identifying | <xref target="RFC6762" format="default"/> as a means for making | |||
| people or using the information for targeted attacks apply here too. | service information available, this document considers all kinds of | |||
| </t> | means for making DNS-SD resource records available. These means | |||
| comprise of but are not limited to mDNS <xref target="RFC6762" | ||||
| </section> | format="default"/>, DNS servers (<xref target="RFC1033" | |||
| </section> | format="default"/>, <xref target="RFC1034" format="default"/>, and <xref | |||
| target="RFC1035" format="default"/>), the use of Service Registration | ||||
| <section title="DNS-SD Privacy Considerations" anchor="analysis"> | Protocol (SRP) <xref | |||
| target="I-D.ietf-dnssd-srp" format="default"/>, and multi-link <xref | ||||
| <t> | target="RFC7558" format="default"/> networks.</t> | |||
| While the discovery process illustrated in the scenarios in <xref target="scen | <t>The discovery scenarios in <xref target="scenarios" | |||
| arios"/> most likely | format="default"/> illustrate three separate abstract privacy | |||
| would be based on <xref target="RFC6762" /> as a means for making service info | requirements that vary based on the use case. These are not limited to | |||
| rmation available, | mDNS.</t> | |||
| this document considers all kinds of means for making DNS-SD resource records | <ol spacing="normal" type="1"> | |||
| available. | <li>Client identity privacy: Client identities are not leaked during | |||
| These means comprise but are not limited to mDNS <xref target="RFC6762" />, | service discovery or use.</li> | |||
| DNS servers (<xref target="RFC1033"/> <xref target="RFC1034"/>, <xref target=" | <li>Multi-entity, mutual client and server identity privacy: Neither | |||
| RFC1035"/>), | client nor server identities are leaked during service discovery or | |||
| using SRP <xref target="I-D.ietf-dnssd-srp"/>, and multi-link <xref target="RF | use.</li> | |||
| C7558"/> networks. | <li>Single-entity, mutual client and server identity privacy: | |||
| </t> | Identities of clients and servers owned and managed by the same | |||
| legal person are not leaked during service discovery or use.</li> | ||||
| <t>The discovery scenarios in <xref target="scenarios"/> illustrate three | </ol> | |||
| separate abstract privacy requirements that vary based on the use case. These ar | <t>In this section, we describe aspects of DNS-SD that make these | |||
| e not limited to mDNS. | requirements difficult to achieve in practice. While it is intended to | |||
| <list style="numbers"> | be thorough, it is not possible to be exhaustive.</t> | |||
| <t>Client identity privacy: Client identities are not leaked during service di | <t>Client identity privacy, if not addressed properly, can be thwarted | |||
| scovery | by a passive attacker (see <xref target="threatmodel" | |||
| or use.</t> | format="default"/>). The type of passive attacker necessary depends on | |||
| <t>Multi-entity, mutual client and server identity privacy: Neither client nor | the means of making service information available. Information | |||
| server identities are | conveyed via multicast messages can be obtained by an on-link | |||
| leaked during service discovery or use.</t> | attacker. Unicast messages are harder to access, | |||
| <t>Single-entity, mutual client and server identity privacy: Identities of cli | but if the transmission is not encrypted they could still be accessed by | |||
| ents and servers | an attacker with access to network routers or bridges. Using multi-link service | |||
| owned and managed by the same legal person are not leaked during service dis | discovery | |||
| covery or use.</t> | solutions <xref target="RFC7558" format="default"/>, external | |||
| </list> | attackers have to be taken into consideration as well, e.g., when | |||
| </t> | relaying multicast messages to other links.</t> | |||
| <t>Server identity privacy can be thwarted by a passive attacker in | ||||
| <t> | the same way as client identity privacy. Additionally, active | |||
| In this section, we describe aspects of DNS-SD that make these requirements | attackers querying for information have to be taken into consideration | |||
| difficult to achieve in practice. | as well. This is mainly relevant for unicast-based discovery, where | |||
| While it is intended to be thorough, it is not possible to be exhaustive. | listening to discovery traffic requires a MITM attacker; however, an | |||
| </t> | external active attacker might be able to learn the server identity by | |||
| just querying for service information, e.g., via DNS.</t> | ||||
| <t> | <section anchor="RRs" numbered="true" toc="default"> | |||
| Client identity privacy, if not addressed properly, can be thwarted by a passi | <name>Information Made Available Via DNS-SD Resource Records</name> | |||
| ve attacker (see <xref target="threatmodel"/>). | <t>DNS-Based Service Discovery (DNS-SD) is defined in <xref | |||
| The type of passive attacker necessary depends on the means of making service | target="RFC6763" format="default"/>. It allows nodes to publish the | |||
| information available. | availability of an instance of a service by inserting specific | |||
| Information conveyed via multicast messages can be obtained by an on-link atta | records in the DNS (<xref target="RFC1033" format="default"/>, <xref | |||
| cker. Unicast messages are | target="RFC1034" format="default"/>, and <xref target="RFC1035" | |||
| easy to access if the transmission is not encrypted, but could still be access | format="default"/>) or by publishing these records locally using | |||
| ed by an attacker with | multicast DNS (mDNS) <xref target="RFC6762" | |||
| access to network routers or bridges. Using multi-link service discovery solut | format="default"/>. Available services are described using three | |||
| ions <xref target="RFC7558"/>, | types of records:</t> | |||
| external attackers have to be taken into consideration as well, e.g., when rel | <dl newline="true" spacing="normal"> | |||
| aying multicast messages to other links. | <dt>PTR Record</dt> | |||
| </t> | <dd>Associates a service type in the domain with an "instance" | |||
| name of this service type.</dd> | ||||
| <t> | <dt>SRV Record</dt> | |||
| Server identity privacy can be thwarted by a passive attacker in the same way | <dd>Provides the node name, port number, priority and weight | |||
| as client identity privacy. | associated with the service instance, in conformance with <xref | |||
| Additionally, active attackers querying for information have to be taken into | target="RFC2782" format="default"/>.</dd> | |||
| consideration as well. | <dt>TXT Record</dt> | |||
| This is mainly relevant for unicast-based discovery, where listening to discov | <dd>Provides a set of attribute-value pairs describing specific | |||
| ery traffic requires a | properties of the service instance.</dd> | |||
| MITM attacker; however, an external active attacker might be able to learn the | </dl> | |||
| server identity by just querying for | </section> | |||
| service information, e.g. via DNS. | <section anchor="instanceLeak" numbered="true" toc="default"> | |||
| </t> | <name>Privacy Implication of Publishing Service Instance Names</name> | |||
| <t>In the first phase of discovery, clients obtain all PTR records | ||||
| <section title="Information made available via DNS-SD Resource Records" anchor=" | associated with a service type in a given naming domain. Each PTR | |||
| RRs"> | record contains a Service Instance Name defined in | |||
| <xref target="RFC6763" sectionFormat="of" section="4"/>:</t> | ||||
| <t> | <sourcecode><![CDATA[ | |||
| DNS-Based Service Discovery (DNS-SD) is defined in <xref target="RFC6763" />. | Service Instance Name = <Instance> . <Service> . <Domain> | |||
| It allows nodes to publish the availability of an instance of a service by | ]]></sourcecode> | |||
| inserting specific records in the DNS (<xref target="RFC1033"/>, | <t>The <Instance> portion of the Service Instance Name is | |||
| <xref target="RFC1034"/>, <xref target="RFC1035"/>) or by publishing | meant to convey enough information for users of discovery clients to | |||
| these records locally using | easily select the desired service instance. Nodes that use DNS-SD | |||
| multicast DNS (mDNS) <xref target="RFC6762"/>. | over mDNS <xref target="RFC6762" format="default"/> in a mobile | |||
| Available services are described using three types of records: | environment will rely on the specificity of the instance name to | |||
| </t> | identify the desired service instance. In our example of users | |||
| <t> | wanting to upload pictures to a laptop in an Internet cafe, the list | |||
| <list style="hanging"> | of available service instances may look like:</t> | |||
| <t hangText="PTR Record:">Associates a service type in the domain with | <sourcecode> | |||
| an "instance" name of this service type. | ||||
| </t> | ||||
| <t hangText="SRV Record:">Provides the node name, port number, priority and | ||||
| weight associated with the service instance, in conformance with <xref target="R | ||||
| FC2782" />. | ||||
| </t> | ||||
| <t hangText="TXT Record:">Provides a set of attribute-value pairs describing | ||||
| specific properties of the service instance. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <section title="Privacy Implication of Publishing Service Instance Names" anchor | ||||
| ="instanceLeak" > | ||||
| <t> | ||||
| In the first phase of discovery, clients obtain all PTR records associated with | ||||
| a service type | ||||
| in a given naming domain. Each PTR record contains a Service Instance Name defin | ||||
| ed in Section | ||||
| 4 of <xref target="RFC6763" />: | ||||
| </t> | ||||
| <t> | ||||
| <figure> | ||||
| <artwork> | ||||
| Service Instance Name = <Instance> . <Service> . <Domain> | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| <t> | ||||
| The <Instance> portion of the Service Instance Name is meant to convey | ||||
| enough information for users of discovery clients to easily select the desired s | ||||
| ervice instance. | ||||
| Nodes that use DNS-SD over mDNS <xref target="RFC6762" /> in a mobile environmen | ||||
| t will rely on the specificity | ||||
| of the instance name to identify the desired service instance. | ||||
| In our example of users wanting to upload pictures to a laptop in an Internet Ca | ||||
| fe, the list of | ||||
| available service instances may look like: | ||||
| </t> | ||||
| <t> | ||||
| <figure> | ||||
| <artwork> | ||||
| Alice's Images . _imageStore._tcp . local | Alice's Images . _imageStore._tcp . local | |||
| Alice's Mobile Phone . _presence._tcp . local | Alice's Mobile Phone . _presence._tcp . local | |||
| Alice's Notebook . _presence._tcp . local | Alice's Notebook . _presence._tcp . local | |||
| Bob's Notebook . _presence._tcp . local | Bob's Notebook . _presence._tcp . local | |||
| Carol's Notebook . _presence._tcp . local | Carol's Notebook . _presence._tcp . local | |||
| </artwork> | </sourcecode> | |||
| </figure> | <t>Alice will see the list on her phone and understand intuitively | |||
| </t> | that she should pick the first item. The discovery will "just | |||
| <t> | work". (Note that our examples of service names conform to the | |||
| Alice will see the list on her phone and understand intuitively that she should | specification in <xref target="RFC6763" sectionFormat="of" | |||
| pick the first item. The discovery will "just work". (Note that our examples of | section="4.1"/> but may require some character escaping when | |||
| service names conform to the specification in section 4.1 of <xref target="RFC67 | entered in conventional DNS software.)</t> | |||
| 63" />, | <t>However, DNS-SD/mDNS will reveal to anybody that Alice is | |||
| but may require some character escaping when entered in conventional DNS softwar | currently visiting the Internet cafe. It further discloses the fact | |||
| e.) | that she uses two devices, shares an image store, and uses a chat | |||
| </t> | application supporting the _presence protocol on both of her | |||
| <t> | devices. She might currently chat with Bob or Carol, as they are | |||
| However, DNS-SD/mDNS will reveal to anybody that Alice is currently visiting the | also using a _presence supporting chat application. This information | |||
| Internet Cafe. | is not just available to devices actively browsing for and offering | |||
| It further discloses the fact that she uses two devices, shares an image store, | services but to anybody passively listening to the network traffic, | |||
| and uses a chat application supporting the | i.e., a passive on-link attacker.</t> | |||
| _presence protocol on both of her devices. She might currently chat with Bob or | <t>There is, of course, also no authentication requirement to claim | |||
| Carol, | a particular instance name, so an active attacker can provide | |||
| as they are also using a _presence supporting chat application. | resources that claim to be Alice's but are not.</t> | |||
| This information is not just available to devices actively browsing for and offe | </section> | |||
| ring | <section numbered="true" toc="default"> | |||
| services, but to anybody passively listening to the network traffic, i.e. a pass | <name>Privacy Implication of Publishing Node Names</name> | |||
| ive on-link attacker. | <t>The SRV records contain the DNS name of the node publishing the | |||
| </t> | service. Typical implementations construct this DNS name by | |||
| <t> | concatenating the "hostname" of the node with the name of the local | |||
| There is, of course, also no authentication requirement to claim a | domain. The privacy implications of this practice are reviewed in | |||
| particular instance name, so an active attacker can provide resources | <xref target="RFC8117" format="default"/>. Depending on naming | |||
| that claim to be Alice's but are not. | practices, the hostname is either a strong identifier of the | |||
| </t> | device or, at a minimum, a partial identifier. It enables tracking of | |||
| </section> | both the device and, by extension, the device's owner.</t> | |||
| </section> | ||||
| <section title="Privacy Implication of Publishing Node Names"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Privacy Implication of Publishing Service Attributes</name> | |||
| The SRV records contain the DNS name of the node publishing the | <t>The TXT record's attribute-value pairs contain information on the | |||
| service. Typical implementations construct this DNS name by | characteristics of the corresponding service instance. This in turn | |||
| concatenating the "host name" of the node with the name of the | reveals information about the devices that publish services. The | |||
| local domain. The privacy implications of this | amount of information varies widely with the particular service and | |||
| practice are reviewed in <xref target="RFC8117" />. | its implementation:</t> | |||
| Depending on naming practices, the host name is either a strong | <ul spacing="normal"> | |||
| identifier of the device, or at a minimum a partial identifier. | <li>Some attributes, such as the paper size available in a | |||
| It enables tracking of both the device, and, by extension, the device's owner. | printer, are the same on many devices and thus only provide | |||
| </t> | limited information to a tracker.</li> | |||
| </section> | <li>Attributes that have free-form values, such as the name of a | |||
| directory, may reveal much more information.</li> | ||||
| <section title="Privacy Implication of Publishing Service Attributes"> | </ul> | |||
| <t> | <t>Combinations of individual attributes have more information power | |||
| The TXT record's attribute-value pairs contain information on the characteristic | than specific attributes and can potentially be used for | |||
| s of | "fingerprinting" a specific device.</t> | |||
| the corresponding service instance. | <t>Information contained in TXT records not only breaches privacy by | |||
| This in turn reveals information | making devices trackable but might directly contain private | |||
| about the devices that publish services. The amount of information | information about the user. For instance, the _presence service | |||
| varies widely with the particular service and its implementation: | reveals the "chat status" to everyone in the same network. Users | |||
| </t> | might not be aware of that.</t> | |||
| <t> | <t>Further, TXT records often contain version information about | |||
| <list style="symbols"> | services, allowing potential attackers to identify devices running | |||
| <t> | exploit-prone versions of a certain service.</t> | |||
| Some attributes, such as the paper size available in a printer, are the | </section> | |||
| same on many devices, and thus only provide limited information | <section anchor="serverFingerprint" numbered="true" toc="default"> | |||
| to a tracker. | <name>Device Fingerprinting</name> | |||
| </t> | <t>The combination of information published in DNS-SD has the | |||
| <t> | potential to provide a "fingerprint" of a specific device. Such | |||
| Attributes that have freeform values, such as the name of a directory, | information includes:</t> | |||
| may reveal much more information. | <ul spacing="normal"> | |||
| </t> | <li>A list of services published by the device, which can be | |||
| </list> | retrieved because the SRV records will point to the same | |||
| </t> | hostname.</li> | |||
| <t> | <li>Specific attributes describing these services.</li> | |||
| Combinations of individual attributes have more information power than specific | <li>Port numbers used by the services.</li> | |||
| attributes, | <li>Priority and weight attributes in the SRV records.</li> | |||
| and can potentially be used for "fingerprinting" a specific device. | </ul> | |||
| </t> | <t>This combination of services and attributes will often be | |||
| sufficient to identify the version of the software running on a | ||||
| <t> | device. If a device publishes many services with rich sets of | |||
| Information contained in TXT records not only breaches privacy by making devices | attributes, the combination may be sufficient to identify the | |||
| trackable, but might directly contain private information about the user. | specific device and track its owner.</t> | |||
| For instance the _presence service reveals the "chat status" to everyone in the | <t>An argument is sometimes made that devices providing services can | |||
| same network. | be identified by observing the local traffic and that trying to | |||
| Users might not be aware of that. | hide the presence of the service is futile. However, there are good | |||
| </t> | reasons for the discovery service layer to avoid unnecessary | |||
| exposure:</t> | ||||
| <t> | <ol spacing="normal" type="1"> | |||
| Further, TXT records often contain version information about services, allowin | <li>Providing privacy at the discovery layer is of the essence for | |||
| g potential attackers | enabling automatically configured privacy-preserving network | |||
| to identify devices running exploit-prone versions of a certain service. | applications. Application layer protocols are not forced to | |||
| </t> | leverage the offered privacy, but if device tracking is not | |||
| prevented at the deeper layers, including the service discovery | ||||
| </section> | layer, obfuscating a certain service's protocol at the application | |||
| layer is futile.</li> | ||||
| <section title="Device Fingerprinting" anchor="serverFingerprint"> | <li>Further, in the case of mDNS-based discovery, even if the | |||
| <t> | application layer does not protect privacy, services are typically | |||
| The combination of information published in DNS-SD has the potential to | provided via unicast, which requires a MITM attacker, whereas | |||
| provide a "fingerprint" of a specific device. Such information includes: | identifying services based on multicast discovery messages just | |||
| </t> | requires an on-link attacker.</li> | |||
| <t> | </ol> | |||
| <list style="symbols"> | <t>The same argument can be extended to say that the pattern of | |||
| <t> | services offered by a device allows for fingerprinting the | |||
| List of services published by the device, which can be retrieved because the | device. This may or may not be true, since we can expect that | |||
| SRV records will point to the same host name. | services will be designed or updated to avoid leaking | |||
| </t> | fingerprints. In any case, the design of the discovery service | |||
| <t> | should avoid making a bad situation worse and should, as much as | |||
| Specific attributes describing these services. | possible, avoid providing new fingerprinting information.</t> | |||
| </t> | </section> | |||
| <t> | <section anchor="clientPrivacy" numbered="true" toc="default"> | |||
| Port numbers used by the services. | <name>Privacy Implication of Discovering Services</name> | |||
| </t> | <t>The consumers of services engage in discovery and in doing so | |||
| <t> | reveal some information, such as the list of services they are | |||
| Priority and weight attributes in the SRV records. | interested in and the domains in which they are looking for the | |||
| </t> | services. When the clients select specific instances of services, | |||
| </list> | they reveal their preference for these instances. This can be benign | |||
| </t> | if the service type is very common, but it could be more problematic | |||
| <t> | for sensitive services, such as some private messaging services.</t> | |||
| This combination of services and attributes will often be sufficient to identify | <t>One way to protect clients would be to somehow encrypt the | |||
| the version of the software running on a device. If a device publishes | requested service types. Of course, just as we noted in <xref | |||
| many services with rich sets of attributes, the combination may be | target="serverFingerprint" format="default"/>, traffic analysis can | |||
| sufficient to identify the specific device and track its owner. | often reveal the service.</t> | |||
| </t> | </section> | |||
| </section> | ||||
| <t> | <section numbered="true" toc="default"> | |||
| An argument is sometimes made that devices providing services can be identified | <name>Security Considerations</name> | |||
| by observing the local traffic, and that trying to hide the presence of the serv | <t>For each of the operations described above, we must also consider | |||
| ice | security threats we are concerned about.</t> | |||
| is futile. However, there are good | <section numbered="true" toc="default"> | |||
| reasons for the discovery service layer to avoid unnecessary exposure: | <name>Authenticity, Integrity, and Freshness</name> | |||
| <list style="numbers"> | <t>Can devices (both servers and clients) trust the information they | |||
| <t> | receive? Has it been modified in flight by an adversary? Can | |||
| Providing privacy at the discovery layer is of the essence for enabling automati | devices trust the source of the information? Is the source of | |||
| cally configured privacy-preserving | information fresh, i.e., not replayed? Freshness may or may not be | |||
| network applications. Application layer protocols are not forced to leverage the | required depending on whether the discovery process is meant to be | |||
| offered privacy, | online. In some cases, publishing discovery information to a shared | |||
| but if device tracking is not prevented at the deeper layers, including the serv | directory or registry, rather than to each online recipient through | |||
| ice discovery layer, | a broadcast channel, may suffice.</t> | |||
| obfuscating a certain service's protocol at the application layer is futile. | </section> | |||
| </t> | <section numbered="true" toc="default"> | |||
| <t> | <name>Confidentiality</name> | |||
| Further, in the case of mDNS based discovery, even if the application layer does | <t>Confidentiality is about restricting information access to only | |||
| not protect privacy, | authorized individuals. Ideally, this should only be the appropriate | |||
| typically services are provided via unicast which requires a MITM attacker, | trusted parties, though it can be challenging to define who are "the | |||
| while identifying services based on multicast discovery messages just requires a | appropriate trusted parties." In some use cases, this may mean that | |||
| n on-link attacker. | only mutually authenticated and trusting clients and servers can | |||
| </t> | read messages sent for one another. The process of service discovery | |||
| </list> | in particular is often used to discover new entities that the device | |||
| did not previously know about. It may be tricky to work out how a | ||||
| The same argument can be extended to say that the pattern of services | device can have an established trust relationship with a new entity | |||
| offered by a device allows for fingerprinting the device. This may or may not | it has never previously communicated with.</t> | |||
| be true, since we can expect that services will be designed or updated to | </section> | |||
| avoid leaking fingerprints. In any case, the design of the discovery | <section numbered="true" toc="default"> | |||
| service should avoid making a bad situation worse, and should as much as | <name>Resistance to Dictionary Attacks</name> | |||
| possible avoid providing new fingerprinting information. | <t>It can be tempting to use (publicly computable) hash functions to | |||
| </t> | obscure sensitive identifiers. This transforms a sensitive unique | |||
| </section> | identifier, such as an email address, into a "scrambled" but still | |||
| unique identifier. Unfortunately, simple solutions may be vulnerable | ||||
| <section title="Privacy Implication of Discovering Services" anchor="clientPriva | to offline dictionary attacks.</t> | |||
| cy" > | </section> | |||
| <t> | <section numbered="true" toc="default"> | |||
| The consumers of services engage in discovery, and in doing so | <name>Resistance to Denial-of-Service Attacks</name> | |||
| reveal some information such as the list of services they | <t>In any protocol where the receiver of messages has to perform | |||
| are interested in and the domains in which they are looking for the | cryptographic operations on those messages, there is a risk of a | |||
| services. When the clients select specific instances of services, | brute-force flooding attack causing the receiver to expend excessive | |||
| they reveal their preference for these instances. This can be benign if | amounts of CPU time and, where applicable, battery power just | |||
| the service type is very common, but it could be more problematic | processing and discarding those messages.</t> | |||
| for sensitive services, such as some private messaging services. | <t>Also, amplification attacks have to be taken into | |||
| </t> | consideration. Messages with larger payloads should only be sent as | |||
| <t> | an answer to a query sent by a verified client.</t> | |||
| One way to protect clients would be to somehow encrypt the requested service typ | </section> | |||
| es. | <section numbered="true" toc="default"> | |||
| Of course, just as we noted in <xref target="serverFingerprint"/>, traffic | <name>Resistance to Sender Impersonation</name> | |||
| analysis can often reveal the service. | <t>Sender impersonation is an attack wherein messages, such as | |||
| </t> | service offers, are forged by entities who do not possess the | |||
| </section> | corresponding secret key material. These attacks may be used to | |||
| </section> | learn the identity of a communicating party, actively or | |||
| passively.</t> | ||||
| <section title="Security Considerations"> | </section> | |||
| <t>For each of the operations described above, we must also consider security | <section numbered="true" toc="default"> | |||
| threats we are concerned about.</t> | <name>Sender Deniability</name> | |||
| <section title="Authenticity, Integrity & Freshness"> | <t>Deniability of sender activity, e.g., of broadcasting a discovery | |||
| <t>Can devices (both servers and clients) trust the information they receive | request, may be desirable or necessary in some use cases. This | |||
| ? | property ensures that eavesdroppers cannot prove senders issued a | |||
| Has it been modified in flight by an adversary? | specific message destined for one or more peers. </t> | |||
| Can devices trust the source of the information? | </section> | |||
| Is the source of information fresh, i.e., not replayed? | </section> | |||
| Freshness may or may not be required depending on whether the | <section numbered="true" toc="default"> | |||
| discovery process is meant to be online. In some cases, publishing | <name>Operational Considerations</name> | |||
| discovery information to a shared directory or registry, | <section numbered="true" toc="default"> | |||
| rather than to each online recipient through a broadcast channel, | <name>Power Management</name> | |||
| may suffice.</t> | <t>Many modern devices, especially battery-powered devices, use | |||
| </section> | power management techniques to conserve energy. One such technique | |||
| is for a device to transfer information about itself to a proxy, | ||||
| <section title="Confidentiality"> | which will act on behalf of the device for some functions while the | |||
| <t>Confidentiality is about restricting information access to only | device itself goes to sleep to reduce power consumption. When the | |||
| authorized individuals. Ideally this should only be the appropriate | proxy determines that some action is required, which only the device | |||
| trusted parties, though it can be challenging to define who are "the | itself can perform, the proxy may have some way to wake the device, | |||
| appropriate trusted parties." In some use cases, this may mean that only | as described for example in <xref target="SLEEP-PROXY" | |||
| mutually authenticated and trusting clients and servers can read messages | format="default"/>.</t> | |||
| sent for one another. | <t>In many cases, the device may not trust the network proxy | |||
| The process of service discovery in particular is often used to discover | sufficiently to share all its confidential key material with the | |||
| new entities that the device did not previously know about. | proxy. This poses challenges for combining private discovery that | |||
| It may be tricky to work out how a device can have an established trust | relies on per-query cryptographic operations with energy-saving | |||
| relationship with a new entity it has never previously communicated with. | techniques that rely on having (somewhat untrusted) network proxies | |||
| </t> | answer queries on behalf of sleeping devices.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Resistance to Dictionary Attacks"> | <name>Protocol Efficiency</name> | |||
| <t>It can be tempting to use (publicly computable) hash functions to obscure | <t>Creating a discovery protocol that has the desired security | |||
| sensitive identifiers. | properties may result in a design that is not efficient. To perform | |||
| This transforms a sensitive unique identifier such as an email address | the necessary operations, the protocol may need to send and receive a | |||
| into a "scrambled" but still unique identifier. Unfortunately simple solutio | large number of network packets or require an inordinate amount of | |||
| ns | multicast transmissions. This may consume an unreasonable amount of | |||
| may be vulnerable to offline dictionary attacks.</t> | network capacity, particularly problematic when it is a shared | |||
| </section> | wireless spectrum. Further, it may cause an unnecessary level of | |||
| power consumption, which is particularly problematic on battery | ||||
| <section title="Resistance to Denial-of-Service Attacks"> | devices and may result in the discovery process being slow.</t> | |||
| <t>In any protocol where the receiver of messages has to perform cryptograph | <t>It is a difficult challenge to design a discovery protocol that | |||
| ic | has the property of obscuring the details of what it is doing from | |||
| operations on those messages, there is a risk of a brute-force flooding | unauthorized observers while also managing to perform | |||
| attack causing the receiver to expend excessive amounts of CPU time | efficiently.</t> | |||
| and, where appliciable, battery power just processing and discarding those m | </section> | |||
| essages.</t> | <section numbered="true" toc="default"> | |||
| <name>Secure Initialization and Trust Models</name> | ||||
| <t> | <t>One of the challenges implicit in the preceding discussions is | |||
| Also, amplification attacks have to be taken into consideration. | that whenever we discuss "trusted entities" versus "untrusted | |||
| Messages with larger payloads should only be sent as an answer to | entities", there needs to be some way that trust is initially | |||
| a query sent by a verified client. | established to convert an "untrusted entity" into a "trusted | |||
| </t> | entity".</t> | |||
| </section> | <t>The purpose of this document is not to define the specific way in | |||
| which trust can be established. Protocol designers may rely on a | ||||
| <section title="Resistance to Sender Impersonation"> | number of existing technologies, including PKI, Trust On First Use | |||
| <t>Sender impersonation is an attack wherein messages such as service offers | (TOFU), or the use of a short passphrase or PIN with cryptographic | |||
| are forged | algorithms, such as Secure Remote Password (SRP) <xref | |||
| by entities who do not possess the corresponding secret key material. These | target="RFC5054" format="default"></xref> or a | |||
| attacks | Password-Authenticated Key | |||
| may be used to learn the identity of a communicating party, actively or pass | Exchange like J-PAKE <xref target="RFC8236" | |||
| ively.</t> | format="default"></xref> using a Schnorr Non-interactive | |||
| </section> | Zero-Knowledge Proof <xref target="RFC8235" | |||
| format="default"></xref>.</t> | ||||
| <section title="Sender Deniability"> | <t>Protocol designers should consider a specific usability pitfall | |||
| <t>Deniability of sender activity, e.g., of broadcasting a discovery request | when trust is established immediately prior to performing | |||
| , may be | discovery. Users will have a tendency to "click OK" in order to | |||
| desirable or necessary in some use cases. This property ensures that eavesdr | achieve their task. This implicit vulnerability is avoided if the | |||
| oppers | trust establishment requires more significant participation of the | |||
| cannot prove senders issued a specific message destined for one or more peer | user, such as entering a password or PIN.</t> | |||
| s. </t> | </section> | |||
| </section> | <section numbered="true" toc="default"> | |||
| </section> | <name>External Dependencies</name> | |||
| <t>Trust establishment may depend on external parties. Optionally, | ||||
| <section title="Operational Considerations"> | this might involve synchronous communication. Systems that have | |||
| <section title="Power Management"> | such a dependency may be attacked by interfering with communication | |||
| to external dependencies. Where possible, such dependencies should | ||||
| <t>Many modern devices, especially battery-powered devices, | be minimized. Local trust models are best for secure initialization | |||
| use power management techniques to conserve energy. | in the presence of active attackers.</t> | |||
| One such technique is for a device to transfer information about itself | </section> | |||
| to a proxy, which will act on behalf of the device for some functions, | </section> | |||
| while the device itself goes to sleep to reduce power consumption. | </section> | |||
| When the proxy determines that some action is required which only | <section numbered="true" toc="default"> | |||
| the device itself can perform, the proxy may have some way to wake the | <name>Requirements for a DNS-SD Privacy Extension</name> | |||
| device, as described for example in <xref target="SLEEP-PROXY" />.</t> | <t>Given the considerations discussed in the previous sections, we state | |||
| requirements for privacy preserving DNS-SD in the following | ||||
| <t>In many cases, the device may not trust the network proxy | subsections.</t> | |||
| sufficiently to share all its confidential key material with the proxy. | <t>Defining a solution according to these requirements is intended to | |||
| This poses challenges for combining private discovery | lead to a solution that does not transmit privacy-violating DNS-SD | |||
| that relies on per-query cryptographic operations, | messages and further does not open pathways to new attacks against the | |||
| with energy-saving techniques that rely on having (somewhat untrusted) | operation of DNS-SD.</t> | |||
| network proxies answer queries on behalf of sleeping devices.</t> | <t>However, while this document gives advice on which privacy protecting | |||
| mechanisms should be used on deeper-layer network protocols and on how | ||||
| </section> | to actually connect to services in a privacy-preserving way, stating | |||
| corresponding requirements is out of the scope of this document. To | ||||
| <section title="Protocol Efficiency"> | mitigate attacks against privacy on lower layers, both servers and | |||
| clients must use privacy options available at lower layers and, for | ||||
| <t>Creating a discovery protocol that has the desired security | example, avoid publishing static IPv4 or IPv6 addresses or static IEEE | |||
| properties may result in a design that is not efficient. | 802 Media Access Control (MAC) addresses. For services advertised on a | |||
| To perform the necessary operations the protocol may | single network link, | |||
| need to send and receive a large number of network packets, | link-local IP addresses should be used; see <xref target="RFC3927" | |||
| or require an inordinate amount of multicast transmissions. | format="default"/> and <xref target="RFC4291" format="default"/> for | |||
| This may consume an unreasonable amount of network capacity, | IPv4 and IPv6, respectively. Static servers advertising services | |||
| particularly problematic when it is a shared wireless spectrum. | globally via DNS can hide their IP addresses from unauthorized clients | |||
| Further, it may cause an unnecessary level of power consumption | using the split mode topology shown in Encrypted Server Name Indication | |||
| which is particularly problematic on battery devices, | <xref target="I-D.ietf-tls-esni" | |||
| and may result in the discovery process being slow.</t> | format="default"/>. Hiding static MAC addresses can be achieved via MAC | |||
| address randomization (see <xref target="RFC7844" | ||||
| <t>It is a difficult challenge to design a discovery protocol that has the | format="default"/>).</t> | |||
| property of obscuring the details of what it is doing from unauthorized | <section numbered="true" toc="default"> | |||
| observers, while also managing to perform efficiently.</t> | <name>Private Client Requirements</name> | |||
| <t>For all three scenarios described in <xref target="scenarios" | ||||
| </section> | format="default"/>, client privacy requires DNS-SD messages to:</t> | |||
| <ol spacing="normal" type="1"> | ||||
| <section title="Secure Initialization and Trust Models"> | <li>Avoid disclosure of the client's identity, either directly or | |||
| via inference, to nodes other than select servers.</li> | ||||
| <t>One of the challenges implicit in the preceding discussions is | <li>Avoid exposure of linkable identifiers that allow tracing client d | |||
| that whenever we discuss "trusted entities" versus "untrusted entities", | evices.</li> | |||
| there needs to be some way that trust is initially established, | <li>Avoid disclosure of the client's interest in specific service | |||
| to convert an "untrusted entity" into a "trusted entity".</t> | instances or service types to nodes other than select servers.</li> | |||
| </ol> | ||||
| <t>The purpose of this document is not to define the specific way in | <t>When listing and resolving services via current DNS-SD deployments, | |||
| which trust can be established. Protocol designers may rely on a | clients typically disclose their interest in specific services types | |||
| number of existing technologies, including PKI, Trust On First Use (TOFU), | and specific instances of these types, respectively.</t> | |||
| or using a short passphrase or PIN with | <t>In addition to the exposure and disclosure risks noted above, | |||
| cryptographic algorithms such as | protocols and implementations will have to consider fingerprinting | |||
| <xref target="RFC5054">Secure Remote Password (SRP)</xref> | attacks (see <xref target="serverFingerprint" format="default"/>) that | |||
| or a Password Authenticated Key Exchange like | could retrieve similar information.</t> | |||
| <xref target="RFC8236">J-PAKE</xref> | </section> | |||
| using a | <section numbered="true" toc="default"> | |||
| <xref target="RFC8235">Schnorr Non-interactive Zero-Knowledge Proof</xref>. | <name>Private Server Requirements</name> | |||
| </t> | <t>Servers like the "printer" discussed in <xref | |||
| target="privclipubserv" format="default"/> are public, but | ||||
| <t>Protocol designers should consider a specific usability pitfall when | the servers discussed in Sections <xref target="privcliprivserv" | |||
| trust is established immediately prior to performing discovery. Users | format="counter"/> and <xref target="wearcliserv" format="counter"/> | |||
| will have a tendency to "click OK" in order to achieve their task. This | are, by essence, private. | |||
| implicit vulnerability is avoided if the trust establishment requires | Server privacy requires DNS-SD messages | |||
| more significant participation of the user, such as entering a password or P | to:</t> | |||
| IN. | <ol spacing="normal" type="1"> | |||
| </t> | <li> Avoid disclosure of the server's identity, either directly or | |||
| via inference, to nodes other than authorized clients. In | ||||
| </section> | particular, servers must avoid publishing static identifiers, such as | |||
| hostnames or service names. When those fields are required by the | ||||
| <section title="External Dependencies"> | protocol, servers should publish randomized values. (See <xref | |||
| <t>Trust establishment may depend on external parties. | target="RFC8117" format="default"/> for a discussion of hostnames.)</li | |||
| Optionally, this might involve synchronous communication. | > | |||
| Systems which have such a dependency may be attacked by interfering with com | <li>Avoid exposure of linkable identifiers that allow tracing servers. | |||
| munication | </li> | |||
| to external dependencies. Where possible, such dependencies should be minimi | <li>Avoid disclosure to unauthorized clients of Service Instance | |||
| zed. | Names or service types of offered services.</li> | |||
| Local trust models are best for secure initialization in the presence of act | <li>Avoid disclosure to unauthorized clients of information about | |||
| ive attackers.</t> | the services they offer. </li> | |||
| </section> | <li>Avoid disclosure of static IPv4 or IPv6 addresses.</li> | |||
| </ol> | ||||
| </section> | <t>When offering services via current DNS-SD deployments, servers | |||
| </section> | typically disclose their hostnames (SRV, A/AAAA), instance names of | |||
| offered services (PTR, SRV), and information about services | ||||
| <section title="Requirements for a DNS-SD Privacy Extension"> | (TXT). Heeding these requirements protects a server's privacy on the | |||
| DNS-SD level.</t> | ||||
| <t> | <t>The current DNS-SD user interfaces present the list of discovered | |||
| Given the considerations discussed in the previous sections, we | service names to the users and let them pick a service from the | |||
| state requirements for privacy preserving DNS-SD in the following subsection | list. Using random identifiers for service names renders that UI flow | |||
| s. | unusable. Privacy-respecting discovery protocols will have to solve | |||
| </t> | this issue, for example, by presenting authenticated or decrypted | |||
| <t> | service names instead of the randomized values.</t> | |||
| Defining a solution according to these requirements is intended to lead to a | </section> | |||
| solution that | <section numbered="true" toc="default"> | |||
| does not transmit privacy-violating DNS-SD messages and further does not ope | <name>Security and Operation</name> | |||
| n pathways to new attacks against the | <t>In order to be secure and feasible, a DNS-SD privacy extension | |||
| operation of DNS-SD. | needs to consider security and operational requirements including:</t> | |||
| </t> | <ol spacing="normal" type="1"> | |||
| <li>Avoiding significant CPU overhead on nodes or significantly | ||||
| <t> | higher network load. Such overhead or load would make nodes | |||
| However, while this document gives advice on which | vulnerable to denial-of-service attacks. Further, it would increase | |||
| privacy protecting mechanisms should be used on deeper-layer network | power consumption, which is damaging for IoT devices.</li> | |||
| protocols and on how to actually connect to services in a | <li>Avoiding designs in which a small message can trigger a large | |||
| privacy-preserving way, stating corresponding requirements is out of the sco | amount of traffic towards an unverified address, as this could be | |||
| pe of this document. | exploited in amplification attacks.</li> | |||
| To mitigate attacks against privacy on lower layers, | </ol> | |||
| both servers and clients must use privacy options available at lower layers, | </section> | |||
| and for example avoid publishing static IPv4 or IPv6 addresses, or static IE | </section> | |||
| EE 802 MAC addresses. | <section anchor="iana" numbered="true" toc="default"> | |||
| For services advertised on a single network link, link local IP addresses sh | <name>IANA Considerations</name> | |||
| ould be used; see | <t>This document has no IANA actions.</t> | |||
| <xref target="RFC3927" /> and <xref target="RFC4291" /> for IPv4 and IPv6, r | </section> | |||
| espectively. | </middle> | |||
| Static servers advertising services globally via DNS can hide their IP addre | <back> | |||
| sses from | <displayreference target="I-D.ietf-dnssd-srp" to="SRP"/> | |||
| unauthorized clients using the split mode topology shown in <xref target="I- | <displayreference target="I-D.ietf-tls-esni" to="ESNI"/> | |||
| D.ietf-tls-esni"/>. | <references> | |||
| Hiding static MAC addresses can be achieved via MAC address randomization (s | <name>References</name> | |||
| ee <xref target="RFC7844" />). | <references> | |||
| </t> | <name>Normative References</name> | |||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| <section title="Private Client Requirements"> | ence.RFC.6762.xml"/> | |||
| <t> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| For all three scenarios described in <xref target="scenarios" />, client p | ence.RFC.6763.xml"/> | |||
| rivacy | </references> | |||
| requires DNS-SD messages to: | <references> | |||
| <list style="numbers"> | <name>Informative References</name> | |||
| <t> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| Avoid disclosure of the client's identity, either directly or via infe | ence.RFC.1033.xml"/> | |||
| rence, | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| to nodes other than select servers. | ence.RFC.1034.xml"/> | |||
| </t> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| <t> | ence.RFC.1035.xml"/> | |||
| Avoid exposure of linkable identifiers that allow tracing client devic | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| es. | ence.RFC.2782.xml"/> | |||
| </t> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| <t> | ence.RFC.3927.xml"/> | |||
| Avoid disclosure of the client's interest in specific service instance | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| s or service types to | ence.RFC.4291.xml"/> | |||
| nodes other than select servers. | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| </t> | ence.RFC.5054.xml"/> | |||
| </list> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| </t> | ence.RFC.7558.xml"/> | |||
| <t> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| When listing and resolving services via current DNS-SD deployments, client | ence.RFC.7844.xml"/> | |||
| s typically disclose their interest in | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| specific services types and specific instances of these types, respectivel | ence.RFC.8117.xml"/> | |||
| y. | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| </t> | ence.RFC.8235.xml"/> | |||
| <t> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| In addition to the exposure and disclosure risks noted above, protocols an | ence.RFC.8236.xml"/> | |||
| d implementations will have | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | |||
| to consider fingerprinting attacks (see <xref target="serverFingerprint"/> | .ietf-dnssd-srp.xml"/> | |||
| ) that could retrieve similar information. | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | |||
| </t> | .ietf-tls-esni.xml"/> | |||
| </section> | <reference anchor="KW14a" target="https://ieeexplore.ieee.org/xpl/articl | |||
| eDetails.jsp?arnumber=7011331"> | ||||
| <section title="Private Server Requirements"> | <front> | |||
| <t> | <title>Adding Privacy to Multicast DNS Service Discovery</title> | |||
| Servers like the "printer" discussed in scenario 1 are public, but the ser | <author initials="D." surname="Kaiser" fullname="Daniel Kaiser"> | |||
| vers | <organization/> | |||
| discussed in scenarios 2 and 3 are by essence private. | </author> | |||
| Server privacy requires DNS-SD messages to: | <author initials="M." surname="Waldvogel" fullname="Marcel Waldvogel | |||
| </t> | "> | |||
| <t> | <organization/> | |||
| <list style="numbers"> | </author> | |||
| <t> | <date month="September" year="2014"/> | |||
| Avoid disclosure of the server's identity, either directly or via infe | </front> | |||
| rence, | <seriesInfo name="DOI" value="10.1109/TrustCom.2014.107"/> | |||
| to nodes other than authorized clients. | </reference> | |||
| In particular, Servers must avoid publishing static identifiers such a | ||||
| s host names or service names. | ||||
| When those fields are required by the protocol, servers should publish | ||||
| randomized | ||||
| values. (See <xref target="RFC8117" /> for a discussion of host names. | ||||
| ) | ||||
| </t> | ||||
| <t> | ||||
| Avoid exposure of linkable identifiers that allow tracing servers. | ||||
| </t> | ||||
| <t> | ||||
| Avoid disclosure to unauthorized clients of service instance names or | ||||
| service types | ||||
| of offered services. | ||||
| </t> | ||||
| <t> | ||||
| Avoid disclosure to | ||||
| unauthorized clients of information about the services they offer. | ||||
| </t> | ||||
| <t> | ||||
| Avoid disclosure of static IPv4 or IPv6 addresses. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| When offering services via current DNS-SD deployments, servers typically d | ||||
| isclose their hostnames (SRV, A/AAAA), instance names of | ||||
| offered services (PRT, SRV), and information about services (TXT). | ||||
| Heeding these requirements protects a server's privacy on the DNS-SD level | ||||
| . | ||||
| </t> | ||||
| <t> | ||||
| 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 se | ||||
| rvice 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. | ||||
| </t> | ||||
| </section> | ||||
| <section title="Security and Operation"> | ||||
| <t> | ||||
| In order to be secure and feasible, a DNS-SD privacy extension needs to co | ||||
| nsider | ||||
| security and operational requirements including: | ||||
| <list style="numbers"> | ||||
| <t> | ||||
| Avoiding significant CPU overhead on nodes or significantly higher net | ||||
| work load. | ||||
| Such overhead or load would make nodes vulnerable to denial of service | ||||
| attacks. Further, it would increase power consumption which is damagin | ||||
| g for IoT devices. | ||||
| </t> | ||||
| <t> | ||||
| Avoiding designs in which a small message can trigger a large | ||||
| amount of traffic towards an unverified address, as this could be expl | ||||
| oited in amplification attacks. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| <section title="IANA Considerations" anchor="iana"> | ||||
| <t> | ||||
| This draft does not require any IANA action. | ||||
| </t> | ||||
| </section> | ||||
| <section title="Acknowledgments"> | ||||
| <t>This draft incorporates many contributions from Stuart Cheshire and Chris | ||||
| Wood. Thanks to | ||||
| Florian Adamsky for extensive review and suggestions on the organization | ||||
| of the threat | ||||
| model. Thanks to Barry Leiba for an extensive review. Thanks to Roman Dan | ||||
| yliw, Ben Kaduk, | ||||
| Adam Roach and Alissa Cooper for their comments during IESG review. | ||||
| </t> | ||||
| </section> | ||||
| </middle> | ||||
| <back> | ||||
| <references title="Normative References"> | ||||
| &rfc6762; | ||||
| &rfc6763; | ||||
| </references> | ||||
| <references title="Informative References"> | ||||
| &rfc1033; | ||||
| &rfc1034; | ||||
| &rfc1035; | ||||
| &rfc2782; | ||||
| &rfc3927; | ||||
| &rfc4291; | ||||
| &rfc5054; | ||||
| &rfc7558; | ||||
| &rfc7844; | ||||
| &rfc8117; | ||||
| &rfc8235; | ||||
| &rfc8236; | ||||
| &I-D.ietf-dnssd-srp; | ||||
| &I-D.ietf-tls-esni; | ||||
| <reference anchor="KW14a" target="http://ieeexplore.ieee.org/xpl/articleDetails. | ||||
| jsp?arnumber=7011331"> | ||||
| <front> | ||||
| <title>Adding Privacy to Multicast DNS Service Discovery</title> | ||||
| <author initials="D." surname="Kaiser" fullname="Daniel Kaiser"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="M." surname="Waldvogel" fullname="Marcel Waldvogel"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date year="2014"/> | ||||
| </front> | ||||
| <seriesInfo name="DOI" value="10.1109/TrustCom.2014.107"/> | ||||
| </reference> | ||||
| <reference anchor="KW14b" target="http://ieeexplore.ieee.org/xpl/articleDetails. | ||||
| jsp?arnumber=7056899"> | ||||
| <front> | ||||
| <title>Efficient Privacy Preserving Multicast DNS Service Discovery</title> | ||||
| <author initials="D." surname="Kaiser" fullname="Daniel Kaiser"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="M." surname="Waldvogel" fullname="Marcel Waldvogel"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date year="2014"/> | ||||
| </front> | ||||
| <seriesInfo name="DOI" value="10.1109/HPCC.2014.141"/> | ||||
| </reference> | ||||
| <reference anchor="K17" target="http://nbn-resolving.de/urn:nbn:de:bsz:352-0-422 | ||||
| 757"> | ||||
| <front> | ||||
| <title>Efficient Privacy-Preserving Configurationless Service Discovery Supp | ||||
| orting Multi-Link Networks</title> | ||||
| <author initials="D." surname="Kaiser" fullname="Daniel Kaiser"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date year="2017"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="SLEEP-PROXY" target="http://stuartcheshire.org/SleepProxy/ind | <reference anchor="KW14b" target="https://ieeexplore.ieee.org/xpl/articl | |||
| ex.html"> | eDetails.jsp?arnumber=7056899"> | |||
| <front> | <front> | |||
| <title>Understanding Sleep Proxy Service</title> | <title>Efficient Privacy Preserving Multicast DNS Service Discovery< | |||
| <author initials="S." surname="Cheshire" fullname="Stuart Cheshire"> | /title> | |||
| <organization/> | <author initials="D." surname="Kaiser" fullname="Daniel Kaiser"> | |||
| </author> | <organization/> | |||
| <date year="2009"/> | </author> | |||
| </front> | <author initials="M." surname="Waldvogel" fullname="Marcel Waldvogel | |||
| </reference> | "> | |||
| <organization/> | ||||
| </author> | ||||
| <date month="August" year="2014"/> | ||||
| </front> | ||||
| <seriesInfo name="DOI" value="10.1109/HPCC.2014.141"/> | ||||
| </reference> | ||||
| </references> | <reference anchor="K17" target="https://nbn-resolving.de/urn:nbn:de:bsz: | |||
| 352-0-422757"> | ||||
| <front> | ||||
| <title>Efficient Privacy-Preserving Configurationless Service Discov | ||||
| ery Supporting Multi-Link Networks</title> | ||||
| <author initials="D." surname="Kaiser" fullname="Daniel Kaiser"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="August" year="2017"/> | ||||
| </front> | ||||
| </reference> | ||||
| </back> | <reference anchor="SLEEP-PROXY" target="http://stuartcheshire.org/SleepP | |||
| roxy/index.html"> | ||||
| <front> | ||||
| <title>Understanding Sleep Proxy Service</title> | ||||
| <author initials="S." surname="Cheshire" fullname="Stuart Cheshire"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="December" year="2009"/> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | ||||
| <section numbered="false" toc="default"> | ||||
| <name>Acknowledgments</name> | ||||
| <t>This document incorporates many contributions from <contact | ||||
| fullname="Stuart Cheshire"/> and <contact fullname="Chris | ||||
| Wood"/>. Thanks to <contact fullname="Florian Adamsky"/> for extensive | ||||
| review and suggestions on the organization of the threat model. Thanks | ||||
| to <contact fullname="Barry Leiba"/> for an extensive review. Thanks to | ||||
| <contact fullname="Roman Danyliw"/>, <contact fullname="Ben Kaduk"/>, | ||||
| <contact fullname="Adam Roach"/>, and <contact fullname="Alissa Cooper"/> | ||||
| for their comments during IESG review.</t> | ||||
| </section> | ||||
| </back> | ||||
| </rfc> | </rfc> | |||
| End of changes. 24 change blocks. | ||||
| 1041 lines changed or deleted | 751 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||